WebContents.java revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.content_public.browser;
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The WebContents Java wrapper to allow communicating with the native WebContents object.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public interface WebContents {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return The navigation controller associated with this WebContents.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    NavigationController getNavigationController();
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @return The title for the current visible page.
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    String getTitle();
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    /**
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return The URL for the current visible page.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    String getVisibleUrl();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Stop any pending navigation.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void stop();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Inserts css into main frame's document.
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void insertCSS(String css);
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    /**
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)     * To be called when the ContentView is hidden.
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void onHide();
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * To be called when the ContentView is shown.
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)     */
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    public void onShow();
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Stops all media players for this WebContents.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void releaseMediaPlayers();
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Get the Background color from underlying RenderWidgetHost for this WebContent.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public int getBackgroundColor();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Requests the renderer insert a link to the specified stylesheet in the
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * main frame's document.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void addStyleSheetByURL(String url);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Shows an interstitial page driven by the passed in delegate.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param url The URL being blocked by the interstitial.
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param delegate The delegate handling the interstitial.
66424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)     */
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void showInterstitialPage(
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            String url, long interstitialPageDelegateAndroid);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return Whether the page is currently showing an interstitial, such as a bad HTTPS page.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean isShowingInterstitialPage();
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * If the view is ready to draw contents to the screen. In hardware mode,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * the initialization of the surface texture may not occur until after the
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * view has been added to the layout. This method will return {@code true}
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * once the texture is actually ready.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean isReady();
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /**
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Inform WebKit that Fullscreen mode has been exited by the user.
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void exitFullscreen();
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Changes whether hiding the top controls is enabled.
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param enableHiding Whether hiding the top controls should be enabled or not.
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param enableShowing Whether showing the top controls should be enabled or not.
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param animate Whether the transition should be animated or not.
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void updateTopControlsState(boolean enableHiding, boolean enableShowing,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            boolean animate);
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Shows the IME if the focused widget could accept text input.
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void showImeIfNeeded();
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Brings the Editable to the visible area while IME is up to make easier for inputing text.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void scrollFocusedEditableNodeIntoView();
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Selects the word around the caret, if any.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * The caller can check if selection actually occurred by listening to OnSelectionChanged.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void selectWordAroundCaret();
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Get the URL of the current page.
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return The URL of the current page.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public String getUrl();
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Get the InCognito state of WebContents.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return whether this WebContents is in InCognito mode or not
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean isIncognito();
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Resumes the response which is deferred during start.
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void resumeResponseDeferredAtStart();
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set pending Navigation for transition testing on this WebContents.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setHasPendingNavigationTransitionForTesting();
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set delegate for notifying navigation transition.
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setNavigationTransitionDelegate(NavigationTransitionDelegate delegate);
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Inserts the provided markup sandboxed into the frame.
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setupTransitionView(String markup);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Hides transition elements specified by the selector, and activates any
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * exiting-transition stylesheets.
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void beginExitTransition(String cssSelector);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Injects the passed Javascript code in the current page and evaluates it.
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * If a result is required, pass in a callback.
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param script The Javascript to execute.
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param callback The callback to be fired off when a result is ready. The script's
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                 result will be json encoded and passed as the parameter, and the call
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                 will be made on the main thread.
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                 If no result is required, pass null.
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void evaluateJavaScript(String script, JavaScriptCallback callback);
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)