| 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 if (!policy_instance) |
| 272 LOG(ERROR) << "OnPolicyInstanceReady called, but no policy instance found"; | |
| 273 return; | 273 return; |
| 274 } | |
| 275 | |
| 276 policy_instance->Init(binding_.CreateInterfacePtrAndBind()); | 274 policy_instance->Init(binding_.CreateInterfacePtrAndBind()); |
| 277 } | 275 } |
| 278 | 276 |
| 279 void ArcPolicyBridge::OnInstanceClosed() { | 277 void ArcPolicyBridge::OnInstanceClosed() { |
| 280 VLOG(1) << "ArcPolicyBridge::OnPolicyInstanceClosed"; | 278 VLOG(1) << "ArcPolicyBridge::OnPolicyInstanceClosed"; |
| 281 policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this); | 279 policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this); |
| 282 policy_service_ = nullptr; | 280 policy_service_ = nullptr; |
| 283 } | 281 } |
| 284 | 282 |
| 285 void ArcPolicyBridge::GetPolicies(const GetPoliciesCallback& callback) { | 283 void ArcPolicyBridge::GetPolicies(const GetPoliciesCallback& callback) { |
| 286 VLOG(1) << "ArcPolicyBridge::GetPolicies"; | 284 VLOG(1) << "ArcPolicyBridge::GetPolicies"; |
| 287 if (!is_managed_) { | 285 if (!is_managed_) { |
| 288 callback.Run(mojo::String("")); | 286 callback.Run(mojo::String("")); |
| 289 return; | 287 return; |
| 290 } | 288 } |
| 291 const policy::PolicyNamespace policy_namespace(policy::POLICY_DOMAIN_CHROME, | 289 const policy::PolicyNamespace policy_namespace(policy::POLICY_DOMAIN_CHROME, |
| 292 std::string()); | 290 std::string()); |
| 293 const policy::PolicyMap& policy_map = | 291 const policy::PolicyMap& policy_map = |
| 294 policy_service_->GetPolicies(policy_namespace); | 292 policy_service_->GetPolicies(policy_namespace); |
| 295 const std::string json_policies = GetFilteredJSONPolicies(policy_map); | 293 const std::string json_policies = GetFilteredJSONPolicies(policy_map); |
| 296 callback.Run(mojo::String(json_policies)); | 294 callback.Run(mojo::String(json_policies)); |
| 297 } | 295 } |
| 298 | 296 |
| 299 void ArcPolicyBridge::OnPolicyUpdated(const policy::PolicyNamespace& ns, | 297 void ArcPolicyBridge::OnPolicyUpdated(const policy::PolicyNamespace& ns, |
| 300 const policy::PolicyMap& previous, | 298 const policy::PolicyMap& previous, |
| 301 const policy::PolicyMap& current) { | 299 const policy::PolicyMap& current) { |
| 302 VLOG(1) << "ArcPolicyBridge::OnPolicyUpdated"; | 300 VLOG(1) << "ArcPolicyBridge::OnPolicyUpdated"; |
| 303 DCHECK(arc_bridge_service()->policy()->instance()); | 301 auto* instance = |
| 304 arc_bridge_service()->policy()->instance()->OnPolicyUpdated(); | 302 arc_bridge_service()->policy()->GetInstanceForMethod("OnPolicyUpdated"); |
| 303 if (!instance) |
| 304 return; |
| 305 instance->OnPolicyUpdated(); |
| 305 } | 306 } |
| 306 | 307 |
| 307 void ArcPolicyBridge::InitializePolicyService() { | 308 void ArcPolicyBridge::InitializePolicyService() { |
| 308 const user_manager::User* const primary_user = | 309 const user_manager::User* const primary_user = |
| 309 user_manager::UserManager::Get()->GetPrimaryUser(); | 310 user_manager::UserManager::Get()->GetPrimaryUser(); |
| 310 Profile* const profile = | 311 Profile* const profile = |
| 311 chromeos::ProfileHelper::Get()->GetProfileByUser(primary_user); | 312 chromeos::ProfileHelper::Get()->GetProfileByUser(primary_user); |
| 312 auto* profile_policy_connector = | 313 auto* profile_policy_connector = |
| 313 policy::ProfilePolicyConnectorFactory::GetForBrowserContext(profile); | 314 policy::ProfilePolicyConnectorFactory::GetForBrowserContext(profile); |
| 314 policy_service_ = profile_policy_connector->policy_service(); | 315 policy_service_ = profile_policy_connector->policy_service(); |
| 315 is_managed_ = profile_policy_connector->IsManaged(); | 316 is_managed_ = profile_policy_connector->IsManaged(); |
| 316 } | 317 } |
| 317 | 318 |
| 318 } // namespace arc | 319 } // namespace arc |
| OLD | NEW |