Chromium Code Reviews| Index: chrome/browser/push_messaging/push_messaging_browsertest.cc |
| diff --git a/chrome/browser/push_messaging/push_messaging_browsertest.cc b/chrome/browser/push_messaging/push_messaging_browsertest.cc |
| index c89a414ab520a57e2acf52fc1463f303459a11b5..f16f26b90e408ba965f3e3db5f59fec5ca8a1e23 100644 |
| --- a/chrome/browser/push_messaging/push_messaging_browsertest.cc |
| +++ b/chrome/browser/push_messaging/push_messaging_browsertest.cc |
| @@ -48,6 +48,7 @@ |
| #include "content/public/test/browser_test_utils.h" |
| #include "content/public/test/test_utils.h" |
| #include "net/test/embedded_test_server/embedded_test_server.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| #include "ui/base/window_open_disposition.h" |
| #if BUILDFLAG(ENABLE_BACKGROUND) |
| @@ -72,33 +73,11 @@ const char* getTestApplicationServerKey() { |
| return reinterpret_cast<const char*>(kApplicationServerKey); |
| } |
| -// Class to instantiate on the stack that is meant to be used with |
| -// FakeGCMProfileService. The ::Run() method follows the signature of |
| -// FakeGCMProfileService::UnregisterCallback. |
| -class UnregistrationCallback { |
| - public: |
| - UnregistrationCallback() |
| - : message_loop_runner_(new content::MessageLoopRunner) {} |
| - |
| - void Run(const std::string& app_id) { |
| - app_id_ = app_id; |
| - message_loop_runner_->Quit(); |
| - } |
| - |
| - void WaitUntilSatisfied() { message_loop_runner_->Run(); } |
| - |
| - const std::string& app_id() { return app_id_; } |
| - |
| - private: |
| - scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| - std::string app_id_; |
| -}; |
| - |
| } // namespace |
| class PushMessagingBrowserTest : public InProcessBrowserTest { |
| public: |
| - PushMessagingBrowserTest() : gcm_service_(nullptr) {} |
| + PushMessagingBrowserTest() : gcm_driver_(nullptr) {} |
| ~PushMessagingBrowserTest() override {} |
| // InProcessBrowserTest: |
| @@ -126,10 +105,10 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { |
| // InProcessBrowserTest: |
| void SetUpOnMainThread() override { |
| - gcm_service_ = static_cast<gcm::FakeGCMProfileService*>( |
| + gcm::GCMProfileService* gcm_service = static_cast<gcm::GCMProfileService*>( |
| gcm::GCMProfileServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| GetBrowser()->profile(), &gcm::FakeGCMProfileService::Build)); |
| - gcm_service_->set_collect(true); |
| + gcm_driver_ = gcm_service->driver(); |
| push_service_ = |
| PushMessagingServiceFactory::GetForProfile(GetBrowser()->profile()); |
| @@ -176,8 +155,7 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { |
| } |
| gcm::GCMAppHandler* GetAppHandler() { |
| - return gcm_service()->driver()->GetAppHandler( |
| - kPushMessagingAppIdentifierPrefix); |
| + return gcm_driver_->GetAppHandler(kPushMessagingAppIdentifierPrefix); |
| } |
| PermissionBubbleManager* GetPermissionBubbleManager() { |
| @@ -188,13 +166,10 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { |
| void RequestAndAcceptPermission(); |
| void RequestAndDenyPermission(); |
| - void TryToSubscribeSuccessfully( |
| - const std::string& expected_push_subscription_info, |
| - bool use_key = true); |
| + // Returns the subscription token (not including kPushMessagingEndpoint). |
| + std::string SubscribeSuccessfully(bool use_key = true); |
| - std::string GetEndpointForSubscriptionId(const std::string& subscription_id) { |
| - return std::string(kPushMessagingEndpoint) + "/" + subscription_id; |
| - } |
| + std::string EndpointToToken(const std::string& endpoint); |
| PushMessagingAppIdentifier GetAppIdentifierForServiceWorkerRegistration( |
| int64_t service_worker_registration_id); |
| @@ -205,8 +180,6 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { |
| net::EmbeddedTestServer* https_server() const { return https_server_.get(); } |
| - gcm::FakeGCMProfileService* gcm_service() const { return gcm_service_; } |
| - |
| #if defined(ENABLE_NOTIFICATIONS) |
| // To be called when delivery of a push message has finished. The |run_loop| |
| // will be told to quit after |messages_required| messages were received. |
| @@ -238,7 +211,7 @@ class PushMessagingBrowserTest : public InProcessBrowserTest { |
| private: |
| scoped_ptr<net::EmbeddedTestServer> https_server_; |
| - gcm::FakeGCMProfileService* gcm_service_; |
| + gcm::GCMDriver* gcm_driver_; |
| PushMessagingServiceImpl* push_service_; |
| #if defined(ENABLE_NOTIFICATIONS) |
| @@ -271,9 +244,7 @@ void PushMessagingBrowserTest::RequestAndDenyPermission() { |
| EXPECT_EQ("permission status - denied", script_result); |
| } |
| -void PushMessagingBrowserTest::TryToSubscribeSuccessfully( |
| - const std::string& expected_push_subscription_info, |
| - bool use_key) { |
| +std::string PushMessagingBrowserTest::SubscribeSuccessfully(bool use_key) { |
| std::string script_result; |
| EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
| @@ -282,17 +253,23 @@ void PushMessagingBrowserTest::TryToSubscribeSuccessfully( |
| RequestAndAcceptPermission(); |
| if (use_key) { |
| - ASSERT_TRUE(RunScript("removeManifest()", &script_result)); |
| - ASSERT_EQ("manifest removed", script_result); |
| + EXPECT_TRUE(RunScript("removeManifest()", &script_result)); |
| + EXPECT_EQ("manifest removed", script_result); |
| EXPECT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
| } else { |
| // Test backwards compatibility with old ID based subscriptions. |
| EXPECT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); |
| } |
| + return EndpointToToken(script_result); |
| +} |
| - EXPECT_EQ(GetEndpointForSubscriptionId(expected_push_subscription_info), |
| - script_result); |
| +std::string PushMessagingBrowserTest::EndpointToToken( |
| + const std::string& endpoint) { |
| + std::string endpoint_prefix = std::string(kPushMessagingEndpoint) + "/"; |
|
Peter Beverloo
2016/04/11 15:47:56
We cannot rely on kPushMessagingEndpoint anymore.
johnme
2016/04/21 10:58:37
Done.
|
| + EXPECT_THAT(endpoint, ::testing::StartsWith(endpoint_prefix)); |
| + EXPECT_GT(endpoint.length(), endpoint_prefix.length()); |
| + return endpoint.substr(endpoint_prefix.length()); |
| } |
| PushMessagingAppIdentifier |
| @@ -317,23 +294,16 @@ void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled( |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| SubscribeWithoutKeySuccessNotificationsGranted) { |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */, false); |
| - |
| - PushMessagingAppIdentifier app_identifier = |
| - GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); |
| + // Both of these methods EXPECT that they succeed. |
| + SubscribeSuccessfully(false /* use_key */); |
| + GetAppIdentifierForServiceWorkerRegistration(0LL); |
| } |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| SubscribeSuccessNotificationsGranted) { |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| - PushMessagingAppIdentifier app_identifier = |
| - GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| + // Both of these methods EXPECT that they succeed. |
| + SubscribeSuccessfully(); |
| + GetAppIdentifierForServiceWorkerRegistration(0LL); |
| } |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| @@ -346,13 +316,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| GetPermissionBubbleManager()->set_auto_response_for_test( |
| PermissionBubbleManager::ACCEPT_ALL); |
| ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); |
| - |
| - PushMessagingAppIdentifier app_identifier = |
| - GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| + // Both of these methods EXPECT that they succeed. |
| + EndpointToToken(script_result); |
| + GetAppIdentifierForServiceWorkerRegistration(0LL); |
| } |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureBadKey) { |
| @@ -452,7 +418,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorker) { |
| // Now run the subscribe from the service worker with a key. This |
| // should succeed, and write the key to the datastore. |
| ASSERT_TRUE(RunScript("workerSubscribePush()", &script_result)); |
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); |
| + std::string token1 = EndpointToToken(script_result); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| @@ -461,7 +427,8 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorker) { |
| // Now run the subscribe from the service worker without a key. |
| // In this case, the key will be read from the datastore. |
| ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-1"), script_result); |
| + std::string token2 = EndpointToToken(script_result); |
| + EXPECT_NE(token1, token2); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| @@ -492,7 +459,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorkerUsingManifest) { |
| // the code to read sender id from the manifest and will write it to the |
| // datastore. |
| ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); |
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); |
| + std::string token1 = EndpointToToken(script_result); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| @@ -501,7 +468,8 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorkerUsingManifest) { |
| // Now run the subscribe from the service worker without a key. |
| // In this case, the sender id will be read from the datastore. |
| ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-1"), script_result); |
| + std::string token2 = EndpointToToken(script_result); |
| + EXPECT_NE(token1, token2); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| @@ -522,10 +490,8 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, MAYBE_SubscribePersisted) { |
| // assigned in order of push subscription (even when these orders are |
| // different). |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - PushMessagingAppIdentifier sw0_identifier = |
| - GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(sw0_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| + std::string token1 = SubscribeSuccessfully(); |
| + GetAppIdentifierForServiceWorkerRegistration(0LL); |
| LoadTestPage("/push_messaging/subscope1/test.html"); |
| ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
| @@ -539,16 +505,15 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, MAYBE_SubscribePersisted) { |
| // navigator.serviceWorker.ready is going to be resolved with the parent |
| // Service Worker which still controls the page. |
| LoadTestPage("/push_messaging/subscope2/test.html"); |
| - TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); |
| - PushMessagingAppIdentifier sw2_identifier = |
| - GetAppIdentifierForServiceWorkerRegistration(2LL); |
| - EXPECT_EQ(sw2_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| + std::string token2 = SubscribeSuccessfully(); |
| + EXPECT_NE(token1, token2); |
| + GetAppIdentifierForServiceWorkerRegistration(2LL); |
| LoadTestPage("/push_messaging/subscope1/test.html"); |
| - TryToSubscribeSuccessfully("1-2" /* expected_push_subscription_id */); |
| - PushMessagingAppIdentifier sw1_identifier = |
| - GetAppIdentifierForServiceWorkerRegistration(1LL); |
| - EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| + std::string token3 = SubscribeSuccessfully(); |
| + EXPECT_NE(token1, token3); |
| + EXPECT_NE(token2, token3); |
| + GetAppIdentifierForServiceWorkerRegistration(1LL); |
| // Now test that the Service Worker registration IDs and push subscription IDs |
| // generated above were persisted to SW storage, by checking that they are |
| @@ -559,16 +524,16 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, MAYBE_SubscribePersisted) { |
| // so we wouldn't be able to load the test pages with the same origin. |
| LoadTestPage("/push_messaging/subscope1/test.html"); |
| - TryToSubscribeSuccessfully("1-2" /* expected_push_subscription_id */); |
| - EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| + std::string token4 = SubscribeSuccessfully(); |
| + EXPECT_EQ(token3, token4); |
| LoadTestPage("/push_messaging/subscope2/test.html"); |
| - TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); |
| - EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| + std::string token5 = SubscribeSuccessfully(); |
| + EXPECT_EQ(token2, token5); |
| LoadTestPage(); |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| + std::string token6 = SubscribeSuccessfully(); |
| + EXPECT_EQ(token1, token6); |
| } |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, AppHandlerOnlyIfSubscribed) { |
| @@ -578,7 +543,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, AppHandlerOnlyIfSubscribed) { |
| ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
| EXPECT_NE(push_service(), GetAppHandler()); |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
|
Peter Beverloo
2016/04/11 15:47:56
It seems to me that this very much is something we
johnme
2016/04/21 10:58:37
Done (and generally cleaned this up elsewhere too)
|
| EXPECT_EQ(push_service(), GetAppHandler()); |
| ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
| @@ -586,7 +551,6 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, AppHandlerOnlyIfSubscribed) { |
| // Unsubscribe. |
| std::string script_result; |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| @@ -598,13 +562,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, AppHandlerOnlyIfSubscribed) { |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| ASSERT_EQ("false - is not controlled", script_result); |
| @@ -626,13 +586,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| ASSERT_EQ("false - is not controlled", script_result); |
| @@ -654,13 +610,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) { |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| ASSERT_EQ("false - is not controlled", script_result); |
| @@ -674,20 +626,29 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { |
| ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
| ASSERT_EQ("service worker unregistration status: true", script_result); |
| - // When the push service will receive it next message, given that there is no |
| - // SW available, it should unregister |app_identifier.app_id()|. |
| - UnregistrationCallback callback; |
| - gcm_service()->SetUnregisterCallback( |
| - base::Bind(&UnregistrationCallback::Run, base::Unretained(&callback))); |
| + // Unregistering the service worker doesn't yet unsubscribe from push (though |
| + // it should), and FindByServiceWorker doesn't require a live SW. |
| + GURL origin = https_server()->GetURL("/").GetOrigin(); |
| + PushMessagingAppIdentifier app_identifier2 = |
| + PushMessagingAppIdentifier::FindByServiceWorker( |
| + GetBrowser()->profile(), |
| + origin, 0LL /* service_worker_registration_id */); |
| + EXPECT_FALSE(app_identifier2.is_null()); |
| + EXPECT_EQ(app_identifier.app_id(), app_identifier2.app_id()); |
| gcm::IncomingMessage message; |
| message.sender_id = std::string(getTestApplicationServerKey()); |
| message.raw_data = "testdata"; |
| message.decrypted = true; |
| - push_service()->OnMessage(app_identifier.app_id(), message); |
| + SendMessageAndWaitUntilHandled(app_identifier, message); |
| - callback.WaitUntilSatisfied(); |
| - EXPECT_EQ(app_identifier.app_id(), callback.app_id()); |
| + // Now the push service has received a message and failed to find its service |
| + // worker, it should have automatically unsubscribed app_identifier.app_id(). |
| + PushMessagingAppIdentifier app_identifier3 = |
| + PushMessagingAppIdentifier::FindByServiceWorker( |
| + GetBrowser()->profile(), |
| + origin, 0LL /* service_worker_registration_id */); |
| + EXPECT_TRUE(app_identifier3.is_null()); |
| // No push data should have been received. |
| ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
| @@ -699,13 +660,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| PushEventEnforcesUserVisibleNotification) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| ASSERT_EQ("false - is not controlled", script_result); |
| @@ -807,13 +764,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| PushEventEnforcesUserVisibleNotificationAfterQueue) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| ASSERT_EQ("false - is not controlled", script_result); |
| @@ -861,13 +814,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| content::WebContents* web_contents = |
| GetBrowser()->tab_strip_model()->GetActiveWebContents(); |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| - |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| - EXPECT_EQ(getTestApplicationServerKey(), |
| - gcm_service()->last_registered_sender_ids()[0]); |
| ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| ASSERT_EQ("false - is not controlled", script_result); |
| @@ -921,7 +870,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) { |
| RequestAndAcceptPermission(); |
| ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
| - EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); |
| + EndpointToToken(script_result); // EXPECTs that the conversion succeeds. |
| ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
| EXPECT_EQ("permission status - granted", script_result); |
| @@ -950,8 +899,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { |
| EXPECT_EQ("ok - service worker registered", script_result); |
| // Resolves true if there was a subscription. |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */, false); |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| + std::string token1 = SubscribeSuccessfully(false /* use_key */); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| @@ -961,8 +909,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { |
| // Doesn't reject if there was a network error (deactivates subscription |
| // locally anyway). |
| - TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */, false); |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR); |
| + std::string token2 = SubscribeSuccessfully(false /* use_key */); |
| + EXPECT_NE(token1, token2); |
| + // TODO(johnme): AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| @@ -970,15 +919,20 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { |
| // Doesn't reject if there were other push service errors (deactivates |
| // subscription locally anyway). |
| - TryToSubscribeSuccessfully("1-2" /* expected_push_subscription_id */, false); |
| - gcm_service()->AddExpectedUnregisterResponse( |
| - gcm::GCMClient::INVALID_PARAMETER); |
| + std::string token3 = SubscribeSuccessfully(false /* use_key */); |
| + EXPECT_NE(token1, token3); |
| + EXPECT_NE(token2, token3); |
| + // TODO(johnme): AddExpectedUnregisterResponse( |
| + // gcm::GCMClient::INVALID_PARAMETER); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| // Unsubscribing (with an existing reference to a PushSubscription), after |
| // unregistering the Service Worker, just means push subscription isn't found. |
| - TryToSubscribeSuccessfully("1-3" /* expected_push_subscription_id */, false); |
| + std::string token4 = SubscribeSuccessfully(false /* use_key */); |
| + EXPECT_NE(token1, token4); |
| + EXPECT_NE(token2, token4); |
| + EXPECT_NE(token3, token4); |
| ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
| ASSERT_EQ("service worker unregistration status: true", script_result); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| @@ -989,7 +943,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| GlobalResetPushPermissionUnsubscribes) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1021,7 +975,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| LocalResetPushPermissionUnsubscribes) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1057,7 +1011,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| DenyPushPermissionUnsubscribes) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1089,7 +1043,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| GlobalResetNotificationsPermissionUnsubscribes) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1118,7 +1072,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| LocalResetNotificationsPermissionUnsubscribes) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1150,7 +1104,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| DenyNotificationsPermissionUnsubscribes) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1182,7 +1136,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1222,7 +1176,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| AutomaticUnsubscriptionFollowsContentSettingRules) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| EXPECT_EQ("true - subscribed", script_result); |
| @@ -1269,17 +1223,16 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| EXPECT_EQ("true - subscribed", script_result); |
| } |
| -// Checks that automatically unsubscribing due to a revoked permission is |
| -// handled well if the sender ID needed to unsubscribe was already deleted. |
| +// Checks automatically unsubscribing due to a revoked permission after |
| +// previously clearing site data. |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| ResetPushPermissionAfterClearingSiteData) { |
| std::string script_result; |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| PushMessagingAppIdentifier app_identifier = |
| GetAppIdentifierForServiceWorkerRegistration(0LL); |
| - EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); |
| PushMessagingAppIdentifier stored_app_identifier = |
| PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), |
| app_identifier.app_id()); |
| @@ -1316,18 +1269,18 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| } |
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, EncryptionKeyUniqueness) { |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */, false); |
| + std::string token1 = SubscribeSuccessfully(false /* use_key */); |
| std::string first_public_key; |
| ASSERT_TRUE(RunScript("GetP256dh()", &first_public_key)); |
| EXPECT_GE(first_public_key.size(), 32u); |
| std::string script_result; |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| - TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); |
| + std::string token2 = SubscribeSuccessfully(); |
| + EXPECT_NE(token1, token2); |
| std::string second_public_key; |
| ASSERT_TRUE(RunScript("GetP256dh()", &second_public_key)); |
| @@ -1379,12 +1332,11 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| // Once there is a push subscription background mode is still inactive. |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| // After dropping the last subscription it is still inactive. |
| std::string script_result; |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| @@ -1411,12 +1363,11 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeEnabledBrowserTest, |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| // Once there is a push subscription background mode is active. |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_TRUE(background_mode_manager->IsBackgroundModeActive()); |
| // Dropping the last subscription deactivates background mode. |
| std::string script_result; |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| @@ -1443,12 +1394,11 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeDisabledBrowserTest, |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| // Once there is a push subscription background mode is still inactive. |
| - TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); |
| + SubscribeSuccessfully(); |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
| // After dropping the last subscription background mode is still inactive. |
| std::string script_result; |
| - gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| EXPECT_EQ("unsubscribe result: true", script_result); |
| ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |