OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include <map> | 5 #include <map> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/barrier_closure.h" | 8 #include "base/barrier_closure.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
14 #include "base/test/test_timeouts.h" | |
15 #include "base/time/time.h" | |
14 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 16 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
15 #include "chrome/browser/browsing_data/browsing_data_remover.h" | 17 #include "chrome/browser/browsing_data/browsing_data_remover.h" |
16 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h" | 18 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h" |
17 #include "chrome/browser/infobars/infobar_responder.h" | 19 #include "chrome/browser/infobars/infobar_responder.h" |
18 #include "chrome/browser/infobars/infobar_service.h" | 20 #include "chrome/browser/infobars/infobar_service.h" |
19 #include "chrome/browser/notifications/notification_test_util.h" | 21 #include "chrome/browser/notifications/notification_test_util.h" |
20 #include "chrome/browser/notifications/platform_notification_service_impl.h" | 22 #include "chrome/browser/notifications/platform_notification_service_impl.h" |
21 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
22 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" | 24 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" |
23 #include "chrome/browser/push_messaging/push_messaging_constants.h" | 25 #include "chrome/browser/push_messaging/push_messaging_constants.h" |
24 #include "chrome/browser/push_messaging/push_messaging_service_factory.h" | 26 #include "chrome/browser/push_messaging/push_messaging_service_factory.h" |
25 #include "chrome/browser/push_messaging/push_messaging_service_impl.h" | 27 #include "chrome/browser/push_messaging/push_messaging_service_impl.h" |
26 #include "chrome/browser/services/gcm/fake_gcm_profile_service.h" | 28 #include "chrome/browser/services/gcm/fake_gcm_profile_service.h" |
27 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" | 29 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" |
28 #include "chrome/browser/ui/browser.h" | 30 #include "chrome/browser/ui/browser.h" |
29 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 31 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
32 #include "chrome/browser/ui/website_settings/mock_permission_bubble_view.h" | |
33 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" | |
34 #include "chrome/common/chrome_switches.h" | |
30 #include "chrome/test/base/in_process_browser_test.h" | 35 #include "chrome/test/base/in_process_browser_test.h" |
31 #include "chrome/test/base/ui_test_utils.h" | 36 #include "chrome/test/base/ui_test_utils.h" |
32 #include "components/content_settings/core/browser/host_content_settings_map.h" | 37 #include "components/content_settings/core/browser/host_content_settings_map.h" |
33 #include "components/content_settings/core/common/content_settings.h" | 38 #include "components/content_settings/core/common/content_settings.h" |
34 #include "components/content_settings/core/common/content_settings_types.h" | 39 #include "components/content_settings/core/common/content_settings_types.h" |
35 #include "components/gcm_driver/gcm_client.h" | 40 #include "components/gcm_driver/gcm_client.h" |
36 #include "content/public/browser/web_contents.h" | 41 #include "content/public/browser/web_contents.h" |
37 #include "content/public/common/content_switches.h" | 42 #include "content/public/common/content_switches.h" |
38 #include "content/public/test/browser_test_utils.h" | 43 #include "content/public/test/browser_test_utils.h" |
39 #include "content/public/test/test_utils.h" | 44 #include "content/public/test/test_utils.h" |
(...skipping 22 matching lines...) Expand all Loading... | |
62 return app_id_; | 67 return app_id_; |
63 } | 68 } |
64 | 69 |
65 private: | 70 private: |
66 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; | 71 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
67 std::string app_id_; | 72 std::string app_id_; |
68 }; | 73 }; |
69 | 74 |
70 } // namespace | 75 } // namespace |
71 | 76 |
72 class PushMessagingBrowserTest : public InProcessBrowserTest { | 77 class PushMessagingBrowserTest : public InProcessBrowserTest, |
78 public testing::WithParamInterface<bool> { | |
73 public: | 79 public: |
74 PushMessagingBrowserTest() : gcm_service_(nullptr) {} | 80 PushMessagingBrowserTest() |
81 : tiny_timeout_ms_( | |
82 std::to_string(TestTimeouts::tiny_timeout().InMillisecondsF())), | |
johnme
2015/06/02 14:12:38
Nit: base::IntToString seems more common.
| |
83 gcm_service_(nullptr) {} | |
75 ~PushMessagingBrowserTest() override {} | 84 ~PushMessagingBrowserTest() override {} |
76 | 85 |
77 // InProcessBrowserTest: | 86 // InProcessBrowserTest: |
78 void SetUpCommandLine(base::CommandLine* command_line) override { | 87 void SetUpCommandLine(base::CommandLine* command_line) override { |
79 command_line->AppendSwitch(switches::kEnablePushMessagePayload); | 88 command_line->AppendSwitch(switches::kEnablePushMessagePayload); |
80 | 89 |
90 #if !defined(OS_ANDROID) && !defined(OS_IOS) | |
91 if (GetParam()) | |
92 command_line->AppendSwitch(switches::kEnablePermissionsBubbles); | |
93 else | |
94 command_line->AppendSwitch(switches::kDisablePermissionsBubbles); | |
johnme
2015/06/02 14:12:38
Since these tests only run on desktop (unfortunate
| |
95 #endif | |
96 | |
81 InProcessBrowserTest::SetUpCommandLine(command_line); | 97 InProcessBrowserTest::SetUpCommandLine(command_line); |
82 } | 98 } |
83 | 99 |
84 // InProcessBrowserTest: | 100 // InProcessBrowserTest: |
85 void SetUp() override { | 101 void SetUp() override { |
86 https_server_.reset(new net::SpawnedTestServer( | 102 https_server_.reset(new net::SpawnedTestServer( |
87 net::SpawnedTestServer::TYPE_HTTPS, | 103 net::SpawnedTestServer::TYPE_HTTPS, |
88 net::BaseTestServer::SSLOptions( | 104 net::BaseTestServer::SSLOptions( |
89 net::BaseTestServer::SSLOptions::CERT_OK), | 105 net::BaseTestServer::SSLOptions::CERT_OK), |
90 base::FilePath(FILE_PATH_LITERAL("chrome/test/data/")))); | 106 base::FilePath(FILE_PATH_LITERAL("chrome/test/data/")))); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 } | 139 } |
124 | 140 |
125 void LoadTestPage(const std::string& path) { | 141 void LoadTestPage(const std::string& path) { |
126 ui_test_utils::NavigateToURL(GetBrowser(), https_server_->GetURL(path)); | 142 ui_test_utils::NavigateToURL(GetBrowser(), https_server_->GetURL(path)); |
127 } | 143 } |
128 | 144 |
129 void LoadTestPage() { | 145 void LoadTestPage() { |
130 LoadTestPage(GetTestURL()); | 146 LoadTestPage(GetTestURL()); |
131 } | 147 } |
132 | 148 |
149 bool RunScript(const std::string& script) { | |
150 return content::ExecuteScript( | |
151 GetBrowser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(), | |
152 script); | |
153 } | |
154 | |
133 bool RunScript(const std::string& script, std::string* result) { | 155 bool RunScript(const std::string& script, std::string* result) { |
134 return RunScript(script, result, nullptr); | 156 return RunScript(script, result, nullptr); |
135 } | 157 } |
136 | 158 |
137 bool RunScript(const std::string& script, std::string* result, | 159 bool RunScript(const std::string& script, std::string* result, |
138 content::WebContents* web_contents) { | 160 content::WebContents* web_contents) { |
139 if (!web_contents) | 161 if (!web_contents) |
140 web_contents = GetBrowser()->tab_strip_model()->GetActiveWebContents(); | 162 web_contents = GetBrowser()->tab_strip_model()->GetActiveWebContents(); |
141 return content::ExecuteScriptAndExtractString(web_contents->GetMainFrame(), | 163 return content::ExecuteScriptAndExtractString(web_contents->GetMainFrame(), |
142 script, | 164 script, |
143 result); | 165 result); |
144 } | 166 } |
145 | 167 |
168 void RequestAndAcceptPermission(); | |
169 void RequestAndDenyPermission(); | |
170 | |
146 void TryToSubscribeSuccessfully( | 171 void TryToSubscribeSuccessfully( |
147 const std::string& expected_push_subscription_id); | 172 const std::string& expected_push_subscription_id); |
148 | 173 |
149 std::string GetEndpointForSubscriptionId(const std::string& subscription_id) { | 174 std::string GetEndpointForSubscriptionId(const std::string& subscription_id) { |
150 return std::string(kPushMessagingEndpoint) + "/" + subscription_id; | 175 return std::string(kPushMessagingEndpoint) + "/" + subscription_id; |
151 } | 176 } |
152 | 177 |
153 PushMessagingAppIdentifier GetAppIdentifierForServiceWorkerRegistration( | 178 PushMessagingAppIdentifier GetAppIdentifierForServiceWorkerRegistration( |
154 int64 service_worker_registration_id); | 179 int64 service_worker_registration_id); |
155 | 180 |
(...skipping 10 matching lines...) Expand all Loading... | |
166 return notification_manager_.get(); | 191 return notification_manager_.get(); |
167 } | 192 } |
168 | 193 |
169 PlatformNotificationServiceImpl* notification_service() const { | 194 PlatformNotificationServiceImpl* notification_service() const { |
170 return PlatformNotificationServiceImpl::GetInstance(); | 195 return PlatformNotificationServiceImpl::GetInstance(); |
171 } | 196 } |
172 #endif | 197 #endif |
173 | 198 |
174 PushMessagingServiceImpl* push_service() const { return push_service_; } | 199 PushMessagingServiceImpl* push_service() const { return push_service_; } |
175 | 200 |
201 std::string tiny_timeout_ms_; | |
202 | |
176 protected: | 203 protected: |
177 virtual std::string GetTestURL() { | 204 virtual std::string GetTestURL() { |
178 return "files/push_messaging/test.html"; | 205 return "files/push_messaging/test.html"; |
179 } | 206 } |
180 | 207 |
181 virtual Browser* GetBrowser() const { return browser(); } | 208 virtual Browser* GetBrowser() const { return browser(); } |
182 | 209 |
183 InfoBarService* GetInfoBarService() { | 210 InfoBarService* GetInfoBarService() { |
184 return InfoBarService::FromWebContents( | 211 return InfoBarService::FromWebContents( |
185 GetBrowser()->tab_strip_model()->GetActiveWebContents()); | 212 GetBrowser()->tab_strip_model()->GetActiveWebContents()); |
(...skipping 21 matching lines...) Expand all Loading... | |
207 } | 234 } |
208 }; | 235 }; |
209 | 236 |
210 class PushMessagingBrowserTestEmptySubscriptionOptions | 237 class PushMessagingBrowserTestEmptySubscriptionOptions |
211 : public PushMessagingBrowserTest { | 238 : public PushMessagingBrowserTest { |
212 std::string GetTestURL() override { | 239 std::string GetTestURL() override { |
213 return "files/push_messaging/test_no_subscription_options.html"; | 240 return "files/push_messaging/test_no_subscription_options.html"; |
214 } | 241 } |
215 }; | 242 }; |
216 | 243 |
217 IN_PROC_BROWSER_TEST_F(PushMessagingBadManifestBrowserTest, | 244 IN_PROC_BROWSER_TEST_P(PushMessagingBadManifestBrowserTest, |
218 SubscribeFailsNotVisibleMessages) { | 245 SubscribeFailsNotVisibleMessages) { |
219 std::string script_result; | 246 std::string script_result; |
220 | 247 |
221 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 248 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
222 ASSERT_EQ("ok - service worker registered", script_result); | 249 ASSERT_EQ("ok - service worker registered", script_result); |
223 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 250 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
224 EXPECT_EQ("AbortError - Registration failed - permission denied", | 251 EXPECT_EQ("AbortError - Registration failed - permission denied", |
225 script_result); | 252 script_result); |
226 } | 253 } |
227 | 254 |
255 void PushMessagingBrowserTest::RequestAndAcceptPermission() { | |
256 std::string script_result; | |
257 | |
258 if (PermissionBubbleManager::Enabled()) { | |
259 PermissionBubbleManager* bubble_manager = | |
260 PermissionBubbleManager::FromWebContents( | |
261 GetBrowser()->tab_strip_model()->GetActiveWebContents()); | |
262 scoped_ptr<MockPermissionBubbleView> mock_bubble_view( | |
263 new MockPermissionBubbleView()); | |
264 bubble_manager->SetView(mock_bubble_view.get()); | |
johnme
2015/06/02 14:12:38
This is super-complicated, compared to 2 lines for
| |
265 mock_bubble_view->SetBrowserTest(true); | |
johnme
2015/06/02 14:12:38
It seems kinda hacky that MockPermissionBubbleView
| |
266 ASSERT_TRUE( | |
267 RunScript("requestNotificationPermission(" + tiny_timeout_ms_ + ");")); | |
268 if (!mock_bubble_view->IsVisible()) | |
269 content::RunMessageLoop(); | |
johnme
2015/06/02 14:12:38
Why are you running a message loop here? Note that
| |
270 mock_bubble_view->Accept(); | |
271 bubble_manager->SetView(NULL); | |
272 } else { | |
273 InfoBarResponder accepting_responder(GetInfoBarService(), true); | |
274 ASSERT_TRUE( | |
275 RunScript("requestNotificationPermission(" + tiny_timeout_ms_ + ");")); | |
johnme
2015/06/02 14:12:38
requestNotificationPermission method doesn't take
| |
276 } | |
277 EXPECT_TRUE(RunScript("getLastPermissionRequestResult();", &script_result)); | |
johnme
2015/06/02 14:12:38
getLastPermissionRequestResult takes a timeout par
| |
278 EXPECT_EQ("permission status - granted", script_result); | |
279 } | |
280 | |
281 void PushMessagingBrowserTest::RequestAndDenyPermission() { | |
282 std::string script_result; | |
283 | |
284 if (PermissionBubbleManager::Enabled()) { | |
285 PermissionBubbleManager* bubble_manager = | |
286 PermissionBubbleManager::FromWebContents( | |
287 GetBrowser()->tab_strip_model()->GetActiveWebContents()); | |
288 scoped_ptr<MockPermissionBubbleView> mock_bubble_view( | |
289 new MockPermissionBubbleView()); | |
290 bubble_manager->SetView(mock_bubble_view.get()); | |
291 mock_bubble_view->SetBrowserTest(true); | |
292 ASSERT_TRUE( | |
johnme
2015/06/02 14:12:38
Last I checked, you couldn't use ASSERT_TRUE in he
| |
293 RunScript("requestNotificationPermission(" + tiny_timeout_ms_ + ");")); | |
294 if (!mock_bubble_view->IsVisible()) | |
295 content::RunMessageLoop(); | |
296 mock_bubble_view->Deny(); | |
297 bubble_manager->SetView(NULL); | |
298 } else { | |
299 InfoBarResponder cancelling_responder(GetInfoBarService(), false); | |
300 ASSERT_TRUE( | |
301 RunScript("requestNotificationPermission(" + tiny_timeout_ms_ + ");")); | |
302 } | |
303 ASSERT_TRUE(RunScript("getLastPermissionRequestResult();", &script_result)); | |
304 EXPECT_EQ("permission status - denied", script_result); | |
305 } | |
306 | |
228 void PushMessagingBrowserTest::TryToSubscribeSuccessfully( | 307 void PushMessagingBrowserTest::TryToSubscribeSuccessfully( |
229 const std::string& expected_push_subscription_id) { | 308 const std::string& expected_push_subscription_id) { |
230 std::string script_result; | 309 std::string script_result; |
231 | 310 |
232 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 311 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
233 EXPECT_EQ("ok - service worker registered", script_result); | 312 EXPECT_EQ("ok - service worker registered", script_result); |
234 | 313 |
235 InfoBarResponder accepting_responder(GetInfoBarService(), true); | 314 // Request permission if it hasn't already been requested. |
236 EXPECT_TRUE(RunScript("requestNotificationPermission()", &script_result)); | 315 ASSERT_TRUE(RunScript("permissionState();", &script_result)); |
237 EXPECT_EQ("permission status - granted", script_result); | 316 if (script_result == "permission status - prompt") |
317 RequestAndAcceptPermission(); | |
238 | 318 |
239 EXPECT_TRUE(RunScript("subscribePush()", &script_result)); | 319 EXPECT_TRUE(RunScript("subscribePush()", &script_result)); |
240 EXPECT_EQ(GetEndpointForSubscriptionId(expected_push_subscription_id), | 320 EXPECT_EQ(GetEndpointForSubscriptionId(expected_push_subscription_id), |
241 script_result); | 321 script_result); |
242 } | 322 } |
243 | 323 |
244 PushMessagingAppIdentifier | 324 PushMessagingAppIdentifier |
245 PushMessagingBrowserTest::GetAppIdentifierForServiceWorkerRegistration( | 325 PushMessagingBrowserTest::GetAppIdentifierForServiceWorkerRegistration( |
246 int64 service_worker_registration_id) { | 326 int64 service_worker_registration_id) { |
247 GURL origin = https_server()->GetURL(std::string()).GetOrigin(); | 327 GURL origin = https_server()->GetURL(std::string()).GetOrigin(); |
248 PushMessagingAppIdentifier app_identifier = | 328 PushMessagingAppIdentifier app_identifier = |
249 PushMessagingAppIdentifier::FindByServiceWorker( | 329 PushMessagingAppIdentifier::FindByServiceWorker( |
250 GetBrowser()->profile(), origin, service_worker_registration_id); | 330 GetBrowser()->profile(), origin, service_worker_registration_id); |
251 EXPECT_FALSE(app_identifier.is_null()); | 331 EXPECT_FALSE(app_identifier.is_null()); |
252 return app_identifier; | 332 return app_identifier; |
253 } | 333 } |
254 | 334 |
255 void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled( | 335 void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled( |
256 const PushMessagingAppIdentifier& app_identifier, | 336 const PushMessagingAppIdentifier& app_identifier, |
257 const gcm::GCMClient::IncomingMessage& message) { | 337 const gcm::GCMClient::IncomingMessage& message) { |
258 base::RunLoop run_loop; | 338 base::RunLoop run_loop; |
259 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); | 339 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); |
260 push_service()->OnMessage(app_identifier.app_id(), message); | 340 push_service()->OnMessage(app_identifier.app_id(), message); |
261 run_loop.Run(); | 341 run_loop.Run(); |
262 } | 342 } |
263 | 343 |
264 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 344 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
265 SubscribeSuccessNotificationsGranted) { | 345 SubscribeSuccessNotificationsGranted) { |
266 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 346 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
267 | 347 |
268 PushMessagingAppIdentifier app_identifier = | 348 PushMessagingAppIdentifier app_identifier = |
269 GetAppIdentifierForServiceWorkerRegistration(0LL); | 349 GetAppIdentifierForServiceWorkerRegistration(0LL); |
270 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 350 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
271 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 351 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
272 } | 352 } |
273 | 353 |
274 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 354 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
275 SubscribeSuccessNotificationsPrompt) { | 355 SubscribeSuccessNotificationsPrompt) { |
276 std::string script_result; | 356 std::string script_result; |
277 | 357 |
278 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 358 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
279 ASSERT_EQ("ok - service worker registered", script_result); | 359 ASSERT_EQ("ok - service worker registered", script_result); |
280 | 360 |
281 InfoBarResponder accepting_responder(GetInfoBarService(), true); | 361 RequestAndAcceptPermission(); |
362 | |
282 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 363 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
283 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), | 364 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); |
284 script_result); | |
285 | 365 |
286 PushMessagingAppIdentifier app_identifier = | 366 PushMessagingAppIdentifier app_identifier = |
287 GetAppIdentifierForServiceWorkerRegistration(0LL); | 367 GetAppIdentifierForServiceWorkerRegistration(0LL); |
288 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 368 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
289 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 369 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
290 } | 370 } |
291 | 371 |
292 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 372 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
293 SubscribeFailureNotificationsBlocked) { | 373 SubscribeFailureNotificationsBlocked) { |
294 std::string script_result; | 374 std::string script_result; |
295 | 375 |
296 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 376 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
297 ASSERT_EQ("ok - service worker registered", script_result); | 377 ASSERT_EQ("ok - service worker registered", script_result); |
298 | 378 |
299 InfoBarResponder cancelling_responder(GetInfoBarService(), false); | 379 RequestAndDenyPermission(); |
300 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | |
301 ASSERT_EQ("permission status - denied", script_result); | |
302 | 380 |
303 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 381 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
304 EXPECT_EQ("AbortError - Registration failed - permission denied", | 382 EXPECT_EQ("AbortError - Registration failed - permission denied", |
305 script_result); | 383 script_result); |
306 } | 384 } |
307 | 385 |
308 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) { | 386 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, SubscribeFailureNoManifest) { |
309 std::string script_result; | 387 std::string script_result; |
310 | 388 |
311 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 389 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
312 ASSERT_EQ("ok - service worker registered", script_result); | 390 ASSERT_EQ("ok - service worker registered", script_result); |
313 | 391 |
314 InfoBarResponder accepting_responder(GetInfoBarService(), true); | 392 RequestAndAcceptPermission(); |
315 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | |
316 ASSERT_EQ("permission status - granted", script_result); | |
317 | 393 |
318 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); | 394 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); |
319 ASSERT_EQ("manifest removed", script_result); | 395 ASSERT_EQ("manifest removed", script_result); |
320 | 396 |
321 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 397 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
322 EXPECT_EQ("AbortError - Registration failed - no sender id provided", | 398 EXPECT_EQ("AbortError - Registration failed - no sender id provided", |
323 script_result); | 399 script_result); |
324 } | 400 } |
325 | 401 |
326 // TODO(johnme): Test subscribing from a worker - see https://crbug.com/437298. | 402 // TODO(johnme): Test subscribing from a worker - see https://crbug.com/437298. |
327 | 403 |
328 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTestEmptySubscriptionOptions, | 404 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTestEmptySubscriptionOptions, |
329 RegisterFailureEmptyPushSubscriptionOptions) { | 405 RegisterFailureEmptyPushSubscriptionOptions) { |
330 std::string script_result; | 406 std::string script_result; |
331 | 407 |
332 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 408 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
333 ASSERT_EQ("ok - service worker registered", script_result); | 409 ASSERT_EQ("ok - service worker registered", script_result); |
334 | 410 |
335 InfoBarResponder accepting_responder(GetInfoBarService(), true); | 411 RequestAndAcceptPermission(); |
336 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | |
337 ASSERT_EQ("permission status - granted", script_result); | |
338 | 412 |
339 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 413 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
340 EXPECT_EQ("AbortError - Registration failed - permission denied", | 414 EXPECT_EQ("AbortError - Registration failed - permission denied", |
341 script_result); | 415 script_result); |
342 } | 416 } |
343 | 417 |
344 IN_PROC_BROWSER_TEST_F(PushMessagingBadManifestBrowserTest, | 418 IN_PROC_BROWSER_TEST_P(PushMessagingBadManifestBrowserTest, |
345 RegisterFailsNotVisibleMessages) { | 419 RegisterFailsNotVisibleMessages) { |
346 std::string script_result; | 420 std::string script_result; |
347 | 421 |
348 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 422 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
349 ASSERT_EQ("ok - service worker registered", script_result); | 423 ASSERT_EQ("ok - service worker registered", script_result); |
350 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 424 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
351 EXPECT_EQ("AbortError - Registration failed - permission denied", | 425 EXPECT_EQ("AbortError - Registration failed - permission denied", |
352 script_result); | 426 script_result); |
353 } | 427 } |
354 | 428 |
355 IN_PROC_BROWSER_TEST_F(PushMessagingManifestUserVisibleOnlyTrueTest, | 429 IN_PROC_BROWSER_TEST_P(PushMessagingManifestUserVisibleOnlyTrueTest, |
356 ManifestKeyConsidered) { | 430 ManifestKeyConsidered) { |
357 // Chrome 42 introduced the "gcm_user_visible_only" manifest key, but Chrome | 431 // Chrome 42 introduced the "gcm_user_visible_only" manifest key, but Chrome |
358 // 43 supersedes this by the standardized PushSubscriptionOptions.userVisible | 432 // 43 supersedes this by the standardized PushSubscriptionOptions.userVisible |
359 // option. We maintain support for the manifest key without specifying the | 433 // option. We maintain support for the manifest key without specifying the |
360 // subscription option, so verify that it is still being considered. | 434 // subscription option, so verify that it is still being considered. |
361 std::string script_result; | 435 std::string script_result; |
362 | 436 |
363 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 437 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
364 ASSERT_EQ("ok - service worker registered", script_result); | 438 ASSERT_EQ("ok - service worker registered", script_result); |
365 | 439 |
366 InfoBarResponder accepting_responder(GetInfoBarService(), true); | 440 RequestAndAcceptPermission(); |
367 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | |
368 EXPECT_EQ("permission status - granted", script_result); | |
369 | 441 |
370 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 442 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
371 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); | 443 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); |
372 | 444 |
373 // permissionState has been introduced later so it does not | 445 // permissionState has been introduced later so it does not |
374 // respect the manifest key. | 446 // respect the manifest key. |
375 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 447 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
376 EXPECT_EQ( | 448 EXPECT_EQ( |
377 "NotSupportedError - Push subscriptions that don't enable" | 449 "NotSupportedError - Push subscriptions that don't enable" |
378 " userVisibleOnly are not supported.", | 450 " userVisibleOnly are not supported.", |
379 script_result); | 451 script_result); |
380 } | 452 } |
381 | 453 |
382 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) { | 454 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, SubscribePersisted) { |
383 std::string script_result; | 455 std::string script_result; |
384 | 456 |
385 // First, test that Service Worker registration IDs are assigned in order of | 457 // First, test that Service Worker registration IDs are assigned in order of |
386 // registering the Service Workers, and the (fake) push subscription ids are | 458 // registering the Service Workers, and the (fake) push subscription ids are |
387 // assigned in order of push subscription (even when these orders are | 459 // assigned in order of push subscription (even when these orders are |
388 // different). | 460 // different). |
389 | 461 |
390 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 462 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
391 PushMessagingAppIdentifier sw0_identifier = | 463 PushMessagingAppIdentifier sw0_identifier = |
392 GetAppIdentifierForServiceWorkerRegistration(0LL); | 464 GetAppIdentifierForServiceWorkerRegistration(0LL); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
429 | 501 |
430 LoadTestPage("files/push_messaging/subscope2/test.html"); | 502 LoadTestPage("files/push_messaging/subscope2/test.html"); |
431 TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); | 503 TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); |
432 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); | 504 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); |
433 | 505 |
434 LoadTestPage(); | 506 LoadTestPage(); |
435 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 507 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
436 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); | 508 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); |
437 } | 509 } |
438 | 510 |
439 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { | 511 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PushEventSuccess) { |
440 std::string script_result; | 512 std::string script_result; |
441 | 513 |
442 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 514 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
443 | 515 |
444 PushMessagingAppIdentifier app_identifier = | 516 PushMessagingAppIdentifier app_identifier = |
445 GetAppIdentifierForServiceWorkerRegistration(0LL); | 517 GetAppIdentifierForServiceWorkerRegistration(0LL); |
446 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 518 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
447 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 519 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
448 | 520 |
449 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 521 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
450 ASSERT_EQ("false - is not controlled", script_result); | 522 ASSERT_EQ("false - is not controlled", script_result); |
451 | 523 |
452 LoadTestPage(); // Reload to become controlled. | 524 LoadTestPage(); // Reload to become controlled. |
453 | 525 |
454 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 526 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
455 ASSERT_EQ("true - is controlled", script_result); | 527 ASSERT_EQ("true - is controlled", script_result); |
456 | 528 |
457 gcm::GCMClient::IncomingMessage message; | 529 gcm::GCMClient::IncomingMessage message; |
458 message.sender_id = "1234567890"; | 530 message.sender_id = "1234567890"; |
459 message.data["data"] = "testdata"; | 531 message.data["data"] = "testdata"; |
460 push_service()->OnMessage(app_identifier.app_id(), message); | 532 push_service()->OnMessage(app_identifier.app_id(), message); |
461 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); | 533 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
462 EXPECT_EQ("testdata", script_result); | 534 EXPECT_EQ("testdata", script_result); |
463 } | 535 } |
464 | 536 |
465 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { | 537 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PushEventNoServiceWorker) { |
466 std::string script_result; | 538 std::string script_result; |
467 | 539 |
468 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 540 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
469 | 541 |
470 PushMessagingAppIdentifier app_identifier = | 542 PushMessagingAppIdentifier app_identifier = |
471 GetAppIdentifierForServiceWorkerRegistration(0LL); | 543 GetAppIdentifierForServiceWorkerRegistration(0LL); |
472 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 544 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
473 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 545 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
474 | 546 |
475 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 547 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
(...skipping 21 matching lines...) Expand all Loading... | |
497 | 569 |
498 callback.WaitUntilSatisfied(); | 570 callback.WaitUntilSatisfied(); |
499 EXPECT_EQ(app_identifier.app_id(), callback.app_id()); | 571 EXPECT_EQ(app_identifier.app_id(), callback.app_id()); |
500 | 572 |
501 // No push data should have been received. | 573 // No push data should have been received. |
502 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); | 574 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
503 EXPECT_EQ("null", script_result); | 575 EXPECT_EQ("null", script_result); |
504 } | 576 } |
505 | 577 |
506 #if defined(ENABLE_NOTIFICATIONS) | 578 #if defined(ENABLE_NOTIFICATIONS) |
507 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 579 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
508 PushEventEnforcesUserVisibleNotification) { | 580 PushEventEnforcesUserVisibleNotification) { |
509 std::string script_result; | 581 std::string script_result; |
510 | 582 |
511 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 583 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
512 | 584 |
513 PushMessagingAppIdentifier app_identifier = | 585 PushMessagingAppIdentifier app_identifier = |
514 GetAppIdentifierForServiceWorkerRegistration(0LL); | 586 GetAppIdentifierForServiceWorkerRegistration(0LL); |
515 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 587 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
516 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 588 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
517 | 589 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
594 | 666 |
595 // Now that 10 push messages in a row have shown notifications, we should | 667 // Now that 10 push messages in a row have shown notifications, we should |
596 // allow the next one to mistakenly not show a notification. | 668 // allow the next one to mistakenly not show a notification. |
597 message.data["data"] = "testdata"; | 669 message.data["data"] = "testdata"; |
598 SendMessageAndWaitUntilHandled(app_identifier, message); | 670 SendMessageAndWaitUntilHandled(app_identifier, message); |
599 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents)); | 671 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents)); |
600 EXPECT_EQ("testdata", script_result); | 672 EXPECT_EQ("testdata", script_result); |
601 EXPECT_EQ(0u, notification_manager()->GetNotificationCount()); | 673 EXPECT_EQ(0u, notification_manager()->GetNotificationCount()); |
602 } | 674 } |
603 | 675 |
604 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 676 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
605 PushEventNotificationWithoutEventWaitUntil) { | 677 PushEventNotificationWithoutEventWaitUntil) { |
606 std::string script_result; | 678 std::string script_result; |
607 content::WebContents* web_contents = | 679 content::WebContents* web_contents = |
608 GetBrowser()->tab_strip_model()->GetActiveWebContents(); | 680 GetBrowser()->tab_strip_model()->GetActiveWebContents(); |
609 | 681 |
610 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 682 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
611 | 683 |
612 PushMessagingAppIdentifier app_identifier = | 684 PushMessagingAppIdentifier app_identifier = |
613 GetAppIdentifierForServiceWorkerRegistration(0LL); | 685 GetAppIdentifierForServiceWorkerRegistration(0LL); |
614 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 686 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
(...skipping 24 matching lines...) Expand all Loading... | |
639 ASSERT_EQ(1u, notification_manager()->GetNotificationCount()); | 711 ASSERT_EQ(1u, notification_manager()->GetNotificationCount()); |
640 EXPECT_EQ("push_test_tag", | 712 EXPECT_EQ("push_test_tag", |
641 notification_manager()->GetNotificationAt(0).tag()); | 713 notification_manager()->GetNotificationAt(0).tag()); |
642 | 714 |
643 // Verify that the renderer process hasn't crashed. | 715 // Verify that the renderer process hasn't crashed. |
644 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 716 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
645 EXPECT_EQ("permission status - granted", script_result); | 717 EXPECT_EQ("permission status - granted", script_result); |
646 } | 718 } |
647 #endif | 719 #endif |
648 | 720 |
649 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysPrompt) { | 721 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysPrompt) { |
650 std::string script_result; | 722 std::string script_result; |
651 | 723 |
652 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 724 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
653 ASSERT_EQ("ok - service worker registered", script_result); | 725 ASSERT_EQ("ok - service worker registered", script_result); |
654 | 726 |
655 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 727 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
656 ASSERT_EQ("permission status - prompt", script_result); | 728 ASSERT_EQ("permission status - prompt", script_result); |
657 } | 729 } |
658 | 730 |
659 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) { | 731 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysGranted) { |
660 std::string script_result; | 732 std::string script_result; |
661 | 733 |
662 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 734 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
663 ASSERT_EQ("ok - service worker registered", script_result); | 735 ASSERT_EQ("ok - service worker registered", script_result); |
664 | 736 |
665 InfoBarResponder accepting_responder(GetInfoBarService(), true); | 737 RequestAndAcceptPermission(); |
666 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | |
667 EXPECT_EQ("permission status - granted", script_result); | |
668 | 738 |
669 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 739 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
670 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), | 740 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), |
671 script_result); | 741 script_result); |
672 | 742 |
673 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 743 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
674 EXPECT_EQ("permission status - granted", script_result); | 744 EXPECT_EQ("permission status - granted", script_result); |
675 } | 745 } |
676 | 746 |
677 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) { | 747 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, PermissionStateSaysDenied) { |
678 std::string script_result; | 748 std::string script_result; |
679 | 749 |
680 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 750 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
681 ASSERT_EQ("ok - service worker registered", script_result); | 751 ASSERT_EQ("ok - service worker registered", script_result); |
682 | 752 |
683 InfoBarResponder cancelling_responder(GetInfoBarService(), false); | 753 RequestAndDenyPermission(); |
684 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | |
685 EXPECT_EQ("permission status - denied", script_result); | |
686 | 754 |
687 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); | 755 ASSERT_TRUE(RunScript("subscribePush()", &script_result)); |
688 EXPECT_EQ("AbortError - Registration failed - permission denied", | 756 EXPECT_EQ("AbortError - Registration failed - permission denied", |
689 script_result); | 757 script_result); |
690 | 758 |
691 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 759 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
692 EXPECT_EQ("permission status - denied", script_result); | 760 EXPECT_EQ("permission status - denied", script_result); |
693 } | 761 } |
694 | 762 |
695 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { | 763 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, UnsubscribeSuccess) { |
696 std::string script_result; | 764 std::string script_result; |
697 | 765 |
698 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 766 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
699 EXPECT_EQ("ok - service worker registered", script_result); | 767 EXPECT_EQ("ok - service worker registered", script_result); |
700 | 768 |
701 // Resolves true if there was a subscription. | 769 // Resolves true if there was a subscription. |
702 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 770 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
703 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | 771 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
704 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 772 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
705 EXPECT_EQ("unsubscribe result: true", script_result); | 773 EXPECT_EQ("unsubscribe result: true", script_result); |
(...skipping 21 matching lines...) Expand all Loading... | |
727 | 795 |
728 // Unsubscribing (with an existing reference to a PushSubscription), after | 796 // Unsubscribing (with an existing reference to a PushSubscription), after |
729 // unregistering the Service Worker, just means push subscription isn't found. | 797 // unregistering the Service Worker, just means push subscription isn't found. |
730 TryToSubscribeSuccessfully("1-3" /* expected_push_subscription_id */); | 798 TryToSubscribeSuccessfully("1-3" /* expected_push_subscription_id */); |
731 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); | 799 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
732 ASSERT_EQ("service worker unregistration status: true", script_result); | 800 ASSERT_EQ("service worker unregistration status: true", script_result); |
733 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 801 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
734 EXPECT_EQ("unsubscribe result: false", script_result); | 802 EXPECT_EQ("unsubscribe result: false", script_result); |
735 } | 803 } |
736 | 804 |
737 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 805 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
738 GlobalResetPushPermissionUnsubscribes) { | 806 GlobalResetPushPermissionUnsubscribes) { |
739 std::string script_result; | 807 std::string script_result; |
740 | 808 |
741 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 809 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
742 | 810 |
743 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 811 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
744 EXPECT_EQ("true - subscribed", script_result); | 812 EXPECT_EQ("true - subscribed", script_result); |
745 | 813 |
746 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 814 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
747 EXPECT_EQ("permission status - granted", script_result); | 815 EXPECT_EQ("permission status - granted", script_result); |
748 | 816 |
749 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 817 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
750 new content::MessageLoopRunner; | 818 new content::MessageLoopRunner; |
751 push_service()->SetContentSettingChangedCallbackForTesting( | 819 push_service()->SetContentSettingChangedCallbackForTesting( |
752 message_loop_runner->QuitClosure()); | 820 message_loop_runner->QuitClosure()); |
753 | 821 |
754 GetBrowser()->profile()->GetHostContentSettingsMap()-> | 822 GetBrowser()->profile()->GetHostContentSettingsMap()-> |
755 ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); | 823 ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); |
756 | 824 |
757 message_loop_runner->Run(); | 825 message_loop_runner->Run(); |
758 | 826 |
759 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 827 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
760 EXPECT_EQ("permission status - prompt", script_result); | 828 EXPECT_EQ("permission status - prompt", script_result); |
761 | 829 |
762 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 830 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
763 EXPECT_EQ("false - not subscribed", script_result); | 831 EXPECT_EQ("false - not subscribed", script_result); |
764 } | 832 } |
765 | 833 |
766 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 834 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
767 LocalResetPushPermissionUnsubscribes) { | 835 LocalResetPushPermissionUnsubscribes) { |
768 std::string script_result; | 836 std::string script_result; |
769 | 837 |
770 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 838 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
771 | 839 |
772 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 840 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
773 EXPECT_EQ("true - subscribed", script_result); | 841 EXPECT_EQ("true - subscribed", script_result); |
774 | 842 |
775 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 843 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
776 EXPECT_EQ("permission status - granted", script_result); | 844 EXPECT_EQ("permission status - granted", script_result); |
(...skipping 13 matching lines...) Expand all Loading... | |
790 | 858 |
791 message_loop_runner->Run(); | 859 message_loop_runner->Run(); |
792 | 860 |
793 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 861 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
794 EXPECT_EQ("permission status - prompt", script_result); | 862 EXPECT_EQ("permission status - prompt", script_result); |
795 | 863 |
796 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 864 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
797 EXPECT_EQ("false - not subscribed", script_result); | 865 EXPECT_EQ("false - not subscribed", script_result); |
798 } | 866 } |
799 | 867 |
800 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 868 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
801 DenyPushPermissionUnsubscribes) { | 869 DenyPushPermissionUnsubscribes) { |
802 std::string script_result; | 870 std::string script_result; |
803 | 871 |
804 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 872 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
805 | 873 |
806 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 874 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
807 EXPECT_EQ("true - subscribed", script_result); | 875 EXPECT_EQ("true - subscribed", script_result); |
808 | 876 |
809 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 877 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
810 EXPECT_EQ("permission status - granted", script_result); | 878 EXPECT_EQ("permission status - granted", script_result); |
(...skipping 13 matching lines...) Expand all Loading... | |
824 | 892 |
825 message_loop_runner->Run(); | 893 message_loop_runner->Run(); |
826 | 894 |
827 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 895 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
828 EXPECT_EQ("permission status - denied", script_result); | 896 EXPECT_EQ("permission status - denied", script_result); |
829 | 897 |
830 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 898 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
831 EXPECT_EQ("false - not subscribed", script_result); | 899 EXPECT_EQ("false - not subscribed", script_result); |
832 } | 900 } |
833 | 901 |
834 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 902 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
835 GlobalResetNotificationsPermissionUnsubscribes) { | 903 GlobalResetNotificationsPermissionUnsubscribes) { |
836 std::string script_result; | 904 std::string script_result; |
837 | 905 |
838 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 906 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
839 | 907 |
840 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 908 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
841 EXPECT_EQ("true - subscribed", script_result); | 909 EXPECT_EQ("true - subscribed", script_result); |
842 | 910 |
843 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 911 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
844 EXPECT_EQ("permission status - granted", script_result); | 912 EXPECT_EQ("permission status - granted", script_result); |
845 | 913 |
846 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 914 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
847 new content::MessageLoopRunner; | 915 new content::MessageLoopRunner; |
848 push_service()->SetContentSettingChangedCallbackForTesting( | 916 push_service()->SetContentSettingChangedCallbackForTesting( |
849 message_loop_runner->QuitClosure()); | 917 message_loop_runner->QuitClosure()); |
850 | 918 |
851 GetBrowser()->profile()->GetHostContentSettingsMap()-> | 919 GetBrowser()->profile()->GetHostContentSettingsMap()-> |
852 ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 920 ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
853 | 921 |
854 message_loop_runner->Run(); | 922 message_loop_runner->Run(); |
855 | 923 |
856 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 924 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
857 EXPECT_EQ("permission status - prompt", script_result); | 925 EXPECT_EQ("permission status - prompt", script_result); |
858 | 926 |
859 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 927 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
860 EXPECT_EQ("false - not subscribed", script_result); | 928 EXPECT_EQ("false - not subscribed", script_result); |
861 } | 929 } |
862 | 930 |
863 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 931 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
864 LocalResetNotificationsPermissionUnsubscribes) { | 932 LocalResetNotificationsPermissionUnsubscribes) { |
865 std::string script_result; | 933 std::string script_result; |
866 | 934 |
867 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 935 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
868 | 936 |
869 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 937 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
870 EXPECT_EQ("true - subscribed", script_result); | 938 EXPECT_EQ("true - subscribed", script_result); |
871 | 939 |
872 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 940 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
873 EXPECT_EQ("permission status - granted", script_result); | 941 EXPECT_EQ("permission status - granted", script_result); |
(...skipping 13 matching lines...) Expand all Loading... | |
887 | 955 |
888 message_loop_runner->Run(); | 956 message_loop_runner->Run(); |
889 | 957 |
890 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 958 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
891 EXPECT_EQ("permission status - prompt", script_result); | 959 EXPECT_EQ("permission status - prompt", script_result); |
892 | 960 |
893 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 961 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
894 EXPECT_EQ("false - not subscribed", script_result); | 962 EXPECT_EQ("false - not subscribed", script_result); |
895 } | 963 } |
896 | 964 |
897 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 965 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
898 DenyNotificationsPermissionUnsubscribes) { | 966 DenyNotificationsPermissionUnsubscribes) { |
899 std::string script_result; | 967 std::string script_result; |
900 | 968 |
901 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 969 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
902 | 970 |
903 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 971 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
904 EXPECT_EQ("true - subscribed", script_result); | 972 EXPECT_EQ("true - subscribed", script_result); |
905 | 973 |
906 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 974 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
907 EXPECT_EQ("permission status - granted", script_result); | 975 EXPECT_EQ("permission status - granted", script_result); |
(...skipping 13 matching lines...) Expand all Loading... | |
921 | 989 |
922 message_loop_runner->Run(); | 990 message_loop_runner->Run(); |
923 | 991 |
924 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 992 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
925 EXPECT_EQ("permission status - denied", script_result); | 993 EXPECT_EQ("permission status - denied", script_result); |
926 | 994 |
927 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 995 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
928 EXPECT_EQ("false - not subscribed", script_result); | 996 EXPECT_EQ("false - not subscribed", script_result); |
929 } | 997 } |
930 | 998 |
931 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 999 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
932 GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { | 1000 GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { |
933 std::string script_result; | 1001 std::string script_result; |
934 | 1002 |
935 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1003 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
936 | 1004 |
937 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1005 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
938 EXPECT_EQ("true - subscribed", script_result); | 1006 EXPECT_EQ("true - subscribed", script_result); |
939 | 1007 |
940 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1008 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
941 EXPECT_EQ("permission status - granted", script_result); | 1009 EXPECT_EQ("permission status - granted", script_result); |
(...skipping 23 matching lines...) Expand all Loading... | |
965 EXPECT_EQ("permission status - granted", script_result); | 1033 EXPECT_EQ("permission status - granted", script_result); |
966 | 1034 |
967 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1035 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
968 EXPECT_EQ("true - subscribed", script_result); | 1036 EXPECT_EQ("true - subscribed", script_result); |
969 } | 1037 } |
970 | 1038 |
971 // This test is testing some non-trivial content settings rules and make sure | 1039 // This test is testing some non-trivial content settings rules and make sure |
972 // that they are respected with regards to automatic unsubscription. In other | 1040 // that they are respected with regards to automatic unsubscription. In other |
973 // words, it checks that the push service does not end up unsubscribing origins | 1041 // words, it checks that the push service does not end up unsubscribing origins |
974 // that have push permission with some non-common rules. | 1042 // that have push permission with some non-common rules. |
975 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1043 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
976 AutomaticUnsubscriptionFollowsContentSettingRules) { | 1044 AutomaticUnsubscriptionFollowsContentSettingRules) { |
977 std::string script_result; | 1045 std::string script_result; |
978 | 1046 |
979 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1047 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
980 | 1048 |
981 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1049 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
982 EXPECT_EQ("true - subscribed", script_result); | 1050 EXPECT_EQ("true - subscribed", script_result); |
983 | 1051 |
984 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1052 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
985 EXPECT_EQ("permission status - granted", script_result); | 1053 EXPECT_EQ("permission status - granted", script_result); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1024 | 1092 |
1025 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1093 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1026 EXPECT_EQ("permission status - granted", script_result); | 1094 EXPECT_EQ("permission status - granted", script_result); |
1027 | 1095 |
1028 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1096 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1029 EXPECT_EQ("true - subscribed", script_result); | 1097 EXPECT_EQ("true - subscribed", script_result); |
1030 } | 1098 } |
1031 | 1099 |
1032 // Checks that automatically unsubscribing due to a revoked permission is | 1100 // Checks that automatically unsubscribing due to a revoked permission is |
1033 // handled well if the sender ID needed to unsubscribe was already deleted. | 1101 // handled well if the sender ID needed to unsubscribe was already deleted. |
1034 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1102 IN_PROC_BROWSER_TEST_P(PushMessagingBrowserTest, |
1035 ResetPushPermissionAfterClearingSiteData) { | 1103 ResetPushPermissionAfterClearingSiteData) { |
1036 std::string script_result; | 1104 std::string script_result; |
1037 | 1105 |
1038 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1106 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
1039 | 1107 |
1040 PushMessagingAppIdentifier app_identifier = | 1108 PushMessagingAppIdentifier app_identifier = |
1041 GetAppIdentifierForServiceWorkerRegistration(0LL); | 1109 GetAppIdentifierForServiceWorkerRegistration(0LL); |
1042 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 1110 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
1043 PushMessagingAppIdentifier stored_app_identifier = | 1111 PushMessagingAppIdentifier stored_app_identifier = |
1044 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), | 1112 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1097 std::string script_result; | 1165 std::string script_result; |
1098 | 1166 |
1099 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 1167 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
1100 ASSERT_EQ("ok - service worker registered", script_result); | 1168 ASSERT_EQ("ok - service worker registered", script_result); |
1101 | 1169 |
1102 // In Incognito mode the promise returned by getSubscription should not hang, | 1170 // In Incognito mode the promise returned by getSubscription should not hang, |
1103 // it should just fulfill with null. | 1171 // it should just fulfill with null. |
1104 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1172 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1105 ASSERT_EQ("false - not subscribed", script_result); | 1173 ASSERT_EQ("false - not subscribed", script_result); |
1106 } | 1174 } |
1175 | |
1176 INSTANTIATE_TEST_CASE_P(PushMessagingBrowserTestWithParams, | |
johnme
2015/06/02 14:12:38
Does this mean all the tests will run twice, even
| |
1177 PushMessagingBrowserTest, | |
1178 testing::Values(false, true)); | |
1179 INSTANTIATE_TEST_CASE_P(PushMessagingBadManifestBrowserTestWithParams, | |
1180 PushMessagingBadManifestBrowserTest, | |
1181 testing::Values(false, true)); | |
1182 INSTANTIATE_TEST_CASE_P(PushMessagingManifestUserVisibleOnlyTrueTestWithParams, | |
1183 PushMessagingManifestUserVisibleOnlyTrueTest, | |
1184 testing::Values(false, true)); | |
1185 INSTANTIATE_TEST_CASE_P(PushMessagingBrowserTestEmptySubscriptionOptsWithParams, | |
1186 PushMessagingBrowserTestEmptySubscriptionOptions, | |
1187 testing::Values(false, true)); | |
OLD | NEW |