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

Side by Side Diff: content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java

Issue 2708243004: Auto convert content shell tests to JUnit4 (Closed)
Patch Set: rebase Created 3 years, 9 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 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.InstrumentationRegistry;
7 import android.support.test.filters.MediumTest; 8 import android.support.test.filters.MediumTest;
8 9
10 import org.junit.After;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Rule;
14 import org.junit.Test;
15 import org.junit.runner.RunWith;
16
17 import org.chromium.base.test.BaseJUnit4ClassRunner;
9 import org.chromium.base.test.util.Feature; 18 import org.chromium.base.test.util.Feature;
10 import org.chromium.content.browser.test.util.Criteria; 19 import org.chromium.content.browser.test.util.Criteria;
11 import org.chromium.content.browser.test.util.CriteriaHelper; 20 import org.chromium.content.browser.test.util.CriteriaHelper;
12 import org.chromium.content.browser.test.util.TestCallbackHelperContainer; 21 import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
13 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval uateJavaScriptResultHelper; 22 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval uateJavaScriptResultHelper;
14 import org.chromium.content_public.browser.LoadUrlParams; 23 import org.chromium.content_public.browser.LoadUrlParams;
15 import org.chromium.content_shell_apk.ContentShellTestBase; 24 import org.chromium.content_shell_apk.ContentShellActivityTestRule;
16 import org.chromium.device.geolocation.LocationProviderFactory; 25 import org.chromium.device.geolocation.LocationProviderFactory;
17 import org.chromium.device.geolocation.MockLocationProvider; 26 import org.chromium.device.geolocation.MockLocationProvider;
18 27
19 import java.util.concurrent.Callable; 28 import java.util.concurrent.Callable;
20 29
21 /** 30 /**
22 * Test suite for ensureing that Geolocation interacts as expected 31 * Test suite for ensureing that Geolocation interacts as expected
23 * with ContentView APIs - e.g. that it's started and stopped as the 32 * with ContentView APIs - e.g. that it's started and stopped as the
24 * ContentView is hidden or shown. 33 * ContentView is hidden or shown.
25 */ 34 */
26 public class ContentViewLocationTest extends ContentShellTestBase { 35 @RunWith(BaseJUnit4ClassRunner.class)
36 public class ContentViewLocationTest {
37 @Rule
38 public ContentShellActivityTestRule mActivityTestRule = new ContentShellActi vityTestRule();
27 39
28 private TestCallbackHelperContainer mTestCallbackHelperContainer; 40 private TestCallbackHelperContainer mTestCallbackHelperContainer;
29 private TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper mJavasc riptHelper; 41 private TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper mJavasc riptHelper;
30 private MockLocationProvider mMockLocationProvider; 42 private MockLocationProvider mMockLocationProvider;
31 43
32 private void hideContentViewOnUiThread() { 44 private void hideContentViewOnUiThread() {
33 getInstrumentation().runOnMainSync(new Runnable() { 45 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable( ) {
34 @Override 46 @Override
35 public void run() { 47 public void run() {
36 getContentViewCore().onHide(); 48 mActivityTestRule.getContentViewCore().onHide();
37 } 49 }
38 }); 50 });
39 } 51 }
40 52
41 private void showContentViewOnUiThread() { 53 private void showContentViewOnUiThread() {
42 getInstrumentation().runOnMainSync(new Runnable() { 54 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable( ) {
43 @Override 55 @Override
44 public void run() { 56 public void run() {
45 getContentViewCore().onShow(); 57 mActivityTestRule.getContentViewCore().onShow();
46 } 58 }
47 }); 59 });
48 } 60 }
49 61
50 private void pollForPositionCallback() throws Throwable { 62 private void pollForPositionCallback() throws Throwable {
51 mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(), 63 mJavascriptHelper.evaluateJavaScriptForTests(
52 "positionCount = 0"); 64 mActivityTestRule.getWebContents(), "positionCount = 0");
53 mJavascriptHelper.waitUntilHasValue(); 65 mJavascriptHelper.waitUntilHasValue();
54 assertEquals(0, Integer.parseInt(mJavascriptHelper.getJsonResultAndClear ())); 66 Assert.assertEquals(0, Integer.parseInt(mJavascriptHelper.getJsonResultA ndClear()));
55 67
56 CriteriaHelper.pollInstrumentationThread(new Criteria() { 68 CriteriaHelper.pollInstrumentationThread(new Criteria() {
57 @Override 69 @Override
58 public boolean isSatisfied() { 70 public boolean isSatisfied() {
59 mJavascriptHelper.evaluateJavaScriptForTests(getWebContents( ), "positionCount"); 71 mJavascriptHelper.evaluateJavaScriptForTests(
72 mActivityTestRule.getWebContents(), "positionCount") ;
60 try { 73 try {
61 mJavascriptHelper.waitUntilHasValue(); 74 mJavascriptHelper.waitUntilHasValue();
62 } catch (Exception e) { 75 } catch (Exception e) {
63 fail(); 76 Assert.fail();
64 } 77 }
65 return Integer.parseInt(mJavascriptHelper.getJsonResultAndCl ear()) > 0; 78 return Integer.parseInt(mJavascriptHelper.getJsonResultAndCl ear()) > 0;
66 } 79 }
67 }); 80 });
68 } 81 }
69 82
70 private void startGeolocationWatchPosition() throws Throwable { 83 private void startGeolocationWatchPosition() throws Throwable {
71 mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(), 84 mJavascriptHelper.evaluateJavaScriptForTests(
72 "initiate_watchPosition();"); 85 mActivityTestRule.getWebContents(), "initiate_watchPosition();") ;
73 mJavascriptHelper.waitUntilHasValue(); 86 mJavascriptHelper.waitUntilHasValue();
74 } 87 }
75 88
76 private void ensureGeolocationRunning(final boolean running) throws Exceptio n { 89 private void ensureGeolocationRunning(final boolean running) throws Exceptio n {
77 CriteriaHelper.pollInstrumentationThread(Criteria.equals(running, new Ca llable<Boolean>() { 90 CriteriaHelper.pollInstrumentationThread(Criteria.equals(running, new Ca llable<Boolean>() {
78 @Override 91 @Override
79 public Boolean call() { 92 public Boolean call() {
80 return mMockLocationProvider.isRunning(); 93 return mMockLocationProvider.isRunning();
81 } 94 }
82 })); 95 }));
83 } 96 }
84 97
85 @Override 98 @Before
86 protected void setUp() throws Exception { 99 public void setUp() throws Exception {
87 super.setUp();
88
89 mMockLocationProvider = new MockLocationProvider(); 100 mMockLocationProvider = new MockLocationProvider();
90 LocationProviderFactory.setLocationProviderImpl(mMockLocationProvider); 101 LocationProviderFactory.setLocationProviderImpl(mMockLocationProvider);
91 102
92 try { 103 try {
93 startActivityWithTestUrl("content/test/data/android/geolocation.html "); 104 mActivityTestRule.launchContentShellWithUrlSync(
105 "content/test/data/android/geolocation.html");
94 } catch (Throwable t) { 106 } catch (Throwable t) {
95 fail(); 107 Assert.fail();
96 } 108 }
97 109
98 mTestCallbackHelperContainer = new TestCallbackHelperContainer(getConten tViewCore()); 110 mTestCallbackHelperContainer =
111 new TestCallbackHelperContainer(mActivityTestRule.getContentView Core());
99 mJavascriptHelper = new OnEvaluateJavaScriptResultHelper(); 112 mJavascriptHelper = new OnEvaluateJavaScriptResultHelper();
100 113
101 ensureGeolocationRunning(false); 114 ensureGeolocationRunning(false);
102 } 115 }
103 116
104 @Override 117 @After
105 protected void tearDown() throws Exception { 118 public void tearDown() throws Exception {
106 mMockLocationProvider.stopUpdates(); 119 mMockLocationProvider.stopUpdates();
107 super.tearDown();
108 } 120 }
109 121
122 @Test
110 @MediumTest 123 @MediumTest
111 @Feature({"Location"}) 124 @Feature({"Location"})
112 public void testWatchHideShowStop() throws Throwable { 125 public void testWatchHideShowStop() throws Throwable {
113
114 startGeolocationWatchPosition(); 126 startGeolocationWatchPosition();
115 pollForPositionCallback(); 127 pollForPositionCallback();
116 ensureGeolocationRunning(true); 128 ensureGeolocationRunning(true);
117 129
118 // Now hide the ContentView and ensure that geolocation stops. 130 // Now hide the ContentView and ensure that geolocation stops.
119 hideContentViewOnUiThread(); 131 hideContentViewOnUiThread();
120 ensureGeolocationRunning(false); 132 ensureGeolocationRunning(false);
121 133
122 mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(), 134 mJavascriptHelper.evaluateJavaScriptForTests(
123 "positionCount = 0"); 135 mActivityTestRule.getWebContents(), "positionCount = 0");
124 mJavascriptHelper.waitUntilHasValue(); 136 mJavascriptHelper.waitUntilHasValue();
125 137
126 // Show the ContentView again and ensure that geolocation starts again. 138 // Show the ContentView again and ensure that geolocation starts again.
127 showContentViewOnUiThread(); 139 showContentViewOnUiThread();
128 pollForPositionCallback(); 140 pollForPositionCallback();
129 ensureGeolocationRunning(true); 141 ensureGeolocationRunning(true);
130 142
131 // Navigate away and ensure that geolocation stops. 143 // Navigate away and ensure that geolocation stops.
132 loadUrl(getContentViewCore().getWebContents().getNavigationController(), 144 mActivityTestRule.loadUrl(
145 mActivityTestRule.getContentViewCore().getWebContents().getNavig ationController(),
133 mTestCallbackHelperContainer, new LoadUrlParams("about:blank")); 146 mTestCallbackHelperContainer, new LoadUrlParams("about:blank"));
134 ensureGeolocationRunning(false); 147 ensureGeolocationRunning(false);
135 } 148 }
136 149
150 @Test
137 @MediumTest 151 @MediumTest
138 @Feature({"Location"}) 152 @Feature({"Location"})
139 public void testHideWatchResume() throws Throwable { 153 public void testHideWatchResume() throws Throwable {
140 hideContentViewOnUiThread(); 154 hideContentViewOnUiThread();
141 startGeolocationWatchPosition(); 155 startGeolocationWatchPosition();
142 ensureGeolocationRunning(false); 156 ensureGeolocationRunning(false);
143 157
144 showContentViewOnUiThread(); 158 showContentViewOnUiThread();
145 pollForPositionCallback(); 159 pollForPositionCallback();
146 ensureGeolocationRunning(true); 160 ensureGeolocationRunning(true);
147 } 161 }
148 162
163 @Test
149 @MediumTest 164 @MediumTest
150 @Feature({"Location"}) 165 @Feature({"Location"})
151 public void testWatchHideNewWatchShow() throws Throwable { 166 public void testWatchHideNewWatchShow() throws Throwable {
152 startGeolocationWatchPosition(); 167 startGeolocationWatchPosition();
153 pollForPositionCallback(); 168 pollForPositionCallback();
154 ensureGeolocationRunning(true); 169 ensureGeolocationRunning(true);
155 170
156 hideContentViewOnUiThread(); 171 hideContentViewOnUiThread();
157 172
158 // Make sure that when starting a new watch while paused we still don't 173 // Make sure that when starting a new watch while paused we still don't
159 // start up geolocation until we show the content view again. 174 // start up geolocation until we show the content view again.
160 startGeolocationWatchPosition(); 175 startGeolocationWatchPosition();
161 ensureGeolocationRunning(false); 176 ensureGeolocationRunning(false);
162 177
163 showContentViewOnUiThread(); 178 showContentViewOnUiThread();
164 pollForPositionCallback(); 179 pollForPositionCallback();
165 ensureGeolocationRunning(true); 180 ensureGeolocationRunning(true);
166 } 181 }
167 182
183 @Test
168 @MediumTest 184 @MediumTest
169 @Feature({"Location"}) 185 @Feature({"Location"})
170 public void testHideWatchStopShow() throws Throwable { 186 public void testHideWatchStopShow() throws Throwable {
171 hideContentViewOnUiThread(); 187 hideContentViewOnUiThread();
172 startGeolocationWatchPosition(); 188 startGeolocationWatchPosition();
173 ensureGeolocationRunning(false); 189 ensureGeolocationRunning(false);
174 190
175 loadUrl(getContentViewCore().getWebContents().getNavigationController(), 191 mActivityTestRule.loadUrl(
192 mActivityTestRule.getContentViewCore().getWebContents().getNavig ationController(),
176 mTestCallbackHelperContainer, new LoadUrlParams("about:blank")); 193 mTestCallbackHelperContainer, new LoadUrlParams("about:blank"));
177 showContentViewOnUiThread(); 194 showContentViewOnUiThread();
178 ensureGeolocationRunning(false); 195 ensureGeolocationRunning(false);
179 } 196 }
180 } 197 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698