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.
5 package org.chromium.android_webview.test;
7 import android.graphics.Picture;
8 import android.webkit.ConsoleMessage;
10 import org.chromium.base.ThreadUtils;
11 import org.chromium.content.browser.test.util.CallbackHelper;
12 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper;
13 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper;
14 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
15 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
18 * AwContentsClient subclass used for testing.
20 public class TestAwContentsClient extends NullContentsClient {
21 private String mUpdatedTitle;
22 private final OnPageStartedHelper mOnPageStartedHelper;
23 private final OnPageFinishedHelper mOnPageFinishedHelper;
24 private final OnReceivedErrorHelper mOnReceivedErrorHelper;
25 private final OnDownloadStartHelper mOnDownloadStartHelper;
26 private final OnReceivedLoginRequestHelper mOnReceivedLoginRequestHelper;
27 private final OnEvaluateJavaScriptResultHelper mOnEvaluateJavaScriptResultHelper;
28 private final AddMessageToConsoleHelper mAddMessageToConsoleHelper;
29 private final OnScaleChangedHelper mOnScaleChangedHelper;
30 private final PictureListenerHelper mPictureListenerHelper;
31 private final ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper;
32 private final DoUpdateVisitedHistoryHelper mDoUpdateVisitedHistoryHelper;
34 public TestAwContentsClient() {
35 super(ThreadUtils.getUiThreadLooper());
36 mOnPageStartedHelper = new OnPageStartedHelper();
37 mOnPageFinishedHelper = new OnPageFinishedHelper();
38 mOnReceivedErrorHelper = new OnReceivedErrorHelper();
39 mOnDownloadStartHelper = new OnDownloadStartHelper();
40 mOnReceivedLoginRequestHelper = new OnReceivedLoginRequestHelper();
41 mOnEvaluateJavaScriptResultHelper = new OnEvaluateJavaScriptResultHelper();
42 mAddMessageToConsoleHelper = new AddMessageToConsoleHelper();
43 mOnScaleChangedHelper = new OnScaleChangedHelper();
44 mPictureListenerHelper = new PictureListenerHelper();
45 mShouldOverrideUrlLoadingHelper = new ShouldOverrideUrlLoadingHelper();
46 mDoUpdateVisitedHistoryHelper = new DoUpdateVisitedHistoryHelper();
49 public OnPageStartedHelper getOnPageStartedHelper() {
50 return mOnPageStartedHelper;
53 public OnPageFinishedHelper getOnPageFinishedHelper() {
54 return mOnPageFinishedHelper;
57 public OnReceivedErrorHelper getOnReceivedErrorHelper() {
58 return mOnReceivedErrorHelper;
61 public OnDownloadStartHelper getOnDownloadStartHelper() {
62 return mOnDownloadStartHelper;
65 public OnReceivedLoginRequestHelper getOnReceivedLoginRequestHelper() {
66 return mOnReceivedLoginRequestHelper;
69 public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
70 return mOnEvaluateJavaScriptResultHelper;
73 public ShouldOverrideUrlLoadingHelper getShouldOverrideUrlLoadingHelper() {
74 return mShouldOverrideUrlLoadingHelper;
77 public AddMessageToConsoleHelper getAddMessageToConsoleHelper() {
78 return mAddMessageToConsoleHelper;
81 public DoUpdateVisitedHistoryHelper getDoUpdateVisitedHistoryHelper() {
82 return mDoUpdateVisitedHistoryHelper;
86 * Callback helper for onScaleChangedScaled.
88 public static class OnScaleChangedHelper extends CallbackHelper {
89 private float mPreviousScale;
90 private float mCurrentScale;
91 public void notifyCalled(float oldScale, float newScale) {
92 mPreviousScale = oldScale;
93 mCurrentScale = newScale;
97 public float getOldScale() {
98 return mPreviousScale;
101 public float getNewScale() {
102 return mCurrentScale;
105 public float getLastScaleRatio() {
106 assert getCallCount() > 0;
107 return mCurrentScale / mPreviousScale;
111 public OnScaleChangedHelper getOnScaleChangedHelper() {
112 return mOnScaleChangedHelper;
115 public PictureListenerHelper getPictureListenerHelper() {
116 return mPictureListenerHelper;
120 public void onReceivedTitle(String title) {
121 mUpdatedTitle = title;
124 public String getUpdatedTitle() {
125 return mUpdatedTitle;
129 public void onPageStarted(String url) {
130 mOnPageStartedHelper.notifyCalled(url);
134 public void onPageFinished(String url) {
135 mOnPageFinishedHelper.notifyCalled(url);
139 public void onReceivedError(int errorCode, String description, String failingUrl) {
140 mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
144 * CallbackHelper for OnDownloadStart.
146 public static class OnDownloadStartHelper extends CallbackHelper {
148 private String mUserAgent;
149 private String mContentDisposition;
150 private String mMimeType;
153 public String getUrl() {
154 assert getCallCount() > 0;
158 public String getUserAgent() {
159 assert getCallCount() > 0;
163 public String getContentDisposition() {
164 assert getCallCount() > 0;
165 return mContentDisposition;
168 public String getMimeType() {
169 assert getCallCount() > 0;
173 public long getContentLength() {
174 assert getCallCount() > 0;
175 return mContentLength;
178 public void notifyCalled(String url, String userAgent, String contentDisposition,
179 String mimeType, long contentLength) {
181 mUserAgent = userAgent;
182 mContentDisposition = contentDisposition;
183 mMimeType = mimeType;
184 mContentLength = contentLength;
190 public void onDownloadStart(String url,
192 String contentDisposition,
194 long contentLength) {
195 getOnDownloadStartHelper().notifyCalled(url, userAgent, contentDisposition, mimeType,
200 * CallbackHelper for OnReceivedLoginRequest.
202 public static class OnReceivedLoginRequestHelper extends CallbackHelper {
203 private String mRealm;
204 private String mAccount;
205 private String mArgs;
207 public String getRealm() {
208 assert getCallCount() > 0;
212 public String getAccount() {
213 assert getCallCount() > 0;
217 public String getArgs() {
218 assert getCallCount() > 0;
222 public void notifyCalled(String realm, String account, String args) {
231 public void onReceivedLoginRequest(String realm, String account, String args) {
232 getOnReceivedLoginRequestHelper().notifyCalled(realm, account, args);
236 public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
237 mAddMessageToConsoleHelper.notifyCalled(consoleMessage.messageLevel().ordinal(),
238 consoleMessage.message(), consoleMessage.lineNumber(), consoleMessage.sourceId());
243 * Callback helper for onScaleChangedScaled.
245 public static class AddMessageToConsoleHelper extends CallbackHelper {
247 private String mMessage;
248 private int mLineNumber;
249 private String mSourceId;
251 public int getLevel() {
252 assert getCallCount() > 0;
256 public String getMessage() {
257 assert getCallCount() > 0;
261 public int getLineNumber() {
262 assert getCallCount() > 0;
266 public String getSourceId() {
267 assert getCallCount() > 0;
271 void notifyCalled(int level, String message, int lineNumer, String sourceId) {
274 mLineNumber = lineNumer;
275 mSourceId = sourceId;
281 public void onScaleChangedScaled(float oldScale, float newScale) {
282 mOnScaleChangedHelper.notifyCalled(oldScale, newScale);
286 * Callback helper for onScaleChangedScaled.
288 public static class PictureListenerHelper extends CallbackHelper {
289 // Generally null, depending on |invalidationOnly| in enableOnNewPicture()
290 private Picture mPicture;
292 public Picture getPicture() {
293 assert getCallCount() > 0;
297 void notifyCalled(Picture picture) {
304 public void onNewPicture(Picture picture) {
305 mPictureListenerHelper.notifyCalled(picture);
309 * Callback helper for onScaleChangedScaled.
311 public static class ShouldOverrideUrlLoadingHelper extends CallbackHelper {
312 private String mShouldOverrideUrlLoadingUrl;
313 private String mPreviousShouldOverrideUrlLoadingUrl;
314 private boolean mShouldOverrideUrlLoadingReturnValue = false;
315 void setShouldOverrideUrlLoadingUrl(String url) {
316 mShouldOverrideUrlLoadingUrl = url;
318 void setPreviousShouldOverrideUrlLoadingUrl(String url) {
319 mPreviousShouldOverrideUrlLoadingUrl = url;
321 void setShouldOverrideUrlLoadingReturnValue(boolean value) {
322 mShouldOverrideUrlLoadingReturnValue = value;
324 public String getShouldOverrideUrlLoadingUrl() {
325 assert getCallCount() > 0;
326 return mShouldOverrideUrlLoadingUrl;
328 public String getPreviousShouldOverrideUrlLoadingUrl() {
329 assert getCallCount() > 1;
330 return mPreviousShouldOverrideUrlLoadingUrl;
332 public boolean getShouldOverrideUrlLoadingReturnValue() {
333 return mShouldOverrideUrlLoadingReturnValue;
335 public void notifyCalled(String url) {
336 mPreviousShouldOverrideUrlLoadingUrl = mShouldOverrideUrlLoadingUrl;
337 mShouldOverrideUrlLoadingUrl = url;
343 public boolean shouldOverrideUrlLoading(String url) {
344 super.shouldOverrideUrlLoading(url);
345 boolean returnValue =
346 mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingReturnValue();
347 mShouldOverrideUrlLoadingHelper.notifyCalled(url);
353 * Callback helper for doUpdateVisitedHistory.
355 public static class DoUpdateVisitedHistoryHelper extends CallbackHelper {
359 public String getUrl() {
360 assert getCallCount() > 0;
364 public boolean getIsReload() {
365 assert getCallCount() > 0;
369 public void notifyCalled(String url, boolean isReload) {
371 mIsReload = isReload;
377 public void doUpdateVisitedHistory(String url, boolean isReload) {
378 getDoUpdateVisitedHistoryHelper().notifyCalled(url, isReload);