| Index: chrome/browser/policy/cloud/cloud_policy_manager_unittest.cc
|
| diff --git a/chrome/browser/policy/cloud/cloud_policy_manager_unittest.cc b/chrome/browser/policy/cloud/cloud_policy_manager_unittest.cc
|
| index 04bfdaf0ae1c6517261d7708b5a1b51d8b89daf9..6b599125a4a77db321f4fe30b7188bb068d5c1ef 100644
|
| --- a/chrome/browser/policy/cloud/cloud_policy_manager_unittest.cc
|
| +++ b/chrome/browser/policy/cloud/cloud_policy_manager_unittest.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/callback.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/test/test_simple_task_runner.h"
|
| #include "chrome/browser/invalidation/fake_invalidation_service.h"
|
| @@ -150,7 +151,8 @@ class TestCloudPolicyManager : public CloudPolicyManager {
|
| using CloudPolicyManager::store;
|
| using CloudPolicyManager::service;
|
| using CloudPolicyManager::CheckAndPublishPolicy;
|
| - using CloudPolicyManager::StartRefreshScheduler;
|
| + using CloudPolicyManager::StartInvalidator;
|
| + using CloudPolicyManager::StopInvalidator;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(TestCloudPolicyManager);
|
| @@ -187,7 +189,7 @@ class CloudPolicyManagerTest : public testing::Test {
|
| manager_->Shutdown();
|
| }
|
|
|
| - // Sets up for an invalidations test.
|
| + // Creates the invalidator object for an invalidations test.
|
| void CreateInvalidator() {
|
| // Add the invalidation registration info to the policy data.
|
| em::PolicyData* policy_data = new em::PolicyData(policy_.policy_data());
|
| @@ -199,11 +201,15 @@ class CloudPolicyManagerTest : public testing::Test {
|
| MockCloudPolicyClient* client = new MockCloudPolicyClient();
|
| EXPECT_CALL(*client, SetupRegistration(_, _));
|
| manager_->core()->Connect(scoped_ptr<CloudPolicyClient>(client));
|
| + manager_->core()->StartRefreshScheduler();
|
|
|
| // Create invalidation objects.
|
| task_runner_ = new base::TestSimpleTaskRunner();
|
| invalidation_service_.reset(new invalidation::FakeInvalidationService());
|
| invalidator_.reset(new CloudPolicyInvalidator(
|
| + base::Bind(
|
| + &CloudPolicyManagerTest::GetInvalidationService,
|
| + base::Unretained(this)),
|
| manager_.get(),
|
| manager_->core()->store(),
|
| task_runner_));
|
| @@ -213,13 +219,9 @@ class CloudPolicyManagerTest : public testing::Test {
|
| invalidator_->Shutdown();
|
| }
|
|
|
| - // Call EnableInvalidations on the manager.
|
| - void EnableInvalidations() {
|
| - manager_->EnableInvalidations(
|
| - base::Bind(
|
| - &CloudPolicyInvalidator::InitializeWithService,
|
| - base::Unretained(invalidator_.get()),
|
| - base::Unretained(invalidation_service_.get())));
|
| + // Get a pointer to the invalidation service.
|
| + invalidation::InvalidationService* GetInvalidationService() {
|
| + return invalidation_service_.get();
|
| }
|
|
|
| // Determine if the invalidator has registered with the invalidation service.
|
| @@ -401,25 +403,68 @@ TEST_F(CloudPolicyManagerTest, SignalOnError) {
|
| EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME));
|
| }
|
|
|
| -TEST_F(CloudPolicyManagerTest, EnableInvalidationsBeforeRefreshScheduler) {
|
| +TEST_F(CloudPolicyManagerTest, StartInvalidatorAfterSetInvalidator) {
|
| CreateInvalidator();
|
| + base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory(invalidator_.get());
|
| EXPECT_TRUE(IsInvalidatorUnregistered());
|
| - EnableInvalidations();
|
| + manager_->SetInvalidator(weak_factory.GetWeakPtr());
|
| EXPECT_TRUE(IsInvalidatorUnregistered());
|
| - manager_->StartRefreshScheduler();
|
| + manager_->StartInvalidator();
|
| EXPECT_TRUE(IsInvalidatorRegistered());
|
| ShutdownInvalidator();
|
| }
|
|
|
| -TEST_F(CloudPolicyManagerTest, EnableInvalidationsAfterRefreshScheduler) {
|
| +TEST_F(CloudPolicyManagerTest, StartInvalidatorBeforeSetInvalidator) {
|
| CreateInvalidator();
|
| + base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory(invalidator_.get());
|
| EXPECT_TRUE(IsInvalidatorUnregistered());
|
| - manager_->StartRefreshScheduler();
|
| + manager_->StartInvalidator();
|
| EXPECT_TRUE(IsInvalidatorUnregistered());
|
| - EnableInvalidations();
|
| + manager_->SetInvalidator(weak_factory.GetWeakPtr());
|
| EXPECT_TRUE(IsInvalidatorRegistered());
|
| ShutdownInvalidator();
|
| }
|
|
|
| +TEST_F(CloudPolicyManagerTest, StartAndStopInvalidatorBeforeSetInvalidator) {
|
| + CreateInvalidator();
|
| + base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory(invalidator_.get());
|
| + EXPECT_TRUE(IsInvalidatorUnregistered());
|
| + manager_->StartInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorUnregistered());
|
| + manager_->StopInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorUnregistered());
|
| + manager_->SetInvalidator(weak_factory.GetWeakPtr());
|
| + EXPECT_TRUE(IsInvalidatorUnregistered());
|
| + ShutdownInvalidator();
|
| +}
|
| +
|
| +TEST_F(CloudPolicyManagerTest, StopInvalidator) {
|
| + CreateInvalidator();
|
| + base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory(invalidator_.get());
|
| + manager_->SetInvalidator(weak_factory.GetWeakPtr());
|
| + manager_->StartInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorRegistered());
|
| + manager_->StopInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorUnregistered());
|
| + manager_->StartInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorRegistered());
|
| + ShutdownInvalidator();
|
| +}
|
| +
|
| +TEST_F(CloudPolicyManagerTest, InvalidateInvalidatorPointer) {
|
| + CreateInvalidator();
|
| + base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory(invalidator_.get());
|
| + manager_->SetInvalidator(weak_factory.GetWeakPtr());
|
| + manager_->StartInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorRegistered());
|
| + ShutdownInvalidator();
|
| + weak_factory.InvalidateWeakPtrs();
|
| + EXPECT_TRUE(IsInvalidatorRegistered());
|
| + manager_->StopInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorRegistered());
|
| + manager_->StartInvalidator();
|
| + EXPECT_TRUE(IsInvalidatorRegistered());
|
| +}
|
| +
|
| } // namespace
|
| } // namespace policy
|
|
|