WebChromeClient.java revision 6262ae5c9df44c0673cebaeaf7f655094f5b5485
1/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.webkit;
18
19import android.graphics.Bitmap;
20import android.os.Message;
21
22public class WebChromeClient {
23
24    /**
25     * Tell the host application the current progress of loading a page.
26     * @param view The WebView that initiated the callback.
27     * @param newProgress Current page loading progress, represented by
28     *                    an integer between 0 and 100.
29     */
30    public void onProgressChanged(WebView view, int newProgress) {}
31
32    /**
33     * Notify the host application of a change in the document title.
34     * @param view The WebView that initiated the callback.
35     * @param title A String containing the new title of the document.
36     */
37    public void onReceivedTitle(WebView view, String title) {}
38
39    /**
40     * Notify the host application of a new favicon for the current page.
41     * @param view The WebView that initiated the callback.
42     * @param icon A Bitmap containing the favicon for the current page.
43     */
44    public void onReceivedIcon(WebView view, Bitmap icon) {}
45
46    /**
47     * Request the host application to create a new Webview. The host
48     * application should handle placement of the new WebView in the view
49     * system. The default behavior returns null.
50     * @param view The WebView that initiated the callback.
51     * @param dialog True if the new window is meant to be a small dialog
52     *               window.
53     * @param userGesture True if the request was initiated by a user gesture
54     *                    such as clicking a link.
55     * @param resultMsg The message to send when done creating a new WebView.
56     *                  Set the new WebView through resultMsg.obj which is
57     *                  WebView.WebViewTransport() and then call
58     *                  resultMsg.sendToTarget();
59     * @return Similar to javscript dialogs, this method should return true if
60     *         the client is going to handle creating a new WebView. Note that
61     *         the WebView will halt processing if this method returns true so
62     *         make sure to call resultMsg.sendToTarget(). It is undefined
63     *         behavior to call resultMsg.sendToTarget() after returning false
64     *         from this method.
65     */
66    public boolean onCreateWindow(WebView view, boolean dialog,
67            boolean userGesture, Message resultMsg) {
68        return false;
69    }
70
71    /**
72     * Request display and focus for this WebView. This may happen due to
73     * another WebView opening a link in this WebView and requesting that this
74     * WebView be displayed.
75     * @param view The WebView that needs to be focused.
76     */
77    public void onRequestFocus(WebView view) {}
78
79    /**
80     * Notify the host application to close the given WebView and remove it
81     * from the view system if necessary. At this point, WebCore has stopped
82     * any loading in this window and has removed any cross-scripting ability
83     * in javascript.
84     * @param window The WebView that needs to be closed.
85     */
86    public void onCloseWindow(WebView window) {}
87
88    /**
89     * Tell the client to display a javascript alert dialog.  If the client
90     * returns true, WebView will assume that the client will handle the
91     * dialog.  If the client returns false, it will continue execution.
92     * @param view The WebView that initiated the callback.
93     * @param url The url of the page requesting the dialog.
94     * @param message Message to be displayed in the window.
95     * @param result A JsResult to confirm that the user hit enter.
96     * @return boolean Whether the client will handle the alert dialog.
97     */
98    public boolean onJsAlert(WebView view, String url, String message,
99            JsResult result) {
100        return false;
101    }
102
103    /**
104     * Tell the client to display a confirm dialog to the user. If the client
105     * returns true, WebView will assume that the client will handle the
106     * confirm dialog and call the appropriate JsResult method. If the
107     * client returns false, a default value of false will be returned to
108     * javascript. The default behavior is to return false.
109     * @param view The WebView that initiated the callback.
110     * @param url The url of the page requesting the dialog.
111     * @param message Message to be displayed in the window.
112     * @param result A JsResult used to send the user's response to
113     *               javascript.
114     * @return boolean Whether the client will handle the confirm dialog.
115     */
116    public boolean onJsConfirm(WebView view, String url, String message,
117            JsResult result) {
118        return false;
119    }
120
121    /**
122     * Tell the client to display a prompt dialog to the user. If the client
123     * returns true, WebView will assume that the client will handle the
124     * prompt dialog and call the appropriate JsPromptResult method. If the
125     * client returns false, a default value of false will be returned to to
126     * javascript. The default behavior is to return false.
127     * @param view The WebView that initiated the callback.
128     * @param url The url of the page requesting the dialog.
129     * @param message Message to be displayed in the window.
130     * @param defaultValue The default value displayed in the prompt dialog.
131     * @param result A JsPromptResult used to send the user's reponse to
132     *               javascript.
133     * @return boolean Whether the client will handle the prompt dialog.
134     */
135    public boolean onJsPrompt(WebView view, String url, String message,
136            String defaultValue, JsPromptResult result) {
137        return false;
138    }
139
140    /**
141     * Tell the client to display a dialog to confirm navigation away from the
142     * current page. This is the result of the onbeforeunload javascript event.
143     * If the client returns true, WebView will assume that the client will
144     * handle the confirm dialog and call the appropriate JsResult method. If
145     * the client returns false, a default value of true will be returned to
146     * javascript to accept navigation away from the current page. The default
147     * behavior is to return false. Setting the JsResult to true will navigate
148     * away from the current page, false will cancel the navigation.
149     * @param view The WebView that initiated the callback.
150     * @param url The url of the page requesting the dialog.
151     * @param message Message to be displayed in the window.
152     * @param result A JsResult used to send the user's response to
153     *               javascript.
154     * @return boolean Whether the client will handle the confirm dialog.
155     */
156    public boolean onJsBeforeUnload(WebView view, String url, String message,
157            JsResult result) {
158        return false;
159    }
160
161   /**
162    * Tell the client that the database quota for the origin has been exceeded.
163    * @param url The URL that triggered the notification
164    * @param databaseIdentifier The identifier of the database that caused the
165    *     quota overflow.
166    * @param currentQuota The current quota for the origin.
167    * @param quotaUpdater A callback to inform the WebCore thread that a new
168    *     quota is available. This callback must always be executed at some
169    *     point to ensure that the sleeping WebCore thread is woken up.
170    */
171    public void onExceededDatabaseQuota(String url, String databaseIdentifier,
172        long currentQuota, WebStorage.QuotaUpdater quotaUpdater) {
173        // This default implementation passes the current quota back to WebCore.
174        // WebCore will interpret this that new quota was declined.
175        quotaUpdater.updateQuota(currentQuota);
176    }
177
178    /**
179     * Tell the client that a JavaScript execution timeout has occured. And the
180     * client may decide whether or not to interrupt the execution. If the
181     * client returns true, the JavaScript will be interrupted. If the client
182     * returns false, the execution will continue. Note that in the case of
183     * continuing execution, the timeout counter will be reset, and the callback
184     * will continue to occur if the script does not finish at the next check
185     * point.
186     * @return boolean Whether the JavaScript execution should be interrupted.
187     * @hide pending API Council approval
188     */
189    public boolean onJsTimeout() {
190        return true;
191    }
192
193    /**
194     * Add a JavaScript error message to the console. Clients should override
195     * this to process the log message as they see fit.
196     * @param message The error message to report.
197     * @param lineNumber The line number of the error.
198     * @param sourceID The name of the source file that caused the error.
199     * @hide pending API council.
200     */
201    public void addMessageToConsole(String message, int lineNumber, String sourceID) {
202    }
203}
204