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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 40 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
41 #include "chrome/common/chrome_switches.h" | 41 #include "chrome/common/chrome_switches.h" |
42 #include "chrome/common/features.h" | 42 #include "chrome/common/features.h" |
43 #include "chrome/test/base/in_process_browser_test.h" | 43 #include "chrome/test/base/in_process_browser_test.h" |
44 #include "chrome/test/base/ui_test_utils.h" | 44 #include "chrome/test/base/ui_test_utils.h" |
45 #include "components/content_settings/core/browser/host_content_settings_map.h" | 45 #include "components/content_settings/core/browser/host_content_settings_map.h" |
46 #include "components/content_settings/core/common/content_settings.h" | 46 #include "components/content_settings/core/common/content_settings.h" |
47 #include "components/content_settings/core/common/content_settings_types.h" | 47 #include "components/content_settings/core/common/content_settings_types.h" |
48 #include "components/gcm_driver/common/gcm_messages.h" | 48 #include "components/gcm_driver/common/gcm_messages.h" |
49 #include "components/gcm_driver/gcm_client.h" | 49 #include "components/gcm_driver/gcm_client.h" |
| 50 #include "components/gcm_driver/instance_id/fake_gcm_driver_for_instance_id.h" |
50 #include "content/public/browser/web_contents.h" | 51 #include "content/public/browser/web_contents.h" |
51 #include "content/public/common/content_switches.h" | 52 #include "content/public/common/content_switches.h" |
52 #include "content/public/test/browser_test_utils.h" | 53 #include "content/public/test/browser_test_utils.h" |
53 #include "content/public/test/test_utils.h" | 54 #include "content/public/test/test_utils.h" |
54 #include "net/test/embedded_test_server/embedded_test_server.h" | 55 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 56 #include "testing/gmock/include/gmock/gmock.h" |
55 #include "ui/base/window_open_disposition.h" | 57 #include "ui/base/window_open_disposition.h" |
56 | 58 |
57 #if BUILDFLAG(ENABLE_BACKGROUND) | 59 #if BUILDFLAG(ENABLE_BACKGROUND) |
58 #include "chrome/browser/background/background_mode_manager.h" | 60 #include "chrome/browser/background/background_mode_manager.h" |
59 #endif | 61 #endif |
60 | 62 |
61 namespace { | 63 namespace { |
62 | 64 |
| 65 const char kManifestSenderId[] = "1234567890"; |
| 66 |
63 // NIST P-256 public key made available to tests. Must be an uncompressed | 67 // NIST P-256 public key made available to tests. Must be an uncompressed |
64 // point in accordance with SEC1 2.3.3. | 68 // point in accordance with SEC1 2.3.3. |
65 const uint8_t kApplicationServerKey[65] = { | 69 const uint8_t kApplicationServerKey[65] = { |
66 0x04, 0x55, 0x52, 0x6A, 0xA5, 0x6E, 0x8E, 0xAA, 0x47, 0x97, 0x36, | 70 0x04, 0x55, 0x52, 0x6A, 0xA5, 0x6E, 0x8E, 0xAA, 0x47, 0x97, 0x36, |
67 0x10, 0xC1, 0x66, 0x3C, 0x1E, 0x65, 0xBF, 0xA1, 0x7B, 0xEE, 0x48, | 71 0x10, 0xC1, 0x66, 0x3C, 0x1E, 0x65, 0xBF, 0xA1, 0x7B, 0xEE, 0x48, |
68 0xC9, 0xC6, 0xBB, 0xBF, 0x02, 0x18, 0x53, 0x72, 0x1D, 0x0C, 0x7B, | 72 0xC9, 0xC6, 0xBB, 0xBF, 0x02, 0x18, 0x53, 0x72, 0x1D, 0x0C, 0x7B, |
69 0xA9, 0xE3, 0x11, 0xB7, 0x03, 0x52, 0x21, 0xD3, 0x71, 0x90, 0x13, | 73 0xA9, 0xE3, 0x11, 0xB7, 0x03, 0x52, 0x21, 0xD3, 0x71, 0x90, 0x13, |
70 0xA8, 0xC1, 0xCF, 0xED, 0x20, 0xF7, 0x1F, 0xD1, 0x7F, 0xF2, 0x76, | 74 0xA8, 0xC1, 0xCF, 0xED, 0x20, 0xF7, 0x1F, 0xD1, 0x7F, 0xF2, 0x76, |
71 0xB6, 0x01, 0x20, 0xD8, 0x35, 0xA5, 0xD9, 0x3C, 0x43, 0xFD}; | 75 0xB6, 0x01, 0x20, 0xD8, 0x35, 0xA5, 0xD9, 0x3C, 0x43, 0xFD}; |
72 | 76 |
73 // URL-safe base64 encoded version of the |kApplicationServerKey|. | 77 // URL-safe base64 encoded version of the |kApplicationServerKey|. |
74 const char kEncodedApplicationServerKey[] = | 78 const char kEncodedApplicationServerKey[] = |
75 "BFVSaqVujqpHlzYQwWY8HmW_oXvuSMnGu78CGFNyHQx7qeMRtwNSIdNxkBOowc_tIPcf0X_ydr" | 79 "BFVSaqVujqpHlzYQwWY8HmW_oXvuSMnGu78CGFNyHQx7qeMRtwNSIdNxkBOowc_tIPcf0X_ydr" |
76 "YBINg1pdk8Q_0"; | 80 "YBINg1pdk8Q_0"; |
77 | 81 |
78 std::string GetTestApplicationServerKey() { | 82 std::string GetTestApplicationServerKey() { |
79 return std::string(kApplicationServerKey, | 83 return std::string(kApplicationServerKey, |
80 kApplicationServerKey + arraysize(kApplicationServerKey)); | 84 kApplicationServerKey + arraysize(kApplicationServerKey)); |
81 } | 85 } |
82 | 86 |
83 // Class to instantiate on the stack that is meant to be used with | 87 void LegacyRegisterCallback(const base::Closure& done_callback, |
84 // FakeGCMProfileService. The ::Run() method follows the signature of | 88 std::string* out_registration_id, |
85 // FakeGCMProfileService::UnregisterCallback. | 89 gcm::GCMClient::Result* out_result, |
86 class UnregistrationCallback { | 90 const std::string& registration_id, |
87 public: | 91 gcm::GCMClient::Result result) { |
88 UnregistrationCallback() | 92 if (out_registration_id) |
89 : message_loop_runner_(new content::MessageLoopRunner) {} | 93 *out_registration_id = registration_id; |
90 | 94 if (out_result) |
91 void Run(const std::string& app_id) { | 95 *out_result = result; |
92 app_id_ = app_id; | 96 done_callback.Run(); |
93 message_loop_runner_->Quit(); | 97 } |
94 } | |
95 | |
96 void WaitUntilSatisfied() { message_loop_runner_->Run(); } | |
97 | |
98 const std::string& app_id() { return app_id_; } | |
99 | |
100 private: | |
101 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; | |
102 std::string app_id_; | |
103 }; | |
104 | 98 |
105 } // namespace | 99 } // namespace |
106 | 100 |
107 class PushMessagingBrowserTest : public InProcessBrowserTest { | 101 class PushMessagingBrowserTest : public InProcessBrowserTest { |
108 public: | 102 public: |
109 PushMessagingBrowserTest() : gcm_service_(nullptr) {} | 103 PushMessagingBrowserTest() : gcm_service_(nullptr), gcm_driver_(nullptr) {} |
110 ~PushMessagingBrowserTest() override {} | 104 ~PushMessagingBrowserTest() override {} |
111 | 105 |
112 // InProcessBrowserTest: | 106 // InProcessBrowserTest: |
113 void SetUp() override { | 107 void SetUp() override { |
114 https_server_.reset( | 108 https_server_.reset( |
115 new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS)); | 109 new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS)); |
116 https_server_->ServeFilesFromSourceDirectory("chrome/test/data"); | 110 https_server_->ServeFilesFromSourceDirectory("chrome/test/data"); |
117 ASSERT_TRUE(https_server_->Start()); | 111 ASSERT_TRUE(https_server_->Start()); |
118 | 112 |
119 #if defined(ENABLE_NOTIFICATIONS) | 113 #if defined(ENABLE_NOTIFICATIONS) |
120 notification_manager_.reset(new StubNotificationUIManager); | 114 notification_manager_.reset(new StubNotificationUIManager); |
121 #endif | 115 #endif |
122 | 116 |
123 InProcessBrowserTest::SetUp(); | 117 InProcessBrowserTest::SetUp(); |
124 } | 118 } |
125 | 119 |
126 void SetUpCommandLine(base::CommandLine* command_line) override { | 120 void SetUpCommandLine(base::CommandLine* command_line) override { |
127 // Enable experimental features for subscription restrictions. | 121 // Enable experimental features for subscription restrictions. |
128 command_line->AppendSwitch( | 122 command_line->AppendSwitch( |
129 switches::kEnableExperimentalWebPlatformFeatures); | 123 switches::kEnableExperimentalWebPlatformFeatures); |
130 InProcessBrowserTest::SetUpCommandLine(command_line); | 124 InProcessBrowserTest::SetUpCommandLine(command_line); |
131 } | 125 } |
132 | 126 |
133 // InProcessBrowserTest: | 127 // InProcessBrowserTest: |
134 void SetUpOnMainThread() override { | 128 void SetUpOnMainThread() override { |
135 gcm_service_ = static_cast<gcm::FakeGCMProfileService*>( | 129 gcm_service_ = static_cast<gcm::FakeGCMProfileService*>( |
136 gcm::GCMProfileServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 130 gcm::GCMProfileServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
137 GetBrowser()->profile(), &gcm::FakeGCMProfileService::Build)); | 131 GetBrowser()->profile(), &gcm::FakeGCMProfileService::Build)); |
138 gcm_service_->set_collect(true); | 132 gcm_driver_ = static_cast<instance_id::FakeGCMDriverForInstanceID*>( |
| 133 gcm_service_->driver()); |
| 134 |
139 push_service_ = | 135 push_service_ = |
140 PushMessagingServiceFactory::GetForProfile(GetBrowser()->profile()); | 136 PushMessagingServiceFactory::GetForProfile(GetBrowser()->profile()); |
141 #if defined(ENABLE_NOTIFICATIONS) | 137 #if defined(ENABLE_NOTIFICATIONS) |
142 display_service_.reset(new MessageCenterDisplayService( | 138 display_service_.reset(new MessageCenterDisplayService( |
143 GetBrowser()->profile(), notification_manager_.get())); | 139 GetBrowser()->profile(), notification_manager_.get())); |
144 notification_service()->SetNotificationDisplayServiceForTesting( | 140 notification_service()->SetNotificationDisplayServiceForTesting( |
145 display_service_.get()); | 141 display_service_.get()); |
146 #endif | 142 #endif |
147 | 143 |
148 LoadTestPage(); | 144 LoadTestPage(); |
149 InProcessBrowserTest::SetUpOnMainThread(); | 145 InProcessBrowserTest::SetUpOnMainThread(); |
150 } | 146 } |
151 | 147 |
| 148 // Calls should be wrapped in the ASSERT_NO_FATAL_FAILURE() macro. |
152 void RestartPushService() { | 149 void RestartPushService() { |
153 Profile* profile = GetBrowser()->profile(); | 150 Profile* profile = GetBrowser()->profile(); |
154 PushMessagingServiceFactory::GetInstance()->SetTestingFactory(profile, | 151 PushMessagingServiceFactory::GetInstance()->SetTestingFactory(profile, |
155 nullptr); | 152 nullptr); |
156 ASSERT_EQ(nullptr, PushMessagingServiceFactory::GetForProfile(profile)); | 153 ASSERT_EQ(nullptr, PushMessagingServiceFactory::GetForProfile(profile)); |
157 PushMessagingServiceFactory::GetInstance()->RestoreFactoryForTests(profile); | 154 PushMessagingServiceFactory::GetInstance()->RestoreFactoryForTests(profile); |
158 PushMessagingServiceImpl::InitializeForProfile(profile); | 155 PushMessagingServiceImpl::InitializeForProfile(profile); |
159 push_service_ = PushMessagingServiceFactory::GetForProfile(profile); | 156 push_service_ = PushMessagingServiceFactory::GetForProfile(profile); |
160 } | 157 } |
161 | 158 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 | 192 |
196 bool RunScript(const std::string& script, std::string* result, | 193 bool RunScript(const std::string& script, std::string* result, |
197 content::WebContents* web_contents) { | 194 content::WebContents* web_contents) { |
198 if (!web_contents) | 195 if (!web_contents) |
199 web_contents = GetBrowser()->tab_strip_model()->GetActiveWebContents(); | 196 web_contents = GetBrowser()->tab_strip_model()->GetActiveWebContents(); |
200 return content::ExecuteScriptAndExtractString(web_contents->GetMainFrame(), | 197 return content::ExecuteScriptAndExtractString(web_contents->GetMainFrame(), |
201 script, result); | 198 script, result); |
202 } | 199 } |
203 | 200 |
204 gcm::GCMAppHandler* GetAppHandler() { | 201 gcm::GCMAppHandler* GetAppHandler() { |
205 return gcm_service()->driver()->GetAppHandler( | 202 return gcm_driver_->GetAppHandler(kPushMessagingAppIdentifierPrefix); |
206 kPushMessagingAppIdentifierPrefix); | |
207 } | 203 } |
208 | 204 |
209 PermissionRequestManager* GetPermissionRequestManager() { | 205 PermissionRequestManager* GetPermissionRequestManager() { |
210 return PermissionRequestManager::FromWebContents( | 206 return PermissionRequestManager::FromWebContents( |
211 GetBrowser()->tab_strip_model()->GetActiveWebContents()); | 207 GetBrowser()->tab_strip_model()->GetActiveWebContents()); |
212 } | 208 } |
213 | 209 |
| 210 // Calls should be wrapped in the ASSERT_NO_FATAL_FAILURE() macro. |
214 void RequestAndAcceptPermission(); | 211 void RequestAndAcceptPermission(); |
| 212 // Calls should be wrapped in the ASSERT_NO_FATAL_FAILURE() macro. |
215 void RequestAndDenyPermission(); | 213 void RequestAndDenyPermission(); |
216 | 214 |
217 void TryToSubscribeSuccessfully( | 215 // Sets out_token to the subscription token (not including server URL). |
218 const std::string& expected_push_subscription_info, | 216 // Calls should be wrapped in the ASSERT_NO_FATAL_FAILURE() macro. |
219 bool use_key = true); | 217 void SubscribeSuccessfully(bool use_key = true, |
| 218 std::string* out_token = nullptr); |
220 | 219 |
221 std::string GetEndpointForSubscriptionId(const std::string& subscription_id, | 220 // Legacy subscribe path using GCMDriver rather than Instance IDs. Only |
222 bool standard_protocol = true) { | 221 // for testing that we maintain support for existing stored registrations. |
223 return push_service()->GetEndpoint(standard_protocol).spec() + | 222 // Calls should be wrapped in the ASSERT_NO_FATAL_FAILURE() macro. |
224 subscription_id; | 223 void LegacySubscribeSuccessfully(std::string* out_subscription_id = nullptr); |
225 } | 224 |
| 225 // Strips server URL from a registration endpoint to get subscription token. |
| 226 // Calls should be wrapped in the ASSERT_NO_FATAL_FAILURE() macro. |
| 227 void EndpointToToken(const std::string& endpoint, |
| 228 bool standard_protocol = true, |
| 229 std::string* out_token = nullptr); |
226 | 230 |
227 PushMessagingAppIdentifier GetAppIdentifierForServiceWorkerRegistration( | 231 PushMessagingAppIdentifier GetAppIdentifierForServiceWorkerRegistration( |
228 int64_t service_worker_registration_id); | 232 int64_t service_worker_registration_id); |
229 | 233 |
230 void SendMessageAndWaitUntilHandled( | 234 void SendMessageAndWaitUntilHandled( |
231 const PushMessagingAppIdentifier& app_identifier, | 235 const PushMessagingAppIdentifier& app_identifier, |
232 const gcm::IncomingMessage& message); | 236 const gcm::IncomingMessage& message); |
233 | 237 |
234 net::EmbeddedTestServer* https_server() const { return https_server_.get(); } | 238 net::EmbeddedTestServer* https_server() const { return https_server_.get(); } |
235 | 239 |
236 gcm::FakeGCMProfileService* gcm_service() const { return gcm_service_; } | |
237 | |
238 #if defined(ENABLE_NOTIFICATIONS) | 240 #if defined(ENABLE_NOTIFICATIONS) |
239 // To be called when delivery of a push message has finished. The |run_loop| | 241 // To be called when delivery of a push message has finished. The |run_loop| |
240 // will be told to quit after |messages_required| messages were received. | 242 // will be told to quit after |messages_required| messages were received. |
241 void OnDeliveryFinished(std::vector<size_t>* number_of_notifications_shown, | 243 void OnDeliveryFinished(std::vector<size_t>* number_of_notifications_shown, |
242 const base::Closure& done_closure) { | 244 const base::Closure& done_closure) { |
243 DCHECK(number_of_notifications_shown); | 245 DCHECK(number_of_notifications_shown); |
244 | 246 |
245 number_of_notifications_shown->push_back( | 247 number_of_notifications_shown->push_back( |
246 notification_manager_->GetNotificationCount()); | 248 notification_manager_->GetNotificationCount()); |
247 | 249 |
(...skipping 15 matching lines...) Expand all Loading... |
263 SiteEngagementService* service = | 265 SiteEngagementService* service = |
264 SiteEngagementService::Get(GetBrowser()->profile()); | 266 SiteEngagementService::Get(GetBrowser()->profile()); |
265 service->ResetScoreForURL(url, score); | 267 service->ResetScoreForURL(url, score); |
266 } | 268 } |
267 | 269 |
268 protected: | 270 protected: |
269 virtual std::string GetTestURL() { return "/push_messaging/test.html"; } | 271 virtual std::string GetTestURL() { return "/push_messaging/test.html"; } |
270 | 272 |
271 virtual Browser* GetBrowser() const { return browser(); } | 273 virtual Browser* GetBrowser() const { return browser(); } |
272 | 274 |
273 private: | 275 protected: |
274 std::unique_ptr<net::EmbeddedTestServer> https_server_; | 276 std::unique_ptr<net::EmbeddedTestServer> https_server_; |
275 gcm::FakeGCMProfileService* gcm_service_; | 277 gcm::FakeGCMProfileService* gcm_service_; |
| 278 instance_id::FakeGCMDriverForInstanceID* gcm_driver_; |
276 PushMessagingServiceImpl* push_service_; | 279 PushMessagingServiceImpl* push_service_; |
277 | 280 |
278 #if defined(ENABLE_NOTIFICATIONS) | 281 #if defined(ENABLE_NOTIFICATIONS) |
279 std::unique_ptr<StubNotificationUIManager> notification_manager_; | 282 std::unique_ptr<StubNotificationUIManager> notification_manager_; |
280 std::unique_ptr<MessageCenterDisplayService> display_service_; | 283 std::unique_ptr<MessageCenterDisplayService> display_service_; |
281 #endif | 284 #endif |
282 | 285 |
283 DISALLOW_COPY_AND_ASSIGN(PushMessagingBrowserTest); | 286 DISALLOW_COPY_AND_ASSIGN(PushMessagingBrowserTest); |
284 }; | 287 }; |
285 | 288 |
286 class PushMessagingBrowserTestEmptySubscriptionOptions | 289 class PushMessagingBrowserTestEmptySubscriptionOptions |
287 : public PushMessagingBrowserTest { | 290 : public PushMessagingBrowserTest { |
288 std::string GetTestURL() override { | 291 std::string GetTestURL() override { |
289 return "/push_messaging/test_no_subscription_options.html"; | 292 return "/push_messaging/test_no_subscription_options.html"; |
290 } | 293 } |
291 }; | 294 }; |
292 | 295 |
293 void PushMessagingBrowserTest::RequestAndAcceptPermission() { | 296 void PushMessagingBrowserTest::RequestAndAcceptPermission() { |
294 std::string script_result; | 297 std::string script_result; |
295 GetPermissionRequestManager()->set_auto_response_for_test( | 298 GetPermissionRequestManager()->set_auto_response_for_test( |
296 PermissionRequestManager::ACCEPT_ALL); | 299 PermissionRequestManager::ACCEPT_ALL); |
297 EXPECT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | 300 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); |
298 EXPECT_EQ("permission status - granted", script_result); | 301 ASSERT_EQ("permission status - granted", script_result); |
299 } | 302 } |
300 | 303 |
301 void PushMessagingBrowserTest::RequestAndDenyPermission() { | 304 void PushMessagingBrowserTest::RequestAndDenyPermission() { |
302 std::string script_result; | 305 std::string script_result; |
303 GetPermissionRequestManager()->set_auto_response_for_test( | 306 GetPermissionRequestManager()->set_auto_response_for_test( |
304 PermissionRequestManager::DENY_ALL); | 307 PermissionRequestManager::DENY_ALL); |
305 EXPECT_TRUE(RunScript("requestNotificationPermission();", &script_result)); | 308 ASSERT_TRUE(RunScript("requestNotificationPermission();", &script_result)); |
306 EXPECT_EQ("permission status - denied", script_result); | 309 ASSERT_EQ("permission status - denied", script_result); |
307 } | 310 } |
308 | 311 |
309 void PushMessagingBrowserTest::TryToSubscribeSuccessfully( | 312 void PushMessagingBrowserTest::SubscribeSuccessfully(bool use_key, |
310 const std::string& expected_push_subscription_info, | 313 std::string* out_token) { |
311 bool use_key) { | |
312 std::string script_result; | 314 std::string script_result; |
313 | 315 |
314 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 316 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
315 EXPECT_EQ("ok - service worker registered", script_result); | 317 ASSERT_EQ("ok - service worker registered", script_result); |
316 | 318 |
317 RequestAndAcceptPermission(); | 319 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
318 | 320 |
319 if (use_key) { | 321 if (use_key) { |
320 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); | 322 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); |
321 ASSERT_EQ("manifest removed", script_result); | 323 ASSERT_EQ("manifest removed", script_result); |
322 | 324 |
323 EXPECT_TRUE(RunScript("documentSubscribePush()", &script_result)); | 325 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
324 } else { | 326 } else { |
325 // Test backwards compatibility with old ID based subscriptions. | 327 // Test backwards compatibility with old ID based subscriptions. |
326 EXPECT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); | 328 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); |
327 } | 329 } |
328 | 330 |
329 EXPECT_EQ( | 331 ASSERT_NO_FATAL_FAILURE(EndpointToToken(script_result, use_key, out_token)); |
330 GetEndpointForSubscriptionId(expected_push_subscription_info, use_key), | 332 } |
331 script_result); | 333 |
| 334 void PushMessagingBrowserTest::LegacySubscribeSuccessfully( |
| 335 std::string* out_subscription_id) { |
| 336 // Create a non-InstanceID GCM registration. Have to directly access |
| 337 // GCMDriver, since this codepath has been deleted from Push. |
| 338 |
| 339 std::string script_result; |
| 340 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
| 341 ASSERT_EQ("ok - service worker registered", script_result); |
| 342 |
| 343 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
| 344 |
| 345 GURL requesting_origin = https_server()->GetURL("/").GetOrigin(); |
| 346 int64_t service_worker_registration_id = 0LL; |
| 347 PushMessagingAppIdentifier app_identifier = |
| 348 PushMessagingAppIdentifier::Generate(requesting_origin, |
| 349 service_worker_registration_id); |
| 350 push_service_->IncreasePushSubscriptionCount(1, true /* is_pending */); |
| 351 |
| 352 std::string subscription_id; |
| 353 { |
| 354 base::RunLoop run_loop; |
| 355 gcm::GCMClient::Result register_result = gcm::GCMClient::UNKNOWN_ERROR; |
| 356 gcm_driver_->Register( |
| 357 app_identifier.app_id(), {kManifestSenderId}, |
| 358 base::Bind(&LegacyRegisterCallback, run_loop.QuitClosure(), |
| 359 &subscription_id, ®ister_result)); |
| 360 run_loop.Run(); |
| 361 ASSERT_EQ(gcm::GCMClient::SUCCESS, register_result); |
| 362 } |
| 363 |
| 364 app_identifier.PersistToPrefs(GetBrowser()->profile()); |
| 365 push_service_->IncreasePushSubscriptionCount(1, false /* is_pending */); |
| 366 push_service_->DecreasePushSubscriptionCount(1, true /* was_pending */); |
| 367 |
| 368 { |
| 369 base::RunLoop run_loop; |
| 370 push_service_->StorePushSubscriptionForTesting( |
| 371 GetBrowser()->profile(), requesting_origin, |
| 372 service_worker_registration_id, subscription_id, kManifestSenderId, |
| 373 run_loop.QuitClosure()); |
| 374 run_loop.Run(); |
| 375 } |
| 376 |
| 377 if (out_subscription_id) |
| 378 *out_subscription_id = subscription_id; |
| 379 } |
| 380 |
| 381 void PushMessagingBrowserTest::EndpointToToken(const std::string& endpoint, |
| 382 bool standard_protocol, |
| 383 std::string* out_token) { |
| 384 size_t last_slash = endpoint.rfind('/'); |
| 385 |
| 386 ASSERT_EQ(endpoint.substr(0, last_slash + 1), |
| 387 push_service()->GetEndpoint(standard_protocol).spec()); |
| 388 |
| 389 ASSERT_LT(last_slash + 1, endpoint.length()); // Token must not be empty. |
| 390 |
| 391 if (out_token) |
| 392 *out_token = endpoint.substr(last_slash + 1); |
332 } | 393 } |
333 | 394 |
334 PushMessagingAppIdentifier | 395 PushMessagingAppIdentifier |
335 PushMessagingBrowserTest::GetAppIdentifierForServiceWorkerRegistration( | 396 PushMessagingBrowserTest::GetAppIdentifierForServiceWorkerRegistration( |
336 int64_t service_worker_registration_id) { | 397 int64_t service_worker_registration_id) { |
337 GURL origin = https_server()->GetURL("/").GetOrigin(); | 398 GURL origin = https_server()->GetURL("/").GetOrigin(); |
338 PushMessagingAppIdentifier app_identifier = | 399 PushMessagingAppIdentifier app_identifier = |
339 PushMessagingAppIdentifier::FindByServiceWorker( | 400 PushMessagingAppIdentifier::FindByServiceWorker( |
340 GetBrowser()->profile(), origin, service_worker_registration_id); | 401 GetBrowser()->profile(), origin, service_worker_registration_id); |
341 EXPECT_FALSE(app_identifier.is_null()); | 402 EXPECT_FALSE(app_identifier.is_null()); |
342 return app_identifier; | 403 return app_identifier; |
343 } | 404 } |
344 | 405 |
345 void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled( | 406 void PushMessagingBrowserTest::SendMessageAndWaitUntilHandled( |
346 const PushMessagingAppIdentifier& app_identifier, | 407 const PushMessagingAppIdentifier& app_identifier, |
347 const gcm::IncomingMessage& message) { | 408 const gcm::IncomingMessage& message) { |
348 base::RunLoop run_loop; | 409 base::RunLoop run_loop; |
349 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); | 410 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); |
350 push_service()->OnMessage(app_identifier.app_id(), message); | 411 push_service()->OnMessage(app_identifier.app_id(), message); |
351 run_loop.Run(); | 412 run_loop.Run(); |
352 } | 413 } |
353 | 414 |
354 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 415 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
355 SubscribeWithoutKeySuccessNotificationsGranted) { | 416 SubscribeWithoutKeySuccessNotificationsGranted) { |
356 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */, false); | 417 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */)); |
357 | 418 EXPECT_EQ(kManifestSenderId, gcm_driver_->last_gettoken_authorized_entity()); |
358 PushMessagingAppIdentifier app_identifier = | 419 EXPECT_EQ(GetAppIdentifierForServiceWorkerRegistration(0LL).app_id(), |
359 GetAppIdentifierForServiceWorkerRegistration(0LL); | 420 gcm_driver_->last_gettoken_app_id()); |
360 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
361 EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]); | |
362 } | 421 } |
363 | 422 |
364 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 423 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
365 SubscribeSuccessNotificationsGranted) { | 424 SubscribeSuccessNotificationsGranted) { |
366 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 425 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
367 | |
368 PushMessagingAppIdentifier app_identifier = | |
369 GetAppIdentifierForServiceWorkerRegistration(0LL); | |
370 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
371 EXPECT_EQ(kEncodedApplicationServerKey, | 426 EXPECT_EQ(kEncodedApplicationServerKey, |
372 gcm_service()->last_registered_sender_ids()[0]); | 427 gcm_driver_->last_gettoken_authorized_entity()); |
| 428 EXPECT_EQ(GetAppIdentifierForServiceWorkerRegistration(0LL).app_id(), |
| 429 gcm_driver_->last_gettoken_app_id()); |
373 } | 430 } |
374 | 431 |
375 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 432 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
376 SubscribeSuccessNotificationsPrompt) { | 433 SubscribeSuccessNotificationsPrompt) { |
377 std::string script_result; | 434 std::string script_result; |
378 | 435 |
379 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 436 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
380 ASSERT_EQ("ok - service worker registered", script_result); | 437 ASSERT_EQ("ok - service worker registered", script_result); |
381 | 438 |
382 GetPermissionRequestManager()->set_auto_response_for_test( | 439 GetPermissionRequestManager()->set_auto_response_for_test( |
383 PermissionRequestManager::ACCEPT_ALL); | 440 PermissionRequestManager::ACCEPT_ALL); |
384 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); | 441 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
385 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); | 442 // Both of these methods EXPECT that they succeed. |
386 | 443 ASSERT_NO_FATAL_FAILURE(EndpointToToken(script_result)); |
387 PushMessagingAppIdentifier app_identifier = | 444 GetAppIdentifierForServiceWorkerRegistration(0LL); |
388 GetAppIdentifierForServiceWorkerRegistration(0LL); | |
389 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
390 EXPECT_EQ(kEncodedApplicationServerKey, | |
391 gcm_service()->last_registered_sender_ids()[0]); | |
392 } | 445 } |
393 | 446 |
394 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureBadKey) { | 447 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureBadKey) { |
395 std::string script_result; | 448 std::string script_result; |
396 | 449 |
397 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 450 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
398 ASSERT_EQ("ok - service worker registered", script_result); | 451 ASSERT_EQ("ok - service worker registered", script_result); |
399 | 452 |
400 RequestAndAcceptPermission(); | 453 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
401 | 454 |
402 ASSERT_TRUE(RunScript("documentSubscribePushBadKey()", &script_result)); | 455 ASSERT_TRUE(RunScript("documentSubscribePushBadKey()", &script_result)); |
403 EXPECT_EQ( | 456 EXPECT_EQ( |
404 "InvalidAccessError - Failed to execute 'subscribe' on 'PushManager': " | 457 "InvalidAccessError - Failed to execute 'subscribe' on 'PushManager': " |
405 "The provided applicationServerKey is not valid.", | 458 "The provided applicationServerKey is not valid.", |
406 script_result); | 459 script_result); |
407 } | 460 } |
408 | 461 |
409 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 462 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
410 SubscribeFailureNotificationsBlocked) { | 463 SubscribeFailureNotificationsBlocked) { |
411 std::string script_result; | 464 std::string script_result; |
412 | 465 |
413 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 466 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
414 ASSERT_EQ("ok - service worker registered", script_result); | 467 ASSERT_EQ("ok - service worker registered", script_result); |
415 | 468 |
416 RequestAndDenyPermission(); | 469 ASSERT_NO_FATAL_FAILURE(RequestAndDenyPermission()); |
417 | 470 |
418 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); | 471 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
419 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", | 472 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", |
420 script_result); | 473 script_result); |
421 } | 474 } |
422 | 475 |
423 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) { | 476 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoManifest) { |
424 std::string script_result; | 477 std::string script_result; |
425 | 478 |
426 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 479 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
427 ASSERT_EQ("ok - service worker registered", script_result); | 480 ASSERT_EQ("ok - service worker registered", script_result); |
428 | 481 |
429 RequestAndAcceptPermission(); | 482 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
430 | 483 |
431 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); | 484 ASSERT_TRUE(RunScript("removeManifest()", &script_result)); |
432 ASSERT_EQ("manifest removed", script_result); | 485 ASSERT_EQ("manifest removed", script_result); |
433 | 486 |
434 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); | 487 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); |
435 EXPECT_EQ( | 488 EXPECT_EQ( |
436 "AbortError - Registration failed - missing applicationServerKey, and " | 489 "AbortError - Registration failed - missing applicationServerKey, and " |
437 "manifest empty or missing", | 490 "manifest empty or missing", |
438 script_result); | 491 script_result); |
439 } | 492 } |
440 | 493 |
441 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoSenderId) { | 494 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeFailureNoSenderId) { |
442 std::string script_result; | 495 std::string script_result; |
443 | 496 |
444 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 497 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
445 ASSERT_EQ("ok - service worker registered", script_result); | 498 ASSERT_EQ("ok - service worker registered", script_result); |
446 | 499 |
447 RequestAndAcceptPermission(); | 500 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
448 | 501 |
449 ASSERT_TRUE(RunScript("swapManifestNoSenderId()", &script_result)); | 502 ASSERT_TRUE(RunScript("swapManifestNoSenderId()", &script_result)); |
450 ASSERT_EQ("sender id removed from manifest", script_result); | 503 ASSERT_EQ("sender id removed from manifest", script_result); |
451 | 504 |
452 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); | 505 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); |
453 EXPECT_EQ( | 506 EXPECT_EQ( |
454 "AbortError - Registration failed - missing applicationServerKey, and " | 507 "AbortError - Registration failed - missing applicationServerKey, and " |
455 "gcm_sender_id not found in manifest", | 508 "gcm_sender_id not found in manifest", |
456 script_result); | 509 script_result); |
457 } | 510 } |
458 | 511 |
459 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTestEmptySubscriptionOptions, | 512 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTestEmptySubscriptionOptions, |
460 RegisterFailureEmptyPushSubscriptionOptions) { | 513 RegisterFailureEmptyPushSubscriptionOptions) { |
461 std::string script_result; | 514 std::string script_result; |
462 | 515 |
463 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 516 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
464 ASSERT_EQ("ok - service worker registered", script_result); | 517 ASSERT_EQ("ok - service worker registered", script_result); |
465 | 518 |
466 RequestAndAcceptPermission(); | 519 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
467 | 520 |
468 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); | 521 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
469 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", | 522 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", |
470 script_result); | 523 script_result); |
471 } | 524 } |
472 | 525 |
473 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorker) { | 526 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorker) { |
474 std::string script_result; | 527 std::string script_result; |
475 | 528 |
476 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 529 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
477 ASSERT_EQ("ok - service worker registered", script_result); | 530 ASSERT_EQ("ok - service worker registered", script_result); |
478 | 531 |
479 RequestAndAcceptPermission(); | 532 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
480 | 533 |
481 LoadTestPage(); // Reload to become controlled. | 534 LoadTestPage(); // Reload to become controlled. |
482 | 535 |
483 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 536 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
484 ASSERT_EQ("true - is controlled", script_result); | 537 ASSERT_EQ("true - is controlled", script_result); |
485 | 538 |
486 // Try to subscribe from a worker without a key. This should fail. | 539 // Try to subscribe from a worker without a key. This should fail. |
487 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 540 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
488 EXPECT_EQ( | 541 EXPECT_EQ( |
489 "AbortError - Registration failed - missing applicationServerKey, and " | 542 "AbortError - Registration failed - missing applicationServerKey, and " |
490 "gcm_sender_id not found in manifest", | 543 "gcm_sender_id not found in manifest", |
491 script_result); | 544 script_result); |
492 // Now run the subscribe from the service worker with a key. This | 545 // Now run the subscribe from the service worker with a key. This |
493 // should succeed, and write the key to the datastore. | 546 // should succeed, and write the key to the datastore. |
494 ASSERT_TRUE(RunScript("workerSubscribePush()", &script_result)); | 547 ASSERT_TRUE(RunScript("workerSubscribePush()", &script_result)); |
495 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); | 548 std::string token1; |
| 549 ASSERT_NO_FATAL_FAILURE( |
| 550 EndpointToToken(script_result, true /* standard_protocol */, &token1)); |
496 | 551 |
497 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 552 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
498 EXPECT_EQ("unsubscribe result: true", script_result); | 553 EXPECT_EQ("unsubscribe result: true", script_result); |
499 EXPECT_NE(push_service(), GetAppHandler()); | 554 EXPECT_NE(push_service(), GetAppHandler()); |
500 | 555 |
501 // Now run the subscribe from the service worker without a key. | 556 // Now run the subscribe from the service worker without a key. |
502 // In this case, the key will be read from the datastore. | 557 // In this case, the key will be read from the datastore. |
503 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 558 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
504 EXPECT_EQ(GetEndpointForSubscriptionId("1-1"), script_result); | 559 std::string token2; |
| 560 ASSERT_NO_FATAL_FAILURE( |
| 561 EndpointToToken(script_result, true /* standard_protocol */, &token2)); |
| 562 EXPECT_NE(token1, token2); |
505 | 563 |
506 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 564 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
507 EXPECT_EQ("unsubscribe result: true", script_result); | 565 EXPECT_EQ("unsubscribe result: true", script_result); |
508 EXPECT_NE(push_service(), GetAppHandler()); | 566 EXPECT_NE(push_service(), GetAppHandler()); |
509 } | 567 } |
510 | 568 |
511 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorkerUsingManifest) { | 569 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribeWorkerUsingManifest) { |
512 std::string script_result; | 570 std::string script_result; |
513 | 571 |
514 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 572 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
515 ASSERT_EQ("ok - service worker registered", script_result); | 573 ASSERT_EQ("ok - service worker registered", script_result); |
516 | 574 |
517 RequestAndAcceptPermission(); | 575 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
518 | 576 |
519 LoadTestPage(); // Reload to become controlled. | 577 LoadTestPage(); // Reload to become controlled. |
520 | 578 |
521 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 579 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
522 ASSERT_EQ("true - is controlled", script_result); | 580 ASSERT_EQ("true - is controlled", script_result); |
523 | 581 |
524 // Try to subscribe from a worker without a key. This should fail. | 582 // Try to subscribe from a worker without a key. This should fail. |
525 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 583 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
526 EXPECT_EQ( | 584 EXPECT_EQ( |
527 "AbortError - Registration failed - missing applicationServerKey, and " | 585 "AbortError - Registration failed - missing applicationServerKey, and " |
528 "gcm_sender_id not found in manifest", | 586 "gcm_sender_id not found in manifest", |
529 script_result); | 587 script_result); |
530 EXPECT_NE(push_service(), GetAppHandler()); | 588 EXPECT_NE(push_service(), GetAppHandler()); |
531 | 589 |
532 // Run the subscription from the document without a key, this will trigger | 590 // Run the subscription from the document without a key, this will trigger |
533 // the code to read sender id from the manifest and will write it to the | 591 // the code to read sender id from the manifest and will write it to the |
534 // datastore. | 592 // datastore. |
535 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); | 593 ASSERT_TRUE(RunScript("documentSubscribePushWithoutKey()", &script_result)); |
536 EXPECT_EQ(GetEndpointForSubscriptionId("1-0", false), script_result); | 594 std::string token1; |
| 595 ASSERT_NO_FATAL_FAILURE( |
| 596 EndpointToToken(script_result, false /* standard_protocol */, &token1)); |
537 | 597 |
538 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 598 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
539 EXPECT_EQ("unsubscribe result: true", script_result); | 599 EXPECT_EQ("unsubscribe result: true", script_result); |
540 EXPECT_NE(push_service(), GetAppHandler()); | 600 EXPECT_NE(push_service(), GetAppHandler()); |
541 | 601 |
542 // Now run the subscribe from the service worker without a key. | 602 // Now run the subscribe from the service worker without a key. |
543 // In this case, the sender id will be read from the datastore. | 603 // In this case, the sender id will be read from the datastore. |
544 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 604 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
545 EXPECT_EQ(GetEndpointForSubscriptionId("1-1", false), script_result); | 605 std::string token2; |
| 606 ASSERT_NO_FATAL_FAILURE( |
| 607 EndpointToToken(script_result, false /* standard_protocol */, &token2)); |
| 608 EXPECT_NE(token1, token2); |
546 | 609 |
547 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 610 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
548 EXPECT_EQ("unsubscribe result: true", script_result); | 611 EXPECT_EQ("unsubscribe result: true", script_result); |
549 EXPECT_NE(push_service(), GetAppHandler()); | 612 EXPECT_NE(push_service(), GetAppHandler()); |
550 } | 613 } |
551 | 614 |
552 // Disabled on Windows and Linux due to flakiness (http://crbug.com/554003). | 615 // Disabled on Windows and Linux due to flakiness (http://crbug.com/554003). |
553 #if defined(OS_WIN) || defined(OS_LINUX) | 616 #if defined(OS_WIN) || defined(OS_LINUX) |
554 #define MAYBE_SubscribePersisted DISABLED_SubscribePersisted | 617 #define MAYBE_SubscribePersisted DISABLED_SubscribePersisted |
555 #else | 618 #else |
556 #define MAYBE_SubscribePersisted SubscribePersisted | 619 #define MAYBE_SubscribePersisted SubscribePersisted |
557 #endif | 620 #endif |
558 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, MAYBE_SubscribePersisted) { | 621 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, MAYBE_SubscribePersisted) { |
559 std::string script_result; | 622 std::string script_result; |
560 | 623 |
561 // First, test that Service Worker registration IDs are assigned in order of | 624 // First, test that Service Worker registration IDs are assigned in order of |
562 // registering the Service Workers, and the (fake) push subscription ids are | 625 // registering the Service Workers, and the (fake) push subscription ids are |
563 // assigned in order of push subscription (even when these orders are | 626 // assigned in order of push subscription (even when these orders are |
564 // different). | 627 // different). |
565 | 628 |
566 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 629 std::string token1; |
| 630 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token1)); |
567 PushMessagingAppIdentifier sw0_identifier = | 631 PushMessagingAppIdentifier sw0_identifier = |
568 GetAppIdentifierForServiceWorkerRegistration(0LL); | 632 GetAppIdentifierForServiceWorkerRegistration(0LL); |
569 EXPECT_EQ(sw0_identifier.app_id(), gcm_service()->last_registered_app_id()); | 633 EXPECT_EQ(sw0_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
570 | 634 |
571 LoadTestPage("/push_messaging/subscope1/test.html"); | 635 LoadTestPage("/push_messaging/subscope1/test.html"); |
572 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 636 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
573 ASSERT_EQ("ok - service worker registered", script_result); | 637 ASSERT_EQ("ok - service worker registered", script_result); |
574 | 638 |
575 LoadTestPage("/push_messaging/subscope2/test.html"); | 639 LoadTestPage("/push_messaging/subscope2/test.html"); |
576 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 640 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
577 ASSERT_EQ("ok - service worker registered", script_result); | 641 ASSERT_EQ("ok - service worker registered", script_result); |
578 | 642 |
579 // Note that we need to reload the page after registering, otherwise | 643 // Note that we need to reload the page after registering, otherwise |
580 // navigator.serviceWorker.ready is going to be resolved with the parent | 644 // navigator.serviceWorker.ready is going to be resolved with the parent |
581 // Service Worker which still controls the page. | 645 // Service Worker which still controls the page. |
582 LoadTestPage("/push_messaging/subscope2/test.html"); | 646 LoadTestPage("/push_messaging/subscope2/test.html"); |
583 TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); | 647 std::string token2; |
| 648 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token2)); |
| 649 EXPECT_NE(token1, token2); |
584 PushMessagingAppIdentifier sw2_identifier = | 650 PushMessagingAppIdentifier sw2_identifier = |
585 GetAppIdentifierForServiceWorkerRegistration(2LL); | 651 GetAppIdentifierForServiceWorkerRegistration(2LL); |
586 EXPECT_EQ(sw2_identifier.app_id(), gcm_service()->last_registered_app_id()); | 652 EXPECT_EQ(sw2_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
587 | 653 |
588 LoadTestPage("/push_messaging/subscope1/test.html"); | 654 LoadTestPage("/push_messaging/subscope1/test.html"); |
589 TryToSubscribeSuccessfully("1-2" /* expected_push_subscription_id */); | 655 std::string token3; |
| 656 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token3)); |
| 657 EXPECT_NE(token1, token3); |
| 658 EXPECT_NE(token2, token3); |
590 PushMessagingAppIdentifier sw1_identifier = | 659 PushMessagingAppIdentifier sw1_identifier = |
591 GetAppIdentifierForServiceWorkerRegistration(1LL); | 660 GetAppIdentifierForServiceWorkerRegistration(1LL); |
592 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); | 661 EXPECT_EQ(sw1_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
593 | 662 |
594 // Now test that the Service Worker registration IDs and push subscription IDs | 663 // Now test that the Service Worker registration IDs and push subscription IDs |
595 // generated above were persisted to SW storage, by checking that they are | 664 // generated above were persisted to SW storage, by checking that they are |
596 // unchanged despite requesting them in a different order. | 665 // unchanged despite requesting them in a different order. |
597 // TODO(johnme): Ideally we would restart the browser at this point to check | 666 // TODO(johnme): Ideally we would restart the browser at this point to check |
598 // they were persisted to disk, but that's not currently possible since the | 667 // they were persisted to disk, but that's not currently possible since the |
599 // test server uses random port numbers for each test (even PRE_Foo and Foo), | 668 // test server uses random port numbers for each test (even PRE_Foo and Foo), |
600 // so we wouldn't be able to load the test pages with the same origin. | 669 // so we wouldn't be able to load the test pages with the same origin. |
601 | 670 |
602 LoadTestPage("/push_messaging/subscope1/test.html"); | 671 LoadTestPage("/push_messaging/subscope1/test.html"); |
603 TryToSubscribeSuccessfully("1-2" /* expected_push_subscription_id */); | 672 std::string token4; |
604 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); | 673 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token4)); |
| 674 EXPECT_EQ(token3, token4); |
| 675 EXPECT_EQ(sw1_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
605 | 676 |
606 LoadTestPage("/push_messaging/subscope2/test.html"); | 677 LoadTestPage("/push_messaging/subscope2/test.html"); |
607 TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); | 678 std::string token5; |
608 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); | 679 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token5)); |
| 680 EXPECT_EQ(token2, token5); |
| 681 EXPECT_EQ(sw1_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
609 | 682 |
610 LoadTestPage(); | 683 LoadTestPage(); |
611 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 684 std::string token6; |
612 EXPECT_EQ(sw1_identifier.app_id(), gcm_service()->last_registered_app_id()); | 685 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token6)); |
| 686 EXPECT_EQ(token1, token6); |
| 687 EXPECT_EQ(sw1_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
613 } | 688 } |
614 | 689 |
615 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, AppHandlerOnlyIfSubscribed) { | 690 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, AppHandlerOnlyIfSubscribed) { |
616 // This test restarts the push service to simulate restarting the browser. | 691 // This test restarts the push service to simulate restarting the browser. |
617 | 692 |
618 EXPECT_NE(push_service(), GetAppHandler()); | 693 EXPECT_NE(push_service(), GetAppHandler()); |
619 ASSERT_NO_FATAL_FAILURE(RestartPushService()); | 694 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
620 EXPECT_NE(push_service(), GetAppHandler()); | 695 EXPECT_NE(push_service(), GetAppHandler()); |
621 | 696 |
622 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 697 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
623 | 698 |
624 EXPECT_EQ(push_service(), GetAppHandler()); | 699 EXPECT_EQ(push_service(), GetAppHandler()); |
625 ASSERT_NO_FATAL_FAILURE(RestartPushService()); | 700 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
626 EXPECT_EQ(push_service(), GetAppHandler()); | 701 EXPECT_EQ(push_service(), GetAppHandler()); |
627 | 702 |
628 // Unsubscribe. | 703 // Unsubscribe. |
629 std::string script_result; | 704 std::string script_result; |
630 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | |
631 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 705 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
632 EXPECT_EQ("unsubscribe result: true", script_result); | 706 EXPECT_EQ("unsubscribe result: true", script_result); |
633 | 707 |
634 EXPECT_NE(push_service(), GetAppHandler()); | 708 EXPECT_NE(push_service(), GetAppHandler()); |
635 ASSERT_NO_FATAL_FAILURE(RestartPushService()); | 709 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
636 EXPECT_NE(push_service(), GetAppHandler()); | 710 EXPECT_NE(push_service(), GetAppHandler()); |
637 } | 711 } |
638 | 712 |
639 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { | 713 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { |
640 std::string script_result; | 714 std::string script_result; |
641 | 715 |
642 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 716 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
643 | |
644 PushMessagingAppIdentifier app_identifier = | 717 PushMessagingAppIdentifier app_identifier = |
645 GetAppIdentifierForServiceWorkerRegistration(0LL); | 718 GetAppIdentifierForServiceWorkerRegistration(0LL); |
646 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
647 EXPECT_EQ(kEncodedApplicationServerKey, | |
648 gcm_service()->last_registered_sender_ids()[0]); | |
649 | 719 |
650 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 720 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
651 ASSERT_EQ("false - is not controlled", script_result); | 721 ASSERT_EQ("false - is not controlled", script_result); |
652 | 722 |
653 LoadTestPage(); // Reload to become controlled. | 723 LoadTestPage(); // Reload to become controlled. |
654 | 724 |
655 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 725 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
656 ASSERT_EQ("true - is controlled", script_result); | 726 ASSERT_EQ("true - is controlled", script_result); |
657 | 727 |
658 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); | 728 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); |
659 gcm::IncomingMessage message; | 729 gcm::IncomingMessage message; |
660 message.sender_id = GetTestApplicationServerKey(); | 730 message.sender_id = GetTestApplicationServerKey(); |
661 message.raw_data = "testdata"; | 731 message.raw_data = "testdata"; |
662 message.decrypted = true; | 732 message.decrypted = true; |
663 push_service()->OnMessage(app_identifier.app_id(), message); | 733 push_service()->OnMessage(app_identifier.app_id(), message); |
664 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); | 734 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); |
665 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); | 735 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
666 EXPECT_EQ("testdata", script_result); | 736 EXPECT_EQ("testdata", script_result); |
667 } | 737 } |
668 | 738 |
669 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) { | 739 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) { |
670 std::string script_result; | 740 std::string script_result; |
671 | 741 |
672 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 742 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
673 | |
674 PushMessagingAppIdentifier app_identifier = | 743 PushMessagingAppIdentifier app_identifier = |
675 GetAppIdentifierForServiceWorkerRegistration(0LL); | 744 GetAppIdentifierForServiceWorkerRegistration(0LL); |
676 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
677 EXPECT_EQ(kEncodedApplicationServerKey, | |
678 gcm_service()->last_registered_sender_ids()[0]); | |
679 | 745 |
680 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 746 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
681 ASSERT_EQ("false - is not controlled", script_result); | 747 ASSERT_EQ("false - is not controlled", script_result); |
682 | 748 |
683 LoadTestPage(); // Reload to become controlled. | 749 LoadTestPage(); // Reload to become controlled. |
684 | 750 |
685 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 751 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
686 ASSERT_EQ("true - is controlled", script_result); | 752 ASSERT_EQ("true - is controlled", script_result); |
687 | 753 |
688 gcm::IncomingMessage message; | 754 gcm::IncomingMessage message; |
689 message.sender_id = GetTestApplicationServerKey(); | 755 message.sender_id = GetTestApplicationServerKey(); |
690 message.decrypted = false; | 756 message.decrypted = false; |
691 | 757 |
692 push_service()->OnMessage(app_identifier.app_id(), message); | 758 push_service()->OnMessage(app_identifier.app_id(), message); |
693 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); | 759 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
694 EXPECT_EQ("[NULL]", script_result); | 760 EXPECT_EQ("[NULL]", script_result); |
695 } | 761 } |
696 | 762 |
| 763 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyPushEvent) { |
| 764 std::string script_result; |
| 765 |
| 766 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully()); |
| 767 PushMessagingAppIdentifier app_identifier = |
| 768 GetAppIdentifierForServiceWorkerRegistration(0LL); |
| 769 |
| 770 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| 771 ASSERT_EQ("false - is not controlled", script_result); |
| 772 |
| 773 LoadTestPage(); // Reload to become controlled. |
| 774 |
| 775 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| 776 ASSERT_EQ("true - is controlled", script_result); |
| 777 |
| 778 gcm::IncomingMessage message; |
| 779 message.sender_id = kManifestSenderId; |
| 780 message.decrypted = false; |
| 781 |
| 782 push_service()->OnMessage(app_identifier.app_id(), message); |
| 783 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
| 784 EXPECT_EQ("[NULL]", script_result); |
| 785 } |
| 786 |
697 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { | 787 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { |
698 std::string script_result; | 788 std::string script_result; |
699 | 789 |
700 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 790 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
701 | |
702 PushMessagingAppIdentifier app_identifier = | 791 PushMessagingAppIdentifier app_identifier = |
703 GetAppIdentifierForServiceWorkerRegistration(0LL); | 792 GetAppIdentifierForServiceWorkerRegistration(0LL); |
704 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
705 EXPECT_EQ(kEncodedApplicationServerKey, | |
706 gcm_service()->last_registered_sender_ids()[0]); | |
707 | 793 |
708 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 794 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
709 ASSERT_EQ("false - is not controlled", script_result); | 795 ASSERT_EQ("false - is not controlled", script_result); |
710 | 796 |
711 LoadTestPage(); // Reload to become controlled. | 797 LoadTestPage(); // Reload to become controlled. |
712 | 798 |
713 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 799 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
714 ASSERT_EQ("true - is controlled", script_result); | 800 ASSERT_EQ("true - is controlled", script_result); |
715 | 801 |
716 // Unregister service worker. Sending a message should now fail. | 802 // Unregister service worker. Sending a message should now fail. |
717 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); | 803 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
718 ASSERT_EQ("service worker unregistration status: true", script_result); | 804 ASSERT_EQ("service worker unregistration status: true", script_result); |
719 | 805 |
720 // When the push service will receive it next message, given that there is no | 806 // Unregistering the service worker doesn't yet unsubscribe from push (though |
721 // SW available, it should unregister |app_identifier.app_id()|. | 807 // it should), and FindByServiceWorker doesn't require a live SW. |
722 UnregistrationCallback callback; | 808 GURL origin = https_server()->GetURL("/").GetOrigin(); |
723 gcm_service()->SetUnregisterCallback( | 809 PushMessagingAppIdentifier app_identifier2 = |
724 base::Bind(&UnregistrationCallback::Run, base::Unretained(&callback))); | 810 PushMessagingAppIdentifier::FindByServiceWorker( |
| 811 GetBrowser()->profile(), origin, |
| 812 0LL /* service_worker_registration_id */); |
| 813 EXPECT_FALSE(app_identifier2.is_null()); |
| 814 EXPECT_EQ(app_identifier.app_id(), app_identifier2.app_id()); |
725 | 815 |
726 gcm::IncomingMessage message; | 816 gcm::IncomingMessage message; |
727 message.sender_id = GetTestApplicationServerKey(); | 817 message.sender_id = GetTestApplicationServerKey(); |
728 message.raw_data = "testdata"; | 818 message.raw_data = "testdata"; |
729 message.decrypted = true; | 819 message.decrypted = true; |
| 820 |
| 821 base::RunLoop run_loop; |
| 822 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); |
730 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); | 823 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); |
731 push_service()->OnMessage(app_identifier.app_id(), message); | 824 push_service()->OnMessage(app_identifier.app_id(), message); |
732 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); | 825 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); |
733 callback.WaitUntilSatisfied(); | 826 run_loop.Run(); |
734 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); | 827 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); |
735 EXPECT_EQ(app_identifier.app_id(), callback.app_id()); | 828 |
| 829 // Now the push service has received a message and failed to find its service |
| 830 // worker, it should have automatically unsubscribed app_identifier.app_id(). |
| 831 PushMessagingAppIdentifier app_identifier3 = |
| 832 PushMessagingAppIdentifier::FindByServiceWorker( |
| 833 GetBrowser()->profile(), origin, |
| 834 0LL /* service_worker_registration_id */); |
| 835 EXPECT_TRUE(app_identifier3.is_null()); |
736 | 836 |
737 // No push data should have been received. | 837 // No push data should have been received. |
738 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); | 838 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
739 EXPECT_EQ("null", script_result); | 839 EXPECT_EQ("null", script_result); |
740 } | 840 } |
741 | 841 |
742 #if defined(ENABLE_NOTIFICATIONS) | 842 #if defined(ENABLE_NOTIFICATIONS) |
743 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 843 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
744 PushEventEnforcesUserVisibleNotification) { | 844 PushEventEnforcesUserVisibleNotification) { |
745 std::string script_result; | 845 std::string script_result; |
746 | 846 |
747 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 847 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
748 | |
749 PushMessagingAppIdentifier app_identifier = | 848 PushMessagingAppIdentifier app_identifier = |
750 GetAppIdentifierForServiceWorkerRegistration(0LL); | 849 GetAppIdentifierForServiceWorkerRegistration(0LL); |
751 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
752 EXPECT_EQ(kEncodedApplicationServerKey, | |
753 gcm_service()->last_registered_sender_ids()[0]); | |
754 | 850 |
755 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 851 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
756 ASSERT_EQ("false - is not controlled", script_result); | 852 ASSERT_EQ("false - is not controlled", script_result); |
757 | 853 |
758 LoadTestPage(); // Reload to become controlled. | 854 LoadTestPage(); // Reload to become controlled. |
759 | 855 |
760 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 856 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
761 ASSERT_EQ("true - is controlled", script_result); | 857 ASSERT_EQ("true - is controlled", script_result); |
762 | 858 |
763 notification_manager()->CancelAll(); | 859 notification_manager()->CancelAll(); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 notification_manager()->GetNotificationAt(0); | 938 notification_manager()->GetNotificationAt(0); |
843 | 939 |
844 EXPECT_NE(kPushMessagingForcedNotificationTag, first_notification.tag()); | 940 EXPECT_NE(kPushMessagingForcedNotificationTag, first_notification.tag()); |
845 } | 941 } |
846 } | 942 } |
847 | 943 |
848 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 944 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
849 PushEventAllowSilentPushCommandLineFlag) { | 945 PushEventAllowSilentPushCommandLineFlag) { |
850 std::string script_result; | 946 std::string script_result; |
851 | 947 |
852 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 948 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
853 | |
854 PushMessagingAppIdentifier app_identifier = | 949 PushMessagingAppIdentifier app_identifier = |
855 GetAppIdentifierForServiceWorkerRegistration(0LL); | 950 GetAppIdentifierForServiceWorkerRegistration(0LL); |
856 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | 951 EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_gettoken_app_id()); |
857 EXPECT_EQ(kEncodedApplicationServerKey, | 952 EXPECT_EQ(kEncodedApplicationServerKey, |
858 gcm_service()->last_registered_sender_ids()[0]); | 953 gcm_driver_->last_gettoken_authorized_entity()); |
859 | 954 |
860 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 955 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
861 ASSERT_EQ("false - is not controlled", script_result); | 956 ASSERT_EQ("false - is not controlled", script_result); |
862 | 957 |
863 LoadTestPage(); // Reload to become controlled. | 958 LoadTestPage(); // Reload to become controlled. |
864 | 959 |
865 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 960 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
866 ASSERT_EQ("true - is controlled", script_result); | 961 ASSERT_EQ("true - is controlled", script_result); |
867 | 962 |
868 notification_manager()->CancelAll(); | 963 notification_manager()->CancelAll(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents)); | 1009 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result, web_contents)); |
915 EXPECT_EQ("testdata", script_result); | 1010 EXPECT_EQ("testdata", script_result); |
916 | 1011 |
917 ASSERT_EQ(0u, notification_manager()->GetNotificationCount()); | 1012 ASSERT_EQ(0u, notification_manager()->GetNotificationCount()); |
918 } | 1013 } |
919 | 1014 |
920 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1015 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
921 PushEventEnforcesUserVisibleNotificationAfterQueue) { | 1016 PushEventEnforcesUserVisibleNotificationAfterQueue) { |
922 std::string script_result; | 1017 std::string script_result; |
923 | 1018 |
924 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1019 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
925 | |
926 PushMessagingAppIdentifier app_identifier = | 1020 PushMessagingAppIdentifier app_identifier = |
927 GetAppIdentifierForServiceWorkerRegistration(0LL); | 1021 GetAppIdentifierForServiceWorkerRegistration(0LL); |
928 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
929 EXPECT_EQ(kEncodedApplicationServerKey, | |
930 gcm_service()->last_registered_sender_ids()[0]); | |
931 | 1022 |
932 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 1023 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
933 ASSERT_EQ("false - is not controlled", script_result); | 1024 ASSERT_EQ("false - is not controlled", script_result); |
934 | 1025 |
935 LoadTestPage(); // Reload to become controlled. | 1026 LoadTestPage(); // Reload to become controlled. |
936 | 1027 |
937 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 1028 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
938 ASSERT_EQ("true - is controlled", script_result); | 1029 ASSERT_EQ("true - is controlled", script_result); |
939 | 1030 |
940 // Fire off two push messages in sequence, only the second one of which will | 1031 // Fire off two push messages in sequence, only the second one of which will |
(...skipping 27 matching lines...) Expand all Loading... |
968 EXPECT_EQ(0u, number_of_notifications_shown[0]); | 1059 EXPECT_EQ(0u, number_of_notifications_shown[0]); |
969 EXPECT_EQ(1u, number_of_notifications_shown[1]); | 1060 EXPECT_EQ(1u, number_of_notifications_shown[1]); |
970 } | 1061 } |
971 | 1062 |
972 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1063 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
973 PushEventNotificationWithoutEventWaitUntil) { | 1064 PushEventNotificationWithoutEventWaitUntil) { |
974 std::string script_result; | 1065 std::string script_result; |
975 content::WebContents* web_contents = | 1066 content::WebContents* web_contents = |
976 GetBrowser()->tab_strip_model()->GetActiveWebContents(); | 1067 GetBrowser()->tab_strip_model()->GetActiveWebContents(); |
977 | 1068 |
978 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1069 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
979 | |
980 PushMessagingAppIdentifier app_identifier = | 1070 PushMessagingAppIdentifier app_identifier = |
981 GetAppIdentifierForServiceWorkerRegistration(0LL); | 1071 GetAppIdentifierForServiceWorkerRegistration(0LL); |
982 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
983 EXPECT_EQ(kEncodedApplicationServerKey, | |
984 gcm_service()->last_registered_sender_ids()[0]); | |
985 | 1072 |
986 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 1073 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
987 ASSERT_EQ("false - is not controlled", script_result); | 1074 ASSERT_EQ("false - is not controlled", script_result); |
988 | 1075 |
989 LoadTestPage(); // Reload to become controlled. | 1076 LoadTestPage(); // Reload to become controlled. |
990 | 1077 |
991 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 1078 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
992 ASSERT_EQ("true - is controlled", script_result); | 1079 ASSERT_EQ("true - is controlled", script_result); |
993 | 1080 |
994 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1081 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1028 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1115 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1029 ASSERT_EQ("permission status - prompt", script_result); | 1116 ASSERT_EQ("permission status - prompt", script_result); |
1030 } | 1117 } |
1031 | 1118 |
1032 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) { | 1119 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysGranted) { |
1033 std::string script_result; | 1120 std::string script_result; |
1034 | 1121 |
1035 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 1122 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
1036 ASSERT_EQ("ok - service worker registered", script_result); | 1123 ASSERT_EQ("ok - service worker registered", script_result); |
1037 | 1124 |
1038 RequestAndAcceptPermission(); | 1125 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
1039 | 1126 |
1040 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); | 1127 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
1041 EXPECT_EQ(GetEndpointForSubscriptionId("1-0"), script_result); | 1128 ASSERT_NO_FATAL_FAILURE(EndpointToToken(script_result)); |
1042 | 1129 |
1043 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1130 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1044 EXPECT_EQ("permission status - granted", script_result); | 1131 EXPECT_EQ("permission status - granted", script_result); |
1045 } | 1132 } |
1046 | 1133 |
1047 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) { | 1134 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) { |
1048 std::string script_result; | 1135 std::string script_result; |
1049 | 1136 |
1050 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 1137 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
1051 ASSERT_EQ("ok - service worker registered", script_result); | 1138 ASSERT_EQ("ok - service worker registered", script_result); |
1052 | 1139 |
1053 RequestAndDenyPermission(); | 1140 ASSERT_NO_FATAL_FAILURE(RequestAndDenyPermission()); |
1054 | 1141 |
1055 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); | 1142 ASSERT_TRUE(RunScript("documentSubscribePush()", &script_result)); |
1056 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", | 1143 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", |
1057 script_result); | 1144 script_result); |
1058 | 1145 |
1059 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1146 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1060 EXPECT_EQ("permission status - denied", script_result); | 1147 EXPECT_EQ("permission status - denied", script_result); |
1061 } | 1148 } |
1062 | 1149 |
1063 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { | 1150 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { |
1064 std::string script_result; | 1151 std::string script_result; |
1065 | 1152 |
1066 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 1153 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
1067 EXPECT_EQ("ok - service worker registered", script_result); | 1154 EXPECT_EQ("ok - service worker registered", script_result); |
1068 | 1155 |
1069 // Resolves true if there was a subscription. | 1156 // Resolves true if there was a subscription. |
1070 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */, false); | 1157 std::string token1; |
1071 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | 1158 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1)); |
1072 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1159 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1073 EXPECT_EQ("unsubscribe result: true", script_result); | 1160 EXPECT_EQ("unsubscribe result: true", script_result); |
1074 | 1161 |
| 1162 // Resolves false if there was no longer a subscription. |
| 1163 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| 1164 EXPECT_EQ("unsubscribe result: false", script_result); |
| 1165 |
| 1166 // TODO(johnme): Test that doesn't reject if there was a network error (should |
| 1167 // deactivate subscription locally anyway). |
| 1168 // TODO(johnme): Test that doesn't reject if there were other push service |
| 1169 // errors (should deactivate subscription locally anyway). |
| 1170 |
| 1171 // Unsubscribing (with an existing reference to a PushSubscription), after |
| 1172 // unregistering the Service Worker, just means push subscription isn't found. |
| 1173 std::string token2; |
| 1174 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token2)); |
| 1175 EXPECT_NE(token1, token2); |
| 1176 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
| 1177 ASSERT_EQ("service worker unregistration status: true", script_result); |
| 1178 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| 1179 EXPECT_EQ("unsubscribe result: false", script_result); |
| 1180 } |
| 1181 |
| 1182 // Push subscriptions used to be non-InstanceID GCM registrations. Still need |
| 1183 // to be able to unsubscribe these, even though new ones are no longer created. |
| 1184 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyUnsubscribeSuccess) { |
| 1185 std::string script_result; |
| 1186 |
| 1187 // Resolves true if there was a subscription. |
| 1188 std::string subscription_id1; |
| 1189 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id1)); |
| 1190 gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
| 1191 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| 1192 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1193 |
1075 // Resolves false if there was no longer a subscription. | 1194 // Resolves false if there was no longer a subscription. |
1076 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1195 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1077 EXPECT_EQ("unsubscribe result: false", script_result); | 1196 EXPECT_EQ("unsubscribe result: false", script_result); |
1078 | 1197 |
1079 // Doesn't reject if there was a network error (deactivates subscription | 1198 // Doesn't reject if there was a network error (deactivates subscription |
1080 // locally anyway). | 1199 // locally anyway). |
1081 TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */, false); | 1200 std::string subscription_id2; |
1082 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR); | 1201 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id2)); |
| 1202 EXPECT_NE(subscription_id1, subscription_id2); |
| 1203 gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR); |
1083 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1204 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1084 EXPECT_EQ("unsubscribe result: true", script_result); | 1205 EXPECT_EQ("unsubscribe result: true", script_result); |
1085 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1206 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1086 EXPECT_EQ("false - not subscribed", script_result); | 1207 EXPECT_EQ("false - not subscribed", script_result); |
1087 | 1208 |
1088 // Doesn't reject if there were other push service errors (deactivates | 1209 // Doesn't reject if there were other push service errors (deactivates |
1089 // subscription locally anyway). | 1210 // subscription locally anyway). |
1090 TryToSubscribeSuccessfully("1-2" /* expected_push_subscription_id */, false); | 1211 std::string subscription_id3; |
1091 gcm_service()->AddExpectedUnregisterResponse( | 1212 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id3)); |
| 1213 EXPECT_NE(subscription_id1, subscription_id3); |
| 1214 EXPECT_NE(subscription_id2, subscription_id3); |
| 1215 gcm_service_->AddExpectedUnregisterResponse( |
1092 gcm::GCMClient::INVALID_PARAMETER); | 1216 gcm::GCMClient::INVALID_PARAMETER); |
1093 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1217 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1094 EXPECT_EQ("unsubscribe result: true", script_result); | 1218 EXPECT_EQ("unsubscribe result: true", script_result); |
1095 | 1219 |
1096 // Unsubscribing (with an existing reference to a PushSubscription), after | 1220 // Unsubscribing (with an existing reference to a PushSubscription), after |
1097 // unregistering the Service Worker, just means push subscription isn't found. | 1221 // unregistering the Service Worker, just means push subscription isn't found. |
1098 TryToSubscribeSuccessfully("1-3" /* expected_push_subscription_id */, false); | 1222 std::string subscription_id4; |
| 1223 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id4)); |
| 1224 EXPECT_NE(subscription_id1, subscription_id4); |
| 1225 EXPECT_NE(subscription_id2, subscription_id4); |
| 1226 EXPECT_NE(subscription_id3, subscription_id4); |
1099 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); | 1227 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
1100 ASSERT_EQ("service worker unregistration status: true", script_result); | 1228 ASSERT_EQ("service worker unregistration status: true", script_result); |
1101 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1229 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1102 EXPECT_EQ("unsubscribe result: false", script_result); | 1230 EXPECT_EQ("unsubscribe result: false", script_result); |
1103 } | 1231 } |
1104 | 1232 |
1105 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1233 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1106 GlobalResetPushPermissionUnsubscribes) { | 1234 GlobalResetPushPermissionUnsubscribes) { |
1107 std::string script_result; | 1235 std::string script_result; |
1108 | 1236 |
1109 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1237 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1110 | 1238 |
1111 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1239 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1112 EXPECT_EQ("true - subscribed", script_result); | 1240 EXPECT_EQ("true - subscribed", script_result); |
1113 | 1241 |
1114 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1242 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1115 EXPECT_EQ("permission status - granted", script_result); | 1243 EXPECT_EQ("permission status - granted", script_result); |
1116 | 1244 |
1117 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1245 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1118 new content::MessageLoopRunner; | 1246 new content::MessageLoopRunner; |
1119 push_service()->SetContentSettingChangedCallbackForTesting( | 1247 push_service()->SetContentSettingChangedCallbackForTesting( |
1120 message_loop_runner->QuitClosure()); | 1248 message_loop_runner->QuitClosure()); |
1121 | 1249 |
1122 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1250 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1123 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1251 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1124 | 1252 |
1125 message_loop_runner->Run(); | 1253 message_loop_runner->Run(); |
1126 | 1254 |
1127 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1255 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1128 EXPECT_EQ("permission status - prompt", script_result); | 1256 EXPECT_EQ("permission status - prompt", script_result); |
1129 | 1257 |
1130 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1258 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1131 EXPECT_EQ("false - not subscribed", script_result); | 1259 EXPECT_EQ("false - not subscribed", script_result); |
1132 } | 1260 } |
1133 | 1261 |
1134 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1262 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1135 LocalResetPushPermissionUnsubscribes) { | 1263 LocalResetPushPermissionUnsubscribes) { |
1136 std::string script_result; | 1264 std::string script_result; |
1137 | 1265 |
1138 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1266 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1139 | 1267 |
1140 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1268 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1141 EXPECT_EQ("true - subscribed", script_result); | 1269 EXPECT_EQ("true - subscribed", script_result); |
1142 | 1270 |
1143 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1271 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1144 EXPECT_EQ("permission status - granted", script_result); | 1272 EXPECT_EQ("permission status - granted", script_result); |
1145 | 1273 |
1146 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1274 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1147 new content::MessageLoopRunner; | 1275 new content::MessageLoopRunner; |
1148 push_service()->SetContentSettingChangedCallbackForTesting( | 1276 push_service()->SetContentSettingChangedCallbackForTesting( |
(...skipping 11 matching lines...) Expand all Loading... |
1160 EXPECT_EQ("permission status - prompt", script_result); | 1288 EXPECT_EQ("permission status - prompt", script_result); |
1161 | 1289 |
1162 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1290 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1163 EXPECT_EQ("false - not subscribed", script_result); | 1291 EXPECT_EQ("false - not subscribed", script_result); |
1164 } | 1292 } |
1165 | 1293 |
1166 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1294 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1167 DenyPushPermissionUnsubscribes) { | 1295 DenyPushPermissionUnsubscribes) { |
1168 std::string script_result; | 1296 std::string script_result; |
1169 | 1297 |
1170 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1298 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1171 | 1299 |
1172 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1300 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1173 EXPECT_EQ("true - subscribed", script_result); | 1301 EXPECT_EQ("true - subscribed", script_result); |
1174 | 1302 |
1175 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1303 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1176 EXPECT_EQ("permission status - granted", script_result); | 1304 EXPECT_EQ("permission status - granted", script_result); |
1177 | 1305 |
1178 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1306 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1179 new content::MessageLoopRunner; | 1307 new content::MessageLoopRunner; |
1180 push_service()->SetContentSettingChangedCallbackForTesting( | 1308 push_service()->SetContentSettingChangedCallbackForTesting( |
(...skipping 11 matching lines...) Expand all Loading... |
1192 EXPECT_EQ("permission status - denied", script_result); | 1320 EXPECT_EQ("permission status - denied", script_result); |
1193 | 1321 |
1194 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1322 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1195 EXPECT_EQ("false - not subscribed", script_result); | 1323 EXPECT_EQ("false - not subscribed", script_result); |
1196 } | 1324 } |
1197 | 1325 |
1198 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1326 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1199 GlobalResetNotificationsPermissionUnsubscribes) { | 1327 GlobalResetNotificationsPermissionUnsubscribes) { |
1200 std::string script_result; | 1328 std::string script_result; |
1201 | 1329 |
1202 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1330 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1203 | 1331 |
1204 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1332 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1205 EXPECT_EQ("true - subscribed", script_result); | 1333 EXPECT_EQ("true - subscribed", script_result); |
1206 | 1334 |
1207 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1335 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1208 EXPECT_EQ("permission status - granted", script_result); | 1336 EXPECT_EQ("permission status - granted", script_result); |
1209 | 1337 |
1210 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1338 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1211 new content::MessageLoopRunner; | 1339 new content::MessageLoopRunner; |
1212 push_service()->SetContentSettingChangedCallbackForTesting( | 1340 push_service()->SetContentSettingChangedCallbackForTesting( |
1213 message_loop_runner->QuitClosure()); | 1341 message_loop_runner->QuitClosure()); |
1214 | 1342 |
1215 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1343 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1216 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1344 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1217 | 1345 |
1218 message_loop_runner->Run(); | 1346 message_loop_runner->Run(); |
1219 | 1347 |
1220 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1348 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1221 EXPECT_EQ("permission status - prompt", script_result); | 1349 EXPECT_EQ("permission status - prompt", script_result); |
1222 | 1350 |
1223 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1351 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1224 EXPECT_EQ("false - not subscribed", script_result); | 1352 EXPECT_EQ("false - not subscribed", script_result); |
1225 } | 1353 } |
1226 | 1354 |
1227 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1355 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1228 LocalResetNotificationsPermissionUnsubscribes) { | 1356 LocalResetNotificationsPermissionUnsubscribes) { |
1229 std::string script_result; | 1357 std::string script_result; |
1230 | 1358 |
1231 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1359 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1232 | 1360 |
1233 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1361 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1234 EXPECT_EQ("true - subscribed", script_result); | 1362 EXPECT_EQ("true - subscribed", script_result); |
1235 | 1363 |
1236 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1364 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1237 EXPECT_EQ("permission status - granted", script_result); | 1365 EXPECT_EQ("permission status - granted", script_result); |
1238 | 1366 |
1239 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1367 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1240 new content::MessageLoopRunner; | 1368 new content::MessageLoopRunner; |
1241 push_service()->SetContentSettingChangedCallbackForTesting( | 1369 push_service()->SetContentSettingChangedCallbackForTesting( |
(...skipping 11 matching lines...) Expand all Loading... |
1253 EXPECT_EQ("permission status - prompt", script_result); | 1381 EXPECT_EQ("permission status - prompt", script_result); |
1254 | 1382 |
1255 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1383 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1256 EXPECT_EQ("false - not subscribed", script_result); | 1384 EXPECT_EQ("false - not subscribed", script_result); |
1257 } | 1385 } |
1258 | 1386 |
1259 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1387 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1260 DenyNotificationsPermissionUnsubscribes) { | 1388 DenyNotificationsPermissionUnsubscribes) { |
1261 std::string script_result; | 1389 std::string script_result; |
1262 | 1390 |
1263 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1391 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1264 | 1392 |
1265 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1393 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1266 EXPECT_EQ("true - subscribed", script_result); | 1394 EXPECT_EQ("true - subscribed", script_result); |
1267 | 1395 |
1268 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1396 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1269 EXPECT_EQ("permission status - granted", script_result); | 1397 EXPECT_EQ("permission status - granted", script_result); |
1270 | 1398 |
1271 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1399 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1272 new content::MessageLoopRunner; | 1400 new content::MessageLoopRunner; |
1273 push_service()->SetContentSettingChangedCallbackForTesting( | 1401 push_service()->SetContentSettingChangedCallbackForTesting( |
(...skipping 11 matching lines...) Expand all Loading... |
1285 EXPECT_EQ("permission status - denied", script_result); | 1413 EXPECT_EQ("permission status - denied", script_result); |
1286 | 1414 |
1287 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1415 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1288 EXPECT_EQ("false - not subscribed", script_result); | 1416 EXPECT_EQ("false - not subscribed", script_result); |
1289 } | 1417 } |
1290 | 1418 |
1291 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1419 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1292 GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { | 1420 GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { |
1293 std::string script_result; | 1421 std::string script_result; |
1294 | 1422 |
1295 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1423 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1296 | 1424 |
1297 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1425 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1298 EXPECT_EQ("true - subscribed", script_result); | 1426 EXPECT_EQ("true - subscribed", script_result); |
1299 | 1427 |
1300 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1428 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1301 EXPECT_EQ("permission status - granted", script_result); | 1429 EXPECT_EQ("permission status - granted", script_result); |
1302 | 1430 |
1303 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1431 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1304 new content::MessageLoopRunner; | 1432 new content::MessageLoopRunner; |
1305 push_service()->SetContentSettingChangedCallbackForTesting( | 1433 push_service()->SetContentSettingChangedCallbackForTesting( |
(...skipping 15 matching lines...) Expand all Loading... |
1321 } | 1449 } |
1322 | 1450 |
1323 // This test is testing some non-trivial content settings rules and make sure | 1451 // This test is testing some non-trivial content settings rules and make sure |
1324 // that they are respected with regards to automatic unsubscription. In other | 1452 // that they are respected with regards to automatic unsubscription. In other |
1325 // words, it checks that the push service does not end up unsubscribing origins | 1453 // words, it checks that the push service does not end up unsubscribing origins |
1326 // that have push permission with some non-common rules. | 1454 // that have push permission with some non-common rules. |
1327 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1455 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1328 AutomaticUnsubscriptionFollowsContentSettingRules) { | 1456 AutomaticUnsubscriptionFollowsContentSettingRules) { |
1329 std::string script_result; | 1457 std::string script_result; |
1330 | 1458 |
1331 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1459 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1332 | 1460 |
1333 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1461 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1334 EXPECT_EQ("true - subscribed", script_result); | 1462 EXPECT_EQ("true - subscribed", script_result); |
1335 | 1463 |
1336 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1464 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1337 EXPECT_EQ("permission status - granted", script_result); | 1465 EXPECT_EQ("permission status - granted", script_result); |
1338 | 1466 |
1339 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1467 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1340 new content::MessageLoopRunner; | 1468 new content::MessageLoopRunner; |
1341 push_service()->SetContentSettingChangedCallbackForTesting( | 1469 push_service()->SetContentSettingChangedCallbackForTesting( |
(...skipping 15 matching lines...) Expand all Loading... |
1357 // The Push service should not unsubcribe |origin| because at no point it was | 1485 // The Push service should not unsubcribe |origin| because at no point it was |
1358 // left without permission to use Push. | 1486 // left without permission to use Push. |
1359 | 1487 |
1360 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1488 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1361 EXPECT_EQ("permission status - granted", script_result); | 1489 EXPECT_EQ("permission status - granted", script_result); |
1362 | 1490 |
1363 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1491 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1364 EXPECT_EQ("true - subscribed", script_result); | 1492 EXPECT_EQ("true - subscribed", script_result); |
1365 } | 1493 } |
1366 | 1494 |
1367 // Checks that automatically unsubscribing due to a revoked permission is | 1495 // Checks automatically unsubscribing due to a revoked permission after |
1368 // handled well if the sender ID needed to unsubscribe was already deleted. | 1496 // previously clearing site data. |
1369 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1497 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1370 ResetPushPermissionAfterClearingSiteData) { | 1498 ResetPushPermissionAfterClearingSiteData) { |
1371 std::string script_result; | 1499 std::string script_result; |
1372 | 1500 |
1373 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1501 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1374 | 1502 |
1375 PushMessagingAppIdentifier app_identifier = | 1503 PushMessagingAppIdentifier app_identifier = |
1376 GetAppIdentifierForServiceWorkerRegistration(0LL); | 1504 GetAppIdentifierForServiceWorkerRegistration(0LL); |
1377 EXPECT_EQ(app_identifier.app_id(), gcm_service()->last_registered_app_id()); | |
1378 PushMessagingAppIdentifier stored_app_identifier = | 1505 PushMessagingAppIdentifier stored_app_identifier = |
1379 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), | 1506 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), |
1380 app_identifier.app_id()); | 1507 app_identifier.app_id()); |
1381 EXPECT_FALSE(stored_app_identifier.is_null()); | 1508 EXPECT_FALSE(stored_app_identifier.is_null()); |
1382 | 1509 |
1383 // Simulate a user clearing site data (including Service Workers, crucially). | 1510 // Simulate a user clearing site data (including Service Workers, crucially). |
1384 BrowsingDataRemover* remover = | 1511 BrowsingDataRemover* remover = |
1385 BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowser()->profile()); | 1512 BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowser()->profile()); |
1386 BrowsingDataRemoverCompletionObserver observer(remover); | 1513 BrowsingDataRemoverCompletionObserver observer(remover); |
1387 remover->RemoveAndReply(BrowsingDataRemover::Unbounded(), | 1514 remover->RemoveAndReply(BrowsingDataRemover::Unbounded(), |
1388 BrowsingDataRemover::REMOVE_SITE_DATA, | 1515 BrowsingDataRemover::REMOVE_SITE_DATA, |
1389 BrowsingDataHelper::UNPROTECTED_WEB, &observer); | 1516 BrowsingDataHelper::UNPROTECTED_WEB, &observer); |
1390 observer.BlockUntilCompletion(); | 1517 observer.BlockUntilCompletion(); |
1391 | 1518 |
1392 base::RunLoop run_loop; | 1519 base::RunLoop run_loop; |
1393 push_service()->SetContentSettingChangedCallbackForTesting( | 1520 push_service()->SetContentSettingChangedCallbackForTesting( |
1394 run_loop.QuitClosure()); | 1521 run_loop.QuitClosure()); |
1395 | 1522 |
1396 // This shouldn't (asynchronously) cause a DCHECK. | 1523 // This shouldn't (asynchronously) cause a DCHECK. |
1397 // TODO(johnme): Get this test running on Android, which has a different | 1524 // TODO(johnme): Get this test running on Android with legacy GCM |
1398 // codepath due to sender_id being required for unsubscribing there. | 1525 // registrations, which have a different codepath due to sender_id being |
| 1526 // required for unsubscribing there. |
1399 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1527 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1400 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1528 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1401 | 1529 |
1402 run_loop.Run(); | 1530 run_loop.Run(); |
1403 | 1531 |
1404 // |app_identifier| should no longer be stored in prefs. | 1532 // |app_identifier| should no longer be stored in prefs. |
1405 PushMessagingAppIdentifier stored_app_identifier2 = | 1533 PushMessagingAppIdentifier stored_app_identifier2 = |
1406 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), | 1534 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), |
1407 app_identifier.app_id()); | 1535 app_identifier.app_id()); |
1408 EXPECT_TRUE(stored_app_identifier2.is_null()); | 1536 EXPECT_TRUE(stored_app_identifier2.is_null()); |
1409 } | 1537 } |
1410 | 1538 |
1411 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, EncryptionKeyUniqueness) { | 1539 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, EncryptionKeyUniqueness) { |
1412 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */, false); | 1540 std::string token1; |
| 1541 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1)); |
1413 | 1542 |
1414 std::string first_public_key; | 1543 std::string first_public_key; |
1415 ASSERT_TRUE(RunScript("GetP256dh()", &first_public_key)); | 1544 ASSERT_TRUE(RunScript("GetP256dh()", &first_public_key)); |
1416 EXPECT_GE(first_public_key.size(), 32u); | 1545 EXPECT_GE(first_public_key.size(), 32u); |
1417 | 1546 |
1418 std::string script_result; | 1547 std::string script_result; |
1419 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | |
1420 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1548 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1421 EXPECT_EQ("unsubscribe result: true", script_result); | 1549 EXPECT_EQ("unsubscribe result: true", script_result); |
1422 | 1550 |
1423 TryToSubscribeSuccessfully("1-1" /* expected_push_subscription_id */); | 1551 std::string token2; |
| 1552 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token2)); |
| 1553 EXPECT_NE(token1, token2); |
1424 | 1554 |
1425 std::string second_public_key; | 1555 std::string second_public_key; |
1426 ASSERT_TRUE(RunScript("GetP256dh()", &second_public_key)); | 1556 ASSERT_TRUE(RunScript("GetP256dh()", &second_public_key)); |
1427 EXPECT_GE(second_public_key.size(), 32u); | 1557 EXPECT_GE(second_public_key.size(), 32u); |
1428 | 1558 |
1429 EXPECT_NE(first_public_key, second_public_key); | 1559 EXPECT_NE(first_public_key, second_public_key); |
1430 } | 1560 } |
1431 | 1561 |
1432 class PushMessagingIncognitoBrowserTest : public PushMessagingBrowserTest { | 1562 class PushMessagingIncognitoBrowserTest : public PushMessagingBrowserTest { |
1433 public: | 1563 public: |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1465 #if BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) | 1595 #if BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) |
1466 // Push background mode is disabled by default. | 1596 // Push background mode is disabled by default. |
1467 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1597 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1468 BackgroundModeDisabledByDefault) { | 1598 BackgroundModeDisabledByDefault) { |
1469 // Initially background mode is inactive. | 1599 // Initially background mode is inactive. |
1470 BackgroundModeManager* background_mode_manager = | 1600 BackgroundModeManager* background_mode_manager = |
1471 g_browser_process->background_mode_manager(); | 1601 g_browser_process->background_mode_manager(); |
1472 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1602 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1473 | 1603 |
1474 // Once there is a push subscription background mode is still inactive. | 1604 // Once there is a push subscription background mode is still inactive. |
1475 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1605 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1476 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1606 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1477 | 1607 |
1478 // After dropping the last subscription it is still inactive. | 1608 // After dropping the last subscription it is still inactive. |
1479 std::string script_result; | 1609 std::string script_result; |
1480 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | |
1481 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1610 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1482 EXPECT_EQ("unsubscribe result: true", script_result); | 1611 EXPECT_EQ("unsubscribe result: true", script_result); |
1483 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1612 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1484 } | 1613 } |
1485 | 1614 |
1486 class PushMessagingBackgroundModeEnabledBrowserTest | 1615 class PushMessagingBackgroundModeEnabledBrowserTest |
1487 : public PushMessagingBrowserTest { | 1616 : public PushMessagingBrowserTest { |
1488 public: | 1617 public: |
1489 ~PushMessagingBackgroundModeEnabledBrowserTest() override {} | 1618 ~PushMessagingBackgroundModeEnabledBrowserTest() override {} |
1490 | 1619 |
1491 // PushMessagingBrowserTest: | 1620 // PushMessagingBrowserTest: |
1492 void SetUpCommandLine(base::CommandLine* command_line) override { | 1621 void SetUpCommandLine(base::CommandLine* command_line) override { |
1493 command_line->AppendSwitch(switches::kEnablePushApiBackgroundMode); | 1622 command_line->AppendSwitch(switches::kEnablePushApiBackgroundMode); |
1494 PushMessagingBrowserTest::SetUpCommandLine(command_line); | 1623 PushMessagingBrowserTest::SetUpCommandLine(command_line); |
1495 } | 1624 } |
1496 }; | 1625 }; |
1497 | 1626 |
1498 // In this test the command line enables push background mode. | 1627 // In this test the command line enables push background mode. |
1499 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeEnabledBrowserTest, | 1628 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeEnabledBrowserTest, |
1500 BackgroundModeEnabledWithCommandLine) { | 1629 BackgroundModeEnabledWithCommandLine) { |
1501 // Initially background mode is inactive. | 1630 // Initially background mode is inactive. |
1502 BackgroundModeManager* background_mode_manager = | 1631 BackgroundModeManager* background_mode_manager = |
1503 g_browser_process->background_mode_manager(); | 1632 g_browser_process->background_mode_manager(); |
1504 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1633 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1505 | 1634 |
1506 // Once there is a push subscription background mode is active. | 1635 // Once there is a push subscription background mode is active. |
1507 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1636 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1508 ASSERT_TRUE(background_mode_manager->IsBackgroundModeActive()); | 1637 ASSERT_TRUE(background_mode_manager->IsBackgroundModeActive()); |
1509 | 1638 |
1510 // Dropping the last subscription deactivates background mode. | 1639 // Dropping the last subscription deactivates background mode. |
1511 std::string script_result; | 1640 std::string script_result; |
1512 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | |
1513 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1641 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1514 EXPECT_EQ("unsubscribe result: true", script_result); | 1642 EXPECT_EQ("unsubscribe result: true", script_result); |
1515 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1643 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1516 } | 1644 } |
1517 | 1645 |
1518 class PushMessagingBackgroundModeDisabledBrowserTest | 1646 class PushMessagingBackgroundModeDisabledBrowserTest |
1519 : public PushMessagingBrowserTest { | 1647 : public PushMessagingBrowserTest { |
1520 public: | 1648 public: |
1521 ~PushMessagingBackgroundModeDisabledBrowserTest() override {} | 1649 ~PushMessagingBackgroundModeDisabledBrowserTest() override {} |
1522 | 1650 |
1523 // PushMessagingBrowserTest: | 1651 // PushMessagingBrowserTest: |
1524 void SetUpCommandLine(base::CommandLine* command_line) override { | 1652 void SetUpCommandLine(base::CommandLine* command_line) override { |
1525 command_line->AppendSwitch(switches::kDisablePushApiBackgroundMode); | 1653 command_line->AppendSwitch(switches::kDisablePushApiBackgroundMode); |
1526 PushMessagingBrowserTest::SetUpCommandLine(command_line); | 1654 PushMessagingBrowserTest::SetUpCommandLine(command_line); |
1527 } | 1655 } |
1528 }; | 1656 }; |
1529 | 1657 |
1530 // In this test the command line disables push background mode. | 1658 // In this test the command line disables push background mode. |
1531 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeDisabledBrowserTest, | 1659 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeDisabledBrowserTest, |
1532 BackgroundModeDisabledWithCommandLine) { | 1660 BackgroundModeDisabledWithCommandLine) { |
1533 // Initially background mode is inactive. | 1661 // Initially background mode is inactive. |
1534 BackgroundModeManager* background_mode_manager = | 1662 BackgroundModeManager* background_mode_manager = |
1535 g_browser_process->background_mode_manager(); | 1663 g_browser_process->background_mode_manager(); |
1536 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1664 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1537 | 1665 |
1538 // Once there is a push subscription background mode is still inactive. | 1666 // Once there is a push subscription background mode is still inactive. |
1539 TryToSubscribeSuccessfully("1-0" /* expected_push_subscription_id */); | 1667 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1540 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1668 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1541 | 1669 |
1542 // After dropping the last subscription background mode is still inactive. | 1670 // After dropping the last subscription background mode is still inactive. |
1543 std::string script_result; | 1671 std::string script_result; |
1544 gcm_service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | |
1545 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1672 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1546 EXPECT_EQ("unsubscribe result: true", script_result); | 1673 EXPECT_EQ("unsubscribe result: true", script_result); |
1547 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1674 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1548 } | 1675 } |
1549 #endif // BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) | 1676 #endif // BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) |
OLD | NEW |