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
5package org.chromium.android_webview.test;
6
7import android.graphics.Bitmap;
8import android.graphics.Picture;
9import android.net.http.SslError;
10import android.os.Looper;
11import android.os.Message;
12import android.util.Log;
13import android.view.KeyEvent;
14import android.view.View;
15import android.webkit.ConsoleMessage;
16import android.webkit.GeolocationPermissions;
17import android.webkit.ValueCallback;
18import android.webkit.WebChromeClient;
19
20import org.chromium.android_webview.AwContentsClient;
21import org.chromium.android_webview.AwContentsClientBridge;
22import org.chromium.android_webview.AwHttpAuthHandler;
23import org.chromium.android_webview.AwWebResourceResponse;
24import org.chromium.android_webview.JsPromptResultReceiver;
25import org.chromium.android_webview.JsResultReceiver;
26import org.chromium.android_webview.permission.AwPermissionRequest;
27import org.chromium.base.ThreadUtils;
28
29import 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 */
35public 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