| OLD | NEW |
| 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/policy_service_impl.h" | 5 #include "chrome/browser/policy/policy_service_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "base/stl_util.h" | 11 #include "base/stl_util.h" |
| 12 #include "chrome/browser/policy/policy_domain_descriptor.h" | |
| 13 #include "chrome/browser/policy/policy_map.h" | 12 #include "chrome/browser/policy/policy_map.h" |
| 14 | 13 |
| 15 namespace policy { | 14 namespace policy { |
| 16 | 15 |
| 17 typedef PolicyServiceImpl::Providers::const_iterator Iterator; | 16 typedef PolicyServiceImpl::Providers::const_iterator Iterator; |
| 18 | 17 |
| 19 PolicyServiceImpl::PolicyServiceImpl(const Providers& providers) | 18 PolicyServiceImpl::PolicyServiceImpl(const Providers& providers) |
| 20 : update_task_ptr_factory_(this) { | 19 : update_task_ptr_factory_(this) { |
| 21 for (int domain = 0; domain < POLICY_DOMAIN_SIZE; ++domain) | 20 for (int domain = 0; domain < POLICY_DOMAIN_SIZE; ++domain) |
| 22 initialization_complete_[domain] = true; | 21 initialization_complete_[domain] = true; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 NOTREACHED(); | 54 NOTREACHED(); |
| 56 return; | 55 return; |
| 57 } | 56 } |
| 58 it->second->RemoveObserver(observer); | 57 it->second->RemoveObserver(observer); |
| 59 if (!it->second->might_have_observers()) { | 58 if (!it->second->might_have_observers()) { |
| 60 delete it->second; | 59 delete it->second; |
| 61 observers_.erase(it); | 60 observers_.erase(it); |
| 62 } | 61 } |
| 63 } | 62 } |
| 64 | 63 |
| 65 void PolicyServiceImpl::RegisterPolicyDomain( | |
| 66 scoped_refptr<const PolicyDomainDescriptor> descriptor) { | |
| 67 domain_descriptors_[descriptor->domain()] = descriptor; | |
| 68 for (Iterator it = providers_.begin(); it != providers_.end(); ++it) | |
| 69 (*it)->RegisterPolicyDomain(descriptor); | |
| 70 } | |
| 71 | |
| 72 const PolicyMap& PolicyServiceImpl::GetPolicies( | 64 const PolicyMap& PolicyServiceImpl::GetPolicies( |
| 73 const PolicyNamespace& ns) const { | 65 const PolicyNamespace& ns) const { |
| 74 return policy_bundle_.Get(ns); | 66 return policy_bundle_.Get(ns); |
| 75 } | 67 } |
| 76 | 68 |
| 77 scoped_refptr<const PolicyDomainDescriptor> | |
| 78 PolicyServiceImpl::GetPolicyDomainDescriptor(PolicyDomain domain) const { | |
| 79 return domain_descriptors_[domain]; | |
| 80 } | |
| 81 | |
| 82 bool PolicyServiceImpl::IsInitializationComplete(PolicyDomain domain) const { | 69 bool PolicyServiceImpl::IsInitializationComplete(PolicyDomain domain) const { |
| 83 DCHECK(domain >= 0 && domain < POLICY_DOMAIN_SIZE); | 70 DCHECK(domain >= 0 && domain < POLICY_DOMAIN_SIZE); |
| 84 return initialization_complete_[domain]; | 71 return initialization_complete_[domain]; |
| 85 } | 72 } |
| 86 | 73 |
| 87 void PolicyServiceImpl::RefreshPolicies(const base::Closure& callback) { | 74 void PolicyServiceImpl::RefreshPolicies(const base::Closure& callback) { |
| 88 if (!callback.is_null()) | 75 if (!callback.is_null()) |
| 89 refresh_callbacks_.push_back(callback); | 76 refresh_callbacks_.push_back(callback); |
| 90 | 77 |
| 91 if (providers_.empty()) { | 78 if (providers_.empty()) { |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 if (refresh_pending_.empty() && !refresh_callbacks_.empty()) { | 204 if (refresh_pending_.empty() && !refresh_callbacks_.empty()) { |
| 218 std::vector<base::Closure> callbacks; | 205 std::vector<base::Closure> callbacks; |
| 219 callbacks.swap(refresh_callbacks_); | 206 callbacks.swap(refresh_callbacks_); |
| 220 std::vector<base::Closure>::iterator it; | 207 std::vector<base::Closure>::iterator it; |
| 221 for (it = callbacks.begin(); it != callbacks.end(); ++it) | 208 for (it = callbacks.begin(); it != callbacks.end(); ++it) |
| 222 it->Run(); | 209 it->Run(); |
| 223 } | 210 } |
| 224 } | 211 } |
| 225 | 212 |
| 226 } // namespace policy | 213 } // namespace policy |
| OLD | NEW |