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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/push_messaging/PushMessagingTest.java

Issue 2877253002: Convert Notification Tests to JUnit4 (Closed)
Patch Set: address comments 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
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationTestRule.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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.push_messaging; 5 package org.chromium.chrome.browser.push_messaging;
6 6
7 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; 7 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
8 8
9 import android.annotation.SuppressLint; 9 import android.annotation.SuppressLint;
10 import android.app.Notification; 10 import android.app.Notification;
11 import android.content.Context; 11 import android.content.Context;
12 import android.os.Bundle; 12 import android.os.Bundle;
13 import android.support.test.InstrumentationRegistry;
13 import android.support.test.filters.LargeTest; 14 import android.support.test.filters.LargeTest;
14 import android.support.test.filters.MediumTest; 15 import android.support.test.filters.MediumTest;
15 import android.test.MoreAsserts; 16 import android.test.MoreAsserts;
16 import android.util.Pair; 17 import android.util.Pair;
17 18
19 import org.junit.After;
20 import org.junit.Assert;
21 import org.junit.Before;
22 import org.junit.Rule;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25
18 import org.chromium.base.ThreadUtils; 26 import org.chromium.base.ThreadUtils;
19 import org.chromium.base.library_loader.ProcessInitException; 27 import org.chromium.base.library_loader.ProcessInitException;
20 import org.chromium.base.test.util.CallbackHelper; 28 import org.chromium.base.test.util.CallbackHelper;
21 import org.chromium.base.test.util.CommandLineFlags; 29 import org.chromium.base.test.util.CommandLineFlags;
22 import org.chromium.base.test.util.DisabledTest; 30 import org.chromium.base.test.util.DisabledTest;
23 import org.chromium.base.test.util.Feature; 31 import org.chromium.base.test.util.Feature;
24 import org.chromium.base.test.util.RetryOnFailure; 32 import org.chromium.base.test.util.RetryOnFailure;
33 import org.chromium.chrome.browser.ChromeSwitches;
25 import org.chromium.chrome.browser.infobar.InfoBar; 34 import org.chromium.chrome.browser.infobar.InfoBar;
26 import org.chromium.chrome.browser.init.ChromeBrowserInitializer; 35 import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
27 import org.chromium.chrome.browser.notifications.NotificationTestBase; 36 import org.chromium.chrome.browser.notifications.NotificationTestRule;
28 import org.chromium.chrome.browser.preferences.website.ContentSetting; 37 import org.chromium.chrome.browser.preferences.website.ContentSetting;
29 import org.chromium.chrome.browser.tab.Tab; 38 import org.chromium.chrome.browser.tab.Tab;
39 import org.chromium.chrome.test.ChromeActivityTestRule;
40 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
30 import org.chromium.chrome.test.util.InfoBarUtil; 41 import org.chromium.chrome.test.util.InfoBarUtil;
31 import org.chromium.chrome.test.util.browser.TabTitleObserver; 42 import org.chromium.chrome.test.util.browser.TabTitleObserver;
32 import org.chromium.chrome.test.util.browser.notifications.MockNotificationManag erProxy.NotificationEntry; 43 import org.chromium.chrome.test.util.browser.notifications.MockNotificationManag erProxy.NotificationEntry;
33 import org.chromium.components.gcm_driver.GCMDriver; 44 import org.chromium.components.gcm_driver.GCMDriver;
34 import org.chromium.components.gcm_driver.GCMMessage; 45 import org.chromium.components.gcm_driver.GCMMessage;
35 import org.chromium.components.gcm_driver.instance_id.FakeInstanceIDWithSubtype; 46 import org.chromium.components.gcm_driver.instance_id.FakeInstanceIDWithSubtype;
36 import org.chromium.content.browser.test.util.Criteria; 47 import org.chromium.content.browser.test.util.Criteria;
37 import org.chromium.content.browser.test.util.CriteriaHelper; 48 import org.chromium.content.browser.test.util.CriteriaHelper;
38 import org.chromium.content.browser.test.util.JavaScriptUtils; 49 import org.chromium.content.browser.test.util.JavaScriptUtils;
39 50
40 import java.util.List; 51 import java.util.List;
41 import java.util.concurrent.TimeoutException; 52 import java.util.concurrent.TimeoutException;
42 53
43 /** 54 /**
44 * Instrumentation tests for the Push API and the integration with the Notificat ions API on Android. 55 * Instrumentation tests for the Push API and the integration with the Notificat ions API on Android.
45 */ 56 */
46 // TODO(mvanouwerkerk): remove @SuppressLint once crbug.com/501900 is fixed. 57 // TODO(mvanouwerkerk): remove @SuppressLint once crbug.com/501900 is fixed.
58 @RunWith(ChromeJUnit4ClassRunner.class)
59 @CommandLineFlags.Add({
60 ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
61 ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG,
62 })
47 @SuppressLint("NewApi") 63 @SuppressLint("NewApi")
48 public class PushMessagingTest 64 public class PushMessagingTest implements PushMessagingServiceObserver.Listener {
49 extends NotificationTestBase implements PushMessagingServiceObserver.Lis tener { 65 @Rule
66 public NotificationTestRule mNotificationTestRule = new NotificationTestRule ();
67
50 private static final String PUSH_TEST_PAGE = 68 private static final String PUSH_TEST_PAGE =
51 "/chrome/test/data/push_messaging/push_messaging_test_android.html"; 69 "/chrome/test/data/push_messaging/push_messaging_test_android.html";
52 private static final String ABOUT_BLANK = "about:blank"; 70 private static final String ABOUT_BLANK = "about:blank";
53 private static final int TITLE_UPDATE_TIMEOUT_SECONDS = (int) scaleTimeout(5 ); 71 private static final int TITLE_UPDATE_TIMEOUT_SECONDS = (int) scaleTimeout(5 );
54 private static final String PRIVATE_DATA_DIRECTORY_SUFFIX = "chrome"; 72 private static final String PRIVATE_DATA_DIRECTORY_SUFFIX = "chrome";
55 73
56 private final CallbackHelper mMessageHandledHelper; 74 private final CallbackHelper mMessageHandledHelper;
57 private String mPushTestPage; 75 private String mPushTestPage;
58 76
59 public PushMessagingTest() { 77 public PushMessagingTest() {
60 mMessageHandledHelper = new CallbackHelper(); 78 mMessageHandledHelper = new CallbackHelper();
61 } 79 }
62 80
63 @Override 81 @Before
64 protected void setUp() throws Exception { 82 public void setUp() throws Exception {
65 super.setUp();
66 final PushMessagingServiceObserver.Listener listener = this; 83 final PushMessagingServiceObserver.Listener listener = this;
67 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 84 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
68 @Override 85 @Override
69 public void run() { 86 public void run() {
70 FakeInstanceIDWithSubtype.clearDataAndSetEnabled(true); 87 FakeInstanceIDWithSubtype.clearDataAndSetEnabled(true);
71 PushMessagingServiceObserver.setListenerForTesting(listener); 88 PushMessagingServiceObserver.setListenerForTesting(listener);
72 } 89 }
73 }); 90 });
74 mPushTestPage = getTestServer().getURL(PUSH_TEST_PAGE); 91 mPushTestPage = mNotificationTestRule.getTestServer().getURL(PUSH_TEST_P AGE);
75 loadUrl(mPushTestPage); 92 mNotificationTestRule.loadUrl(mPushTestPage);
76 } 93 }
77 94
78 @Override 95 @After
79 protected void tearDown() throws Exception { 96 public void tearDown() throws Exception {
80 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 97 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
81 @Override 98 @Override
82 public void run() { 99 public void run() {
83 PushMessagingServiceObserver.setListenerForTesting(null); 100 PushMessagingServiceObserver.setListenerForTesting(null);
84 FakeInstanceIDWithSubtype.clearDataAndSetEnabled(false); 101 FakeInstanceIDWithSubtype.clearDataAndSetEnabled(false);
85 } 102 }
86 }); 103 });
87 super.tearDown();
88 } 104 }
89 105
90 @Override 106 @Override
91 public void onMessageHandled() { 107 public void onMessageHandled() {
92 mMessageHandledHelper.notifyCalled(); 108 mMessageHandledHelper.notifyCalled();
93 } 109 }
94 110
95 /** 111 /**
96 * Verifies that PushManager.subscribe() fails if Notifications permission w as already denied. 112 * Verifies that PushManager.subscribe() fails if Notifications permission w as already denied.
97 */ 113 */
114 @Test
98 @MediumTest 115 @MediumTest
99 @Feature({"Browser", "PushMessaging"}) 116 @Feature({"Browser", "PushMessaging"})
100 public void testNotificationsPermissionDenied() throws InterruptedException, TimeoutException { 117 public void testNotificationsPermissionDenied() throws InterruptedException, TimeoutException {
101 // Deny Notifications permission before trying to subscribe Push. 118 // Deny Notifications permission before trying to subscribe Push.
102 setNotificationContentSettingForCurrentOrigin(ContentSetting.BLOCK); 119 mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(Cont entSetting.BLOCK);
103 assertEquals("\"denied\"", runScriptBlocking("Notification.permission")) ; 120 Assert.assertEquals("\"denied\"", runScriptBlocking("Notification.permis sion"));
104 121
105 // Reload page to ensure the block is persisted. 122 // Reload page to ensure the block is persisted.
106 loadUrl(mPushTestPage); 123 mNotificationTestRule.loadUrl(mPushTestPage);
107 124
108 // PushManager.subscribePush() should fail immediately without showing a n infobar. 125 // PushManager.subscribePush() should fail immediately without showing a n infobar.
109 runScriptAndWaitForTitle("subscribePush()", 126 runScriptAndWaitForTitle("subscribePush()",
110 "subscribe fail: NotAllowedError: Registration failed - permissi on denied"); 127 "subscribe fail: NotAllowedError: Registration failed - permissi on denied");
111 assertEquals(0, getInfoBars().size()); 128 Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
112 129
113 // Notifications permission should still be denied. 130 // Notifications permission should still be denied.
114 assertEquals("\"denied\"", runScriptBlocking("Notification.permission")) ; 131 Assert.assertEquals("\"denied\"", runScriptBlocking("Notification.permis sion"));
115 } 132 }
116 133
117 /** 134 /**
118 * Verifies that PushManager.subscribe() fails if permission is dismissed or blocked. 135 * Verifies that PushManager.subscribe() fails if permission is dismissed or blocked.
119 */ 136 */
120 //@MediumTest 137 //@MediumTest
121 //@Feature({"Browser", "PushMessaging"}) 138 //@Feature({"Browser", "PushMessaging"})
122 //@CommandLineFlags.Add("disable-features=ModalPermissionPrompts") 139 //@CommandLineFlags.Add("disable-features=ModalPermissionPrompts")
140 @Test
123 @DisabledTest 141 @DisabledTest
124 public void testPushPermissionDenied() throws InterruptedException, TimeoutE xception { 142 public void testPushPermissionDenied() throws InterruptedException, TimeoutE xception {
125 // Notifications permission should initially be prompt. 143 // Notifications permission should initially be prompt.
126 assertEquals("\"default\"", runScriptBlocking("Notification.permission") ); 144 Assert.assertEquals("\"default\"", runScriptBlocking("Notification.permi ssion"));
127 145
128 // PushManager.subscribePush() should show the notifications infobar. 146 // PushManager.subscribePush() should show the notifications infobar.
129 assertEquals(0, getInfoBars().size()); 147 Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
130 runScript("subscribePush()"); 148 runScript("subscribePush()");
131 InfoBar infoBar = getInfobarBlocking(); 149 InfoBar infoBar = getInfobarBlocking();
132 150
133 // Dismissing the infobar should cause subscribe() to fail. 151 // Dismissing the infobar should cause subscribe() to fail.
134 assertTrue(InfoBarUtil.clickCloseButton(infoBar)); 152 Assert.assertTrue(InfoBarUtil.clickCloseButton(infoBar));
135 waitForInfobarToClose(); 153 waitForInfobarToClose();
136 waitForTitle(getActivity().getActivityTab(), 154 waitForTitle(mNotificationTestRule.getActivity().getActivityTab(),
137 "subscribe fail: NotAllowedError: Registration failed - permissi on denied"); 155 "subscribe fail: NotAllowedError: Registration failed - permissi on denied");
138 156
139 // Notifications permission should still be prompt. 157 // Notifications permission should still be prompt.
140 assertEquals("\"default\"", runScriptBlocking("Notification.permission") ); 158 Assert.assertEquals("\"default\"", runScriptBlocking("Notification.permi ssion"));
141 159
142 runScriptAndWaitForTitle("sendToTest('reset title')", "reset title"); 160 runScriptAndWaitForTitle("sendToTest('reset title')", "reset title");
143 161
144 // PushManager.subscribePush() should show the notifications infobar aga in. 162 // PushManager.subscribePush() should show the notifications infobar aga in.
145 runScript("subscribePush()"); 163 runScript("subscribePush()");
146 infoBar = getInfobarBlocking(); 164 infoBar = getInfobarBlocking();
147 165
148 // Denying the infobar should cause subscribe() to fail. 166 // Denying the infobar should cause subscribe() to fail.
149 assertTrue(InfoBarUtil.clickSecondaryButton(infoBar)); 167 Assert.assertTrue(InfoBarUtil.clickSecondaryButton(infoBar));
150 waitForInfobarToClose(); 168 waitForInfobarToClose();
151 waitForTitle(getActivity().getActivityTab(), 169 waitForTitle(mNotificationTestRule.getActivity().getActivityTab(),
152 "subscribe fail: NotAllowedError: Registration failed - permissi on denied"); 170 "subscribe fail: NotAllowedError: Registration failed - permissi on denied");
153 171
154 // This should have caused notifications permission to become denied. 172 // This should have caused notifications permission to become denied.
155 assertEquals("\"denied\"", runScriptBlocking("Notification.permission")) ; 173 Assert.assertEquals("\"denied\"", runScriptBlocking("Notification.permis sion"));
156 174
157 // Reload page to ensure the block is persisted. 175 // Reload page to ensure the block is persisted.
158 loadUrl(mPushTestPage); 176 mNotificationTestRule.loadUrl(mPushTestPage);
159 177
160 // PushManager.subscribePush() should now fail immediately without showi ng an infobar. 178 // PushManager.subscribePush() should now fail immediately without showi ng an infobar.
161 runScriptAndWaitForTitle("subscribePush()", 179 runScriptAndWaitForTitle("subscribePush()",
162 "subscribe fail: NotAllowedError: Registration failed - permissi on denied"); 180 "subscribe fail: NotAllowedError: Registration failed - permissi on denied");
163 assertEquals(0, getInfoBars().size()); 181 Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
164 182
165 // Notifications permission should still be denied. 183 // Notifications permission should still be denied.
166 assertEquals("\"denied\"", runScriptBlocking("Notification.permission")) ; 184 Assert.assertEquals("\"denied\"", runScriptBlocking("Notification.permis sion"));
167 } 185 }
168 186
169 /** 187 /**
170 * Verifies that PushManager.subscribe() requests permission correctly. 188 * Verifies that PushManager.subscribe() requests permission correctly.
171 */ 189 */
190 @Test
172 @MediumTest 191 @MediumTest
173 @Feature({"Browser", "PushMessaging"}) 192 @Feature({"Browser", "PushMessaging"})
174 @CommandLineFlags.Add("disable-features=ModalPermissionPrompts") 193 @CommandLineFlags.Add("disable-features=ModalPermissionPrompts")
175 public void testPushPermissionGranted() throws InterruptedException, Timeout Exception { 194 public void testPushPermissionGranted() throws InterruptedException, Timeout Exception {
176 // Notifications permission should initially be prompt. 195 // Notifications permission should initially be prompt.
177 assertEquals("\"default\"", runScriptBlocking("Notification.permission") ); 196 Assert.assertEquals("\"default\"", runScriptBlocking("Notification.permi ssion"));
178 197
179 // PushManager.subscribePush() should show the notifications infobar. 198 // PushManager.subscribePush() should show the notifications infobar.
180 assertEquals(0, getInfoBars().size()); 199 Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
181 runScript("subscribePush()"); 200 runScript("subscribePush()");
182 InfoBar infoBar = getInfobarBlocking(); 201 InfoBar infoBar = getInfobarBlocking();
183 202
184 // Accepting the infobar should cause subscribe() to succeed. 203 // Accepting the infobar should cause subscribe() to succeed.
185 assertTrue(InfoBarUtil.clickPrimaryButton(infoBar)); 204 Assert.assertTrue(InfoBarUtil.clickPrimaryButton(infoBar));
186 waitForInfobarToClose(); 205 waitForInfobarToClose();
187 waitForTitle(getActivity().getActivityTab(), "subscribe ok"); 206 waitForTitle(mNotificationTestRule.getActivity().getActivityTab(), "subs cribe ok");
188 207
189 // This should have caused notifications permission to become granted. 208 // This should have caused notifications permission to become granted.
190 assertEquals("\"granted\"", runScriptBlocking("Notification.permission") ); 209 Assert.assertEquals("\"granted\"", runScriptBlocking("Notification.permi ssion"));
191 } 210 }
192 211
193 /** 212 /**
194 * Verifies that a notification can be shown from a push event handler in th e service worker. 213 * Verifies that a notification can be shown from a push event handler in th e service worker.
195 */ 214 */
215 @Test
196 @MediumTest 216 @MediumTest
197 @Feature({"Browser", "PushMessaging"}) 217 @Feature({"Browser", "PushMessaging"})
198 @RetryOnFailure 218 @RetryOnFailure
199 public void testPushAndShowNotification() throws InterruptedException, Timeo utException { 219 public void testPushAndShowNotification() throws InterruptedException, Timeo utException {
200 setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW); 220 mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(Cont entSetting.ALLOW);
201 runScriptAndWaitForTitle("subscribePush()", "subscribe ok"); 221 runScriptAndWaitForTitle("subscribePush()", "subscribe ok");
202 222
203 Pair<String, String> appIdAndSenderId = 223 Pair<String, String> appIdAndSenderId =
204 FakeInstanceIDWithSubtype.getSubtypeAndAuthorizedEntityOfOnlyTok en(); 224 FakeInstanceIDWithSubtype.getSubtypeAndAuthorizedEntityOfOnlyTok en();
205 sendPushAndWaitForCallback(appIdAndSenderId); 225 sendPushAndWaitForCallback(appIdAndSenderId);
206 NotificationEntry notificationEntry = waitForNotification(); 226 NotificationEntry notificationEntry = mNotificationTestRule.waitForNotif ication();
207 assertEquals("push notification 1", 227 Assert.assertEquals("push notification 1",
208 notificationEntry.notification.extras.getString(Notification.EXT RA_TITLE)); 228 notificationEntry.notification.extras.getString(Notification.EXT RA_TITLE));
209 } 229 }
210 230
211 /** 231 /**
212 * Verifies that the default notification is shown when no notification is s hown from the push 232 * Verifies that the default notification is shown when no notification is s hown from the push
213 * event handler while no tab is visible for the origin, and grace has been exceeded. 233 * event handler while no tab is visible for the origin, and grace has been exceeded.
214 */ 234 */
235 @Test
215 @LargeTest 236 @LargeTest
216 @Feature({"Browser", "PushMessaging"}) 237 @Feature({"Browser", "PushMessaging"})
217 @RetryOnFailure 238 @RetryOnFailure
218 public void testDefaultNotification() throws InterruptedException, TimeoutEx ception { 239 public void testDefaultNotification() throws InterruptedException, TimeoutEx ception {
219 // Start off using the tab loaded in setUp(). 240 // Start off using the tab loaded in setUp().
220 assertEquals(1, getActivity().getCurrentTabModel().getCount()); 241 Assert.assertEquals(1, mNotificationTestRule.getActivity().getCurrentTab Model().getCount());
221 Tab tab = getActivity().getActivityTab(); 242 Tab tab = mNotificationTestRule.getActivity().getActivityTab();
222 assertEquals(mPushTestPage, tab.getUrl()); 243 Assert.assertEquals(mPushTestPage, tab.getUrl());
223 assertFalse(tab.isHidden()); 244 Assert.assertFalse(tab.isHidden());
224 245
225 // Set up the push subscription and capture its details. 246 // Set up the push subscription and capture its details.
226 setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW); 247 mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(Cont entSetting.ALLOW);
227 runScriptAndWaitForTitle("subscribePush()", "subscribe ok"); 248 runScriptAndWaitForTitle("subscribePush()", "subscribe ok");
228 Pair<String, String> appIdAndSenderId = 249 Pair<String, String> appIdAndSenderId =
229 FakeInstanceIDWithSubtype.getSubtypeAndAuthorizedEntityOfOnlyTok en(); 250 FakeInstanceIDWithSubtype.getSubtypeAndAuthorizedEntityOfOnlyTok en();
230 251
231 // Make the tab invisible by opening another one with a different origin . 252 // Make the tab invisible by opening another one with a different origin .
232 loadUrlInNewTab(ABOUT_BLANK); 253 mNotificationTestRule.loadUrlInNewTab(ABOUT_BLANK);
233 assertEquals(2, getActivity().getCurrentTabModel().getCount()); 254 Assert.assertEquals(2, mNotificationTestRule.getActivity().getCurrentTab Model().getCount());
234 assertEquals(ABOUT_BLANK, getActivity().getActivityTab().getUrl()); 255 Assert.assertEquals(
235 assertTrue(tab.isHidden()); 256 ABOUT_BLANK, mNotificationTestRule.getActivity().getActivityTab( ).getUrl());
257 Assert.assertTrue(tab.isHidden());
236 258
237 // The first time a push event is fired and no notification is shown fro m the service 259 // The first time a push event is fired and no notification is shown fro m the service
238 // worker, grace permits it so no default notification is shown. 260 // worker, grace permits it so no default notification is shown.
239 runScriptAndWaitForTitle("setNotifyOnPush(false)", "setNotifyOnPush fals e ok", tab); 261 runScriptAndWaitForTitle("setNotifyOnPush(false)", "setNotifyOnPush fals e ok", tab);
240 sendPushAndWaitForCallback(appIdAndSenderId); 262 sendPushAndWaitForCallback(appIdAndSenderId);
241 263
242 // After grace runs out a default notification will be shown. 264 // After grace runs out a default notification will be shown.
243 sendPushAndWaitForCallback(appIdAndSenderId); 265 sendPushAndWaitForCallback(appIdAndSenderId);
244 NotificationEntry notificationEntry = waitForNotification(); 266 NotificationEntry notificationEntry = mNotificationTestRule.waitForNotif ication();
245 MoreAsserts.assertContainsRegex("user_visible_auto_notification", notifi cationEntry.tag); 267 MoreAsserts.assertContainsRegex("user_visible_auto_notification", notifi cationEntry.tag);
246 268
247 // When another push does show a notification, the default notification is automatically 269 // When another push does show a notification, the default notification is automatically
248 // dismissed (an additional mutation) so there is only one left in the e nd. 270 // dismissed (an additional mutation) so there is only one left in the e nd.
249 runScriptAndWaitForTitle("setNotifyOnPush(true)", "setNotifyOnPush true ok", tab); 271 runScriptAndWaitForTitle("setNotifyOnPush(true)", "setNotifyOnPush true ok", tab);
250 sendPushAndWaitForCallback(appIdAndSenderId); 272 sendPushAndWaitForCallback(appIdAndSenderId);
251 waitForNotificationManagerMutation(); 273 mNotificationTestRule.waitForNotificationManagerMutation();
252 notificationEntry = waitForNotification(); 274 notificationEntry = mNotificationTestRule.waitForNotification();
253 assertEquals("push notification 1", 275 Assert.assertEquals("push notification 1",
254 notificationEntry.notification.extras.getString(Notification.EXT RA_TITLE)); 276 notificationEntry.notification.extras.getString(Notification.EXT RA_TITLE));
255 } 277 }
256 278
257 /** 279 /**
258 * Runs {@code script} in the current tab but does not wait for the result. 280 * Runs {@code script} in the current tab but does not wait for the result.
259 */ 281 */
260 private void runScript(String script) { 282 private void runScript(String script) {
261 JavaScriptUtils.executeJavaScript(getActivity().getActivityTab().getWebC ontents(), script); 283 JavaScriptUtils.executeJavaScript(
284 mNotificationTestRule.getActivity().getActivityTab().getWebConte nts(), script);
262 } 285 }
263 286
264 /** 287 /**
265 * Runs {@code script} in the current tab and returns its synchronous result in JSON format. 288 * Runs {@code script} in the current tab and returns its synchronous result in JSON format.
266 */ 289 */
267 private String runScriptBlocking(String script) throws InterruptedException, TimeoutException { 290 private String runScriptBlocking(String script) throws InterruptedException, TimeoutException {
268 return JavaScriptUtils.executeJavaScriptAndWaitForResult( 291 return JavaScriptUtils.executeJavaScriptAndWaitForResult(
269 getActivity().getActivityTab().getWebContents(), script); 292 mNotificationTestRule.getActivity().getActivityTab().getWebConte nts(), script);
270 } 293 }
271 294
272 /** 295 /**
273 * Runs {@code script} in the current tab and waits for the tab title to cha nge to 296 * Runs {@code script} in the current tab and waits for the tab title to cha nge to
274 * {@code expectedTitle}. 297 * {@code expectedTitle}.
275 */ 298 */
276 private void runScriptAndWaitForTitle(String script, String expectedTitle) 299 private void runScriptAndWaitForTitle(String script, String expectedTitle)
277 throws InterruptedException { 300 throws InterruptedException {
278 runScriptAndWaitForTitle(script, expectedTitle, getActivity().getActivit yTab()); 301 runScriptAndWaitForTitle(
302 script, expectedTitle, mNotificationTestRule.getActivity().getAc tivityTab());
279 } 303 }
280 304
281 /** 305 /**
282 * Runs {@code script} in {@code tab} and waits for the tab title to change to 306 * Runs {@code script} in {@code tab} and waits for the tab title to change to
283 * {@code expectedTitle}. 307 * {@code expectedTitle}.
284 */ 308 */
285 private void runScriptAndWaitForTitle(String script, String expectedTitle, T ab tab) 309 private void runScriptAndWaitForTitle(String script, String expectedTitle, T ab tab)
286 throws InterruptedException { 310 throws InterruptedException {
287 JavaScriptUtils.executeJavaScript(tab.getWebContents(), script); 311 JavaScriptUtils.executeJavaScript(tab.getWebContents(), script);
288 waitForTitle(tab, expectedTitle); 312 waitForTitle(tab, expectedTitle);
289 } 313 }
290 314
291 private void sendPushAndWaitForCallback(Pair<String, String> appIdAndSenderI d) 315 private void sendPushAndWaitForCallback(Pair<String, String> appIdAndSenderI d)
292 throws InterruptedException, TimeoutException { 316 throws InterruptedException, TimeoutException {
293 final String appId = appIdAndSenderId.first; 317 final String appId = appIdAndSenderId.first;
294 final String senderId = appIdAndSenderId.second; 318 final String senderId = appIdAndSenderId.second;
295 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 319 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
296 @Override 320 @Override
297 public void run() { 321 public void run() {
298 Context context = getInstrumentation().getTargetContext().getApp licationContext(); 322 Context context = InstrumentationRegistry.getInstrumentation()
323 .getTargetContext()
324 .getApplicationContext();
299 325
300 Bundle extras = new Bundle(); 326 Bundle extras = new Bundle();
301 extras.putString("subtype", appId); 327 extras.putString("subtype", appId);
302 328
303 GCMMessage message = new GCMMessage(senderId, extras); 329 GCMMessage message = new GCMMessage(senderId, extras);
304 try { 330 try {
305 ChromeBrowserInitializer.getInstance(context).handleSynchron ousStartup(); 331 ChromeBrowserInitializer.getInstance(context).handleSynchron ousStartup();
306 GCMDriver.dispatchMessage(message); 332 GCMDriver.dispatchMessage(message);
307 } catch (ProcessInitException e) { 333 } catch (ProcessInitException e) {
308 fail("Chrome browser failed to initialize."); 334 Assert.fail("Chrome browser failed to initialize.");
309 } 335 }
310 } 336 }
311 }); 337 });
312 mMessageHandledHelper.waitForCallback(mMessageHandledHelper.getCallCount ()); 338 mMessageHandledHelper.waitForCallback(mMessageHandledHelper.getCallCount ());
313 } 339 }
314 340
315 private void waitForTitle(Tab tab, String expectedTitle) throws InterruptedE xception { 341 private void waitForTitle(Tab tab, String expectedTitle) throws InterruptedE xception {
316 TabTitleObserver titleObserver = new TabTitleObserver(tab, expectedTitle ); 342 TabTitleObserver titleObserver = new TabTitleObserver(tab, expectedTitle );
317 try { 343 try {
318 titleObserver.waitForTitleUpdate(TITLE_UPDATE_TIMEOUT_SECONDS); 344 titleObserver.waitForTitleUpdate(TITLE_UPDATE_TIMEOUT_SECONDS);
319 } catch (TimeoutException e) { 345 } catch (TimeoutException e) {
320 // The title is not as expected, this assertion neatly logs what the difference is. 346 // The title is not as expected, this assertion neatly logs what the difference is.
321 assertEquals(expectedTitle, tab.getTitle()); 347 Assert.assertEquals(expectedTitle, tab.getTitle());
322 } 348 }
323 } 349 }
324 350
325 private InfoBar getInfobarBlocking() { 351 private InfoBar getInfobarBlocking() {
326 CriteriaHelper.pollUiThread(new Criteria() { 352 CriteriaHelper.pollUiThread(new Criteria() {
327 @Override 353 @Override
328 public boolean isSatisfied() { 354 public boolean isSatisfied() {
329 return !getInfoBars().isEmpty(); 355 return !mNotificationTestRule.getInfoBars().isEmpty();
330 } 356 }
331 }); 357 });
332 List<InfoBar> infoBars = getInfoBars(); 358 List<InfoBar> infoBars = mNotificationTestRule.getInfoBars();
333 assertEquals(1, infoBars.size()); 359 Assert.assertEquals(1, infoBars.size());
334 return infoBars.get(0); 360 return infoBars.get(0);
335 } 361 }
336 362
337 private void waitForInfobarToClose() { 363 private void waitForInfobarToClose() {
338 CriteriaHelper.pollUiThread(new Criteria() { 364 CriteriaHelper.pollUiThread(new Criteria() {
339 @Override 365 @Override
340 public boolean isSatisfied() { 366 public boolean isSatisfied() {
341 return getInfoBars().isEmpty(); 367 return mNotificationTestRule.getInfoBars().isEmpty();
342 } 368 }
343 }); 369 });
344 assertEquals(0, getInfoBars().size()); 370 Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
345 } 371 }
346 } 372 }
OLDNEW
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationTestRule.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698