OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/chromeos/arc/arc_policy_bridge.h" | 5 #include "chrome/browser/chromeos/arc/arc_policy_bridge.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
| 9 #include <utility> |
9 | 10 |
10 #include "base/json/json_reader.h" | 11 #include "base/json/json_reader.h" |
11 #include "base/json/json_string_value_serializer.h" | 12 #include "base/json/json_string_value_serializer.h" |
12 #include "base/logging.h" | 13 #include "base/logging.h" |
13 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
14 #include "base/values.h" | 15 #include "base/values.h" |
15 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 16 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
16 #include "chrome/browser/policy/profile_policy_connector.h" | 17 #include "chrome/browser/policy/profile_policy_connector.h" |
17 #include "chrome/browser/policy/profile_policy_connector_factory.h" | 18 #include "chrome/browser/policy/profile_policy_connector_factory.h" |
18 #include "chromeos/network/onc/onc_utils.h" | 19 #include "chromeos/network/onc/onc_utils.h" |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 } | 261 } |
261 | 262 |
262 void ArcPolicyBridge::OnInstanceReady() { | 263 void ArcPolicyBridge::OnInstanceReady() { |
263 VLOG(1) << "ArcPolicyBridge::OnPolicyInstanceReady"; | 264 VLOG(1) << "ArcPolicyBridge::OnPolicyInstanceReady"; |
264 if (policy_service_ == nullptr) { | 265 if (policy_service_ == nullptr) { |
265 InitializePolicyService(); | 266 InitializePolicyService(); |
266 } | 267 } |
267 policy_service_->AddObserver(policy::POLICY_DOMAIN_CHROME, this); | 268 policy_service_->AddObserver(policy::POLICY_DOMAIN_CHROME, this); |
268 | 269 |
269 mojom::PolicyInstance* const policy_instance = | 270 mojom::PolicyInstance* const policy_instance = |
270 arc_bridge_service()->policy()->instance(); | 271 arc_bridge_service()->policy()->GetInstanceForMethod("Init"); |
271 if (!policy_instance) { | 272 CHECK(policy_instance); |
272 LOG(ERROR) << "OnPolicyInstanceReady called, but no policy instance found"; | |
273 return; | |
274 } | |
275 | |
276 policy_instance->Init(binding_.CreateInterfacePtrAndBind()); | 273 policy_instance->Init(binding_.CreateInterfacePtrAndBind()); |
277 } | 274 } |
278 | 275 |
279 void ArcPolicyBridge::OnInstanceClosed() { | 276 void ArcPolicyBridge::OnInstanceClosed() { |
280 VLOG(1) << "ArcPolicyBridge::OnPolicyInstanceClosed"; | 277 VLOG(1) << "ArcPolicyBridge::OnPolicyInstanceClosed"; |
281 policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this); | 278 policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this); |
282 policy_service_ = nullptr; | 279 policy_service_ = nullptr; |
283 } | 280 } |
284 | 281 |
285 void ArcPolicyBridge::GetPolicies(const GetPoliciesCallback& callback) { | 282 void ArcPolicyBridge::GetPolicies(const GetPoliciesCallback& callback) { |
286 VLOG(1) << "ArcPolicyBridge::GetPolicies"; | 283 VLOG(1) << "ArcPolicyBridge::GetPolicies"; |
287 if (!is_managed_) { | 284 if (!is_managed_) { |
288 callback.Run(mojo::String("")); | 285 callback.Run(mojo::String("")); |
289 return; | 286 return; |
290 } | 287 } |
291 const policy::PolicyNamespace policy_namespace(policy::POLICY_DOMAIN_CHROME, | 288 const policy::PolicyNamespace policy_namespace(policy::POLICY_DOMAIN_CHROME, |
292 std::string()); | 289 std::string()); |
293 const policy::PolicyMap& policy_map = | 290 const policy::PolicyMap& policy_map = |
294 policy_service_->GetPolicies(policy_namespace); | 291 policy_service_->GetPolicies(policy_namespace); |
295 const std::string json_policies = GetFilteredJSONPolicies(policy_map); | 292 const std::string json_policies = GetFilteredJSONPolicies(policy_map); |
296 callback.Run(mojo::String(json_policies)); | 293 callback.Run(mojo::String(json_policies)); |
297 } | 294 } |
298 | 295 |
299 void ArcPolicyBridge::OnPolicyUpdated(const policy::PolicyNamespace& ns, | 296 void ArcPolicyBridge::OnPolicyUpdated(const policy::PolicyNamespace& ns, |
300 const policy::PolicyMap& previous, | 297 const policy::PolicyMap& previous, |
301 const policy::PolicyMap& current) { | 298 const policy::PolicyMap& current) { |
302 VLOG(1) << "ArcPolicyBridge::OnPolicyUpdated"; | 299 VLOG(1) << "ArcPolicyBridge::OnPolicyUpdated"; |
303 DCHECK(arc_bridge_service()->policy()->instance()); | 300 auto* instance = |
304 arc_bridge_service()->policy()->instance()->OnPolicyUpdated(); | 301 arc_bridge_service()->policy()->GetInstanceForMethod("OnPolicyUpdated"); |
| 302 if (!instance) |
| 303 return; |
| 304 instance->OnPolicyUpdated(); |
305 } | 305 } |
306 | 306 |
307 void ArcPolicyBridge::InitializePolicyService() { | 307 void ArcPolicyBridge::InitializePolicyService() { |
308 const user_manager::User* const primary_user = | 308 const user_manager::User* const primary_user = |
309 user_manager::UserManager::Get()->GetPrimaryUser(); | 309 user_manager::UserManager::Get()->GetPrimaryUser(); |
310 Profile* const profile = | 310 Profile* const profile = |
311 chromeos::ProfileHelper::Get()->GetProfileByUser(primary_user); | 311 chromeos::ProfileHelper::Get()->GetProfileByUser(primary_user); |
312 auto* profile_policy_connector = | 312 auto* profile_policy_connector = |
313 policy::ProfilePolicyConnectorFactory::GetForBrowserContext(profile); | 313 policy::ProfilePolicyConnectorFactory::GetForBrowserContext(profile); |
314 policy_service_ = profile_policy_connector->policy_service(); | 314 policy_service_ = profile_policy_connector->policy_service(); |
315 is_managed_ = profile_policy_connector->IsManaged(); | 315 is_managed_ = profile_policy_connector->IsManaged(); |
316 } | 316 } |
317 | 317 |
318 } // namespace arc | 318 } // namespace arc |
OLD | NEW |