15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file.
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)package org.chromium.content_public.browser;
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/**
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * The WebContents Java wrapper to allow communicating with the native WebContents object.
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) */
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)public interface WebContents {
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /**
12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * @return The navigation controller associated with this WebContents.
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     */
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NavigationController getNavigationController();
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    /**
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     * @return The title for the current visible page.
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     */
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    String getTitle();
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    /**
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch     * @return The URL for the current visible page.
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch     */
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    String getVisibleUrl();
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    /**
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     * Stop any pending navigation.
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     */
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    void stop();
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    /**
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch     * Inserts css into main frame's document.
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch     */
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    void insertCSS(String css);
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * To be called when the ContentView is hidden.
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void onHide();
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * To be called when the ContentView is shown.
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void onShow();
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Stops all media players for this WebContents.
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public void releaseMediaPlayers();
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Get the Background color from underlying RenderWidgetHost for this WebContent.
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public int getBackgroundColor();
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Requests the renderer insert a link to the specified stylesheet in the
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * main frame's document.
585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    void addStyleSheetByURL(String url);
605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Shows an interstitial page driven by the passed in delegate.
635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     *
645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * @param url The URL being blocked by the interstitial.
655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * @param delegate The delegate handling the interstitial.
665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void showInterstitialPage(
685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            String url, long interstitialPageDelegateAndroid);
695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * @return Whether the page is currently showing an interstitial, such as a bad HTTPS page.
725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public boolean isShowingInterstitialPage();
745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * If the view is ready to draw contents to the screen. In hardware mode,
775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * the initialization of the surface texture may not occur until after the
785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * view has been added to the layout. This method will return {@code true}
795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * once the texture is actually ready.
805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public boolean isReady();
825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     /**
845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Inform WebKit that Fullscreen mode has been exited by the user.
855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void exitFullscreen();
875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Changes whether hiding the top controls is enabled.
905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     *
915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * @param enableHiding Whether hiding the top controls should be enabled or not.
925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * @param enableShowing Whether showing the top controls should be enabled or not.
935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * @param animate Whether the transition should be animated or not.
945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void updateTopControlsState(boolean enableHiding, boolean enableShowing,
965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            boolean animate);
975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Shows the IME if the focused widget could accept text input.
1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void showImeIfNeeded();
1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Brings the Editable to the visible area while IME is up to make easier for inputing text.
1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void scrollFocusedEditableNodeIntoView();
1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /**
1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Selects the word around the caret, if any.
1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * The caller can check if selection actually occurred by listening to OnSelectionChanged.
1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     */
1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    public void selectWordAroundCaret();
1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Get the URL of the current page.
1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     *
1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * @return The URL of the current page.
1186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public String getUrl();
1206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Get the InCognito state of WebContents.
1236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     *
1246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * @return whether this WebContents is in InCognito mode or not
1256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public boolean isIncognito();
1276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Resumes the response which is deferred during start.
1306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public void resumeResponseDeferredAtStart();
1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Set pending Navigation for transition testing on this WebContents.
1356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public void setHasPendingNavigationTransitionForTesting();
1376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Set delegate for notifying navigation transition.
1406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public void setNavigationTransitionDelegate(NavigationTransitionDelegate delegate);
1426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Inserts the provided markup sandboxed into the frame.
1456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public void setupTransitionView(String markup);
1476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Hides transition elements specified by the selector, and activates any
1506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * exiting-transition stylesheets.
1516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public void beginExitTransition(String cssSelector);
1536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
1556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Injects the passed Javascript code in the current page and evaluates it.
1566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * If a result is required, pass in a callback.
1576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     *
1586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * @param script The Javascript to execute.
1596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * @param callback The callback to be fired off when a result is ready. The script's
1606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     *                 result will be json encoded and passed as the parameter, and the call
1616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     *                 will be made on the main thread.
1626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     *                 If no result is required, pass null.
1636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public void evaluateJavaScript(String script, JavaScriptCallback callback);
1656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
167