| 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 |