Index: content/browser/background_sync/background_sync_service_impl_unittest.cc |
diff --git a/content/browser/background_sync/background_sync_service_impl_unittest.cc b/content/browser/background_sync/background_sync_service_impl_unittest.cc |
index 346bdd17c3646461f96130901ed8456fd3ebbf22..ca2e45ce4234418c58f00a7f6ccc91dd943ca1c8 100644 |
--- a/content/browser/background_sync/background_sync_service_impl_unittest.cc |
+++ b/content/browser/background_sync/background_sync_service_impl_unittest.cc |
@@ -59,6 +59,16 @@ void ErrorAndRegistrationCallback(bool* called, |
*out_registration = registration.Clone(); |
} |
+void ErrorAndStateCallback(bool* called, |
+ BackgroundSyncError* out_error, |
+ BackgroundSyncState* out_state, |
+ BackgroundSyncError error, |
+ BackgroundSyncState state) { |
+ *called = true; |
+ *out_error = error; |
+ *out_state = state; |
+} |
+ |
void ErrorCallback(bool* called, |
BackgroundSyncError* out_error, |
BackgroundSyncError error) { |
@@ -197,11 +207,11 @@ class BackgroundSyncServiceImplTest : public testing::Test { |
} |
void UnregisterOneShot( |
- SyncRegistrationPtr sync, |
+ int32 handle_id, |
const BackgroundSyncService::UnregisterCallback& callback) { |
service_impl_->Unregister( |
BackgroundSyncPeriodicity::BACKGROUND_SYNC_PERIODICITY_ONE_SHOT, |
- sync->handle_id, sw_registration_id_, callback); |
+ handle_id, sw_registration_id_, callback); |
base::RunLoop().RunUntilIdle(); |
} |
@@ -222,6 +232,13 @@ class BackgroundSyncServiceImplTest : public testing::Test { |
base::RunLoop().RunUntilIdle(); |
} |
+ void NotifyWhenDone( |
+ int32 handle_id, |
+ const BackgroundSyncService::NotifyWhenDoneCallback& callback) { |
+ service_impl_->NotifyWhenDone(handle_id, callback); |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ |
scoped_ptr<TestBrowserThreadBundle> thread_bundle_; |
scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
scoped_ptr<EmbeddedWorkerTestHelper> embedded_worker_helper_; |
@@ -292,7 +309,7 @@ TEST_F(BackgroundSyncServiceImplTest, Unregister) { |
BackgroundSyncError unregister_error; |
SyncRegistrationPtr reg; |
UnregisterOneShot( |
- default_sync_registration_.Clone(), |
+ default_sync_registration_->handle_id, |
base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
EXPECT_TRUE(unregister_called); |
EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NOT_ALLOWED, |
@@ -310,8 +327,9 @@ TEST_F(BackgroundSyncServiceImplTest, UnregisterWithRegisteredSync) { |
®ister_error, ®)); |
EXPECT_TRUE(register_called); |
EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, register_error); |
- UnregisterOneShot(reg.Pass(), base::Bind(&ErrorCallback, &unregister_called, |
- &unregister_error)); |
+ UnregisterOneShot( |
+ reg->handle_id, |
+ base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
EXPECT_TRUE(unregister_called); |
EXPECT_EQ(BackgroundSyncError::BACKGROUND_SYNC_ERROR_NONE, unregister_error); |
} |
@@ -379,4 +397,37 @@ TEST_F(BackgroundSyncServiceImplTest, GetRegistrationsWithRegisteredSync) { |
EXPECT_EQ(1UL, array_size); |
} |
+TEST_F(BackgroundSyncServiceImplTest, NotifyWhenDone) { |
+ // Register a sync event. |
+ bool register_called = false; |
+ BackgroundSyncError register_error; |
+ SyncRegistrationPtr reg; |
+ RegisterOneShot(default_sync_registration_.Clone(), |
+ base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
+ ®ister_error, ®)); |
+ EXPECT_TRUE(register_called); |
+ EXPECT_EQ(BACKGROUND_SYNC_ERROR_NONE, register_error); |
+ |
+ // Unregister it. |
+ bool unregister_called = false; |
+ BackgroundSyncError unregister_error; |
+ UnregisterOneShot( |
+ reg->handle_id, |
+ base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
+ EXPECT_TRUE(unregister_called); |
+ EXPECT_EQ(BACKGROUND_SYNC_ERROR_NONE, unregister_error); |
+ |
+ // Call NotifyWhenDone and verify that it calls back with unregistered. |
+ bool notify_done_called = false; |
+ BackgroundSyncError notify_done_error = BACKGROUND_SYNC_ERROR_NONE; |
+ BackgroundSyncState notify_done_sync_state = BACKGROUND_SYNC_STATE_SUCCESS; |
+ |
+ NotifyWhenDone(reg->handle_id, |
+ base::Bind(&ErrorAndStateCallback, ¬ify_done_called, |
+ ¬ify_done_error, ¬ify_done_sync_state)); |
+ EXPECT_TRUE(notify_done_called); |
+ EXPECT_EQ(BACKGROUND_SYNC_ERROR_NONE, notify_done_error); |
+ EXPECT_EQ(BACKGROUND_SYNC_STATE_UNREGISTERED, notify_done_sync_state); |
+} |
+ |
} // namespace content |