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.
6 package org.xwalk.core.xwview.test;
8 import android.util.Log;
9 import android.webkit.WebResourceResponse;
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;
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;
23 class TestHelperBridge {
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;
34 void setReturnValue(WebResourceResponse value) {
35 mResourceResponseReturnValue = value;
38 void setReturnValueForUrl(String url, WebResourceResponse value) {
39 mReturnValuesByUrls.put(url, value);
42 public void setUrlToWaitFor(String url) {
46 public List<String> getUrls() {
47 assert getCallCount() > 0;
48 return mShouldInterceptRequestUrls;
51 public WebResourceResponse getReturnValue(String url) {
52 WebResourceResponse value = mReturnValuesByUrls.get(url);
53 if (value != null) return value;
54 return mResourceResponseReturnValue;
57 public void notifyCalled(String url) {
58 if (mUrlToWaitFor == null || mUrlToWaitFor.equals(url)) {
59 mShouldInterceptRequestUrls.add(url);
65 public class OnLoadStartedHelper extends CallbackHelper {
68 public String getUrl() {
69 assert getCallCount() > 0;
73 public void notifyCalled(String url) {
79 private String mChangedTitle;
80 private final OnPageStartedHelper mOnPageStartedHelper;
81 private final OnPageFinishedHelper mOnPageFinishedHelper;
82 private final OnReceivedErrorHelper mOnReceivedErrorHelper;
84 // TODO(yongsheng): write test for this.
85 private final OnEvaluateJavaScriptResultHelper mOnEvaluateJavaScriptResultHelper;
87 private final OnTitleUpdatedHelper mOnTitleUpdatedHelper;
88 private final ShouldInterceptLoadRequestHelper mShouldInterceptLoadRequestHelper;
89 private final OnLoadStartedHelper mOnLoadStartedHelper;
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();
101 public OnPageStartedHelper getOnPageStartedHelper() {
102 return mOnPageStartedHelper;
105 public OnPageFinishedHelper getOnPageFinishedHelper() {
106 return mOnPageFinishedHelper;
109 public OnReceivedErrorHelper getOnReceivedErrorHelper() {
110 return mOnReceivedErrorHelper;
113 public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
114 return mOnEvaluateJavaScriptResultHelper;
117 public OnTitleUpdatedHelper getOnTitleUpdatedHelper() {
118 return mOnTitleUpdatedHelper;
121 public ShouldInterceptLoadRequestHelper getShouldInterceptLoadRequestHelper() {
122 return mShouldInterceptLoadRequestHelper;
125 public OnLoadStartedHelper getOnLoadStartedHelper() {
126 return mOnLoadStartedHelper;
129 public void onTitleChanged(String title) {
130 mChangedTitle = title;
131 mOnTitleUpdatedHelper.notifyCalled(title);
134 public String getChangedTitle() {
135 return mChangedTitle;
138 public void onPageStarted(String url) {
139 mOnPageStartedHelper.notifyCalled(url);
142 public void onPageFinished(String url) {
143 mOnPageFinishedHelper.notifyCalled(url);
146 public void onReceivedLoadError(int errorCode, String description, String failingUrl) {
147 mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
150 public WebResourceResponse shouldInterceptLoadRequest(String url) {
151 WebResourceResponse response = mShouldInterceptLoadRequestHelper.getReturnValue(url);
152 mShouldInterceptLoadRequestHelper.notifyCalled(url);
156 public void onLoadStarted(String url) {
157 mOnLoadStartedHelper.notifyCalled(url);