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

Side by Side Diff: chrome/browser/policy/cloud/cloud_policy_core.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 unified diff | Download patch
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/cloud_policy_core.h" 5 #include "chrome/browser/policy/cloud/cloud_policy_core.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/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
11 #include "chrome/browser/policy/cloud/cloud_policy_client.h" 11 #include "chrome/browser/policy/cloud/cloud_policy_client.h"
12 #include "chrome/browser/policy/cloud/cloud_policy_refresh_scheduler.h" 12 #include "chrome/browser/policy/cloud/cloud_policy_refresh_scheduler.h"
13 #include "chrome/browser/policy/cloud/cloud_policy_service.h" 13 #include "chrome/browser/policy/cloud/cloud_policy_service.h"
14 #include "chrome/browser/policy/cloud/cloud_policy_store.h" 14 #include "chrome/browser/policy/cloud/cloud_policy_store.h"
15 15
16 namespace policy { 16 namespace policy {
17 17
18 CloudPolicyCore::Observer::~Observer() {}
19
18 CloudPolicyCore::CloudPolicyCore(const PolicyNamespaceKey& key, 20 CloudPolicyCore::CloudPolicyCore(const PolicyNamespaceKey& key,
19 CloudPolicyStore* store) 21 CloudPolicyStore* store)
20 : policy_ns_key_(key), 22 : policy_ns_key_(key),
21 store_(store) {} 23 store_(store) {}
22 24
23 CloudPolicyCore::~CloudPolicyCore() {} 25 CloudPolicyCore::~CloudPolicyCore() {}
24 26
25 void CloudPolicyCore::Connect(scoped_ptr<CloudPolicyClient> client) { 27 void CloudPolicyCore::Connect(scoped_ptr<CloudPolicyClient> client) {
26 CHECK(!client_); 28 CHECK(!client_);
27 CHECK(client); 29 CHECK(client);
28 client_ = client.Pass(); 30 client_ = client.Pass();
29 service_.reset(new CloudPolicyService(policy_ns_key_, client_.get(), store_)); 31 service_.reset(new CloudPolicyService(policy_ns_key_, client_.get(), store_));
32 FOR_EACH_OBSERVER(Observer, observers_, OnCoreConnected(this));
30 } 33 }
31 34
32 void CloudPolicyCore::Disconnect() { 35 void CloudPolicyCore::Disconnect() {
36 if (client_)
37 FOR_EACH_OBSERVER(Observer, observers_, OnCoreDisconnecting(this));
33 refresh_delay_.reset(); 38 refresh_delay_.reset();
34 refresh_scheduler_.reset(); 39 refresh_scheduler_.reset();
35 service_.reset(); 40 service_.reset();
36 client_.reset(); 41 client_.reset();
37 } 42 }
38 43
39 void CloudPolicyCore::RefreshSoon() { 44 void CloudPolicyCore::RefreshSoon() {
40 if (refresh_scheduler_) 45 if (refresh_scheduler_)
41 refresh_scheduler_->RefreshSoon(); 46 refresh_scheduler_->RefreshSoon();
42 } 47 }
43 48
44 void CloudPolicyCore::StartRefreshScheduler() { 49 void CloudPolicyCore::StartRefreshScheduler() {
45 if (!refresh_scheduler_) { 50 if (!refresh_scheduler_) {
46 refresh_scheduler_.reset( 51 refresh_scheduler_.reset(
47 new CloudPolicyRefreshScheduler( 52 new CloudPolicyRefreshScheduler(
48 client_.get(), store_, 53 client_.get(), store_,
49 base::MessageLoop::current()->message_loop_proxy())); 54 base::MessageLoop::current()->message_loop_proxy()));
50 UpdateRefreshDelayFromPref(); 55 UpdateRefreshDelayFromPref();
56 FOR_EACH_OBSERVER(Observer, observers_, OnRefreshSchedulerStarted(this));
51 } 57 }
52 } 58 }
53 59
54 void CloudPolicyCore::TrackRefreshDelayPref( 60 void CloudPolicyCore::TrackRefreshDelayPref(
55 PrefService* pref_service, 61 PrefService* pref_service,
56 const std::string& refresh_pref_name) { 62 const std::string& refresh_pref_name) {
57 refresh_delay_.reset(new IntegerPrefMember()); 63 refresh_delay_.reset(new IntegerPrefMember());
58 refresh_delay_->Init( 64 refresh_delay_->Init(
59 refresh_pref_name.c_str(), pref_service, 65 refresh_pref_name.c_str(), pref_service,
60 base::Bind(&CloudPolicyCore::UpdateRefreshDelayFromPref, 66 base::Bind(&CloudPolicyCore::UpdateRefreshDelayFromPref,
61 base::Unretained(this))); 67 base::Unretained(this)));
62 UpdateRefreshDelayFromPref(); 68 UpdateRefreshDelayFromPref();
63 } 69 }
64 70
71 void CloudPolicyCore::AddObserver(CloudPolicyCore::Observer* observer) {
72 observers_.AddObserver(observer);
73 }
74
75 void CloudPolicyCore::RemoveObserver(CloudPolicyCore::Observer* observer) {
76 observers_.RemoveObserver(observer);
77 }
78
65 void CloudPolicyCore::UpdateRefreshDelayFromPref() { 79 void CloudPolicyCore::UpdateRefreshDelayFromPref() {
66 if (refresh_scheduler_ && refresh_delay_) 80 if (refresh_scheduler_ && refresh_delay_)
67 refresh_scheduler_->SetRefreshDelay(refresh_delay_->GetValue()); 81 refresh_scheduler_->SetRefreshDelay(refresh_delay_->GetValue());
68 } 82 }
69 83
70 } // namespace policy 84 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud/cloud_policy_core.h ('k') | chrome/browser/policy/cloud/cloud_policy_core_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698