blob: d05bdc495e1359997a7f86e6fe8fea10b0fbc895 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content_public.browser;
import org.chromium.base.VisibleForTesting;
/**
* The WebContents Java wrapper to allow communicating with the native WebContents object.
*/
public interface WebContents {
/**
* @return The navigation controller associated with this WebContents.
*/
NavigationController getNavigationController();
/**
* @return The title for the current visible page.
*/
String getTitle();
/**
* @return The URL for the current visible page.
*/
String getVisibleUrl();
/**
* @return Whether this WebContents is loading a resource.
*/
boolean isLoading();
/**
* @return Whether this WebContents is loading and and the load is to a different top-level
* document (rather than being a navigation within the same document).
*/
boolean isLoadingToDifferentDocument();
/**
* Stop any pending navigation.
*/
void stop();
/**
* Inserts css into main frame's document.
*/
void insertCSS(String css);
/**
* To be called when the ContentView is hidden.
*/
public void onHide();
/**
* To be called when the ContentView is shown.
*/
public void onShow();
/**
* Stops all media players for this WebContents.
*/
public void releaseMediaPlayers();
/**
* Get the Background color from underlying RenderWidgetHost for this WebContent.
*/
public int getBackgroundColor();
/**
* Requests the renderer insert a link to the specified stylesheet in the
* main frame's document.
*/
void addStyleSheetByURL(String url);
/**
* Shows an interstitial page driven by the passed in delegate.
*
* @param url The URL being blocked by the interstitial.
* @param delegate The delegate handling the interstitial.
*/
@VisibleForTesting
public void showInterstitialPage(
String url, long interstitialPageDelegateAndroid);
/**
* @return Whether the page is currently showing an interstitial, such as a bad HTTPS page.
*/
public boolean isShowingInterstitialPage();
/**
* If the view is ready to draw contents to the screen. In hardware mode,
* the initialization of the surface texture may not occur until after the
* view has been added to the layout. This method will return {@code true}
* once the texture is actually ready.
*/
public boolean isReady();
/**
* Inform WebKit that Fullscreen mode has been exited by the user.
*/
public void exitFullscreen();
/**
* Changes whether hiding the top controls is enabled.
*
* @param enableHiding Whether hiding the top controls should be enabled or not.
* @param enableShowing Whether showing the top controls should be enabled or not.
* @param animate Whether the transition should be animated or not.
*/
public void updateTopControlsState(boolean enableHiding, boolean enableShowing,
boolean animate);
/**
* Shows the IME if the focused widget could accept text input.
*/
public void showImeIfNeeded();
/**
* Brings the Editable to the visible area while IME is up to make easier for inputing text.
*/
public void scrollFocusedEditableNodeIntoView();
/**
* Selects the word around the caret, if any.
* The caller can check if selection actually occurred by listening to OnSelectionChanged.
*/
public void selectWordAroundCaret();
/**
* Get the URL of the current page.
*
* @return The URL of the current page.
*/
public String getUrl();
/**
* Gets the last committed URL. It represents the current page that is
* displayed in this WebContents. It represents the current security context.
*
* @return The last committed URL.
*/
public String getLastCommittedUrl();
/**
* Get the InCognito state of WebContents.
*
* @return whether this WebContents is in InCognito mode or not
*/
public boolean isIncognito();
/**
* Resumes the response which is deferred during start.
*/
public void resumeResponseDeferredAtStart();
/**
* Set pending Navigation for transition testing on this WebContents.
*/
public void setHasPendingNavigationTransitionForTesting();
/**
* Set delegate for notifying navigation transition.
*/
public void setNavigationTransitionDelegate(NavigationTransitionDelegate delegate);
/**
* Inserts the provided markup sandboxed into the frame.
*/
public void setupTransitionView(String markup);
/**
* Hides transition elements specified by the selector, and activates any
* exiting-transition stylesheets.
*/
public void beginExitTransition(String cssSelector);
/**
* Clear the navigation transition data.
*/
public void clearNavigationTransitionData();
/**
* Injects the passed Javascript code in the current page and evaluates it.
* If a result is required, pass in a callback.
*
* @param script The Javascript to execute.
* @param callback The callback to be fired off when a result is ready. The script's
* result will be json encoded and passed as the parameter, and the call
* will be made on the main thread.
* If no result is required, pass null.
*/
public void evaluateJavaScript(String script, JavaScriptCallback callback);
/**
* Post a message to a frame.
* TODO(sgurun) also add support for transferring a message channel port.
*
* @param frameName The name of the frame. If the name is null the message is posted
* to the main frame.
* @param message The message
* @param sourceOrigin The source origin
* @param targetOrigin The target origin
*/
public void postMessageToFrame(String frameName, String message,
String sourceOrigin, String targetOrigin);
/**
* Returns whether the initial empty page has been accessed by a script from another
* page. Always false after the first commit.
*
* @return Whether the initial empty page has been accessed by a script.
*/
public boolean hasAccessedInitialDocument();
}