Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / TestAwContentsClient.java
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.Picture;
8 import android.webkit.ConsoleMessage;
9
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;
16
17 /**
18  * AwContentsClient subclass used for testing.
19  */
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;
33
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();
47     }
48
49     public OnPageStartedHelper getOnPageStartedHelper() {
50         return mOnPageStartedHelper;
51     }
52
53     public OnPageFinishedHelper getOnPageFinishedHelper() {
54         return mOnPageFinishedHelper;
55     }
56
57     public OnReceivedErrorHelper getOnReceivedErrorHelper() {
58         return mOnReceivedErrorHelper;
59     }
60
61     public OnDownloadStartHelper getOnDownloadStartHelper() {
62         return mOnDownloadStartHelper;
63     }
64
65     public OnReceivedLoginRequestHelper getOnReceivedLoginRequestHelper() {
66         return mOnReceivedLoginRequestHelper;
67     }
68
69     public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
70         return mOnEvaluateJavaScriptResultHelper;
71     }
72
73     public ShouldOverrideUrlLoadingHelper getShouldOverrideUrlLoadingHelper() {
74         return mShouldOverrideUrlLoadingHelper;
75     }
76
77     public AddMessageToConsoleHelper getAddMessageToConsoleHelper() {
78         return mAddMessageToConsoleHelper;
79     }
80
81     public DoUpdateVisitedHistoryHelper getDoUpdateVisitedHistoryHelper() {
82         return mDoUpdateVisitedHistoryHelper;
83     }
84
85     /**
86      * Callback helper for onScaleChangedScaled.
87      */
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;
94             super.notifyCalled();
95         }
96
97         public float getOldScale() {
98             return mPreviousScale;
99         }
100
101         public float getNewScale() {
102             return mCurrentScale;
103         }
104
105         public float getLastScaleRatio() {
106             assert getCallCount() > 0;
107             return mCurrentScale / mPreviousScale;
108         }
109     }
110
111     public OnScaleChangedHelper getOnScaleChangedHelper() {
112         return mOnScaleChangedHelper;
113     }
114
115     public PictureListenerHelper getPictureListenerHelper() {
116         return mPictureListenerHelper;
117     }
118
119     @Override
120     public void onReceivedTitle(String title) {
121         mUpdatedTitle = title;
122     }
123
124     public String getUpdatedTitle() {
125         return mUpdatedTitle;
126     }
127
128     @Override
129     public void onPageStarted(String url) {
130         mOnPageStartedHelper.notifyCalled(url);
131     }
132
133     @Override
134     public void onPageFinished(String url) {
135         mOnPageFinishedHelper.notifyCalled(url);
136     }
137
138     @Override
139     public void onReceivedError(int errorCode, String description, String failingUrl) {
140         mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
141     }
142
143     /**
144      * CallbackHelper for OnDownloadStart.
145      */
146     public static class OnDownloadStartHelper extends CallbackHelper {
147         private String mUrl;
148         private String mUserAgent;
149         private String mContentDisposition;
150         private String mMimeType;
151         long mContentLength;
152
153         public String getUrl() {
154             assert getCallCount() > 0;
155             return mUrl;
156         }
157
158         public String getUserAgent() {
159             assert getCallCount() > 0;
160             return mUserAgent;
161         }
162
163         public String getContentDisposition() {
164             assert getCallCount() > 0;
165             return mContentDisposition;
166         }
167
168         public String getMimeType() {
169             assert getCallCount() > 0;
170             return mMimeType;
171         }
172
173         public long getContentLength() {
174             assert getCallCount() > 0;
175             return mContentLength;
176         }
177
178         public void notifyCalled(String url, String userAgent, String contentDisposition,
179                 String mimeType, long contentLength) {
180             mUrl = url;
181             mUserAgent = userAgent;
182             mContentDisposition = contentDisposition;
183             mMimeType = mimeType;
184             mContentLength = contentLength;
185             notifyCalled();
186         }
187     }
188
189     @Override
190     public void onDownloadStart(String url,
191             String userAgent,
192             String contentDisposition,
193             String mimeType,
194             long contentLength) {
195         getOnDownloadStartHelper().notifyCalled(url, userAgent, contentDisposition, mimeType,
196                 contentLength);
197     }
198
199     /**
200      * CallbackHelper for OnReceivedLoginRequest.
201      */
202     public static class OnReceivedLoginRequestHelper extends CallbackHelper {
203         private String mRealm;
204         private String mAccount;
205         private String mArgs;
206
207         public String getRealm() {
208             assert getCallCount() > 0;
209             return mRealm;
210         }
211
212         public String getAccount() {
213             assert getCallCount() > 0;
214             return mAccount;
215         }
216
217         public String getArgs() {
218             assert getCallCount() > 0;
219             return mArgs;
220         }
221
222         public void notifyCalled(String realm, String account, String args) {
223             mRealm = realm;
224             mAccount = account;
225             mArgs = args;
226             notifyCalled();
227         }
228     }
229
230     @Override
231     public void onReceivedLoginRequest(String realm, String account, String args) {
232         getOnReceivedLoginRequestHelper().notifyCalled(realm, account, args);
233     }
234
235     @Override
236     public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
237         mAddMessageToConsoleHelper.notifyCalled(consoleMessage.messageLevel().ordinal(),
238                 consoleMessage.message(), consoleMessage.lineNumber(), consoleMessage.sourceId());
239         return false;
240     }
241
242     /**
243      * Callback helper for onScaleChangedScaled.
244      */
245     public static class AddMessageToConsoleHelper extends CallbackHelper {
246         private int mLevel;
247         private String mMessage;
248         private int mLineNumber;
249         private String mSourceId;
250
251         public int getLevel() {
252             assert getCallCount() > 0;
253             return mLevel;
254         }
255
256         public String getMessage() {
257             assert getCallCount() > 0;
258             return mMessage;
259         }
260
261         public int getLineNumber() {
262             assert getCallCount() > 0;
263             return mLineNumber;
264         }
265
266         public String getSourceId() {
267             assert getCallCount() > 0;
268             return mSourceId;
269         }
270
271         void notifyCalled(int level, String message, int lineNumer, String sourceId) {
272             mLevel = level;
273             mMessage = message;
274             mLineNumber = lineNumer;
275             mSourceId = sourceId;
276             notifyCalled();
277         }
278     }
279
280     @Override
281     public void onScaleChangedScaled(float oldScale, float newScale) {
282         mOnScaleChangedHelper.notifyCalled(oldScale, newScale);
283     }
284
285     /**
286      * Callback helper for onScaleChangedScaled.
287      */
288     public static class PictureListenerHelper extends CallbackHelper {
289         // Generally null, depending on |invalidationOnly| in enableOnNewPicture()
290         private Picture mPicture;
291
292         public Picture getPicture() {
293             assert getCallCount() > 0;
294             return mPicture;
295         }
296
297         void notifyCalled(Picture picture) {
298             mPicture = picture;
299             notifyCalled();
300         }
301     }
302
303     @Override
304     public void onNewPicture(Picture picture) {
305         mPictureListenerHelper.notifyCalled(picture);
306     }
307
308     /**
309      * Callback helper for onScaleChangedScaled.
310      */
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;
317         }
318         void setPreviousShouldOverrideUrlLoadingUrl(String url) {
319             mPreviousShouldOverrideUrlLoadingUrl = url;
320         }
321         void setShouldOverrideUrlLoadingReturnValue(boolean value) {
322             mShouldOverrideUrlLoadingReturnValue = value;
323         }
324         public String getShouldOverrideUrlLoadingUrl() {
325             assert getCallCount() > 0;
326             return mShouldOverrideUrlLoadingUrl;
327         }
328         public String getPreviousShouldOverrideUrlLoadingUrl() {
329             assert getCallCount() > 1;
330             return mPreviousShouldOverrideUrlLoadingUrl;
331         }
332         public boolean getShouldOverrideUrlLoadingReturnValue() {
333             return mShouldOverrideUrlLoadingReturnValue;
334         }
335         public void notifyCalled(String url) {
336             mPreviousShouldOverrideUrlLoadingUrl = mShouldOverrideUrlLoadingUrl;
337             mShouldOverrideUrlLoadingUrl = url;
338             notifyCalled();
339         }
340     }
341
342     @Override
343     public boolean shouldOverrideUrlLoading(String url) {
344         super.shouldOverrideUrlLoading(url);
345         boolean returnValue =
346                 mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingReturnValue();
347         mShouldOverrideUrlLoadingHelper.notifyCalled(url);
348         return returnValue;
349     }
350
351
352     /**
353      * Callback helper for doUpdateVisitedHistory.
354      */
355     public static class DoUpdateVisitedHistoryHelper extends CallbackHelper {
356         String mUrl;
357         boolean mIsReload;
358
359         public String getUrl() {
360             assert getCallCount() > 0;
361             return mUrl;
362         }
363
364         public boolean getIsReload() {
365             assert getCallCount() > 0;
366             return mIsReload;
367         }
368
369         public void notifyCalled(String url, boolean isReload) {
370             mUrl = url;
371             mIsReload = isReload;
372             notifyCalled();
373         }
374     }
375
376     @Override
377     public void doUpdateVisitedHistory(String url, boolean isReload) {
378         getDoUpdateVisitedHistoryHelper().notifyCalled(url, isReload);
379     }
380 }