1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.android_webview.test; 6 7 import android.graphics.Bitmap; 8 import android.graphics.Picture; 9 import android.net.http.SslError; 10 import android.os.Looper; 11 import android.os.Message; 12 import android.util.Log; 13 import android.view.KeyEvent; 14 import android.view.View; 15 import android.webkit.ConsoleMessage; 16 import android.webkit.GeolocationPermissions; 17 import android.webkit.ValueCallback; 18 import android.webkit.WebChromeClient; 19 20 import org.chromium.android_webview.AwContentsClient; 21 import org.chromium.android_webview.AwContentsClientBridge; 22 import org.chromium.android_webview.AwHttpAuthHandler; 23 import org.chromium.android_webview.AwWebResourceResponse; 24 import org.chromium.android_webview.JsPromptResultReceiver; 25 import org.chromium.android_webview.JsResultReceiver; 26 import org.chromium.android_webview.permission.AwPermissionRequest; 27 import org.chromium.base.ThreadUtils; 28 29 import java.security.Principal; 30 31 /** 32 * As a convience for tests that only care about specefic callbacks, this class provides 33 * empty implementations of all abstract methods. 34 */ 35 public class NullContentsClient extends AwContentsClient { 36 37 private static final String TAG = "NullContentsClient"; 38 39 public NullContentsClient() { 40 this(ThreadUtils.getUiThreadLooper()); 41 } 42 43 public NullContentsClient(Looper looper) { 44 super(looper); // "...beams are gonna blind me". 45 } 46 47 @Override 48 public boolean shouldOverrideUrlLoading(String url) { 49 return false; 50 } 51 52 @Override 53 public void onUnhandledKeyEvent(KeyEvent event) { 54 } 55 56 @Override 57 public void getVisitedHistory(ValueCallback<String[]> callback) { 58 } 59 60 @Override 61 public void doUpdateVisitedHistory(String url, boolean isReload) { 62 } 63 64 @Override 65 public void onProgressChanged(int progress) { 66 } 67 68 @Override 69 public AwWebResourceResponse shouldInterceptRequest( 70 AwContentsClient.ShouldInterceptRequestParams params) { 71 return null; 72 } 73 74 @Override 75 public boolean shouldOverrideKeyEvent(KeyEvent event) { 76 return false; 77 } 78 79 @Override 80 public void onLoadResource(String url) { 81 } 82 83 @Override 84 public boolean onConsoleMessage(ConsoleMessage consoleMessage) { 85 return false; 86 } 87 88 @Override 89 public void onReceivedHttpAuthRequest(AwHttpAuthHandler handler, String host, String realm) { 90 handler.cancel(); 91 } 92 93 @Override 94 public void onReceivedSslError(ValueCallback<Boolean> callback, SslError error) { 95 callback.onReceiveValue(false); 96 } 97 98 @Override 99 public void onReceivedClientCertRequest( 100 final AwContentsClientBridge.ClientCertificateRequestCallback callback, 101 final String[] keyTypes, final Principal[] principals, final String host, 102 final int port) { 103 callback.proceed(null, null); 104 } 105 106 @Override 107 public void onReceivedLoginRequest(String realm, String account, String args) { 108 } 109 110 @Override 111 public void onGeolocationPermissionsShowPrompt(String origin, 112 GeolocationPermissions.Callback callback) { 113 } 114 115 @Override 116 public void onGeolocationPermissionsHidePrompt() { 117 } 118 119 @Override 120 public void handleJsAlert(String url, String message, JsResultReceiver receiver) { 121 Log.i(TAG, "handleJsAlert(" + url + ", " + message + ")"); 122 receiver.cancel(); 123 } 124 125 @Override 126 public void handleJsBeforeUnload(String url, String message, JsResultReceiver receiver) { 127 Log.i(TAG, "handleJsBeforeUnload(" + url + ", " + message + ")"); 128 receiver.confirm(); 129 } 130 131 @Override 132 public void handleJsConfirm(String url, String message, JsResultReceiver receiver) { 133 Log.i(TAG, "handleJsConfirm(" + url + ", " + message + ")"); 134 receiver.cancel(); 135 } 136 137 @Override 138 public void handleJsPrompt( 139 String url, String message, String defaultValue, JsPromptResultReceiver receiver) { 140 Log.i(TAG, "handleJsPrompt(" + url + ", " + message + ")"); 141 receiver.cancel(); 142 } 143 144 @Override 145 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, 146 boolean isDoneCounting) { 147 } 148 149 @Override 150 public void onNewPicture(Picture picture) { 151 } 152 153 @Override 154 public void onPageStarted(String url) { 155 } 156 157 @Override 158 public void onPageFinished(String url) { 159 } 160 161 @Override 162 public void onReceivedError(int errorCode, String description, String failingUrl) { 163 } 164 165 @Override 166 public void onFormResubmission(Message dontResend, Message resend) { 167 dontResend.sendToTarget(); 168 } 169 170 @Override 171 public void onDownloadStart(String url, 172 String userAgent, 173 String contentDisposition, 174 String mimeType, 175 long contentLength) { 176 } 177 178 @Override 179 public boolean onCreateWindow(boolean isDialog, boolean isUserGesture) { 180 return false; 181 } 182 183 @Override 184 public void onCloseWindow() { 185 } 186 187 @Override 188 public void onRequestFocus() { 189 } 190 191 @Override 192 public void onReceivedTouchIconUrl(String url, boolean precomposed) { 193 } 194 195 @Override 196 public void onReceivedIcon(Bitmap bitmap) { 197 } 198 199 @Override 200 public void onReceivedTitle(String title) { 201 } 202 203 @Override 204 public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { 205 } 206 207 @Override 208 public void onHideCustomView() { 209 } 210 211 @Override 212 public void onScaleChangedScaled(float oldScale, float newScale) { 213 } 214 215 @Override 216 protected View getVideoLoadingProgressView() { 217 return null; 218 } 219 220 @Override 221 public Bitmap getDefaultVideoPoster() { 222 return null; 223 } 224 225 @Override 226 public void onPermissionRequest(AwPermissionRequest awPermissionRequest) { 227 awPermissionRequest.deny(); 228 } 229 230 @Override 231 public void onPermissionRequestCanceled(AwPermissionRequest awPermissionRequest) { 232 } 233 } 234