Chromium Code Reviews| Index: chrome/browser/policy/cloud_policy_controller_unittest.cc |
| diff --git a/chrome/browser/policy/cloud_policy_controller_unittest.cc b/chrome/browser/policy/cloud_policy_controller_unittest.cc |
| index faedef328a52e3879284cd9abe2e0cd704785c18..f1c247f68a63451a98fb9b49094ceb97d3ad4940 100644 |
| --- a/chrome/browser/policy/cloud_policy_controller_unittest.cc |
| +++ b/chrome/browser/policy/cloud_policy_controller_unittest.cc |
| @@ -4,6 +4,8 @@ |
| #include "chrome/browser/policy/cloud_policy_controller.h" |
| +#include "base/bind.h" |
| +#include "base/callback.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/message_loop.h" |
| #include "base/scoped_temp_dir.h" |
| @@ -48,7 +50,8 @@ class MockDeviceTokenFetcher : public DeviceTokenFetcher { |
| class CloudPolicyControllerTest : public testing::Test { |
| public: |
| CloudPolicyControllerTest() |
| - : ui_thread_(BrowserThread::UI, &loop_), |
| + : ready_callback_was_invoked_(false), |
| + ui_thread_(BrowserThread::UI, &loop_), |
| file_thread_(BrowserThread::FILE, &loop_) { |
| em::PolicyData signed_response; |
| em::CloudPolicySettings settings; |
| @@ -74,7 +77,8 @@ class CloudPolicyControllerTest : public testing::Test { |
| ASSERT_TRUE(temp_user_data_dir_.CreateUniqueTempDir()); |
| cache_.reset(new UserPolicyCache( |
| temp_user_data_dir_.path().AppendASCII("CloudPolicyControllerTest"), |
| - false /* wait_for_policy_fetch */)); |
| + false, /* wait_for_policy_fetch */ |
| + base::Closure() /* ready_callback */)); |
| token_fetcher_.reset(new MockDeviceTokenFetcher(cache_.get())); |
| EXPECT_CALL(service_, StartJob(_)).Times(AnyNumber()); |
| data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies()); |
| @@ -92,15 +96,19 @@ class CloudPolicyControllerTest : public testing::Test { |
| } |
| void CreateNewWaitingCache() { |
| + ready_callback_was_invoked_ = false; |
| cache_.reset(new UserPolicyCache( |
| temp_user_data_dir_.path().AppendASCII("CloudPolicyControllerTest"), |
| - true /* wait_for_policy_fetch */)); |
| + true, // wait_for_policy_fetch |
| + base::Bind(&CloudPolicyControllerTest::ReadyCallback, |
| + base::Unretained(this)))); |
| // Make this cache's disk cache ready, but have it still waiting for a |
| // policy fetch. |
| cache_->Load(); |
| loop_.RunAllPending(); |
| ASSERT_TRUE(cache_->last_policy_refresh_time().is_null()); |
| ASSERT_FALSE(cache_->IsReady()); |
| + ASSERT_FALSE(ready_callback_was_invoked_); |
| } |
| void ExpectHasSpdyPolicy() { |
| @@ -109,6 +117,10 @@ class CloudPolicyControllerTest : public testing::Test { |
| cache_->policy()->GetValue(key::kDisableSpdy))); |
| } |
| + void ReadyCallback() { |
|
Mattias Nissler (ping if slow)
2012/02/16 10:24:11
Suggestion: You can actually declare this as a MOC
|
| + ready_callback_was_invoked_ = true; |
| + } |
| + |
| protected: |
| scoped_ptr<CloudPolicyCacheBase> cache_; |
| scoped_ptr<CloudPolicyController> controller_; |
| @@ -119,6 +131,7 @@ class CloudPolicyControllerTest : public testing::Test { |
| ScopedTempDir temp_user_data_dir_; |
| MessageLoop loop_; |
| em::DeviceManagementResponse spdy_policy_response_; |
| + bool ready_callback_was_invoked_; |
| private: |
| content::TestBrowserThread ui_thread_; |
| @@ -276,10 +289,12 @@ TEST_F(CloudPolicyControllerTest, DontSetFetchingDoneWithoutTokens) { |
| // This means the controller is still waiting for an oauth token fetch. |
| loop_.RunAllPending(); |
| EXPECT_FALSE(cache_->IsReady()); |
| + EXPECT_FALSE(ready_callback_was_invoked_); |
| controller_->OnDeviceTokenChanged(); |
| loop_.RunAllPending(); |
| EXPECT_FALSE(cache_->IsReady()); |
| + EXPECT_FALSE(ready_callback_was_invoked_); |
| } |
| TEST_F(CloudPolicyControllerTest, RefreshPoliciesWithoutMaterial) { |
| @@ -287,12 +302,14 @@ TEST_F(CloudPolicyControllerTest, RefreshPoliciesWithoutMaterial) { |
| CreateNewController(); |
| loop_.RunAllPending(); |
| EXPECT_FALSE(cache_->IsReady()); |
| + EXPECT_FALSE(ready_callback_was_invoked_); |
| // Same scenario as the last test, but the RefreshPolicies call must always |
| // notify the cache. |
| controller_->RefreshPolicies(false); |
| loop_.RunAllPending(); |
| EXPECT_TRUE(cache_->IsReady()); |
| + EXPECT_TRUE(ready_callback_was_invoked_); |
| } |
| TEST_F(CloudPolicyControllerTest, DontSetFetchingDoneWithoutFetching) { |
| @@ -304,6 +321,7 @@ TEST_F(CloudPolicyControllerTest, DontSetFetchingDoneWithoutFetching) { |
| // This means the controller has an oauth token and should fetch the next |
| // token, which is the dm server register token. |
| EXPECT_FALSE(cache_->IsReady()); |
| + EXPECT_FALSE(ready_callback_was_invoked_); |
| } |
| TEST_F(CloudPolicyControllerTest, SetFetchingDoneForUnmanagedUsers) { |
| @@ -314,6 +332,7 @@ TEST_F(CloudPolicyControllerTest, SetFetchingDoneForUnmanagedUsers) { |
| loop_.RunAllPending(); |
| // User is in an unmanaged domain. |
| EXPECT_TRUE(cache_->IsReady()); |
| + EXPECT_TRUE(ready_callback_was_invoked_); |
| EXPECT_TRUE(cache_->last_policy_refresh_time().is_null()); |
| } |
| @@ -328,6 +347,7 @@ TEST_F(CloudPolicyControllerTest, SetFetchingDoneAfterPolicyFetch) { |
| CreateNewController(); |
| loop_.RunAllPending(); |
| EXPECT_TRUE(cache_->IsReady()); |
| + EXPECT_TRUE(ready_callback_was_invoked_); |
| EXPECT_FALSE(cache_->last_policy_refresh_time().is_null()); |
| } |
| @@ -342,6 +362,7 @@ TEST_F(CloudPolicyControllerTest, SetFetchingDoneAfterPolicyFetchFails) { |
| CreateNewController(); |
| loop_.RunAllPending(); |
| EXPECT_TRUE(cache_->IsReady()); |
| + EXPECT_TRUE(ready_callback_was_invoked_); |
| EXPECT_TRUE(cache_->last_policy_refresh_time().is_null()); |
| } |