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