1606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu/*
2606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * Copyright (C) 2010 The Android Open Source Project
3606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu *
4606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * Licensed under the Apache License, Version 2.0 (the "License");
5606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * you may not use this file except in compliance with the License.
6606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * You may obtain a copy of the License at
7606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu *
8606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu *      http://www.apache.org/licenses/LICENSE-2.0
9606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu *
10606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * Unless required by applicable law or agreed to in writing, software
11606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * distributed under the License is distributed on an "AS IS" BASIS,
12606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * See the License for the specific language governing permissions and
14606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * limitations under the License.
15606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu */
16606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
17606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescupackage com.android.browser;
18606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
19606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.graphics.Bitmap;
20606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.net.Uri;
21606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.os.Message;
22606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.view.View;
23606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.ConsoleMessage;
24606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.GeolocationPermissions;
25606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.JsPromptResult;
26606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.JsResult;
27606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.ValueCallback;
28606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.WebChromeClient;
29606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.WebStorage;
30606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuimport android.webkit.WebView;
31606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
32606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu/**
33606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu *
34606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * WebChromeClient for browser tests.
35606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu * Wraps around existing client so that specific methods can be overridden if needed.
36606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu *
37606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu */
38606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescuabstract class TestWebChromeClient extends WebChromeClient {
39606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
40606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    private WebChromeClient mWrappedClient;
41606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
42606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    protected TestWebChromeClient(WebChromeClient wrappedClient) {
43606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient = wrappedClient;
44606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
45606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
46606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
47606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
48606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onProgressChanged(WebView view, int newProgress) {
49606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onProgressChanged(view, newProgress);
50606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
51606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
52606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
53606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
54606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onReceivedTitle(WebView view, String title) {
55606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onReceivedTitle(view, title);
56606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
57606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
58606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
59606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
60606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onReceivedIcon(WebView view, Bitmap icon) {
61606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onReceivedIcon(view, icon);
62606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
63606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
64606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
65606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
66606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onReceivedTouchIconUrl(WebView view, String url,
67606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            boolean precomposed) {
68606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onReceivedTouchIconUrl(view, url, precomposed);
69606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
70606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
71606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
72606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
73606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onShowCustomView(View view, CustomViewCallback callback) {
74606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onShowCustomView(view, callback);
75606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
76606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
77606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
78606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
79606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onHideCustomView() {
80606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onHideCustomView();
81606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
82606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
83606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
84606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
85606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onCreateWindow(WebView view, boolean dialog,
86606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            boolean userGesture, Message resultMsg) {
879e78f51d14b9a16d645b754e073f549a5891db26Guang Zhu        // do not open any new pop-ups
889e78f51d14b9a16d645b754e073f549a5891db26Guang Zhu        resultMsg.sendToTarget();
899e78f51d14b9a16d645b754e073f549a5891db26Guang Zhu        return true;
90606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
91606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
92606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
93606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
94606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onRequestFocus(WebView view) {
95606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onRequestFocus(view);
96606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
97606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
98606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
99606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
100606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onCloseWindow(WebView window) {
101606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onCloseWindow(window);
102606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
103606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
104606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
105606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
106606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsAlert(WebView view, String url, String message,
107606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            JsResult result) {
108606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsAlert(view, url, message, result);
109606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
110606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
111606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
112606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
113606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsConfirm(WebView view, String url, String message,
114606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            JsResult result) {
115606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsConfirm(view, url, message, result);
116606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
117606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
118606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
119606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
120606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsPrompt(WebView view, String url, String message,
121606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            String defaultValue, JsPromptResult result) {
122606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsPrompt(view, url, message, defaultValue, result);
123606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
124606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
125606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
126606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
127606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsBeforeUnload(WebView view, String url, String message,
128606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            JsResult result) {
129606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsBeforeUnload(view, url, message, result);
130606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
131606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
132606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
133606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
134606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onExceededDatabaseQuota(String url, String databaseIdentifier,
135606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            long currentQuota, long estimatedSize, long totalUsedQuota,
136606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            WebStorage.QuotaUpdater quotaUpdater) {
137606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onExceededDatabaseQuota(url, databaseIdentifier, currentQuota,
138606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu                estimatedSize, totalUsedQuota, quotaUpdater);
139606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
140606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
141606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
142606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
143606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
144606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            WebStorage.QuotaUpdater quotaUpdater) {
145606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onReachedMaxAppCacheSize(spaceNeeded, totalUsedQuota, quotaUpdater);
146606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
147606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
148606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
149606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
150606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onGeolocationPermissionsShowPrompt(String origin,
151606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            GeolocationPermissions.Callback callback) {
152606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onGeolocationPermissionsShowPrompt(origin, callback);
153606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
154606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
155606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
156606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
157606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onGeolocationPermissionsHidePrompt() {
158606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onGeolocationPermissionsHidePrompt();
159606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
160606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
161606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
162606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
163606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsTimeout() {
164606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsTimeout();
165606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
166606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
167606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
168606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
169606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Deprecated
170606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onConsoleMessage(String message, int lineNumber, String sourceID) {
171606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onConsoleMessage(message, lineNumber, sourceID);
172606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
173606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
174606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
175606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
176606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
177606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onConsoleMessage(consoleMessage);
178606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
179606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
180606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
181606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
182606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public Bitmap getDefaultVideoPoster() {
183606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.getDefaultVideoPoster();
184606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
185606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
186606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
187606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
188606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public View getVideoLoadingProgressView() {
189606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.getVideoLoadingProgressView();
190606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
191606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
192606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
193606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
194606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void getVisitedHistory(ValueCallback<String[]> callback) {
195606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.getVisitedHistory(callback);
196606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
197606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
198606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
199606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
2008cad413fe902010140cf20aad47c2f4e7a51f8d2Ben Murdoch    public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType, String capture) {
2018cad413fe902010140cf20aad47c2f4e7a51f8d2Ben Murdoch        mWrappedClient.openFileChooser(uploadFile, acceptType, capture);
202606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
203606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu}
204