OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/background_sync/background_sync_manager.h" | 5 #include "content/browser/background_sync/background_sync_manager.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 EXPECT_EQ(SERVICE_WORKER_OK, status) << ServiceWorkerStatusToString(status); | 60 EXPECT_EQ(SERVICE_WORKER_OK, status) << ServiceWorkerStatusToString(status); |
61 *out_registration = registration; | 61 *out_registration = registration; |
62 } | 62 } |
63 | 63 |
64 void UnregisterServiceWorkerCallback(bool* called, | 64 void UnregisterServiceWorkerCallback(bool* called, |
65 ServiceWorkerStatusCode code) { | 65 ServiceWorkerStatusCode code) { |
66 EXPECT_EQ(SERVICE_WORKER_OK, code); | 66 EXPECT_EQ(SERVICE_WORKER_OK, code); |
67 *called = true; | 67 *called = true; |
68 } | 68 } |
69 | 69 |
70 void OneShotSuccessfulCallback( | 70 void DispatchSyncSuccessfulCallback( |
71 int* count, | 71 int* count, |
72 const scoped_refptr<ServiceWorkerVersion>& active_version, | 72 const scoped_refptr<ServiceWorkerVersion>& active_version, |
73 const ServiceWorkerVersion::StatusCallback& callback) { | 73 const ServiceWorkerVersion::StatusCallback& callback) { |
74 *count += 1; | 74 *count += 1; |
75 callback.Run(SERVICE_WORKER_OK); | 75 callback.Run(SERVICE_WORKER_OK); |
76 } | 76 } |
77 | 77 |
78 void OneShotFailedCallback( | 78 void DispatchSyncFailedCallback( |
79 int* count, | 79 int* count, |
80 const scoped_refptr<ServiceWorkerVersion>& active_version, | 80 const scoped_refptr<ServiceWorkerVersion>& active_version, |
81 const ServiceWorkerVersion::StatusCallback& callback) { | 81 const ServiceWorkerVersion::StatusCallback& callback) { |
82 *count += 1; | 82 *count += 1; |
83 callback.Run(SERVICE_WORKER_ERROR_FAILED); | 83 callback.Run(SERVICE_WORKER_ERROR_FAILED); |
84 } | 84 } |
85 | 85 |
86 void OneShotDelayedCallback( | 86 void DispatchSyncDelayedCallback( |
87 int* count, | 87 int* count, |
88 ServiceWorkerVersion::StatusCallback* out_callback, | 88 ServiceWorkerVersion::StatusCallback* out_callback, |
89 const scoped_refptr<ServiceWorkerVersion>& active_version, | 89 const scoped_refptr<ServiceWorkerVersion>& active_version, |
90 const ServiceWorkerVersion::StatusCallback& callback) { | 90 const ServiceWorkerVersion::StatusCallback& callback) { |
91 *count += 1; | 91 *count += 1; |
92 *out_callback = callback; | 92 *out_callback = callback; |
93 } | 93 } |
94 | 94 |
95 void NotifyWhenFinishedCallback(bool* was_called, | 95 void NotifyWhenFinishedCallback(bool* was_called, |
96 BackgroundSyncStatus* out_status, | 96 BackgroundSyncStatus* out_status, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 141 |
142 DISALLOW_COPY_AND_ASSIGN(TestBackgroundSyncController); | 142 DISALLOW_COPY_AND_ASSIGN(TestBackgroundSyncController); |
143 }; | 143 }; |
144 | 144 |
145 } // namespace | 145 } // namespace |
146 | 146 |
147 // A BackgroundSyncManager that can simulate delaying and corrupting the backend | 147 // A BackgroundSyncManager that can simulate delaying and corrupting the backend |
148 // storage and service worker onsync events. | 148 // storage and service worker onsync events. |
149 class TestBackgroundSyncManager : public BackgroundSyncManager { | 149 class TestBackgroundSyncManager : public BackgroundSyncManager { |
150 public: | 150 public: |
151 using OneShotCallback = | 151 using DispatchSyncCallback = |
152 base::Callback<void(const scoped_refptr<ServiceWorkerVersion>&, | 152 base::Callback<void(const scoped_refptr<ServiceWorkerVersion>&, |
153 const ServiceWorkerVersion::StatusCallback&)>; | 153 const ServiceWorkerVersion::StatusCallback&)>; |
154 | 154 |
155 explicit TestBackgroundSyncManager( | 155 explicit TestBackgroundSyncManager( |
156 const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context) | 156 const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context) |
157 : BackgroundSyncManager(service_worker_context) { | 157 : BackgroundSyncManager(service_worker_context) { |
158 } | 158 } |
159 | 159 |
160 void DoInit() { Init(); } | 160 void DoInit() { Init(); } |
161 | 161 |
(...skipping 19 matching lines...) Expand all Loading... |
181 continuation_.Run(); | 181 continuation_.Run(); |
182 continuation_.Reset(); | 182 continuation_.Reset(); |
183 } | 183 } |
184 | 184 |
185 void ClearDelayedTask() { delayed_task_.Reset(); } | 185 void ClearDelayedTask() { delayed_task_.Reset(); } |
186 | 186 |
187 void set_corrupt_backend(bool corrupt_backend) { | 187 void set_corrupt_backend(bool corrupt_backend) { |
188 corrupt_backend_ = corrupt_backend; | 188 corrupt_backend_ = corrupt_backend; |
189 } | 189 } |
190 void set_delay_backend(bool delay_backend) { delay_backend_ = delay_backend; } | 190 void set_delay_backend(bool delay_backend) { delay_backend_ = delay_backend; } |
191 void set_one_shot_callback(const OneShotCallback& callback) { | 191 void set_dispatch_sync_callback(const DispatchSyncCallback& callback) { |
192 one_shot_callback_ = callback; | 192 dispatch_sync_callback_ = callback; |
193 } | 193 } |
194 | 194 |
195 base::Closure delayed_task() const { return delayed_task_; } | 195 base::Closure delayed_task() const { return delayed_task_; } |
196 base::TimeDelta delayed_task_delta() const { return delayed_task_delta_; } | 196 base::TimeDelta delayed_task_delta() const { return delayed_task_delta_; } |
197 | 197 |
198 BackgroundSyncEventLastChance last_chance() const { return last_chance_; } | 198 BackgroundSyncEventLastChance last_chance() const { return last_chance_; } |
199 | 199 |
200 void set_has_main_frame_provider_host(bool value) { | 200 void set_has_main_frame_provider_host(bool value) { |
201 has_main_frame_provider_host_ = value; | 201 has_main_frame_provider_host_ = value; |
202 } | 202 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 } | 242 } |
243 continuation_ = | 243 continuation_ = |
244 base::Bind(&TestBackgroundSyncManager::GetDataFromBackendContinue, | 244 base::Bind(&TestBackgroundSyncManager::GetDataFromBackendContinue, |
245 base::Unretained(this), key, callback); | 245 base::Unretained(this), key, callback); |
246 if (delay_backend_) | 246 if (delay_backend_) |
247 return; | 247 return; |
248 | 248 |
249 Continue(); | 249 Continue(); |
250 } | 250 } |
251 | 251 |
252 void FireOneShotSync( | 252 void DispatchSyncEvent( |
253 BackgroundSyncRegistrationHandle::HandleId handle_id, | 253 BackgroundSyncRegistrationHandle::HandleId handle_id, |
254 const scoped_refptr<ServiceWorkerVersion>& active_version, | 254 const scoped_refptr<ServiceWorkerVersion>& active_version, |
255 BackgroundSyncEventLastChance last_chance, | 255 BackgroundSyncEventLastChance last_chance, |
256 const ServiceWorkerVersion::StatusCallback& callback) override { | 256 const ServiceWorkerVersion::StatusCallback& callback) override { |
257 ASSERT_FALSE(one_shot_callback_.is_null()); | 257 ASSERT_FALSE(dispatch_sync_callback_.is_null()); |
258 last_chance_ = last_chance; | 258 last_chance_ = last_chance; |
259 one_shot_callback_.Run(active_version, callback); | 259 dispatch_sync_callback_.Run(active_version, callback); |
260 } | 260 } |
261 | 261 |
262 void ScheduleDelayedTask(const base::Closure& callback, | 262 void ScheduleDelayedTask(const base::Closure& callback, |
263 base::TimeDelta delay) override { | 263 base::TimeDelta delay) override { |
264 delayed_task_ = callback; | 264 delayed_task_ = callback; |
265 delayed_task_delta_ = delay; | 265 delayed_task_delta_ = delay; |
266 } | 266 } |
267 | 267 |
268 void HasMainFrameProviderHost(const GURL& origin, | 268 void HasMainFrameProviderHost(const GURL& origin, |
269 const BoolCallback& callback) override { | 269 const BoolCallback& callback) override { |
270 callback.Run(has_main_frame_provider_host_); | 270 callback.Run(has_main_frame_provider_host_); |
271 } | 271 } |
272 | 272 |
273 private: | 273 private: |
274 bool corrupt_backend_ = false; | 274 bool corrupt_backend_ = false; |
275 bool delay_backend_ = false; | 275 bool delay_backend_ = false; |
276 bool has_main_frame_provider_host_ = true; | 276 bool has_main_frame_provider_host_ = true; |
277 BackgroundSyncEventLastChance last_chance_ = | 277 BackgroundSyncEventLastChance last_chance_ = |
278 BackgroundSyncEventLastChance::IS_NOT_LAST_CHANCE; | 278 BackgroundSyncEventLastChance::IS_NOT_LAST_CHANCE; |
279 base::Closure continuation_; | 279 base::Closure continuation_; |
280 OneShotCallback one_shot_callback_; | 280 DispatchSyncCallback dispatch_sync_callback_; |
281 base::Closure delayed_task_; | 281 base::Closure delayed_task_; |
282 base::TimeDelta delayed_task_delta_; | 282 base::TimeDelta delayed_task_delta_; |
283 }; | 283 }; |
284 | 284 |
285 class BackgroundSyncManagerTest : public testing::Test { | 285 class BackgroundSyncManagerTest : public testing::Test { |
286 public: | 286 public: |
287 BackgroundSyncManagerTest() | 287 BackgroundSyncManagerTest() |
288 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), | 288 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), |
289 network_change_notifier_(net::NetworkChangeNotifier::CreateMock()) { | 289 network_change_notifier_(net::NetworkChangeNotifier::CreateMock()) { |
290 sync_options_1_.tag = "foo"; | 290 sync_options_1_.tag = "foo"; |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
576 EXPECT_TRUE(called); | 576 EXPECT_TRUE(called); |
577 } | 577 } |
578 | 578 |
579 GURL PatternForSWId(int64_t sw_id) { | 579 GURL PatternForSWId(int64_t sw_id) { |
580 EXPECT_TRUE(sw_id == sw_registration_id_1_ || | 580 EXPECT_TRUE(sw_id == sw_registration_id_1_ || |
581 sw_id == sw_registration_id_2_); | 581 sw_id == sw_registration_id_2_); |
582 return sw_id == sw_registration_id_1_ ? GURL(kPattern1) : GURL(kPattern2); | 582 return sw_id == sw_registration_id_1_ ? GURL(kPattern1) : GURL(kPattern2); |
583 } | 583 } |
584 | 584 |
585 void SetupForSyncEvent( | 585 void SetupForSyncEvent( |
586 const TestBackgroundSyncManager::OneShotCallback& callback) { | 586 const TestBackgroundSyncManager::DispatchSyncCallback& callback) { |
587 test_background_sync_manager_->set_one_shot_callback(callback); | 587 test_background_sync_manager_->set_dispatch_sync_callback(callback); |
588 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); | 588 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); |
589 } | 589 } |
590 | 590 |
591 void InitSyncEventTest() { | 591 void InitSyncEventTest() { |
592 SetupForSyncEvent( | 592 SetupForSyncEvent( |
593 base::Bind(OneShotSuccessfulCallback, &sync_events_called_)); | 593 base::Bind(DispatchSyncSuccessfulCallback, &sync_events_called_)); |
594 } | 594 } |
595 | 595 |
596 void InitFailedSyncEventTest() { | 596 void InitFailedSyncEventTest() { |
597 SetupForSyncEvent(base::Bind(OneShotFailedCallback, &sync_events_called_)); | 597 SetupForSyncEvent( |
| 598 base::Bind(DispatchSyncFailedCallback, &sync_events_called_)); |
598 } | 599 } |
599 | 600 |
600 void InitDelayedSyncEventTest() { | 601 void InitDelayedSyncEventTest() { |
601 SetupForSyncEvent(base::Bind(OneShotDelayedCallback, &sync_events_called_, | 602 SetupForSyncEvent(base::Bind(DispatchSyncDelayedCallback, |
602 &sync_fired_callback_)); | 603 &sync_events_called_, &sync_fired_callback_)); |
603 } | 604 } |
604 | 605 |
605 void RegisterAndVerifySyncEventDelayed( | 606 void RegisterAndVerifySyncEventDelayed( |
606 const BackgroundSyncRegistrationOptions& sync_options) { | 607 const BackgroundSyncRegistrationOptions& sync_options) { |
607 int sync_events_called = sync_events_called_; | 608 int sync_events_called = sync_events_called_; |
608 EXPECT_TRUE(sync_fired_callback_.is_null()); | 609 EXPECT_TRUE(sync_fired_callback_.is_null()); |
609 | 610 |
610 EXPECT_TRUE(Register(sync_options)); | 611 EXPECT_TRUE(Register(sync_options)); |
611 | 612 |
612 EXPECT_EQ(sync_events_called + 1, sync_events_called_); | 613 EXPECT_EQ(sync_events_called + 1, sync_events_called_); |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 TEST_F(BackgroundSyncManagerTest, EmptyTagSupported) { | 1028 TEST_F(BackgroundSyncManagerTest, EmptyTagSupported) { |
1028 sync_options_1_.tag = "a"; | 1029 sync_options_1_.tag = "a"; |
1029 EXPECT_TRUE(Register(sync_options_1_)); | 1030 EXPECT_TRUE(Register(sync_options_1_)); |
1030 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1031 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1031 EXPECT_TRUE( | 1032 EXPECT_TRUE( |
1032 sync_options_1_.Equals(*callback_registration_handle_->options())); | 1033 sync_options_1_.Equals(*callback_registration_handle_->options())); |
1033 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); | 1034 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
1034 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1035 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1035 } | 1036 } |
1036 | 1037 |
1037 TEST_F(BackgroundSyncManagerTest, OneShotFiresOnRegistration) { | 1038 TEST_F(BackgroundSyncManagerTest, FiresOnRegistration) { |
1038 InitSyncEventTest(); | 1039 InitSyncEventTest(); |
1039 | 1040 |
1040 EXPECT_TRUE(Register(sync_options_1_)); | 1041 EXPECT_TRUE(Register(sync_options_1_)); |
1041 EXPECT_EQ(1, sync_events_called_); | 1042 EXPECT_EQ(1, sync_events_called_); |
1042 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1043 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1043 } | 1044 } |
1044 | 1045 |
1045 TEST_F(BackgroundSyncManagerTest, NotifyWhenFinishedAfterEventSuccess) { | 1046 TEST_F(BackgroundSyncManagerTest, NotifyWhenFinishedAfterEventSuccess) { |
1046 InitSyncEventTest(); | 1047 InitSyncEventTest(); |
1047 | 1048 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 EXPECT_FALSE(Register(sync_options_2_)); | 1353 EXPECT_FALSE(Register(sync_options_2_)); |
1353 EXPECT_FALSE(callback_finished_called_); | 1354 EXPECT_FALSE(callback_finished_called_); |
1354 test_background_sync_manager_->set_corrupt_backend(false); | 1355 test_background_sync_manager_->set_corrupt_backend(false); |
1355 | 1356 |
1356 // Successfully complete the firing event. | 1357 // Successfully complete the firing event. |
1357 sync_fired_callback_.Run(SERVICE_WORKER_OK); | 1358 sync_fired_callback_.Run(SERVICE_WORKER_OK); |
1358 base::RunLoop().RunUntilIdle(); | 1359 base::RunLoop().RunUntilIdle(); |
1359 EXPECT_EQ(BackgroundSyncState::SUCCESS, FinishedState()); | 1360 EXPECT_EQ(BackgroundSyncState::SUCCESS, FinishedState()); |
1360 } | 1361 } |
1361 | 1362 |
1362 TEST_F(BackgroundSyncManagerTest, OneShotFiresOnNetworkChange) { | 1363 TEST_F(BackgroundSyncManagerTest, FiresOnNetworkChange) { |
1363 InitSyncEventTest(); | 1364 InitSyncEventTest(); |
1364 | 1365 |
1365 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); | 1366 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); |
1366 EXPECT_TRUE(Register(sync_options_1_)); | 1367 EXPECT_TRUE(Register(sync_options_1_)); |
1367 EXPECT_EQ(0, sync_events_called_); | 1368 EXPECT_EQ(0, sync_events_called_); |
1368 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1369 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1369 | 1370 |
1370 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); | 1371 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); |
1371 base::RunLoop().RunUntilIdle(); | 1372 base::RunLoop().RunUntilIdle(); |
1372 EXPECT_EQ(1, sync_events_called_); | 1373 EXPECT_EQ(1, sync_events_called_); |
1373 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1374 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1374 } | 1375 } |
1375 | 1376 |
1376 TEST_F(BackgroundSyncManagerTest, MultipleOneShotsFireOnNetworkChange) { | 1377 TEST_F(BackgroundSyncManagerTest, MultipleRegistrationsFireOnNetworkChange) { |
1377 InitSyncEventTest(); | 1378 InitSyncEventTest(); |
1378 | 1379 |
1379 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); | 1380 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); |
1380 EXPECT_TRUE(Register(sync_options_1_)); | 1381 EXPECT_TRUE(Register(sync_options_1_)); |
1381 EXPECT_TRUE(Register(sync_options_2_)); | 1382 EXPECT_TRUE(Register(sync_options_2_)); |
1382 EXPECT_EQ(0, sync_events_called_); | 1383 EXPECT_EQ(0, sync_events_called_); |
1383 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1384 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1384 EXPECT_TRUE(GetRegistration(sync_options_2_)); | 1385 EXPECT_TRUE(GetRegistration(sync_options_2_)); |
1385 | 1386 |
1386 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); | 1387 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); |
1387 | 1388 |
1388 EXPECT_EQ(2, sync_events_called_); | 1389 EXPECT_EQ(2, sync_events_called_); |
1389 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1390 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1390 EXPECT_FALSE(GetRegistration(sync_options_2_)); | 1391 EXPECT_FALSE(GetRegistration(sync_options_2_)); |
1391 } | 1392 } |
1392 | 1393 |
1393 TEST_F(BackgroundSyncManagerTest, OneShotFiresOnManagerRestart) { | 1394 TEST_F(BackgroundSyncManagerTest, FiresOnManagerRestart) { |
1394 InitSyncEventTest(); | 1395 InitSyncEventTest(); |
1395 | 1396 |
1396 // Initially the event won't run because there is no network. | 1397 // Initially the event won't run because there is no network. |
1397 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); | 1398 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); |
1398 EXPECT_TRUE(Register(sync_options_1_)); | 1399 EXPECT_TRUE(Register(sync_options_1_)); |
1399 EXPECT_EQ(0, sync_events_called_); | 1400 EXPECT_EQ(0, sync_events_called_); |
1400 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1401 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1401 | 1402 |
1402 // Simulate closing the browser. | 1403 // Simulate closing the browser. |
1403 DeleteBackgroundSyncManager(); | 1404 DeleteBackgroundSyncManager(); |
1404 | 1405 |
1405 // The next time the manager is started, the network is good. | 1406 // The next time the manager is started, the network is good. |
1406 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); | 1407 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); |
1407 SetupBackgroundSyncManager(); | 1408 SetupBackgroundSyncManager(); |
1408 InitSyncEventTest(); | 1409 InitSyncEventTest(); |
1409 | 1410 |
1410 // The event should have fired. | 1411 // The event should have fired. |
1411 EXPECT_EQ(1, sync_events_called_); | 1412 EXPECT_EQ(1, sync_events_called_); |
1412 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1413 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1413 } | 1414 } |
1414 | 1415 |
1415 TEST_F(BackgroundSyncManagerTest, FailedOneShotShouldBeRemoved) { | 1416 TEST_F(BackgroundSyncManagerTest, FailedRegistrationShouldBeRemoved) { |
1416 InitFailedSyncEventTest(); | 1417 InitFailedSyncEventTest(); |
1417 | 1418 |
1418 EXPECT_TRUE(Register(sync_options_1_)); | 1419 EXPECT_TRUE(Register(sync_options_1_)); |
1419 EXPECT_EQ(1, sync_events_called_); | 1420 EXPECT_EQ(1, sync_events_called_); |
1420 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1421 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1421 } | 1422 } |
1422 | 1423 |
1423 TEST_F(BackgroundSyncManagerTest, FailedOneShotReregisteredAndFires) { | 1424 TEST_F(BackgroundSyncManagerTest, FailedRegistrationReregisteredAndFires) { |
1424 InitFailedSyncEventTest(); | 1425 InitFailedSyncEventTest(); |
1425 | 1426 |
1426 // The initial sync event fails. | 1427 // The initial sync event fails. |
1427 EXPECT_TRUE(Register(sync_options_1_)); | 1428 EXPECT_TRUE(Register(sync_options_1_)); |
1428 EXPECT_EQ(1, sync_events_called_); | 1429 EXPECT_EQ(1, sync_events_called_); |
1429 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1430 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1430 | 1431 |
1431 InitSyncEventTest(); | 1432 InitSyncEventTest(); |
1432 | 1433 |
1433 // Reregistering should cause the sync event to fire again, this time | 1434 // Reregistering should cause the sync event to fire again, this time |
1434 // succeeding. | 1435 // succeeding. |
1435 EXPECT_TRUE(Register(sync_options_1_)); | 1436 EXPECT_TRUE(Register(sync_options_1_)); |
1436 EXPECT_EQ(2, sync_events_called_); | 1437 EXPECT_EQ(2, sync_events_called_); |
1437 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1438 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1438 } | 1439 } |
1439 | 1440 |
1440 TEST_F(BackgroundSyncManagerTest, DelayOneShotMidSync) { | 1441 TEST_F(BackgroundSyncManagerTest, DelayMidSync) { |
1441 InitDelayedSyncEventTest(); | 1442 InitDelayedSyncEventTest(); |
1442 | 1443 |
1443 RegisterAndVerifySyncEventDelayed(sync_options_1_); | 1444 RegisterAndVerifySyncEventDelayed(sync_options_1_); |
1444 | 1445 |
1445 // Finish firing the event and verify that the registration is removed. | 1446 // Finish firing the event and verify that the registration is removed. |
1446 sync_fired_callback_.Run(SERVICE_WORKER_OK); | 1447 sync_fired_callback_.Run(SERVICE_WORKER_OK); |
1447 base::RunLoop().RunUntilIdle(); | 1448 base::RunLoop().RunUntilIdle(); |
1448 EXPECT_EQ(1, sync_events_called_); | 1449 EXPECT_EQ(1, sync_events_called_); |
1449 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1450 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1450 } | 1451 } |
1451 | 1452 |
1452 TEST_F(BackgroundSyncManagerTest, OverwriteRegistrationMidSync) { | 1453 TEST_F(BackgroundSyncManagerTest, OverwriteRegistrationMidSync) { |
1453 InitDelayedSyncEventTest(); | 1454 InitDelayedSyncEventTest(); |
1454 | 1455 |
1455 sync_options_1_.network_state = NETWORK_STATE_ANY; | 1456 sync_options_1_.network_state = NETWORK_STATE_ANY; |
1456 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); | 1457 SetNetwork(net::NetworkChangeNotifier::CONNECTION_NONE); |
1457 | 1458 |
1458 RegisterAndVerifySyncEventDelayed(sync_options_1_); | 1459 RegisterAndVerifySyncEventDelayed(sync_options_1_); |
1459 | 1460 |
1460 // Don't delay the next sync. | 1461 // Don't delay the next sync. |
1461 test_background_sync_manager_->set_one_shot_callback( | 1462 test_background_sync_manager_->set_dispatch_sync_callback( |
1462 base::Bind(OneShotSuccessfulCallback, &sync_events_called_)); | 1463 base::Bind(DispatchSyncSuccessfulCallback, &sync_events_called_)); |
1463 | 1464 |
1464 // Register a different sync event with the same tag, overwriting the first. | 1465 // Register a different sync event with the same tag, overwriting the first. |
1465 sync_options_1_.network_state = NETWORK_STATE_ONLINE; | 1466 sync_options_1_.network_state = NETWORK_STATE_ONLINE; |
1466 EXPECT_TRUE(Register(sync_options_1_)); | 1467 EXPECT_TRUE(Register(sync_options_1_)); |
1467 | 1468 |
1468 // The new sync event won't run as the network requirements aren't met. | 1469 // The new sync event won't run as the network requirements aren't met. |
1469 EXPECT_EQ(1, sync_events_called_); | 1470 EXPECT_EQ(1, sync_events_called_); |
1470 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1471 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1471 | 1472 |
1472 // Finish the first event, note that the second is still registered. | 1473 // Finish the first event, note that the second is still registered. |
1473 sync_fired_callback_.Run(SERVICE_WORKER_OK); | 1474 sync_fired_callback_.Run(SERVICE_WORKER_OK); |
1474 EXPECT_EQ(1, sync_events_called_); | 1475 EXPECT_EQ(1, sync_events_called_); |
1475 EXPECT_TRUE(GetRegistration(sync_options_1_)); | 1476 EXPECT_TRUE(GetRegistration(sync_options_1_)); |
1476 | 1477 |
1477 // Change the network and the second should run. | 1478 // Change the network and the second should run. |
1478 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); | 1479 SetNetwork(net::NetworkChangeNotifier::CONNECTION_WIFI); |
1479 base::RunLoop().RunUntilIdle(); | 1480 base::RunLoop().RunUntilIdle(); |
1480 EXPECT_EQ(2, sync_events_called_); | 1481 EXPECT_EQ(2, sync_events_called_); |
1481 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1482 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1482 } | 1483 } |
1483 | 1484 |
1484 TEST_F(BackgroundSyncManagerTest, UnregisterOneShotMidSync) { | 1485 TEST_F(BackgroundSyncManagerTest, UnregisterMidSync) { |
1485 InitDelayedSyncEventTest(); | 1486 InitDelayedSyncEventTest(); |
1486 | 1487 |
1487 RegisterAndVerifySyncEventDelayed(sync_options_1_); | 1488 RegisterAndVerifySyncEventDelayed(sync_options_1_); |
1488 | 1489 |
1489 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); | 1490 EXPECT_TRUE(Unregister(callback_registration_handle_.get())); |
1490 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1491 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1491 | 1492 |
1492 sync_fired_callback_.Run(SERVICE_WORKER_OK); | 1493 sync_fired_callback_.Run(SERVICE_WORKER_OK); |
1493 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1494 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1494 } | 1495 } |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1854 // Run it again. | 1855 // Run it again. |
1855 test_clock_->Advance(test_background_sync_manager_->delayed_task_delta()); | 1856 test_clock_->Advance(test_background_sync_manager_->delayed_task_delta()); |
1856 test_background_sync_manager_->delayed_task().Run(); | 1857 test_background_sync_manager_->delayed_task().Run(); |
1857 base::RunLoop().RunUntilIdle(); | 1858 base::RunLoop().RunUntilIdle(); |
1858 EXPECT_FALSE(GetRegistration(sync_options_1_)); | 1859 EXPECT_FALSE(GetRegistration(sync_options_1_)); |
1859 EXPECT_EQ(BackgroundSyncEventLastChance::IS_LAST_CHANCE, | 1860 EXPECT_EQ(BackgroundSyncEventLastChance::IS_LAST_CHANCE, |
1860 test_background_sync_manager_->last_chance()); | 1861 test_background_sync_manager_->last_chance()); |
1861 } | 1862 } |
1862 | 1863 |
1863 } // namespace content | 1864 } // namespace content |
OLD | NEW |