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