| 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.support.test.filters.MediumTest; | 7 import android.support.test.filters.MediumTest; |
| 8 | 8 |
| 9 import org.junit.Assert; |
| 10 import org.junit.Rule; |
| 11 import org.junit.Test; |
| 12 import org.junit.runner.RunWith; |
| 13 |
| 14 import org.chromium.base.test.BaseJUnit4ClassRunner; |
| 9 import org.chromium.base.test.util.Feature; | 15 import org.chromium.base.test.util.Feature; |
| 10 import org.chromium.base.test.util.FlakyTest; | 16 import org.chromium.base.test.util.FlakyTest; |
| 11 import org.chromium.base.test.util.UrlUtils; | 17 import org.chromium.base.test.util.UrlUtils; |
| 12 import org.chromium.content.browser.test.util.TestCallbackHelperContainer; | 18 import org.chromium.content.browser.test.util.TestCallbackHelperContainer; |
| 13 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval
uateJavaScriptResultHelper; | 19 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval
uateJavaScriptResultHelper; |
| 14 import org.chromium.content_public.browser.LoadUrlParams; | 20 import org.chromium.content_public.browser.LoadUrlParams; |
| 15 import org.chromium.content_public.browser.NavigationController; | 21 import org.chromium.content_public.browser.NavigationController; |
| 16 import org.chromium.content_public.browser.NavigationHistory; | 22 import org.chromium.content_public.browser.NavigationHistory; |
| 17 import org.chromium.content_shell_apk.ContentShellActivity; | 23 import org.chromium.content_shell_apk.ContentShellActivity; |
| 18 import org.chromium.content_shell_apk.ContentShellTestBase; | 24 import org.chromium.content_shell_apk.ContentShellActivityTestRule; |
| 19 | 25 |
| 20 /** | 26 /** |
| 21 * Tests for various aspects of navigation. | 27 * Tests for various aspects of navigation. |
| 22 */ | 28 */ |
| 23 public class NavigationTest extends ContentShellTestBase { | 29 @RunWith(BaseJUnit4ClassRunner.class) |
| 30 public class NavigationTest { |
| 31 @Rule |
| 32 public ContentShellActivityTestRule mActivityTestRule = new ContentShellActi
vityTestRule(); |
| 24 | 33 |
| 25 private static final String URL_1 = UrlUtils.encodeHtmlDataUri("<html>1</htm
l>"); | 34 private static final String URL_1 = UrlUtils.encodeHtmlDataUri("<html>1</htm
l>"); |
| 26 private static final String URL_2 = UrlUtils.encodeHtmlDataUri("<html>2</htm
l>"); | 35 private static final String URL_2 = UrlUtils.encodeHtmlDataUri("<html>2</htm
l>"); |
| 27 private static final String URL_3 = UrlUtils.encodeHtmlDataUri("<html>3</htm
l>"); | 36 private static final String URL_3 = UrlUtils.encodeHtmlDataUri("<html>3</htm
l>"); |
| 28 private static final String URL_4 = UrlUtils.encodeHtmlDataUri("<html>4</htm
l>"); | 37 private static final String URL_4 = UrlUtils.encodeHtmlDataUri("<html>4</htm
l>"); |
| 29 private static final String URL_5 = UrlUtils.encodeHtmlDataUri("<html>5</htm
l>"); | 38 private static final String URL_5 = UrlUtils.encodeHtmlDataUri("<html>5</htm
l>"); |
| 30 private static final String URL_6 = UrlUtils.encodeHtmlDataUri("<html>6</htm
l>"); | 39 private static final String URL_6 = UrlUtils.encodeHtmlDataUri("<html>6</htm
l>"); |
| 31 private static final String URL_7 = UrlUtils.encodeHtmlDataUri("<html>7</htm
l>"); | 40 private static final String URL_7 = UrlUtils.encodeHtmlDataUri("<html>7</htm
l>"); |
| 32 | 41 |
| 33 private void goBack(final NavigationController navigationController, | 42 private void goBack(final NavigationController navigationController, |
| 34 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { | 43 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { |
| 35 handleBlockingCallbackAction( | 44 mActivityTestRule.handleBlockingCallbackAction( |
| 36 testCallbackHelperContainer.getOnPageFinishedHelper(), | 45 testCallbackHelperContainer.getOnPageFinishedHelper(), new Runna
ble() { |
| 37 new Runnable() { | |
| 38 @Override | 46 @Override |
| 39 public void run() { | 47 public void run() { |
| 40 navigationController.goBack(); | 48 navigationController.goBack(); |
| 41 } | 49 } |
| 42 }); | 50 }); |
| 43 } | 51 } |
| 44 | 52 |
| 45 private void reload(final NavigationController navigationController, | 53 private void reload(final NavigationController navigationController, |
| 46 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { | 54 TestCallbackHelperContainer testCallbackHelperContainer) throws Thro
wable { |
| 47 handleBlockingCallbackAction( | 55 mActivityTestRule.handleBlockingCallbackAction( |
| 48 testCallbackHelperContainer.getOnPageFinishedHelper(), | 56 testCallbackHelperContainer.getOnPageFinishedHelper(), new Runna
ble() { |
| 49 new Runnable() { | |
| 50 @Override | 57 @Override |
| 51 public void run() { | 58 public void run() { |
| 52 navigationController.reload(true); | 59 navigationController.reload(true); |
| 53 } | 60 } |
| 54 }); | 61 }); |
| 55 } | 62 } |
| 56 | 63 |
| 64 @Test |
| 57 @MediumTest | 65 @MediumTest |
| 58 @Feature({"Navigation"}) | 66 @Feature({"Navigation"}) |
| 59 @FlakyTest | 67 @FlakyTest |
| 60 public void testDirectedNavigationHistory() throws Throwable { | 68 public void testDirectedNavigationHistory() throws Throwable { |
| 61 ContentShellActivity activity = launchContentShellWithUrl(URL_1); | 69 ContentShellActivity activity = mActivityTestRule.launchContentShellWith
Url(URL_1); |
| 62 waitForActiveShellToBeDoneLoading(); | 70 mActivityTestRule.waitForActiveShellToBeDoneLoading(); |
| 63 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); | 71 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); |
| 64 NavigationController navigationController = contentViewCore.getWebConten
ts() | 72 NavigationController navigationController = contentViewCore.getWebConten
ts() |
| 65 .getNavigationController(); | 73 .getNavigationController(); |
| 66 TestCallbackHelperContainer testCallbackHelperContainer = | 74 TestCallbackHelperContainer testCallbackHelperContainer = |
| 67 new TestCallbackHelperContainer(contentViewCore); | 75 new TestCallbackHelperContainer(contentViewCore); |
| 68 | 76 |
| 69 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_2)); | 77 mActivityTestRule.loadUrl( |
| 70 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_3)); | 78 navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_2)); |
| 71 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_4)); | 79 mActivityTestRule.loadUrl( |
| 72 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_5)); | 80 navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_3)); |
| 73 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_6)); | 81 mActivityTestRule.loadUrl( |
| 74 loadUrl(navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_7)); | 82 navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_4)); |
| 83 mActivityTestRule.loadUrl( |
| 84 navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_5)); |
| 85 mActivityTestRule.loadUrl( |
| 86 navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_6)); |
| 87 mActivityTestRule.loadUrl( |
| 88 navigationController, testCallbackHelperContainer, new LoadUrlPa
rams(URL_7)); |
| 75 | 89 |
| 76 NavigationHistory history = navigationController.getDirectedNavigationHi
story(false, 3); | 90 NavigationHistory history = navigationController.getDirectedNavigationHi
story(false, 3); |
| 77 assertEquals(3, history.getEntryCount()); | 91 Assert.assertEquals(3, history.getEntryCount()); |
| 78 assertEquals(URL_6, history.getEntryAtIndex(0).getUrl()); | 92 Assert.assertEquals(URL_6, history.getEntryAtIndex(0).getUrl()); |
| 79 assertEquals(URL_5, history.getEntryAtIndex(1).getUrl()); | 93 Assert.assertEquals(URL_5, history.getEntryAtIndex(1).getUrl()); |
| 80 assertEquals(URL_4, history.getEntryAtIndex(2).getUrl()); | 94 Assert.assertEquals(URL_4, history.getEntryAtIndex(2).getUrl()); |
| 81 | 95 |
| 82 history = navigationController.getDirectedNavigationHistory(true, 3); | 96 history = navigationController.getDirectedNavigationHistory(true, 3); |
| 83 assertEquals(history.getEntryCount(), 0); | 97 Assert.assertEquals(history.getEntryCount(), 0); |
| 84 | 98 |
| 85 goBack(navigationController, testCallbackHelperContainer); | 99 goBack(navigationController, testCallbackHelperContainer); |
| 86 goBack(navigationController, testCallbackHelperContainer); | 100 goBack(navigationController, testCallbackHelperContainer); |
| 87 goBack(navigationController, testCallbackHelperContainer); | 101 goBack(navigationController, testCallbackHelperContainer); |
| 88 | 102 |
| 89 history = navigationController.getDirectedNavigationHistory(false, 4); | 103 history = navigationController.getDirectedNavigationHistory(false, 4); |
| 90 assertEquals(3, history.getEntryCount()); | 104 Assert.assertEquals(3, history.getEntryCount()); |
| 91 assertEquals(URL_3, history.getEntryAtIndex(0).getUrl()); | 105 Assert.assertEquals(URL_3, history.getEntryAtIndex(0).getUrl()); |
| 92 assertEquals(URL_2, history.getEntryAtIndex(1).getUrl()); | 106 Assert.assertEquals(URL_2, history.getEntryAtIndex(1).getUrl()); |
| 93 assertEquals(URL_1, history.getEntryAtIndex(2).getUrl()); | 107 Assert.assertEquals(URL_1, history.getEntryAtIndex(2).getUrl()); |
| 94 | 108 |
| 95 history = navigationController.getDirectedNavigationHistory(true, 4); | 109 history = navigationController.getDirectedNavigationHistory(true, 4); |
| 96 assertEquals(3, history.getEntryCount()); | 110 Assert.assertEquals(3, history.getEntryCount()); |
| 97 assertEquals(URL_5, history.getEntryAtIndex(0).getUrl()); | 111 Assert.assertEquals(URL_5, history.getEntryAtIndex(0).getUrl()); |
| 98 assertEquals(URL_6, history.getEntryAtIndex(1).getUrl()); | 112 Assert.assertEquals(URL_6, history.getEntryAtIndex(1).getUrl()); |
| 99 assertEquals(URL_7, history.getEntryAtIndex(2).getUrl()); | 113 Assert.assertEquals(URL_7, history.getEntryAtIndex(2).getUrl()); |
| 100 } | 114 } |
| 101 | 115 |
| 102 /** | 116 /** |
| 103 * Tests whether a page was successfully reloaded. | 117 * Tests whether a page was successfully reloaded. |
| 104 * Checks to make sure that OnPageFinished events were fired and that the ti
mestamps of when | 118 * Checks to make sure that OnPageFinished events were fired and that the ti
mestamps of when |
| 105 * the page loaded are different after the reload. | 119 * the page loaded are different after the reload. |
| 106 */ | 120 */ |
| 121 @Test |
| 107 @MediumTest | 122 @MediumTest |
| 108 @Feature({"Navigation"}) | 123 @Feature({"Navigation"}) |
| 109 public void testPageReload() throws Throwable { | 124 public void testPageReload() throws Throwable { |
| 110 final String htmlLoadTime = "<html><head>" | 125 final String htmlLoadTime = "<html><head>" |
| 111 + "<script type=\"text/javascript\">var loadTimestamp = new Date
().getTime();" | 126 + "<script type=\"text/javascript\">var loadTimestamp = new Date
().getTime();" |
| 112 + "function getLoadtime() { return loadTimestamp; }</script></he
ad></html>"; | 127 + "function getLoadtime() { return loadTimestamp; }</script></he
ad></html>"; |
| 113 final String urlLoadTime = UrlUtils.encodeHtmlDataUri(htmlLoadTime); | 128 final String urlLoadTime = UrlUtils.encodeHtmlDataUri(htmlLoadTime); |
| 114 | 129 |
| 115 ContentShellActivity activity = launchContentShellWithUrl(urlLoadTime); | 130 ContentShellActivity activity = mActivityTestRule.launchContentShellWith
Url(urlLoadTime); |
| 116 waitForActiveShellToBeDoneLoading(); | 131 mActivityTestRule.waitForActiveShellToBeDoneLoading(); |
| 117 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); | 132 ContentViewCore contentViewCore = activity.getActiveContentViewCore(); |
| 118 TestCallbackHelperContainer testCallbackHelperContainer = | 133 TestCallbackHelperContainer testCallbackHelperContainer = |
| 119 new TestCallbackHelperContainer(contentViewCore); | 134 new TestCallbackHelperContainer(contentViewCore); |
| 120 OnEvaluateJavaScriptResultHelper javascriptHelper = new OnEvaluateJavaSc
riptResultHelper(); | 135 OnEvaluateJavaScriptResultHelper javascriptHelper = new OnEvaluateJavaSc
riptResultHelper(); |
| 121 | 136 |
| 122 // Grab the first timestamp. | 137 // Grab the first timestamp. |
| 123 javascriptHelper.evaluateJavaScriptForTests( | 138 javascriptHelper.evaluateJavaScriptForTests( |
| 124 contentViewCore.getWebContents(), "getLoadtime();"); | 139 contentViewCore.getWebContents(), "getLoadtime();"); |
| 125 javascriptHelper.waitUntilHasValue(); | 140 javascriptHelper.waitUntilHasValue(); |
| 126 String firstTimestamp = javascriptHelper.getJsonResultAndClear(); | 141 String firstTimestamp = javascriptHelper.getJsonResultAndClear(); |
| 127 assertNotNull("Timestamp was null.", firstTimestamp); | 142 Assert.assertNotNull("Timestamp was null.", firstTimestamp); |
| 128 | 143 |
| 129 // Grab the timestamp after a reload and make sure they don't match. | 144 // Grab the timestamp after a reload and make sure they don't match. |
| 130 reload(contentViewCore.getWebContents().getNavigationController(), | 145 reload(contentViewCore.getWebContents().getNavigationController(), |
| 131 testCallbackHelperContainer); | 146 testCallbackHelperContainer); |
| 132 javascriptHelper.evaluateJavaScriptForTests( | 147 javascriptHelper.evaluateJavaScriptForTests( |
| 133 contentViewCore.getWebContents(), "getLoadtime();"); | 148 contentViewCore.getWebContents(), "getLoadtime();"); |
| 134 javascriptHelper.waitUntilHasValue(); | 149 javascriptHelper.waitUntilHasValue(); |
| 135 String secondTimestamp = javascriptHelper.getJsonResultAndClear(); | 150 String secondTimestamp = javascriptHelper.getJsonResultAndClear(); |
| 136 assertNotNull("Timestamp was null.", secondTimestamp); | 151 Assert.assertNotNull("Timestamp was null.", secondTimestamp); |
| 137 assertFalse("Timestamps matched.", firstTimestamp.equals(secondTimestamp
)); | 152 Assert.assertFalse("Timestamps matched.", firstTimestamp.equals(secondTi
mestamp)); |
| 138 } | 153 } |
| 139 } | 154 } |
| OLD | NEW |