Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageRequestTest.java

Issue 2853423003: Revert of Convert ChromeActivityTestCaseBase direct children to JUnit4 (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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.chrome.browser.offlinepages; 5 package org.chromium.chrome.browser.offlinepages;
6 6
7 import android.support.test.InstrumentationRegistry;
8 import android.support.test.filters.SmallTest; 7 import android.support.test.filters.SmallTest;
9 8
10 import org.junit.Assert;
11 import org.junit.Before;
12 import org.junit.Rule;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15
16 import org.chromium.base.ThreadUtils; 9 import org.chromium.base.ThreadUtils;
17 import org.chromium.base.test.util.CommandLineFlags; 10 import org.chromium.base.test.util.CommandLineFlags;
18 import org.chromium.base.test.util.RetryOnFailure; 11 import org.chromium.base.test.util.RetryOnFailure;
19 import org.chromium.chrome.browser.ChromeActivity; 12 import org.chromium.chrome.browser.ChromeActivity;
20 import org.chromium.chrome.browser.ChromeSwitches;
21 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageMod elObserver; 13 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageMod elObserver;
22 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.SavePageCallba ck; 14 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.SavePageCallba ck;
23 import org.chromium.chrome.browser.profiles.Profile; 15 import org.chromium.chrome.browser.profiles.Profile;
24 import org.chromium.chrome.browser.tab.Tab; 16 import org.chromium.chrome.browser.tab.Tab;
25 import org.chromium.chrome.test.ChromeActivityTestRule; 17 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
26 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
27 import org.chromium.components.offlinepages.SavePageResult; 18 import org.chromium.components.offlinepages.SavePageResult;
28 import org.chromium.net.NetworkChangeNotifier; 19 import org.chromium.net.NetworkChangeNotifier;
29 import org.chromium.net.test.EmbeddedTestServer; 20 import org.chromium.net.test.EmbeddedTestServer;
30 21
31 import java.util.concurrent.Semaphore; 22 import java.util.concurrent.Semaphore;
32 import java.util.concurrent.TimeUnit; 23 import java.util.concurrent.TimeUnit;
33 24
34 /** Unit tests for offline page request handling. */ 25 /** Unit tests for offline page request handling. */
35 @RunWith(ChromeJUnit4ClassRunner.class) 26 @CommandLineFlags.Add("enable-features=OfflineBookmarks")
36 @CommandLineFlags.Add({"enable-features=OfflineBookmarks", 27 public class OfflinePageRequestTest extends ChromeActivityTestCaseBase<ChromeAct ivity> {
37 ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
38 ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
39 public class OfflinePageRequestTest {
40 @Rule
41 public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
42 new ChromeActivityTestRule<>(ChromeActivity.class);
43
44 private static final String TEST_PAGE = "/chrome/test/data/android/test.html "; 28 private static final String TEST_PAGE = "/chrome/test/data/android/test.html ";
45 private static final String ABOUT_PAGE = "/chrome/test/data/android/about.ht ml"; 29 private static final String ABOUT_PAGE = "/chrome/test/data/android/about.ht ml";
46 private static final int TIMEOUT_MS = 5000; 30 private static final int TIMEOUT_MS = 5000;
47 private static final ClientId CLIENT_ID = 31 private static final ClientId CLIENT_ID =
48 new ClientId(OfflinePageBridge.BOOKMARK_NAMESPACE, "1234"); 32 new ClientId(OfflinePageBridge.BOOKMARK_NAMESPACE, "1234");
49 33
50 private OfflinePageBridge mOfflinePageBridge; 34 private OfflinePageBridge mOfflinePageBridge;
51 35
52 @Before 36 public OfflinePageRequestTest() {
53 public void setUp() throws Exception { 37 super(ChromeActivity.class);
54 mActivityTestRule.startMainActivityOnBlankPage(); 38 }
39
40 @Override
41 protected void setUp() throws Exception {
42 super.setUp();
55 final Semaphore semaphore = new Semaphore(0); 43 final Semaphore semaphore = new Semaphore(0);
56 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 44 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
57 @Override 45 @Override
58 public void run() { 46 public void run() {
59 if (!NetworkChangeNotifier.isInitialized()) { 47 if (!NetworkChangeNotifier.isInitialized()) {
60 NetworkChangeNotifier.init(); 48 NetworkChangeNotifier.init();
61 } 49 }
62 NetworkChangeNotifier.forceConnectivityState(true); 50 NetworkChangeNotifier.forceConnectivityState(true);
63 51
64 Profile profile = Profile.getLastUsedProfile(); 52 Profile profile = Profile.getLastUsedProfile();
65 mOfflinePageBridge = OfflinePageBridge.getForProfile(profile); 53 mOfflinePageBridge = OfflinePageBridge.getForProfile(profile);
66 if (mOfflinePageBridge.isOfflinePageModelLoaded()) { 54 if (mOfflinePageBridge.isOfflinePageModelLoaded()) {
67 semaphore.release(); 55 semaphore.release();
68 } else { 56 } else {
69 mOfflinePageBridge.addObserver(new OfflinePageModelObserver( ) { 57 mOfflinePageBridge.addObserver(new OfflinePageModelObserver( ) {
70 @Override 58 @Override
71 public void offlinePageModelLoaded() { 59 public void offlinePageModelLoaded() {
72 semaphore.release(); 60 semaphore.release();
73 mOfflinePageBridge.removeObserver(this); 61 mOfflinePageBridge.removeObserver(this);
74 } 62 }
75 }); 63 });
76 } 64 }
77 } 65 }
78 }); 66 });
79 Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS )); 67 assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
80 } 68 }
81 69
82 @Test 70 @Override
71 protected void tearDown() throws Exception {
72 super.tearDown();
73 }
74
75 @Override
76 public void startMainActivity() throws InterruptedException {
77 startMainActivityOnBlankPage();
78 }
79
83 @SmallTest 80 @SmallTest
84 @RetryOnFailure 81 @RetryOnFailure
85 public void testLoadOfflinePageOnDisconnectedNetwork() throws Exception { 82 public void testLoadOfflinePageOnDisconnectedNetwork() throws Exception {
86 EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartServer( 83 EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartServer(
87 InstrumentationRegistry.getInstrumentation().getContext()); 84 getInstrumentation().getContext());
88 String testUrl = testServer.getURL(TEST_PAGE); 85 String testUrl = testServer.getURL(TEST_PAGE);
89 String aboutUrl = testServer.getURL(ABOUT_PAGE); 86 String aboutUrl = testServer.getURL(ABOUT_PAGE);
90 87
91 Tab tab = mActivityTestRule.getActivity().getActivityTab(); 88 Tab tab = getActivity().getActivityTab();
92 89
93 // Load and save an offline page. 90 // Load and save an offline page.
94 savePage(testUrl); 91 savePage(testUrl);
95 Assert.assertFalse(isErrorPage(tab)); 92 assertFalse(isErrorPage(tab));
96 Assert.assertFalse(isOfflinePage(tab)); 93 assertFalse(isOfflinePage(tab));
97 94
98 // Load another page. 95 // Load another page.
99 mActivityTestRule.loadUrl(aboutUrl); 96 loadUrl(aboutUrl);
100 Assert.assertFalse(isErrorPage(tab)); 97 assertFalse(isErrorPage(tab));
101 Assert.assertFalse(isOfflinePage(tab)); 98 assertFalse(isOfflinePage(tab));
102 99
103 // Stop the server and also disconnect the network. 100 // Stop the server and also disconnect the network.
104 testServer.stopAndDestroyServer(); 101 testServer.stopAndDestroyServer();
105 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 102 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
106 @Override 103 @Override
107 public void run() { 104 public void run() {
108 NetworkChangeNotifier.forceConnectivityState(false); 105 NetworkChangeNotifier.forceConnectivityState(false);
109 } 106 }
110 }); 107 });
111 108
112 // Load the page that has an offline copy. The offline page should be sh own. 109 // Load the page that has an offline copy. The offline page should be sh own.
113 mActivityTestRule.loadUrl(testUrl); 110 loadUrl(testUrl);
114 Assert.assertFalse(isErrorPage(tab)); 111 assertFalse(isErrorPage(tab));
115 Assert.assertTrue(isOfflinePage(tab)); 112 assertTrue(isOfflinePage(tab));
116 } 113 }
117 114
118 @Test
119 @SmallTest 115 @SmallTest
120 @RetryOnFailure 116 @RetryOnFailure
121 public void testLoadOfflinePageWithFragmentOnDisconnectedNetwork() throws Ex ception { 117 public void testLoadOfflinePageWithFragmentOnDisconnectedNetwork() throws Ex ception {
122 EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartServer( 118 EmbeddedTestServer testServer =
123 InstrumentationRegistry.getInstrumentation().getContext()); 119 EmbeddedTestServer.createAndStartServer(getInstrumentation().get Context());
124 String testUrl = testServer.getURL(TEST_PAGE); 120 String testUrl = testServer.getURL(TEST_PAGE);
125 String testUrlWithFragment = testUrl + "#ref"; 121 String testUrlWithFragment = testUrl + "#ref";
126 122
127 Tab tab = mActivityTestRule.getActivity().getActivityTab(); 123 Tab tab = getActivity().getActivityTab();
128 124
129 // Load and save an offline page for the url with a fragment. 125 // Load and save an offline page for the url with a fragment.
130 savePage(testUrlWithFragment); 126 savePage(testUrlWithFragment);
131 Assert.assertFalse(isErrorPage(tab)); 127 assertFalse(isErrorPage(tab));
132 Assert.assertFalse(isOfflinePage(tab)); 128 assertFalse(isOfflinePage(tab));
133 129
134 // Stop the server and also disconnect the network. 130 // Stop the server and also disconnect the network.
135 testServer.stopAndDestroyServer(); 131 testServer.stopAndDestroyServer();
136 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 132 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
137 @Override 133 @Override
138 public void run() { 134 public void run() {
139 NetworkChangeNotifier.forceConnectivityState(false); 135 NetworkChangeNotifier.forceConnectivityState(false);
140 } 136 }
141 }); 137 });
142 138
143 // Load the URL without the fragment. The offline page should be shown. 139 // Load the URL without the fragment. The offline page should be shown.
144 mActivityTestRule.loadUrl(testUrl); 140 loadUrl(testUrl);
145 Assert.assertFalse(isErrorPage(tab)); 141 assertFalse(isErrorPage(tab));
146 Assert.assertTrue(isOfflinePage(tab)); 142 assertTrue(isOfflinePage(tab));
147 } 143 }
148 144
149 private void savePage(String url) throws InterruptedException { 145 private void savePage(String url) throws InterruptedException {
150 mActivityTestRule.loadUrl(url); 146 loadUrl(url);
151 147
152 final Semaphore semaphore = new Semaphore(0); 148 final Semaphore semaphore = new Semaphore(0);
153 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 149 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
154 @Override 150 @Override
155 public void run() { 151 public void run() {
156 mOfflinePageBridge.savePage( 152 mOfflinePageBridge.savePage(getActivity().getActivityTab().getWe bContents(),
157 mActivityTestRule.getActivity().getActivityTab().getWebC ontents(),
158 CLIENT_ID, new SavePageCallback() { 153 CLIENT_ID, new SavePageCallback() {
159 @Override 154 @Override
160 public void onSavePageDone( 155 public void onSavePageDone(
161 int savePageResult, String url, long offline Id) { 156 int savePageResult, String url, long offline Id) {
162 Assert.assertEquals( 157 assertEquals(
163 "Save failed.", SavePageResult.SUCCESS, savePageResult); 158 "Save failed.", SavePageResult.SUCCESS, savePageResult);
164 semaphore.release(); 159 semaphore.release();
165 } 160 }
166 }); 161 });
167 } 162 }
168 }); 163 });
169 Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS )); 164 assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
170 } 165 }
171 166
172 private boolean isOfflinePage(final Tab tab) { 167 private boolean isOfflinePage(final Tab tab) {
173 final boolean[] isOffline = new boolean[1]; 168 final boolean[] isOffline = new boolean[1];
174 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 169 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
175 @Override 170 @Override
176 public void run() { 171 public void run() {
177 isOffline[0] = OfflinePageUtils.isOfflinePage(tab); 172 isOffline[0] = OfflinePageUtils.isOfflinePage(tab);
178 } 173 }
179 }); 174 });
180 return isOffline[0]; 175 return isOffline[0];
181 } 176 }
182 177
183 private boolean isErrorPage(final Tab tab) { 178 private boolean isErrorPage(final Tab tab) {
184 final boolean[] isShowingError = new boolean[1]; 179 final boolean[] isShowingError = new boolean[1];
185 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 180 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
186 @Override 181 @Override
187 public void run() { 182 public void run() {
188 isShowingError[0] = tab.isShowingErrorPage(); 183 isShowingError[0] = tab.isShowingErrorPage();
189 } 184 }
190 }); 185 });
191 return isShowingError[0]; 186 return isShowingError[0];
192 } 187 }
193 } 188 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698