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/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 #include "components/content_settings/core/common/content_settings_types.h" | 25 #include "components/content_settings/core/common/content_settings_types.h" |
26 #include "components/gcm_driver/gcm_client.h" | 26 #include "components/gcm_driver/gcm_client.h" |
27 #include "components/infobars/core/confirm_infobar_delegate.h" | 27 #include "components/infobars/core/confirm_infobar_delegate.h" |
28 #include "components/infobars/core/infobar.h" | 28 #include "components/infobars/core/infobar.h" |
29 #include "components/infobars/core/infobar_manager.h" | 29 #include "components/infobars/core/infobar_manager.h" |
30 #include "content/public/browser/web_contents.h" | 30 #include "content/public/browser/web_contents.h" |
31 #include "content/public/common/content_switches.h" | 31 #include "content/public/common/content_switches.h" |
32 #include "content/public/test/browser_test_utils.h" | 32 #include "content/public/test/browser_test_utils.h" |
33 #include "ui/base/window_open_disposition.h" | 33 #include "ui/base/window_open_disposition.h" |
34 | 34 |
| 35 #if defined(OS_ANDROID) |
| 36 #include "base/android/build_info.h" |
| 37 #endif |
| 38 |
35 namespace gcm { | 39 namespace gcm { |
36 | 40 |
37 namespace { | 41 namespace { |
38 // Responds to a confirm infobar by accepting or cancelling it. Responds to at | 42 // Responds to a confirm infobar by accepting or cancelling it. Responds to at |
39 // most one infobar. | 43 // most one infobar. |
40 class InfoBarResponder : public infobars::InfoBarManager::Observer { | 44 class InfoBarResponder : public infobars::InfoBarManager::Observer { |
41 public: | 45 public: |
42 InfoBarResponder(Browser* browser, bool accept) | 46 InfoBarResponder(Browser* browser, bool accept) |
43 : infobar_service_(InfoBarService::FromWebContents( | 47 : infobar_service_(InfoBarService::FromWebContents( |
44 browser->tab_strip_model()->GetActiveWebContents())), | 48 browser->tab_strip_model()->GetActiveWebContents())), |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 waiting_ = true; | 130 waiting_ = true; |
127 while (!done_) | 131 while (!done_) |
128 content::RunMessageLoop(); | 132 content::RunMessageLoop(); |
129 } | 133 } |
130 | 134 |
131 private: | 135 private: |
132 bool done_; | 136 bool done_; |
133 bool waiting_; | 137 bool waiting_; |
134 }; | 138 }; |
135 | 139 |
| 140 // The Push API depends on Web Notifications, which is only available on Android |
| 141 // Jelly Bean and later. |
| 142 bool IsPushSupported() { |
| 143 #if defined(OS_ANDROID) |
| 144 if (base::android::BuildInfo::GetInstance()->sdk_int() < |
| 145 base::android::SDK_VERSION_JELLY_BEAN) { |
| 146 DVLOG(0) << "The Push API is only supported in Android 4.1 and later."; |
| 147 return false; |
| 148 } |
| 149 #endif |
| 150 return true; |
| 151 } |
| 152 |
136 } // namespace | 153 } // namespace |
137 | 154 |
138 class PushMessagingBrowserTest : public InProcessBrowserTest { | 155 class PushMessagingBrowserTest : public InProcessBrowserTest { |
139 public: | 156 public: |
140 PushMessagingBrowserTest() : gcm_service_(nullptr) {} | 157 PushMessagingBrowserTest() : gcm_service_(nullptr) {} |
141 ~PushMessagingBrowserTest() override {} | 158 ~PushMessagingBrowserTest() override {} |
142 | 159 |
143 // InProcessBrowserTest: | 160 // InProcessBrowserTest: |
144 void SetUpCommandLine(base::CommandLine* command_line) override { | 161 void SetUpCommandLine(base::CommandLine* command_line) override { |
145 command_line->AppendSwitch( | 162 command_line->AppendSwitch( |
146 switches::kEnableExperimentalWebPlatformFeatures); | 163 switches::kEnableExperimentalWebPlatformFeatures); |
147 command_line->AppendSwitch( | 164 command_line->AppendSwitch(switches::kEnablePushMessagePayload); |
148 switches::kEnablePushMessagePayload); | |
149 | |
150 InProcessBrowserTest::SetUpCommandLine(command_line); | 165 InProcessBrowserTest::SetUpCommandLine(command_line); |
151 } | 166 } |
152 | 167 |
153 // InProcessBrowserTest: | 168 // InProcessBrowserTest: |
154 void SetUp() override { | 169 void SetUp() override { |
155 https_server_.reset(new net::SpawnedTestServer( | 170 https_server_.reset(new net::SpawnedTestServer( |
156 net::SpawnedTestServer::TYPE_HTTPS, | 171 net::SpawnedTestServer::TYPE_HTTPS, |
157 net::BaseTestServer::SSLOptions( | 172 net::BaseTestServer::SSLOptions( |
158 net::BaseTestServer::SSLOptions::CERT_OK), | 173 net::BaseTestServer::SSLOptions::CERT_OK), |
159 base::FilePath(FILE_PATH_LITERAL("chrome/test/data/")))); | 174 base::FilePath(FILE_PATH_LITERAL("chrome/test/data/")))); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 }; | 264 }; |
250 | 265 |
251 class PushMessagingBadManifestBrowserTest : public PushMessagingBrowserTest { | 266 class PushMessagingBadManifestBrowserTest : public PushMessagingBrowserTest { |
252 std::string GetTestURL() override { | 267 std::string GetTestURL() override { |
253 return "files/push_messaging/test_bad_manifest.html"; | 268 return "files/push_messaging/test_bad_manifest.html"; |
254 } | 269 } |
255 }; | 270 }; |
256 | 271 |
257 IN_PROC_BROWSER_TEST_F(PushMessagingBadManifestBrowserTest, | 272 IN_PROC_BROWSER_TEST_F(PushMessagingBadManifestBrowserTest, |
258 RegisterFailsNotVisibleMessages) { | 273 RegisterFailsNotVisibleMessages) { |
| 274 if (!IsPushSupported()) |
| 275 return; |
| 276 |
259 std::string script_result; | 277 std::string script_result; |
260 | 278 |
261 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 279 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
262 ASSERT_EQ("ok - service worker registered", script_result); | 280 ASSERT_EQ("ok - service worker registered", script_result); |
263 ASSERT_TRUE(RunScript("registerPush()", &script_result)); | 281 ASSERT_TRUE(RunScript("registerPush()", &script_result)); |
264 EXPECT_EQ("AbortError - Registration failed - permission denied", | 282 EXPECT_EQ("AbortError - Registration failed - permission denied", |
265 script_result); | 283 script_result); |
266 } | 284 } |
267 | 285 |
268 void PushMessagingBrowserTest::TryToRegisterSuccessfully( | 286 void PushMessagingBrowserTest::TryToRegisterSuccessfully( |
(...skipping 16 matching lines...) Expand all Loading... |
285 int64 service_worker_registration_id) { | 303 int64 service_worker_registration_id) { |
286 GURL origin = https_server()->GetURL("").GetOrigin(); | 304 GURL origin = https_server()->GetURL("").GetOrigin(); |
287 PushMessagingApplicationId application_id = PushMessagingApplicationId::Get( | 305 PushMessagingApplicationId application_id = PushMessagingApplicationId::Get( |
288 browser()->profile(), origin, service_worker_registration_id); | 306 browser()->profile(), origin, service_worker_registration_id); |
289 EXPECT_TRUE(application_id.IsValid()); | 307 EXPECT_TRUE(application_id.IsValid()); |
290 return application_id; | 308 return application_id; |
291 } | 309 } |
292 | 310 |
293 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 311 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
294 RegisterSuccessNotificationsGranted) { | 312 RegisterSuccessNotificationsGranted) { |
| 313 if (!IsPushSupported()) |
| 314 return; |
| 315 |
295 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 316 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
296 | 317 |
297 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 318 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
298 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 319 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
299 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 320 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
300 } | 321 } |
301 | 322 |
302 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 323 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
303 RegisterSuccessNotificationsPrompt) { | 324 RegisterSuccessNotificationsPrompt) { |
| 325 if (!IsPushSupported()) |
| 326 return; |
| 327 |
304 std::string script_result; | 328 std::string script_result; |
305 | 329 |
306 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 330 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
307 ASSERT_EQ("ok - service worker registered", script_result); | 331 ASSERT_EQ("ok - service worker registered", script_result); |
308 | 332 |
309 InfoBarResponder accepting_responder(browser(), true); | 333 InfoBarResponder accepting_responder(browser(), true); |
310 ASSERT_TRUE(RunScript("registerPush()", &script_result)); | 334 ASSERT_TRUE(RunScript("registerPush()", &script_result)); |
311 EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1-0", script_result); | 335 EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1-0", script_result); |
312 | 336 |
313 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 337 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
314 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 338 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
315 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 339 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
316 } | 340 } |
317 | 341 |
318 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 342 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
319 RegisterFailureNotificationsBlocked) { | 343 RegisterFailureNotificationsBlocked) { |
| 344 if (!IsPushSupported()) |
| 345 return; |
| 346 |
320 std::string script_result; | 347 std::string script_result; |
321 | 348 |
322 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 349 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
323 ASSERT_EQ("ok - service worker registered", script_result); | 350 ASSERT_EQ("ok - service worker registered", script_result); |
324 | 351 |
325 InfoBarResponder cancelling_responder(browser(), false); | 352 InfoBarResponder cancelling_responder(browser(), false); |
326 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | 353 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); |
327 ASSERT_EQ("permission status - denied", script_result); | 354 ASSERT_EQ("permission status - denied", script_result); |
328 | 355 |
329 ASSERT_TRUE(RunScript("registerPush()", &script_result)); | 356 ASSERT_TRUE(RunScript("registerPush()", &script_result)); |
330 EXPECT_EQ("AbortError - Registration failed - permission denied", | 357 EXPECT_EQ("AbortError - Registration failed - permission denied", |
331 script_result); | 358 script_result); |
332 } | 359 } |
333 | 360 |
334 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, RegisterFailureNoManifest) { | 361 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, RegisterFailureNoManifest) { |
| 362 if (!IsPushSupported()) |
| 363 return; |
| 364 |
335 std::string script_result; | 365 std::string script_result; |
336 | 366 |
337 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 367 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
338 ASSERT_EQ("ok - service worker registered", script_result); | 368 ASSERT_EQ("ok - service worker registered", script_result); |
339 | 369 |
340 InfoBarResponder accepting_responder(browser(), true); | 370 InfoBarResponder accepting_responder(browser(), true); |
341 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | 371 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); |
342 ASSERT_EQ("permission status - granted", script_result); | 372 ASSERT_EQ("permission status - granted", script_result); |
343 | 373 |
344 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); | 374 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); |
345 ASSERT_EQ("manifest removed", script_result); | 375 ASSERT_EQ("manifest removed", script_result); |
346 | 376 |
347 ASSERT_TRUE(RunScript("registerPush()", &script_result)); | 377 ASSERT_TRUE(RunScript("registerPush()", &script_result)); |
348 EXPECT_EQ("AbortError - Registration failed - no sender id provided", | 378 EXPECT_EQ("AbortError - Registration failed - no sender id provided", |
349 script_result); | 379 script_result); |
350 } | 380 } |
351 | 381 |
352 // TODO(johnme): Test registering from a worker - see https://crbug.com/437298. | 382 // TODO(johnme): Test registering from a worker - see https://crbug.com/437298. |
353 | 383 |
354 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, RegisterPersisted) { | 384 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, RegisterPersisted) { |
| 385 if (!IsPushSupported()) |
| 386 return; |
| 387 |
355 std::string script_result; | 388 std::string script_result; |
356 | 389 |
357 // First, test that Service Worker registration IDs are assigned in order of | 390 // First, test that Service Worker registration IDs are assigned in order of |
358 // registering the Service Workers, and the (fake) push registration ids are | 391 // registering the Service Workers, and the (fake) push registration ids are |
359 // assigned in order of push registration (even when these orders are | 392 // assigned in order of push registration (even when these orders are |
360 // different). | 393 // different). |
361 | 394 |
362 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 395 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
363 PushMessagingApplicationId app_id_sw0 = GetServiceWorkerAppId(0LL); | 396 PushMessagingApplicationId app_id_sw0 = GetServiceWorkerAppId(0LL); |
364 EXPECT_EQ(app_id_sw0.app_id_guid, gcm_service()->last_registered_app_id()); | 397 EXPECT_EQ(app_id_sw0.app_id_guid, gcm_service()->last_registered_app_id()); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 LoadTestPage("files/push_messaging/subscope2/test.html"); | 432 LoadTestPage("files/push_messaging/subscope2/test.html"); |
400 TryToRegisterSuccessfully("1-1" /* expected_push_registration_id */); | 433 TryToRegisterSuccessfully("1-1" /* expected_push_registration_id */); |
401 EXPECT_EQ(app_id_sw1.app_id_guid, gcm_service()->last_registered_app_id()); | 434 EXPECT_EQ(app_id_sw1.app_id_guid, gcm_service()->last_registered_app_id()); |
402 | 435 |
403 LoadTestPage(); | 436 LoadTestPage(); |
404 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 437 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
405 EXPECT_EQ(app_id_sw1.app_id_guid, gcm_service()->last_registered_app_id()); | 438 EXPECT_EQ(app_id_sw1.app_id_guid, gcm_service()->last_registered_app_id()); |
406 } | 439 } |
407 | 440 |
408 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { | 441 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { |
| 442 if (!IsPushSupported()) |
| 443 return; |
| 444 |
409 std::string script_result; | 445 std::string script_result; |
410 | 446 |
411 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 447 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
412 | 448 |
413 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 449 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
414 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 450 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
415 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 451 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
416 | 452 |
417 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 453 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
418 ASSERT_EQ("false - is not controlled", script_result); | 454 ASSERT_EQ("false - is not controlled", script_result); |
419 | 455 |
420 LoadTestPage(); // Reload to become controlled. | 456 LoadTestPage(); // Reload to become controlled. |
421 | 457 |
422 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 458 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
423 ASSERT_EQ("true - is controlled", script_result); | 459 ASSERT_EQ("true - is controlled", script_result); |
424 | 460 |
425 GCMClient::IncomingMessage message; | 461 GCMClient::IncomingMessage message; |
426 message.data["data"] = "testdata"; | 462 message.data["data"] = "testdata"; |
427 push_service()->OnMessage(app_id.app_id_guid, message); | 463 push_service()->OnMessage(app_id.app_id_guid, message); |
428 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); | 464 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
429 EXPECT_EQ("testdata", script_result); | 465 EXPECT_EQ("testdata", script_result); |
430 } | 466 } |
431 | 467 |
432 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { | 468 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { |
| 469 if (!IsPushSupported()) |
| 470 return; |
| 471 |
433 std::string script_result; | 472 std::string script_result; |
434 | 473 |
435 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 474 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
436 | 475 |
437 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 476 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
438 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 477 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
439 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 478 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
440 | 479 |
441 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 480 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
442 ASSERT_EQ("false - is not controlled", script_result); | 481 ASSERT_EQ("false - is not controlled", script_result); |
(...skipping 19 matching lines...) Expand all Loading... |
462 | 501 |
463 callback.WaitUntilSatisfied(); | 502 callback.WaitUntilSatisfied(); |
464 EXPECT_EQ(app_id.app_id_guid, callback.app_id()); | 503 EXPECT_EQ(app_id.app_id_guid, callback.app_id()); |
465 | 504 |
466 // No push data should have been received. | 505 // No push data should have been received. |
467 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); | 506 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
468 EXPECT_EQ("null", script_result); | 507 EXPECT_EQ("null", script_result); |
469 } | 508 } |
470 | 509 |
471 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoPermission) { | 510 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoPermission) { |
| 511 if (!IsPushSupported()) |
| 512 return; |
| 513 |
472 std::string script_result; | 514 std::string script_result; |
473 | 515 |
474 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 516 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
475 | 517 |
476 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 518 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
477 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 519 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
478 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 520 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
479 | 521 |
480 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 522 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
481 ASSERT_EQ("false - is not controlled", script_result); | 523 ASSERT_EQ("false - is not controlled", script_result); |
(...skipping 21 matching lines...) Expand all Loading... |
503 EXPECT_EQ(app_id.app_id_guid, callback.app_id()); | 545 EXPECT_EQ(app_id.app_id_guid, callback.app_id()); |
504 | 546 |
505 // No push data should have been received. | 547 // No push data should have been received. |
506 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); | 548 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
507 EXPECT_EQ("null", script_result); | 549 EXPECT_EQ("null", script_result); |
508 } | 550 } |
509 | 551 |
510 #if defined(ENABLE_NOTIFICATIONS) | 552 #if defined(ENABLE_NOTIFICATIONS) |
511 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 553 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
512 PushEventEnforcesUserVisibleNotification) { | 554 PushEventEnforcesUserVisibleNotification) { |
| 555 if (!IsPushSupported()) |
| 556 return; |
| 557 |
513 std::string script_result; | 558 std::string script_result; |
514 | 559 |
515 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 560 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
516 | 561 |
517 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 562 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
518 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 563 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
519 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 564 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
520 | 565 |
521 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 566 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
522 ASSERT_EQ("false - is not controlled", script_result); | 567 ASSERT_EQ("false - is not controlled", script_result); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 // allow the next one to mistakenly not show a notification. | 639 // allow the next one to mistakenly not show a notification. |
595 message.data["data"] = "testdata"; | 640 message.data["data"] = "testdata"; |
596 push_service()->OnMessage(app_id.app_id_guid, message); | 641 push_service()->OnMessage(app_id.app_id_guid, message); |
597 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents)); | 642 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents)); |
598 EXPECT_EQ("testdata", script_result); | 643 EXPECT_EQ("testdata", script_result); |
599 EXPECT_EQ(0u, notification_manager()->GetNotificationCount()); | 644 EXPECT_EQ(0u, notification_manager()->GetNotificationCount()); |
600 } | 645 } |
601 | 646 |
602 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 647 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
603 PushEventNotificationWithoutEventWaitUntil) { | 648 PushEventNotificationWithoutEventWaitUntil) { |
| 649 if (!IsPushSupported()) |
| 650 return; |
| 651 |
604 std::string script_result; | 652 std::string script_result; |
605 content::WebContents* web_contents = | 653 content::WebContents* web_contents = |
606 browser()->tab_strip_model()->GetActiveWebContents(); | 654 browser()->tab_strip_model()->GetActiveWebContents(); |
607 | 655 |
608 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 656 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
609 | 657 |
610 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); | 658 PushMessagingApplicationId app_id = GetServiceWorkerAppId(0LL); |
611 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); | 659 EXPECT_EQ(app_id.app_id_guid, gcm_service()->last_registered_app_id()); |
612 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | 660 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
613 | 661 |
(...skipping 21 matching lines...) Expand all Loading... |
635 EXPECT_EQ(base::ASCIIToUTF16("push_test_tag"), | 683 EXPECT_EQ(base::ASCIIToUTF16("push_test_tag"), |
636 notification_manager()->GetNotificationAt(0).replace_id()); | 684 notification_manager()->GetNotificationAt(0).replace_id()); |
637 | 685 |
638 // Verify that the renderer process hasn't crashed. | 686 // Verify that the renderer process hasn't crashed. |
639 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); | 687 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); |
640 EXPECT_EQ("permission status - granted", script_result); | 688 EXPECT_EQ("permission status - granted", script_result); |
641 } | 689 } |
642 #endif | 690 #endif |
643 | 691 |
644 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, HasPermissionSaysDefault) { | 692 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, HasPermissionSaysDefault) { |
| 693 if (!IsPushSupported()) |
| 694 return; |
| 695 |
645 std::string script_result; | 696 std::string script_result; |
646 | 697 |
647 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 698 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
648 ASSERT_EQ("ok - service worker registered", script_result); | 699 ASSERT_EQ("ok - service worker registered", script_result); |
649 | 700 |
650 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); | 701 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); |
651 ASSERT_EQ("permission status - default", script_result); | 702 ASSERT_EQ("permission status - default", script_result); |
652 } | 703 } |
653 | 704 |
654 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, HasPermissionSaysGranted) { | 705 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, HasPermissionSaysGranted) { |
| 706 if (!IsPushSupported()) |
| 707 return; |
| 708 |
655 std::string script_result; | 709 std::string script_result; |
656 | 710 |
657 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 711 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
658 ASSERT_EQ("ok - service worker registered", script_result); | 712 ASSERT_EQ("ok - service worker registered", script_result); |
659 | 713 |
660 InfoBarResponder accepting_responder(browser(), true); | 714 InfoBarResponder accepting_responder(browser(), true); |
661 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | 715 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); |
662 EXPECT_EQ("permission status - granted", script_result); | 716 EXPECT_EQ("permission status - granted", script_result); |
663 | 717 |
664 ASSERT_TRUE(RunScript("registerPush()", &script_result)); | 718 ASSERT_TRUE(RunScript("registerPush()", &script_result)); |
665 EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1-0", script_result); | 719 EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1-0", script_result); |
666 | 720 |
667 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); | 721 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); |
668 EXPECT_EQ("permission status - granted", script_result); | 722 EXPECT_EQ("permission status - granted", script_result); |
669 } | 723 } |
670 | 724 |
671 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, HasPermissionSaysDenied) { | 725 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, HasPermissionSaysDenied) { |
| 726 if (!IsPushSupported()) |
| 727 return; |
| 728 |
672 std::string script_result; | 729 std::string script_result; |
673 | 730 |
674 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 731 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
675 ASSERT_EQ("ok - service worker registered", script_result); | 732 ASSERT_EQ("ok - service worker registered", script_result); |
676 | 733 |
677 InfoBarResponder cancelling_responder(browser(), false); | 734 InfoBarResponder cancelling_responder(browser(), false); |
678 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | 735 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); |
679 EXPECT_EQ("permission status - denied", script_result); | 736 EXPECT_EQ("permission status - denied", script_result); |
680 | 737 |
681 ASSERT_TRUE(RunScript("registerPush()", &script_result)); | 738 ASSERT_TRUE(RunScript("registerPush()", &script_result)); |
682 EXPECT_EQ("AbortError - Registration failed - permission denied", | 739 EXPECT_EQ("AbortError - Registration failed - permission denied", |
683 script_result); | 740 script_result); |
684 | 741 |
685 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); | 742 ASSERT_TRUE(RunScript("hasPermission()", &script_result)); |
686 EXPECT_EQ("permission status - denied", script_result); | 743 EXPECT_EQ("permission status - denied", script_result); |
687 } | 744 } |
688 | 745 |
689 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnregisterSuccess) { | 746 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnregisterSuccess) { |
| 747 if (!IsPushSupported()) |
| 748 return; |
| 749 |
690 std::string script_result; | 750 std::string script_result; |
691 | 751 |
692 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 752 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
693 | 753 |
694 gcm_service()->AddExpectedUnregisterResponse(GCMClient::SUCCESS); | 754 gcm_service()->AddExpectedUnregisterResponse(GCMClient::SUCCESS); |
695 | 755 |
696 ASSERT_TRUE(RunScript("unregister()", &script_result)); | 756 ASSERT_TRUE(RunScript("unregister()", &script_result)); |
697 EXPECT_EQ("unregister result: true", script_result); | 757 EXPECT_EQ("unregister result: true", script_result); |
698 } | 758 } |
699 | 759 |
700 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnregisterNetworkError) { | 760 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnregisterNetworkError) { |
| 761 if (!IsPushSupported()) |
| 762 return; |
| 763 |
701 std::string script_result; | 764 std::string script_result; |
702 | 765 |
703 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 766 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
704 | 767 |
705 gcm_service()->AddExpectedUnregisterResponse(GCMClient::NETWORK_ERROR); | 768 gcm_service()->AddExpectedUnregisterResponse(GCMClient::NETWORK_ERROR); |
706 | 769 |
707 ASSERT_TRUE(RunScript("unregister()", &script_result)); | 770 ASSERT_TRUE(RunScript("unregister()", &script_result)); |
708 EXPECT_EQ("unregister error: " | 771 EXPECT_EQ("unregister error: " |
709 "NetworkError: Failed to connect to the push server.", | 772 "NetworkError: Failed to connect to the push server.", |
710 script_result); | 773 script_result); |
711 } | 774 } |
712 | 775 |
713 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnregisterUnknownError) { | 776 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnregisterUnknownError) { |
| 777 if (!IsPushSupported()) |
| 778 return; |
| 779 |
714 std::string script_result; | 780 std::string script_result; |
715 | 781 |
716 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); | 782 TryToRegisterSuccessfully("1-0" /* expected_push_registration_id */); |
717 | 783 |
718 gcm_service()->AddExpectedUnregisterResponse(GCMClient::UNKNOWN_ERROR); | 784 gcm_service()->AddExpectedUnregisterResponse(GCMClient::UNKNOWN_ERROR); |
719 | 785 |
720 ASSERT_TRUE(RunScript("unregister()", &script_result)); | 786 ASSERT_TRUE(RunScript("unregister()", &script_result)); |
721 EXPECT_EQ("unregister error: " | 787 EXPECT_EQ("unregister error: " |
722 "UnknownError: Unexpected error while trying to unregister from the" | 788 "UnknownError: Unexpected error while trying to unregister from the" |
723 " push server.", script_result); | 789 " push server.", script_result); |
724 } | 790 } |
725 | 791 |
| 792 #if defined(OS_ANDROID) |
| 793 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushUnavailableOnAndroidICS) { |
| 794 // This test should only run on Android ICS to confirm that the Push API |
| 795 // is not available on that version of Android. |
| 796 if (IsPushSupported()) |
| 797 return; |
| 798 |
| 799 std::string script_result; |
| 800 ASSERT_TRUE(RunScript("window.PushManager", &script_result)); |
| 801 EXPECT_EQ("undefined", script_result); |
| 802 } |
| 803 #endif |
| 804 |
726 } // namespace gcm | 805 } // namespace gcm |
OLD | NEW |