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

Side by Side Diff: chrome/browser/policy/cloud_policy_manager.cc

Issue 11299305: Break CloudPolicyRefreshScheduler's dependency on PrefService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review feedback Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/policy/cloud_policy_manager.h" 5 #include "chrome/browser/policy/cloud_policy_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/policy/cloud_policy_refresh_scheduler.h" 10 #include "chrome/browser/policy/cloud_policy_refresh_scheduler.h"
11 #include "chrome/browser/policy/cloud_policy_service.h" 11 #include "chrome/browser/policy/cloud_policy_service.h"
12 #include "chrome/browser/policy/policy_bundle.h" 12 #include "chrome/browser/policy/policy_bundle.h"
13 #include "chrome/browser/policy/policy_map.h" 13 #include "chrome/browser/policy/policy_map.h"
14 #include "chrome/browser/prefs/pref_service.h"
14 15
15 namespace policy { 16 namespace policy {
16 17
17 CloudPolicyManager::CloudPolicyManager(CloudPolicyStore* store) 18 CloudPolicyManager::CloudPolicyManager(CloudPolicyStore* store)
18 : store_(store), 19 : store_(store),
19 waiting_for_policy_refresh_(false) { 20 waiting_for_policy_refresh_(false) {
20 store_->AddObserver(this); 21 store_->AddObserver(this);
21 22
22 // If the underlying store is already initialized, publish the loaded 23 // If the underlying store is already initialized, publish the loaded
23 // policy. Otherwise, request a load now. 24 // policy. Otherwise, request a load now.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 67
67 void CloudPolicyManager::InitializeService( 68 void CloudPolicyManager::InitializeService(
68 scoped_ptr<CloudPolicyClient> client) { 69 scoped_ptr<CloudPolicyClient> client) {
69 CHECK(!client_.get()); 70 CHECK(!client_.get());
70 CHECK(client.get()); 71 CHECK(client.get());
71 client_ = client.Pass(); 72 client_ = client.Pass();
72 service_.reset(new CloudPolicyService(client_.get(), store_)); 73 service_.reset(new CloudPolicyService(client_.get(), store_));
73 } 74 }
74 75
75 void CloudPolicyManager::ShutdownService() { 76 void CloudPolicyManager::ShutdownService() {
77 refresh_delay_.reset();
76 refresh_scheduler_.reset(); 78 refresh_scheduler_.reset();
77 service_.reset(); 79 service_.reset();
78 client_.reset(); 80 client_.reset();
79 } 81 }
80 82
81 void CloudPolicyManager::StartRefreshScheduler( 83 void CloudPolicyManager::StartRefreshScheduler(
82 PrefService* local_state, 84 PrefService* local_state,
83 const std::string& refresh_rate_pref) { 85 const std::string& refresh_rate_pref) {
84 if (!refresh_scheduler_.get()) { 86 if (!refresh_scheduler_.get()) {
87 refresh_delay_.reset(new IntegerPrefMember());
88 refresh_delay_->Init(refresh_rate_pref.c_str(), local_state,
89 base::Bind(&CloudPolicyManager::UpdateRefreshDelay,
90 base::Unretained(this)));
85 refresh_scheduler_.reset( 91 refresh_scheduler_.reset(
86 new CloudPolicyRefreshScheduler( 92 new CloudPolicyRefreshScheduler(
87 client_.get(), store_, local_state, refresh_rate_pref, 93 client_.get(), store_,
88 MessageLoop::current()->message_loop_proxy())); 94 MessageLoop::current()->message_loop_proxy()));
95 UpdateRefreshDelay();
89 } 96 }
90 } 97 }
91 98
92 void CloudPolicyManager::CheckAndPublishPolicy() { 99 void CloudPolicyManager::CheckAndPublishPolicy() {
93 if (IsInitializationComplete() && !waiting_for_policy_refresh_) { 100 if (IsInitializationComplete() && !waiting_for_policy_refresh_) {
94 scoped_ptr<PolicyBundle> bundle(new PolicyBundle()); 101 scoped_ptr<PolicyBundle> bundle(new PolicyBundle());
95 bundle->Get(POLICY_DOMAIN_CHROME, std::string()).CopyFrom( 102 bundle->Get(POLICY_DOMAIN_CHROME, std::string()).CopyFrom(
96 store_->policy_map()); 103 store_->policy_map());
97 UpdatePolicy(bundle.Pass()); 104 UpdatePolicy(bundle.Pass());
98 } 105 }
99 } 106 }
100 107
101 void CloudPolicyManager::OnRefreshComplete() { 108 void CloudPolicyManager::OnRefreshComplete() {
102 waiting_for_policy_refresh_ = false; 109 waiting_for_policy_refresh_ = false;
103 CheckAndPublishPolicy(); 110 CheckAndPublishPolicy();
104 } 111 }
105 112
113 void CloudPolicyManager::UpdateRefreshDelay() {
114 refresh_scheduler_->SetRefreshDelay(refresh_delay_->GetValue());
115 }
116
106 } // namespace policy 117 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud_policy_manager.h ('k') | chrome/browser/policy/cloud_policy_refresh_scheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698