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) {
87606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onCreateWindow(view, dialog, userGesture, resultMsg);
88606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
89606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
90606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
91606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
92606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onRequestFocus(WebView view) {
93606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onRequestFocus(view);
94606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
95606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
96606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
97606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
98606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onCloseWindow(WebView window) {
99606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onCloseWindow(window);
100606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
101606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
102606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
103606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
104606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsAlert(WebView view, String url, String message,
105606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            JsResult result) {
106606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsAlert(view, url, message, result);
107606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
108606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
109606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
110606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
111606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsConfirm(WebView view, String url, String message,
112606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            JsResult result) {
113606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsConfirm(view, url, message, result);
114606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
115606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
116606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
117606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
118606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsPrompt(WebView view, String url, String message,
119606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            String defaultValue, JsPromptResult result) {
120606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsPrompt(view, url, message, defaultValue, result);
121606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
122606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
123606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
124606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
125606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsBeforeUnload(WebView view, String url, String message,
126606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            JsResult result) {
127606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsBeforeUnload(view, url, message, result);
128606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
129606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
130606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
131606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
132606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onExceededDatabaseQuota(String url, String databaseIdentifier,
133606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            long currentQuota, long estimatedSize, long totalUsedQuota,
134606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            WebStorage.QuotaUpdater quotaUpdater) {
135606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onExceededDatabaseQuota(url, databaseIdentifier, currentQuota,
136606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu                estimatedSize, totalUsedQuota, quotaUpdater);
137606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
138606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
139606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
140606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
141606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
142606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            WebStorage.QuotaUpdater quotaUpdater) {
143606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onReachedMaxAppCacheSize(spaceNeeded, totalUsedQuota, quotaUpdater);
144606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
145606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
146606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
147606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
148606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onGeolocationPermissionsShowPrompt(String origin,
149606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu            GeolocationPermissions.Callback callback) {
150606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onGeolocationPermissionsShowPrompt(origin, callback);
151606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
152606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
153606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
154606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
155606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onGeolocationPermissionsHidePrompt() {
156606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onGeolocationPermissionsHidePrompt();
157606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
158606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
159606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
160606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
161606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onJsTimeout() {
162606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onJsTimeout();
163606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
164606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
165606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
166606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
167606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Deprecated
168606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void onConsoleMessage(String message, int lineNumber, String sourceID) {
169606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.onConsoleMessage(message, lineNumber, sourceID);
170606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
171606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
172606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
173606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
174606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
175606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.onConsoleMessage(consoleMessage);
176606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
177606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
178606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
179606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
180606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public Bitmap getDefaultVideoPoster() {
181606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.getDefaultVideoPoster();
182606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
183606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
184606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
185606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
186606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public View getVideoLoadingProgressView() {
187606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        return mWrappedClient.getVideoLoadingProgressView();
188606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
189606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
190606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
191606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
192606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void getVisitedHistory(ValueCallback<String[]> callback) {
193606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.getVisitedHistory(callback);
194606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
195606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu
196606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    /** {@inheritDoc} */
197606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    @Override
198606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    public void openFileChooser(ValueCallback<Uri> uploadFile) {
199606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu        mWrappedClient.openFileChooser(uploadFile);
200606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu    }
201606e9392b3585a5ca401d65e1515963390b5e8ffAndrei Popescu}
202