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

Unified Diff: chrome/browser/policy/cloud/cloud_policy_core_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, 3 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_core_unittest.cc
diff --git a/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc b/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc
index 07de17c0b3fe4e036b97e3484a4d21d29fc5b831..47492f53af8dc9401ee0a5e5728481f93c22b527 100644
--- a/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc
+++ b/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc
@@ -17,13 +17,47 @@
namespace policy {
-class CloudPolicyCoreTest : public testing::Test {
+class CloudPolicyCoreTest : public testing::Test,
+ public CloudPolicyCore::Observer {
protected:
CloudPolicyCoreTest()
: core_(PolicyNamespaceKey(dm_protocol::kChromeUserPolicyType,
std::string()),
- &store_) {
+ &store_),
+ core_connected_callback_count_(0),
+ refresh_scheduler_started_callback_count_(0),
+ core_disconnecting_callback_count_(0),
+ bad_callback_count_(0) {
chrome::RegisterLocalState(prefs_.registry());
+ core_.AddObserver(this);
+ }
+
+ virtual ~CloudPolicyCoreTest() {
+ core_.RemoveObserver(this);
+ }
+
+ virtual void OnCoreConnected(CloudPolicyCore* core) OVERRIDE {
+ // Make sure core is connected at callback time.
+ if (core_.client())
+ core_connected_callback_count_++;
+ else
+ bad_callback_count_++;
+ }
+
+ virtual void OnRefreshSchedulerStarted(CloudPolicyCore* core) OVERRIDE {
+ // Make sure refresh scheduler is started at callback time.
+ if (core_.refresh_scheduler())
+ refresh_scheduler_started_callback_count_++;
+ else
+ bad_callback_count_++;
+ }
+
+ virtual void OnCoreDisconnecting(CloudPolicyCore* core) OVERRIDE {
+ // Make sure core is still connected at callback time.
+ if (core_.client())
+ core_disconnecting_callback_count_++;
+ else
+ bad_callback_count_++;
}
base::MessageLoop loop_;
@@ -32,6 +66,11 @@ class CloudPolicyCoreTest : public testing::Test {
MockCloudPolicyStore store_;
CloudPolicyCore core_;
+ int core_connected_callback_count_;
+ int refresh_scheduler_started_callback_count_;
+ int core_disconnecting_callback_count_;
+ int bad_callback_count_;
+
private:
DISALLOW_COPY_AND_ASSIGN(CloudPolicyCoreTest);
};
@@ -47,18 +86,28 @@ TEST_F(CloudPolicyCoreTest, ConnectAndDisconnect) {
EXPECT_TRUE(core_.client());
EXPECT_TRUE(core_.service());
EXPECT_FALSE(core_.refresh_scheduler());
+ EXPECT_EQ(1, core_connected_callback_count_);
+ EXPECT_EQ(0, refresh_scheduler_started_callback_count_);
+ EXPECT_EQ(0, core_disconnecting_callback_count_);
// Disconnect() goes back to no client and service.
core_.Disconnect();
EXPECT_FALSE(core_.client());
EXPECT_FALSE(core_.service());
EXPECT_FALSE(core_.refresh_scheduler());
+ EXPECT_EQ(1, core_connected_callback_count_);
+ EXPECT_EQ(0, refresh_scheduler_started_callback_count_);
+ EXPECT_EQ(1, core_disconnecting_callback_count_);
// Calling Disconnect() twice doesn't do bad things.
core_.Disconnect();
EXPECT_FALSE(core_.client());
EXPECT_FALSE(core_.service());
EXPECT_FALSE(core_.refresh_scheduler());
+ EXPECT_EQ(1, core_connected_callback_count_);
+ EXPECT_EQ(0, refresh_scheduler_started_callback_count_);
+ EXPECT_EQ(1, core_disconnecting_callback_count_);
+ EXPECT_EQ(0, bad_callback_count_);
}
TEST_F(CloudPolicyCoreTest, RefreshScheduler) {
@@ -76,6 +125,11 @@ TEST_F(CloudPolicyCoreTest, RefreshScheduler) {
prefs_.ClearPref(prefs::kUserPolicyRefreshRate);
EXPECT_EQ(default_refresh_delay, core_.refresh_scheduler()->refresh_delay());
+
+ EXPECT_EQ(1, core_connected_callback_count_);
+ EXPECT_EQ(1, refresh_scheduler_started_callback_count_);
+ EXPECT_EQ(0, core_disconnecting_callback_count_);
+ EXPECT_EQ(0, bad_callback_count_);
}
} // namespace policy
« no previous file with comments | « chrome/browser/policy/cloud/cloud_policy_core.cc ('k') | chrome/browser/policy/cloud/cloud_policy_invalidator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698