| 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 |