1/*
2 * Copyright (C) 2010 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 com.android.browser;
18
19import android.graphics.Bitmap;
20import android.net.Uri;
21import android.os.Message;
22import android.view.View;
23import android.webkit.ConsoleMessage;
24import android.webkit.GeolocationPermissions;
25import android.webkit.JsPromptResult;
26import android.webkit.JsResult;
27import android.webkit.ValueCallback;
28import android.webkit.WebChromeClient;
29import android.webkit.WebStorage;
30import android.webkit.WebView;
31
32/**
33 *
34 * WebChromeClient for browser tests.
35 * Wraps around existing client so that specific methods can be overridden if needed.
36 *
37 */
38abstract class TestWebChromeClient extends WebChromeClient {
39
40    private WebChromeClient mWrappedClient;
41
42    protected TestWebChromeClient(WebChromeClient wrappedClient) {
43        mWrappedClient = wrappedClient;
44    }
45
46    /** {@inheritDoc} */
47    @Override
48    public void onProgressChanged(WebView view, int newProgress) {
49        mWrappedClient.onProgressChanged(view, newProgress);
50    }
51
52    /** {@inheritDoc} */
53    @Override
54    public void onReceivedTitle(WebView view, String title) {
55        mWrappedClient.onReceivedTitle(view, title);
56    }
57
58    /** {@inheritDoc} */
59    @Override
60    public void onReceivedIcon(WebView view, Bitmap icon) {
61        mWrappedClient.onReceivedIcon(view, icon);
62    }
63
64    /** {@inheritDoc} */
65    @Override
66    public void onReceivedTouchIconUrl(WebView view, String url,
67            boolean precomposed) {
68        mWrappedClient.onReceivedTouchIconUrl(view, url, precomposed);
69    }
70
71    /** {@inheritDoc} */
72    @Override
73    public void onShowCustomView(View view, CustomViewCallback callback) {
74        mWrappedClient.onShowCustomView(view, callback);
75    }
76
77    /** {@inheritDoc} */
78    @Override
79    public void onHideCustomView() {
80        mWrappedClient.onHideCustomView();
81    }
82
83    /** {@inheritDoc} */
84    @Override
85    public boolean onCreateWindow(WebView view, boolean dialog,
86            boolean userGesture, Message resultMsg) {
87        // do not open any new pop-ups
88        resultMsg.sendToTarget();
89        return true;
90    }
91
92    /** {@inheritDoc} */
93    @Override
94    public void onRequestFocus(WebView view) {
95        mWrappedClient.onRequestFocus(view);
96    }
97
98    /** {@inheritDoc} */
99    @Override
100    public void onCloseWindow(WebView window) {
101        mWrappedClient.onCloseWindow(window);
102    }
103
104    /** {@inheritDoc} */
105    @Override
106    public boolean onJsAlert(WebView view, String url, String message,
107            JsResult result) {
108        return mWrappedClient.onJsAlert(view, url, message, result);
109    }
110
111    /** {@inheritDoc} */
112    @Override
113    public boolean onJsConfirm(WebView view, String url, String message,
114            JsResult result) {
115        return mWrappedClient.onJsConfirm(view, url, message, result);
116    }
117
118    /** {@inheritDoc} */
119    @Override
120    public boolean onJsPrompt(WebView view, String url, String message,
121            String defaultValue, JsPromptResult result) {
122        return mWrappedClient.onJsPrompt(view, url, message, defaultValue, result);
123    }
124
125    /** {@inheritDoc} */
126    @Override
127    public boolean onJsBeforeUnload(WebView view, String url, String message,
128            JsResult result) {
129        return mWrappedClient.onJsBeforeUnload(view, url, message, result);
130    }
131
132    /** {@inheritDoc} */
133    @Override
134    public void onExceededDatabaseQuota(String url, String databaseIdentifier,
135            long currentQuota, long estimatedSize, long totalUsedQuota,
136            WebStorage.QuotaUpdater quotaUpdater) {
137        mWrappedClient.onExceededDatabaseQuota(url, databaseIdentifier, currentQuota,
138                estimatedSize, totalUsedQuota, quotaUpdater);
139    }
140
141    /** {@inheritDoc} */
142    @Override
143    public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
144            WebStorage.QuotaUpdater quotaUpdater) {
145        mWrappedClient.onReachedMaxAppCacheSize(spaceNeeded, totalUsedQuota, quotaUpdater);
146    }
147
148    /** {@inheritDoc} */
149    @Override
150    public void onGeolocationPermissionsShowPrompt(String origin,
151            GeolocationPermissions.Callback callback) {
152        mWrappedClient.onGeolocationPermissionsShowPrompt(origin, callback);
153    }
154
155    /** {@inheritDoc} */
156    @Override
157    public void onGeolocationPermissionsHidePrompt() {
158        mWrappedClient.onGeolocationPermissionsHidePrompt();
159    }
160
161    /** {@inheritDoc} */
162    @Override
163    public boolean onJsTimeout() {
164        return mWrappedClient.onJsTimeout();
165    }
166
167    /** {@inheritDoc} */
168    @Override
169    @Deprecated
170    public void onConsoleMessage(String message, int lineNumber, String sourceID) {
171        mWrappedClient.onConsoleMessage(message, lineNumber, sourceID);
172    }
173
174    /** {@inheritDoc} */
175    @Override
176    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
177        return mWrappedClient.onConsoleMessage(consoleMessage);
178    }
179
180    /** {@inheritDoc} */
181    @Override
182    public Bitmap getDefaultVideoPoster() {
183        return mWrappedClient.getDefaultVideoPoster();
184    }
185
186    /** {@inheritDoc} */
187    @Override
188    public View getVideoLoadingProgressView() {
189        return mWrappedClient.getVideoLoadingProgressView();
190    }
191
192    /** {@inheritDoc} */
193    @Override
194    public void getVisitedHistory(ValueCallback<String[]> callback) {
195        mWrappedClient.getVisitedHistory(callback);
196    }
197
198    /** {@inheritDoc} */
199    @Override
200    public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType, String capture) {
201        mWrappedClient.openFileChooser(uploadFile, acceptType, capture);
202    }
203}
204