OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.content.browser; | 5 package org.chromium.content.browser; |
6 | 6 |
7 import android.test.suitebuilder.annotation.MediumTest; | 7 import android.test.suitebuilder.annotation.MediumTest; |
8 | 8 |
9 import org.chromium.base.test.util.Feature; | 9 import org.chromium.base.test.util.Feature; |
10 import org.chromium.base.test.util.UrlUtils; | 10 import org.chromium.base.test.util.UrlUtils; |
11 import org.chromium.content.browser.test.util.TestCallbackHelperContainer; | 11 import org.chromium.content.browser.test.util.TestCallbackHelperContainer; |
12 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval
uateJavaScriptResultHelper; | 12 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval
uateJavaScriptResultHelper; |
13 import org.chromium.content_public.browser.LoadUrlParams; | 13 import org.chromium.content_public.browser.LoadUrlParams; |
| 14 import org.chromium.content_public.browser.NavigationController; |
14 import org.chromium.content_public.browser.NavigationHistory; | 15 import org.chromium.content_public.browser.NavigationHistory; |
15 import org.chromium.content_shell_apk.ContentShellActivity; | 16 import org.chromium.content_shell_apk.ContentShellActivity; |
16 import org.chromium.content_shell_apk.ContentShellTestBase; | 17 import org.chromium.content_shell_apk.ContentShellTestBase; |
17 | 18 |
18 /** | 19 /** |
19 * Tests for various aspects of navigation. | 20 * Tests for various aspects of navigation. |
20 */ | 21 */ |
21 public class NavigationTest extends ContentShellTestBase { | 22 public class NavigationTest extends ContentShellTestBase { |
22 | 23 |
23 private static final String URL_1 = UrlUtils.encodeHtmlDataUri("<html>1</htm
l>"); | 24 private static final String URL_1 = UrlUtils.encodeHtmlDataUri("<html>1</htm
l>"); |
24 private static final String URL_2 = UrlUtils.encodeHtmlDataUri("<html>2</htm
l>"); | 25 private static final String URL_2 = UrlUtils.encodeHtmlDataUri("<html>2</htm
l>"); |
25 private static final String URL_3 = UrlUtils.encodeHtmlDataUri("<html>3</htm
l>"); | 26 private static final String URL_3 = UrlUtils.encodeHtmlDataUri("<html>3</htm
l>"); |
26 private static final String URL_4 = UrlUtils.encodeHtmlDataUri("<html>4</htm
l>"); | 27 private static final String URL_4 = UrlUtils.encodeHtmlDataUri("<html>4</htm
l>"); |
27 private static final String URL_5 = UrlUtils.encodeHtmlDataUri("<html>5</htm
l>"); | 28 private static final String URL_5 = UrlUtils.encodeHtmlDataUri("<html>5</htm
l>"); |
28 private static final String URL_6 = UrlUtils.encodeHtmlDataUri("<html>6</htm
l>"); | 29 private static final String URL_6 = UrlUtils.encodeHtmlDataUri("<html>6</htm
l>"); |
29 private static final String URL_7 = UrlUtils.encodeHtmlDataUri("<html>7</htm
l>"); | 30 private static final String URL_7 = UrlUtils.encodeHtmlDataUri("<html>7</htm
l>"); |
30 | 31 |
31 private void goBack(final ContentViewCore contentViewCore, | 32 private void goBack(final NavigationController navigationController, |
32 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { | 33 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { |
33 handleBlockingCallbackAction( | 34 handleBlockingCallbackAction( |
34 testCallbackHelperContainer.getOnPageFinishedHelper(), | 35 testCallbackHelperContainer.getOnPageFinishedHelper(), |
35 new Runnable() { | 36 new Runnable() { |
36 @Override | 37 @Override |
37 public void run() { | 38 public void run() { |
38 contentViewCore.getWebContents().getNavigationController
().goBack(); | 39 navigationController.goBack(); |
39 } | 40 } |
40 }); | 41 }); |
41 } | 42 } |
42 | 43 |
43 private void reload(final ContentViewCore contentViewCore, | 44 private void reload(final NavigationController navigationController, |
44 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { | 45 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { |
45 handleBlockingCallbackAction( | 46 handleBlockingCallbackAction( |
46 testCallbackHelperContainer.getOnPageFinishedHelper(), | 47 testCallbackHelperContainer.getOnPageFinishedHelper(), |
47 new Runnable() { | 48 new Runnable() { |
48 @Override | 49 @Override |
49 public void run() { | 50 public void run() { |
50 contentViewCore.getWebContents().getNavigationController
().reload(true); | 51 navigationController.reload(true); |
51 } | 52 } |
52 }); | 53 }); |
53 } | 54 } |
54 | 55 |
55 @MediumTest | 56 @MediumTest |
56 @Feature({"Navigation"}) | 57 @Feature({"Navigation"}) |
57 public void testDirectedNavigationHistory() throws Throwable { | 58 public void testDirectedNavigationHistory() throws Throwable { |
58 ContentShellActivity activity = launchContentShellWithUrl(URL_1); | 59 ContentShellActivity activity = launchContentShellWithUrl(URL_1); |
59 waitForActiveShellToBeDoneLoading(); | 60 waitForActiveShellToBeDoneLoading(); |
60 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); | 61 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); |
| 62 NavigationController navigationController = contentViewCore.getWebConten
ts() |
| 63 .getNavigationController(); |
61 TestCallbackHelperContainer testCallbackHelperContainer = | 64 TestCallbackHelperContainer testCallbackHelperContainer = |
62 new TestCallbackHelperContainer(contentViewCore); | 65 new TestCallbackHelperContainer(contentViewCore); |
63 | 66 |
64 loadUrl(contentViewCore, testCallbackHelperContainer, new LoadUrlParams(
URL_2)); | 67 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_2)); |
65 loadUrl(contentViewCore, testCallbackHelperContainer, new LoadUrlParams(
URL_3)); | 68 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_3)); |
66 loadUrl(contentViewCore, testCallbackHelperContainer, new LoadUrlParams(
URL_4)); | 69 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_4)); |
67 loadUrl(contentViewCore, testCallbackHelperContainer, new LoadUrlParams(
URL_5)); | 70 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_5)); |
68 loadUrl(contentViewCore, testCallbackHelperContainer, new LoadUrlParams(
URL_6)); | 71 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_6)); |
69 loadUrl(contentViewCore, testCallbackHelperContainer, new LoadUrlParams(
URL_7)); | 72 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_7)); |
70 | 73 |
71 NavigationHistory history = contentViewCore.getWebContents().getNavigati
onController() | 74 NavigationHistory history = navigationController.getDirectedNavigationHi
story(false, 3); |
72 .getDirectedNavigationHistory(false, 3); | |
73 assertEquals(3, history.getEntryCount()); | 75 assertEquals(3, history.getEntryCount()); |
74 assertEquals(URL_6, history.getEntryAtIndex(0).getUrl()); | 76 assertEquals(URL_6, history.getEntryAtIndex(0).getUrl()); |
75 assertEquals(URL_5, history.getEntryAtIndex(1).getUrl()); | 77 assertEquals(URL_5, history.getEntryAtIndex(1).getUrl()); |
76 assertEquals(URL_4, history.getEntryAtIndex(2).getUrl()); | 78 assertEquals(URL_4, history.getEntryAtIndex(2).getUrl()); |
77 | 79 |
78 history = contentViewCore.getWebContents().getNavigationController() | 80 history = navigationController.getDirectedNavigationHistory(true, 3); |
79 .getDirectedNavigationHistory(true, 3); | |
80 assertEquals(history.getEntryCount(), 0); | 81 assertEquals(history.getEntryCount(), 0); |
81 | 82 |
82 goBack(contentViewCore, testCallbackHelperContainer); | 83 goBack(navigationController, testCallbackHelperContainer); |
83 goBack(contentViewCore, testCallbackHelperContainer); | 84 goBack(navigationController, testCallbackHelperContainer); |
84 goBack(contentViewCore, testCallbackHelperContainer); | 85 goBack(navigationController, testCallbackHelperContainer); |
85 | 86 |
86 history = contentViewCore.getWebContents().getNavigationController() | 87 history = navigationController.getDirectedNavigationHistory(false, 4); |
87 .getDirectedNavigationHistory(false, 4); | |
88 assertEquals(3, history.getEntryCount()); | 88 assertEquals(3, history.getEntryCount()); |
89 assertEquals(URL_3, history.getEntryAtIndex(0).getUrl()); | 89 assertEquals(URL_3, history.getEntryAtIndex(0).getUrl()); |
90 assertEquals(URL_2, history.getEntryAtIndex(1).getUrl()); | 90 assertEquals(URL_2, history.getEntryAtIndex(1).getUrl()); |
91 assertEquals(URL_1, history.getEntryAtIndex(2).getUrl()); | 91 assertEquals(URL_1, history.getEntryAtIndex(2).getUrl()); |
92 | 92 |
93 history = contentViewCore.getWebContents().getNavigationController() | 93 history = navigationController.getDirectedNavigationHistory(true, 4); |
94 .getDirectedNavigationHistory(true, 4); | |
95 assertEquals(3, history.getEntryCount()); | 94 assertEquals(3, history.getEntryCount()); |
96 assertEquals(URL_5, history.getEntryAtIndex(0).getUrl()); | 95 assertEquals(URL_5, history.getEntryAtIndex(0).getUrl()); |
97 assertEquals(URL_6, history.getEntryAtIndex(1).getUrl()); | 96 assertEquals(URL_6, history.getEntryAtIndex(1).getUrl()); |
98 assertEquals(URL_7, history.getEntryAtIndex(2).getUrl()); | 97 assertEquals(URL_7, history.getEntryAtIndex(2).getUrl()); |
99 } | 98 } |
100 | 99 |
101 /** | 100 /** |
102 * Tests whether a page was successfully reloaded. | 101 * Tests whether a page was successfully reloaded. |
103 * Checks to make sure that OnPageFinished events were fired and that the ti
mestamps of when | 102 * Checks to make sure that OnPageFinished events were fired and that the ti
mestamps of when |
104 * the page loaded are different after the reload. | 103 * the page loaded are different after the reload. |
105 */ | 104 */ |
106 @MediumTest | 105 @MediumTest |
107 @Feature({"Navigation"}) | 106 @Feature({"Navigation"}) |
108 public void testPageReload() throws Throwable { | 107 public void testPageReload() throws Throwable { |
109 final String htmlLoadTime = "<html><head>" + | 108 final String htmlLoadTime = "<html><head>" + |
110 "<script type=\"text/javascript\">var loadTimestamp = new Date()
.getTime();" + | 109 "<script type=\"text/javascript\">var loadTimestamp = new Date()
.getTime();" + |
111 "function getLoadtime() { return loadTimestamp; }</script></head
></html>"; | 110 "function getLoadtime() { return loadTimestamp; }</script></head
></html>"; |
112 final String urlLoadTime = UrlUtils.encodeHtmlDataUri(htmlLoadTime); | 111 final String urlLoadTime = UrlUtils.encodeHtmlDataUri(htmlLoadTime); |
113 | 112 |
114 ContentShellActivity activity = launchContentShellWithUrl(urlLoadTime); | 113 ContentShellActivity activity = launchContentShellWithUrl(urlLoadTime); |
115 waitForActiveShellToBeDoneLoading(); | 114 waitForActiveShellToBeDoneLoading(); |
116 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); | 115 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); |
117 TestCallbackHelperContainer testCallbackHelperContainer = | 116 TestCallbackHelperContainer testCallbackHelperContainer = |
118 new TestCallbackHelperContainer(contentViewCore); | 117 new TestCallbackHelperContainer(contentViewCore); |
119 OnEvaluateJavaScriptResultHelper javascriptHelper = new OnEvaluateJavaSc
riptResultHelper(); | 118 OnEvaluateJavaScriptResultHelper javascriptHelper = new OnEvaluateJavaSc
riptResultHelper(); |
120 | 119 |
121 // Grab the first timestamp. | 120 // Grab the first timestamp. |
122 javascriptHelper.evaluateJavaScript(contentViewCore, "getLoadtime();"); | 121 javascriptHelper.evaluateJavaScript(contentViewCore.getWebContents(), "g
etLoadtime();"); |
123 javascriptHelper.waitUntilHasValue(); | 122 javascriptHelper.waitUntilHasValue(); |
124 String firstTimestamp = javascriptHelper.getJsonResultAndClear(); | 123 String firstTimestamp = javascriptHelper.getJsonResultAndClear(); |
125 assertNotNull("Timestamp was null.", firstTimestamp); | 124 assertNotNull("Timestamp was null.", firstTimestamp); |
126 | 125 |
127 // Grab the timestamp after a reload and make sure they don't match. | 126 // Grab the timestamp after a reload and make sure they don't match. |
128 reload(contentViewCore, testCallbackHelperContainer); | 127 reload(contentViewCore.getWebContents().getNavigationController(), |
129 javascriptHelper.evaluateJavaScript(contentViewCore, "getLoadtime();"); | 128 testCallbackHelperContainer); |
| 129 javascriptHelper.evaluateJavaScript(contentViewCore.getWebContents(), "g
etLoadtime();"); |
130 javascriptHelper.waitUntilHasValue(); | 130 javascriptHelper.waitUntilHasValue(); |
131 String secondTimestamp = javascriptHelper.getJsonResultAndClear(); | 131 String secondTimestamp = javascriptHelper.getJsonResultAndClear(); |
132 assertNotNull("Timestamp was null.", secondTimestamp); | 132 assertNotNull("Timestamp was null.", secondTimestamp); |
133 assertFalse("Timestamps matched.", firstTimestamp.equals(secondTimestamp
)); | 133 assertFalse("Timestamps matched.", firstTimestamp.equals(secondTimestamp
)); |
134 } | 134 } |
135 } | 135 } |
OLD | NEW |