1*1a96fba6SXin Li // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2*1a96fba6SXin Li // Use of this source code is governed by a BSD-style license that can be 3*1a96fba6SXin Li // found in the LICENSE file. 4*1a96fba6SXin Li 5*1a96fba6SXin Li #include "policy/libpolicy.h" 6*1a96fba6SXin Li 7*1a96fba6SXin Li #include <memory> 8*1a96fba6SXin Li #include <utility> 9*1a96fba6SXin Li 10*1a96fba6SXin Li #include <base/logging.h> 11*1a96fba6SXin Li 12*1a96fba6SXin Li #include "policy/device_policy.h" 13*1a96fba6SXin Li #ifndef __ANDROID__ 14*1a96fba6SXin Li #include "policy/device_policy_impl.h" 15*1a96fba6SXin Li #endif 16*1a96fba6SXin Li 17*1a96fba6SXin Li namespace policy { 18*1a96fba6SXin Li PolicyProvider()19*1a96fba6SXin LiPolicyProvider::PolicyProvider() { 20*1a96fba6SXin Li #ifndef __ANDROID__ 21*1a96fba6SXin Li device_policy_ = std::make_unique<DevicePolicyImpl>(); 22*1a96fba6SXin Li install_attributes_reader_ = std::make_unique<InstallAttributesReader>(); 23*1a96fba6SXin Li #endif 24*1a96fba6SXin Li } 25*1a96fba6SXin Li PolicyProvider(std::unique_ptr<DevicePolicy> device_policy)26*1a96fba6SXin LiPolicyProvider::PolicyProvider(std::unique_ptr<DevicePolicy> device_policy) 27*1a96fba6SXin Li : device_policy_(std::move(device_policy)), 28*1a96fba6SXin Li #ifdef __ANDROID__ 29*1a96fba6SXin Li device_policy_is_loaded_(true) { 30*1a96fba6SXin Li } 31*1a96fba6SXin Li #else 32*1a96fba6SXin Li device_policy_is_loaded_(true), 33*1a96fba6SXin Li install_attributes_reader_(std::make_unique<InstallAttributesReader>()) { 34*1a96fba6SXin Li } 35*1a96fba6SXin Li #endif // __ANDROID__ 36*1a96fba6SXin Li ~PolicyProvider()37*1a96fba6SXin LiPolicyProvider::~PolicyProvider() {} 38*1a96fba6SXin Li Reload()39*1a96fba6SXin Libool PolicyProvider::Reload() { 40*1a96fba6SXin Li if (!device_policy_) 41*1a96fba6SXin Li return false; 42*1a96fba6SXin Li device_policy_is_loaded_ = device_policy_->LoadPolicy(); 43*1a96fba6SXin Li if (!device_policy_is_loaded_) { 44*1a96fba6SXin Li LOG(WARNING) << "Could not load the device policy file."; 45*1a96fba6SXin Li } 46*1a96fba6SXin Li return device_policy_is_loaded_; 47*1a96fba6SXin Li } 48*1a96fba6SXin Li device_policy_is_loaded() const49*1a96fba6SXin Libool PolicyProvider::device_policy_is_loaded() const { 50*1a96fba6SXin Li return device_policy_is_loaded_; 51*1a96fba6SXin Li } 52*1a96fba6SXin Li GetDevicePolicy() const53*1a96fba6SXin Liconst DevicePolicy& PolicyProvider::GetDevicePolicy() const { 54*1a96fba6SXin Li DCHECK(device_policy_is_loaded_) 55*1a96fba6SXin Li << "Trying to get policy data but policy was not loaded!"; 56*1a96fba6SXin Li return *device_policy_; 57*1a96fba6SXin Li } 58*1a96fba6SXin Li IsConsumerDevice() const59*1a96fba6SXin Libool PolicyProvider::IsConsumerDevice() const { 60*1a96fba6SXin Li #ifdef __ANDROID__ 61*1a96fba6SXin Li return true; 62*1a96fba6SXin Li #else 63*1a96fba6SXin Li if (!install_attributes_reader_->IsLocked()) 64*1a96fba6SXin Li return false; 65*1a96fba6SXin Li 66*1a96fba6SXin Li const std::string& device_mode = install_attributes_reader_->GetAttribute( 67*1a96fba6SXin Li InstallAttributesReader::kAttrMode); 68*1a96fba6SXin Li return device_mode != InstallAttributesReader::kDeviceModeEnterprise && 69*1a96fba6SXin Li device_mode != InstallAttributesReader::kDeviceModeEnterpriseAD; 70*1a96fba6SXin Li #endif // __ANDROID__ 71*1a96fba6SXin Li } 72*1a96fba6SXin Li SetDevicePolicyForTesting(std::unique_ptr<DevicePolicy> device_policy)73*1a96fba6SXin Livoid PolicyProvider::SetDevicePolicyForTesting( 74*1a96fba6SXin Li std::unique_ptr<DevicePolicy> device_policy) { 75*1a96fba6SXin Li device_policy_ = std::move(device_policy); 76*1a96fba6SXin Li device_policy_is_loaded_ = true; 77*1a96fba6SXin Li } 78*1a96fba6SXin Li SetInstallAttributesReaderForTesting(std::unique_ptr<InstallAttributesReader> install_attributes_reader)79*1a96fba6SXin Livoid PolicyProvider::SetInstallAttributesReaderForTesting( 80*1a96fba6SXin Li std::unique_ptr<InstallAttributesReader> install_attributes_reader) { 81*1a96fba6SXin Li install_attributes_reader_ = std::move(install_attributes_reader); 82*1a96fba6SXin Li } 83*1a96fba6SXin Li 84*1a96fba6SXin Li } // namespace policy 85