Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2196)

Unified Diff: chrome/browser/policy/cloud/cloud_policy_manager_unittest.cc

Issue 23592017: Fix policy invalidator lifecycle bugs for Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698