Upstream version 6.35.121.0
[platform/framework/web/crosswalk.git] / src / xwalk / test / android / core / javatests / src / org / xwalk / core / xwview / test / TestHelperBridge.java
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Copyright (c) 2014 Intel Corporation. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5
6 package org.xwalk.core.xwview.test;
7
8 import android.util.Log;
9 import android.webkit.WebResourceResponse;
10
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.concurrent.Callable;
14 import java.util.concurrent.ConcurrentHashMap;
15 import java.util.concurrent.CountDownLatch;
16
17 import org.chromium.content.browser.test.util.CallbackHelper;
18 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper;
19 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper;
20 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
21 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
22
23 class TestHelperBridge {
24
25     // Two new helper classes for testing new APIs.
26     public class ShouldInterceptLoadRequestHelper extends CallbackHelper {
27         private List<String> mShouldInterceptRequestUrls = new ArrayList<String>();
28         private ConcurrentHashMap<String, WebResourceResponse> mReturnValuesByUrls
29             = new ConcurrentHashMap<String, WebResourceResponse>();
30         // This is read from the IO thread, so needs to be marked volatile.
31         private volatile WebResourceResponse mResourceResponseReturnValue = null;
32         private String mUrlToWaitFor;
33
34         void setReturnValue(WebResourceResponse value) {
35             mResourceResponseReturnValue = value;
36         }
37
38         void setReturnValueForUrl(String url, WebResourceResponse value) {
39             mReturnValuesByUrls.put(url, value);
40         }
41
42         public void setUrlToWaitFor(String url) {
43             mUrlToWaitFor = url;
44         }
45
46         public List<String> getUrls() {
47             assert getCallCount() > 0;
48             return mShouldInterceptRequestUrls;
49         }
50
51         public WebResourceResponse getReturnValue(String url) {
52             WebResourceResponse value = mReturnValuesByUrls.get(url);
53             if (value != null) return value;
54             return mResourceResponseReturnValue;
55         }
56
57         public void notifyCalled(String url) {
58             if (mUrlToWaitFor == null || mUrlToWaitFor.equals(url)) {
59                 mShouldInterceptRequestUrls.add(url);
60                 notifyCalled();
61             }
62         }
63     }
64
65     public class OnLoadStartedHelper extends CallbackHelper {
66         private String mUrl;
67
68         public String getUrl() {
69             assert getCallCount() > 0;
70             return mUrl;
71         }
72
73         public void notifyCalled(String url) {
74             mUrl = url;
75             notifyCalled();
76         }
77     }
78
79     private String mChangedTitle;
80     private final OnPageStartedHelper mOnPageStartedHelper;
81     private final OnPageFinishedHelper mOnPageFinishedHelper;
82     private final OnReceivedErrorHelper mOnReceivedErrorHelper;
83
84     // TODO(yongsheng): write test for this.
85     private final OnEvaluateJavaScriptResultHelper mOnEvaluateJavaScriptResultHelper;
86
87     private final OnTitleUpdatedHelper mOnTitleUpdatedHelper;
88     private final ShouldInterceptLoadRequestHelper mShouldInterceptLoadRequestHelper;
89     private final OnLoadStartedHelper mOnLoadStartedHelper;
90
91     public TestHelperBridge() {
92         mOnPageStartedHelper = new OnPageStartedHelper();
93         mOnPageFinishedHelper = new OnPageFinishedHelper();
94         mOnReceivedErrorHelper = new OnReceivedErrorHelper();
95         mOnEvaluateJavaScriptResultHelper = new OnEvaluateJavaScriptResultHelper();
96         mOnTitleUpdatedHelper = new OnTitleUpdatedHelper();
97         mShouldInterceptLoadRequestHelper = new ShouldInterceptLoadRequestHelper();
98         mOnLoadStartedHelper = new OnLoadStartedHelper();
99     }
100
101     public OnPageStartedHelper getOnPageStartedHelper() {
102         return mOnPageStartedHelper;
103     }
104
105     public OnPageFinishedHelper getOnPageFinishedHelper() {
106         return mOnPageFinishedHelper;
107     }
108
109     public OnReceivedErrorHelper getOnReceivedErrorHelper() {
110         return mOnReceivedErrorHelper;
111     }
112
113     public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
114         return mOnEvaluateJavaScriptResultHelper;
115     }
116
117     public OnTitleUpdatedHelper getOnTitleUpdatedHelper() {
118         return mOnTitleUpdatedHelper;
119     }
120
121     public ShouldInterceptLoadRequestHelper getShouldInterceptLoadRequestHelper() {
122         return mShouldInterceptLoadRequestHelper;
123     }
124
125     public OnLoadStartedHelper getOnLoadStartedHelper() {
126         return mOnLoadStartedHelper;
127     }
128
129     public void onTitleChanged(String title) {
130         mChangedTitle = title;
131         mOnTitleUpdatedHelper.notifyCalled(title);
132     }
133
134     public String getChangedTitle() {
135         return mChangedTitle;
136     }
137
138     public void onPageStarted(String url) {
139         mOnPageStartedHelper.notifyCalled(url);
140     }
141
142     public void onPageFinished(String url) {
143         mOnPageFinishedHelper.notifyCalled(url);
144     }
145
146     public void onReceivedLoadError(int errorCode, String description, String failingUrl) {
147         mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
148     }
149
150     public WebResourceResponse shouldInterceptLoadRequest(String url) {
151         WebResourceResponse response = mShouldInterceptLoadRequestHelper.getReturnValue(url);
152         mShouldInterceptLoadRequestHelper.notifyCalled(url);
153         return response;
154     }
155
156     public void onLoadStarted(String url) {
157         mOnLoadStartedHelper.notifyCalled(url);
158     }
159 }