Index: chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc |
diff --git a/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc b/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc |
index 370d4a716a6e46cbff2cbfbda76cad17c9b967eb..071658f6c89c58642c933ae053c847b271076cfc 100644 |
--- a/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc |
+++ b/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc |
@@ -20,6 +20,7 @@ |
#include "chrome/test/base/testing_profile_manager.h" |
#include "chromeos/cryptohome/system_salt_getter.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
+#include "components/invalidation/fake_invalidation_handler.h" |
#include "components/invalidation/invalidation_service.h" |
#include "components/invalidation/invalidator_state.h" |
#include "components/invalidation/profile_invalidation_provider.h" |
@@ -30,12 +31,8 @@ |
#include "content/public/browser/notification_details.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-using testing::Mock; |
-using testing::StrictMock; |
- |
namespace policy { |
namespace { |
@@ -56,16 +53,29 @@ KeyedService* BuildProfileInvalidationProvider( |
} // namespace |
-class MockConsumer : public AffiliatedInvalidationServiceProvider::Consumer { |
+// A simple AffiliatedInvalidationServiceProvider::Consumer that registers a |
+// syncer::FakeInvalidationHandler with the invalidation::InvalidationService |
+// that is currently being made available. |
+class FakeConsumer : public AffiliatedInvalidationServiceProvider::Consumer { |
public: |
- MockConsumer(); |
- ~MockConsumer() override; |
+ explicit FakeConsumer(AffiliatedInvalidationServiceProviderImpl* provider); |
+ ~FakeConsumer() override; |
+ |
+ // AffiliatedInvalidationServiceProvider::Consumer: |
+ void OnInvalidationServiceSet( |
+ invalidation::InvalidationService* invalidation_service) override; |
- MOCK_METHOD1(OnInvalidationServiceSet, |
- void(invalidation::InvalidationService*)); |
+ int GetAndClearInvalidationServiceSetCount(); |
+ const invalidation::InvalidationService* GetInvalidationService() const; |
private: |
- DISALLOW_COPY_AND_ASSIGN(MockConsumer); |
+ AffiliatedInvalidationServiceProviderImpl* provider_; |
+ syncer::FakeInvalidationHandler invalidation_handler_; |
+ |
+ int invalidation_service_set_count_ = 0; |
+ invalidation::InvalidationService* invalidation_service_ = nullptr; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FakeConsumer); |
}; |
class AffiliatedInvalidationServiceProviderImplTest : public testing::Test { |
@@ -73,8 +83,8 @@ class AffiliatedInvalidationServiceProviderImplTest : public testing::Test { |
AffiliatedInvalidationServiceProviderImplTest(); |
// testing::Test: |
- virtual void SetUp() override; |
- virtual void TearDown() override; |
+ void SetUp() override; |
+ void TearDown() override; |
// Ownership is not passed. The Profile is owned by the global ProfileManager. |
Profile* LogInAndReturnProfile(const std::string& user_id); |
@@ -106,7 +116,7 @@ class AffiliatedInvalidationServiceProviderImplTest : public testing::Test { |
protected: |
scoped_ptr<AffiliatedInvalidationServiceProviderImpl> provider_; |
- StrictMock<MockConsumer> consumer_; |
+ scoped_ptr<FakeConsumer> consumer_; |
invalidation::TiclInvalidationService* device_invalidation_service_; |
invalidation::FakeInvalidationService* profile_invalidation_service_; |
@@ -121,10 +131,51 @@ class AffiliatedInvalidationServiceProviderImplTest : public testing::Test { |
TestingProfileManager profile_manager_; |
}; |
-MockConsumer::MockConsumer() { |
+FakeConsumer::FakeConsumer(AffiliatedInvalidationServiceProviderImpl* provider) |
+ : provider_(provider) { |
+ provider_->RegisterConsumer(this); |
+} |
+ |
+FakeConsumer::~FakeConsumer() { |
+ if (invalidation_service_) { |
+ invalidation_service_->UnregisterInvalidationHandler( |
+ &invalidation_handler_); |
+ } |
+ provider_->UnregisterConsumer(this); |
+ |
+ EXPECT_EQ(0, invalidation_service_set_count_); |
} |
-MockConsumer::~MockConsumer() { |
+void FakeConsumer::OnInvalidationServiceSet( |
+ invalidation::InvalidationService* invalidation_service) { |
+ ++invalidation_service_set_count_; |
+ |
+ if (invalidation_service_) { |
+ invalidation_service_->UnregisterInvalidationHandler( |
+ &invalidation_handler_); |
+ } |
+ |
+ invalidation_service_ = invalidation_service; |
+ |
+ if (invalidation_service_) { |
+ // Regression test for http://crbug.com/455504: The |invalidation_service| |
+ // was sometimes destroyed without notifying consumers and giving them a |
+ // chance to unregister their invalidation handlers. Register an |
+ // invalidation handler so that |invalidation_service| CHECK()s in its |
+ // destructor if this regresses. |
+ invalidation_service_->RegisterInvalidationHandler(&invalidation_handler_); |
+ } |
+} |
+ |
+int FakeConsumer::GetAndClearInvalidationServiceSetCount() { |
+ const int invalidation_service_set_count = invalidation_service_set_count_; |
+ invalidation_service_set_count_ = 0; |
+ return invalidation_service_set_count; |
+} |
+ |
+const invalidation::InvalidationService* |
+FakeConsumer::GetInvalidationService() const { |
+ return invalidation_service_; |
} |
AffiliatedInvalidationServiceProviderImplTest:: |
@@ -157,6 +208,7 @@ void AffiliatedInvalidationServiceProviderImplTest::SetUp() { |
} |
void AffiliatedInvalidationServiceProviderImplTest::TearDown() { |
+ consumer_.reset(); |
provider_->Shutdown(); |
provider_.reset(); |
@@ -180,12 +232,9 @@ Profile* AffiliatedInvalidationServiceProviderImplTest::LogInAndReturnProfile( |
void AffiliatedInvalidationServiceProviderImplTest:: |
LogInAsAffiliatedUserAndConnectInvalidationService() { |
- Mock::VerifyAndClearExpectations(&consumer_); |
- |
// Log in as an affiliated user. |
Profile* profile = LogInAndReturnProfile(kAffiliatedUserID1); |
EXPECT_TRUE(profile); |
- Mock::VerifyAndClearExpectations(&consumer_); |
// Verify that a per-profile invalidation service has been created. |
profile_invalidation_service_ = |
@@ -197,22 +246,18 @@ void AffiliatedInvalidationServiceProviderImplTest:: |
// Indicate that the per-profile invalidation service has connected. Verify |
// that the consumer is informed about this. |
- EXPECT_CALL(consumer_, |
- OnInvalidationServiceSet(profile_invalidation_service_)).Times(1); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
profile_invalidation_service_->SetInvalidatorState( |
syncer::INVALIDATIONS_ENABLED); |
- Mock::VerifyAndClearExpectations(&consumer_); |
+ EXPECT_EQ(1, consumer_->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(profile_invalidation_service_, consumer_->GetInvalidationService()); |
// Verify that the device-global invalidation service has been destroyed. |
EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest()); |
- |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
void AffiliatedInvalidationServiceProviderImplTest:: |
LogInAsUnaffiliatedUserAndConnectInvalidationService() { |
- Mock::VerifyAndClearExpectations(&consumer_); |
- |
// Log in as an unaffiliated user. |
Profile* profile = LogInAndReturnProfile(kUnaffiliatedUserID); |
EXPECT_TRUE(profile); |
@@ -229,17 +274,14 @@ void AffiliatedInvalidationServiceProviderImplTest:: |
// that the consumer is not called back. |
profile_invalidation_service_->SetInvalidatorState( |
syncer::INVALIDATIONS_ENABLED); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
// Verify that the device-global invalidation service still exists. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
- |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
void AffiliatedInvalidationServiceProviderImplTest:: |
ConnectDeviceGlobalInvalidationService() { |
- Mock::VerifyAndClearExpectations(&consumer_); |
- |
// Verify that a device-global invalidation service has been created. |
device_invalidation_service_ = |
provider_->GetDeviceInvalidationServiceForTest(); |
@@ -247,30 +289,27 @@ void AffiliatedInvalidationServiceProviderImplTest:: |
// Indicate that the device-global invalidation service has connected. Verify |
// that the consumer is informed about this. |
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(device_invalidation_service_)) |
- .Times(1); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
device_invalidation_service_->OnInvalidatorStateChange( |
syncer::INVALIDATIONS_ENABLED); |
- |
- Mock::VerifyAndClearExpectations(&consumer_); |
+ EXPECT_EQ(1, consumer_->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(device_invalidation_service_, consumer_->GetInvalidationService()); |
} |
void AffiliatedInvalidationServiceProviderImplTest:: |
DisconnectPerProfileInvalidationService() { |
- Mock::VerifyAndClearExpectations(&consumer_); |
- |
ASSERT_TRUE(profile_invalidation_service_); |
// Indicate that the per-profile invalidation service has disconnected. Verify |
// that the consumer is informed about this. |
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(nullptr)).Times(1); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
profile_invalidation_service_->SetInvalidatorState( |
syncer::INVALIDATION_CREDENTIALS_REJECTED); |
+ EXPECT_EQ(1, consumer_->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(nullptr, consumer_->GetInvalidationService()); |
// Verify that a device-global invalidation service has been created. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
- |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
invalidation::FakeInvalidationService* |
@@ -301,6 +340,16 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, NoConsumers) { |
EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest()); |
} |
+// Verifies that when no connected invalidation service is available for use, |
+// none is made available to consumers. |
+TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
+ NoInvalidationServiceAvailable) { |
+ // Register a consumer. Verify that the consumer is not called back |
+ // immediately as no connected invalidation service exists yet. |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
+} |
+ |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
// Verifies that when no per-profile invalidation service belonging to an |
// affiliated user is available, a device-global invalidation service is |
@@ -308,9 +357,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, NoConsumers) { |
// connects, it is made available to the consumer. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
UseDeviceInvalidationService) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Indicate that the device-global invalidation service connected. Verify that |
// that the consumer is informed about this. |
@@ -318,17 +365,14 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// Indicate that the device-global invalidation service has disconnected. |
// Verify that the consumer is informed about this. |
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(nullptr)).Times(1); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
device_invalidation_service_->OnInvalidatorStateChange( |
syncer::INVALIDATION_CREDENTIALS_REJECTED); |
- Mock::VerifyAndClearExpectations(&consumer_); |
+ EXPECT_EQ(1, consumer_->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(nullptr, consumer_->GetInvalidationService()); |
// Verify that the device-global invalidation service still exists. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -336,9 +380,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// affiliated user connects, it is made available to the consumer. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
UseAffiliatedProfileInvalidationService) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Verify that a device-global invalidation service has been created. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
@@ -353,10 +395,6 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// disconnected. Verify that the consumer is informed about this and a |
// device-global invalidation service is created. |
DisconnectPerProfileInvalidationService(); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -364,9 +402,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// unaffiliated user connects, it is ignored. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
DoNotUseUnaffiliatedProfileInvalidationService) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Verify that a device-global invalidation service has been created. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
@@ -376,10 +412,6 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// service is ignored and the device-global invalidation service is not |
// destroyed. |
LogInAsUnaffiliatedUserAndConnectInvalidationService(); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -389,9 +421,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// consumer instead and the device-global invalidation service is destroyed. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
SwitchToAffiliatedProfileInvalidationService) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Indicate that the device-global invalidation service connected. Verify that |
// that the consumer is informed about this. |
@@ -402,10 +432,6 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// made available to the |consumer_| and the device-global invalidation |
// service is destroyed. |
LogInAsAffiliatedUserAndConnectInvalidationService(); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -416,9 +442,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// consumer. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
DoNotSwitchToUnaffiliatedProfileInvalidationService) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Indicate that the device-global invalidation service connected. Verify that |
// that the consumer is informed about this. |
@@ -429,10 +453,6 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// service is ignored and the device-global invalidation service is not |
// destroyed. |
LogInAsUnaffiliatedUserAndConnectInvalidationService(); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -443,9 +463,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// service connects, it is made available to the consumer. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
SwitchToDeviceInvalidationService) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Verify that a device-global invalidation service has been created. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
@@ -464,10 +482,6 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// Indicate that the device-global invalidation service connected. Verify that |
// that the consumer is informed about this. |
ConnectDeviceGlobalInvalidationService(); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -479,9 +493,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// to the second user is made available to the consumer instead. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
SwitchBetweenAffiliatedProfileInvalidationServices) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Verify that a device-global invalidation service has been created. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
@@ -509,25 +521,21 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// connected. Verify that the consumer is not called back. |
second_profile_invalidation_service->SetInvalidatorState( |
syncer::INVALIDATIONS_ENABLED); |
- Mock::VerifyAndClearExpectations(&consumer_); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
// Indicate that the first user's per-profile invalidation service has |
// disconnected. Verify that the consumer is informed that the second user's |
// per-profile invalidation service should be used instead of the first |
// user's. |
- EXPECT_CALL(consumer_, |
- OnInvalidationServiceSet(second_profile_invalidation_service)) |
- .Times(1); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
profile_invalidation_service_->SetInvalidatorState( |
syncer::INVALIDATION_CREDENTIALS_REJECTED); |
- Mock::VerifyAndClearExpectations(&consumer_); |
+ EXPECT_EQ(1, consumer_->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(second_profile_invalidation_service, |
+ consumer_->GetInvalidationService()); |
// Verify that the device-global invalidation service still does not exist. |
EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest()); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -539,9 +547,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, |
// consumer. Further verifies that when the second consumer also unregisters, |
// the device-global invalidation service is destroyed. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, MultipleConsumers) { |
- // Register a first consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Indicate that the device-global invalidation service connected. Verify that |
// that the consumer is informed about this. |
@@ -549,25 +555,22 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, MultipleConsumers) { |
// Register a second consumer. Verify that the consumer is called back |
// immediately as a connected invalidation service is available. |
- StrictMock<MockConsumer> second_consumer; |
- EXPECT_CALL(second_consumer, |
- OnInvalidationServiceSet(device_invalidation_service_)).Times(1); |
- provider_->RegisterConsumer(&second_consumer); |
- Mock::VerifyAndClearExpectations(&second_consumer); |
+ scoped_ptr<FakeConsumer> second_consumer(new FakeConsumer(provider_.get())); |
+ EXPECT_EQ(1, second_consumer->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(device_invalidation_service_, |
+ second_consumer->GetInvalidationService()); |
// Unregister the first consumer. |
- provider_->UnregisterConsumer(&consumer_); |
+ consumer_.reset(); |
// Verify that the device-global invalidation service still exists. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
// Unregister the second consumer. |
- provider_->UnregisterConsumer(&second_consumer); |
+ second_consumer.reset(); |
// Verify that the device-global invalidation service has been destroyed. |
EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest()); |
- Mock::VerifyAndClearExpectations(&consumer_); |
- Mock::VerifyAndClearExpectations(&second_consumer); |
} |
// A consumer is registered with the AffiliatedInvalidationServiceProviderImpl. |
@@ -579,9 +582,7 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, MultipleConsumers) { |
// service belonging to a second affiliated user that subsequently connects is |
// ignored. |
TEST_F(AffiliatedInvalidationServiceProviderImplTest, NoServiceAfterShutdown) { |
- // Register a consumer. Verify that the consumer is not called back |
- // immediately as no connected invalidation service exists yet. |
- provider_->RegisterConsumer(&consumer_); |
+ consumer_.reset(new FakeConsumer(provider_.get())); |
// Verify that a device-global invalidation service has been created. |
EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest()); |
@@ -594,9 +595,10 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, NoServiceAfterShutdown) { |
// Shut down the |provider_|. Verify that the |consumer_| is informed that no |
// invalidation service is available for use anymore. |
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(nullptr)).Times(1); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
provider_->Shutdown(); |
- Mock::VerifyAndClearExpectations(&consumer_); |
+ EXPECT_EQ(1, consumer_->GetAndClearInvalidationServiceSetCount()); |
+ EXPECT_EQ(nullptr, consumer_->GetInvalidationService()); |
// Verify that the device-global invalidation service still does not exist. |
EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest()); |
@@ -617,13 +619,10 @@ TEST_F(AffiliatedInvalidationServiceProviderImplTest, NoServiceAfterShutdown) { |
// connected. Verify that the consumer is not called back. |
second_profile_invalidation_service->SetInvalidatorState( |
syncer::INVALIDATIONS_ENABLED); |
+ EXPECT_EQ(0, consumer_->GetAndClearInvalidationServiceSetCount()); |
// Verify that the device-global invalidation service still does not exist. |
EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest()); |
- |
- // Unregister the consumer. |
- provider_->UnregisterConsumer(&consumer_); |
- Mock::VerifyAndClearExpectations(&consumer_); |
} |
} // namespace policy |