Upstream version 10.38.217.0
[platform/framework/web/crosswalk.git] / src / xwalk / test / android / core / javatests / src / org / xwalk / core / xwview / test / OnPageLoadStoppedTest.java
1 // Copyright (c) 2014 Intel Corporation. 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.xwalk.core.xwview.test;
6
7 import android.test.suitebuilder.annotation.MediumTest;
8
9 import java.util.concurrent.TimeUnit;
10
11 import org.chromium.base.test.util.Feature;
12 import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
13 import org.chromium.net.test.util.TestWebServer;
14
15 import org.xwalk.core.XWalkUIClient.LoadStatus;
16
17 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
18
19 /**
20  * Tests for the XWalkUIClient.onPageLoadStopped() method.
21  */
22 public class OnPageLoadStoppedTest extends XWalkViewTestBase {
23     private static final long WAIT_TIMEOUT_MS = scaleTimeout(2000);
24     TestWebServer mWebServer = null;
25     TestCallbackHelperContainer.OnPageFinishedHelper mOnPageFinishedHelper;
26     TestCallbackHelperContainer.OnReceivedErrorHelper mOnReceivedErrorHelper;
27     TestCallbackHelperContainer.OnPageStartedHelper mOnPageStartedHelper;
28
29     public void setUp() throws Exception {
30         super.setUp();
31         mWebServer = new TestWebServer(false);
32         mOnPageFinishedHelper = mTestHelperBridge.getOnPageFinishedHelper();
33         mOnReceivedErrorHelper = mTestHelperBridge.getOnReceivedErrorHelper();
34         mOnPageStartedHelper = mTestHelperBridge.getOnPageStartedHelper();
35     }
36
37     @Override
38     protected void tearDown() throws Exception {
39         mWebServer.shutdown();
40         super.tearDown();
41     }
42
43     @MediumTest
44     @Feature({"OnPageLoadStopped"})
45     public void testOnPageLoadStoppedWithLocalUrl() throws Throwable {
46         String url = "file:///android_asset/www/index.html";
47         int currentCallCount = mOnPageFinishedHelper.getCallCount();
48         loadUrlAsync(url);
49
50         mOnPageFinishedHelper.waitForCallback(currentCallCount);
51         assertEquals(url, mOnPageFinishedHelper.getUrl());
52         assertEquals(LoadStatus.FINISHED, mTestHelperBridge.getLoadStatus());
53     }
54
55     @MediumTest
56     @Feature({"OnPageLoadStopped"})
57     public void testOnPageLoadStoppedWithServer() throws Throwable {
58         final String testHtml = "<html><head>Header</head><body>Body</body></html>";
59         final String testPath = "/test.html";
60
61         final String testUrl = mWebServer.setResponse(testPath, testHtml, null);
62         int currentCallCount = mOnPageFinishedHelper.getCallCount();
63         loadUrlAsync(testUrl);
64
65         mOnPageFinishedHelper.waitForCallback(currentCallCount);
66         assertEquals(testUrl, mOnPageFinishedHelper.getUrl());
67         assertEquals(LoadStatus.FINISHED, mTestHelperBridge.getLoadStatus());
68     }
69
70     @MediumTest
71     @Feature({"OnPageLoadStopped"})
72     public void testOnPageLoadStoppedWithData() throws Throwable {
73         final String name = "index.html";
74         String fileContent = getFileContent(name);
75         int currentCallCount = mOnPageFinishedHelper.getCallCount();
76         loadDataAsync(null, fileContent, "text/html", false);
77
78         mOnPageFinishedHelper.waitForCallback(currentCallCount);
79         assertEquals("about:blank", mOnPageFinishedHelper.getUrl());
80         assertEquals(LoadStatus.FINISHED, mTestHelperBridge.getLoadStatus());
81     }
82
83     @MediumTest
84     @Feature({"OnPageLoadStopped"})
85     public void testOnPageLoadStoppedWithInvalidUrl() throws Throwable {
86         String url = "http://localhost/non_existent";
87         int currentCallCount = mOnPageFinishedHelper.getCallCount();
88         int onReceivedErrorCallCount = mOnReceivedErrorHelper.getCallCount();
89         assertEquals(0, mOnReceivedErrorHelper.getCallCount());
90         loadUrlAsync(url);
91
92         mOnReceivedErrorHelper.waitForCallback(onReceivedErrorCallCount,
93                                                1, WAIT_TIMEOUT_MS,
94                                                TimeUnit.MILLISECONDS);
95         mOnPageFinishedHelper.waitForCallback(currentCallCount,
96                                               1, WAIT_TIMEOUT_MS,
97                                               TimeUnit.MILLISECONDS);
98         assertEquals(1, mOnReceivedErrorHelper.getCallCount());
99         assertEquals(url, mOnPageFinishedHelper.getUrl());
100         assertEquals(LoadStatus.FAILED, mTestHelperBridge.getLoadStatus());
101     }
102
103     @MediumTest
104     @Feature({"OnPageLoadStopped"})
105     public void testOnPageLoadStoppedWithStopLoading() throws Throwable {
106         final String testHtml = "<html><head>Header</head><body>Body</body></html>";
107         final String testPath = "/test.html";
108
109         final String testUrl = mWebServer.setResponse(testPath, testHtml, null);
110         int currentCallCount = mOnPageFinishedHelper.getCallCount();
111         int startedCount = mOnPageStartedHelper.getCallCount();
112         loadUrlAsync(testUrl);
113         mOnPageStartedHelper.waitForCallback(startedCount);
114         stopLoading();
115         mOnPageFinishedHelper.waitForCallback(currentCallCount);
116         assertEquals(testUrl, mOnPageFinishedHelper.getUrl());
117         assertEquals(LoadStatus.CANCELLED, mTestHelperBridge.getLoadStatus());
118     }
119 }