Home | History | Annotate | Download | only in policy
      1 // Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "policy/libpolicy.h"
      6 
      7 #include <base/logging.h>
      8 
      9 #include "policy/device_policy.h"
     10 #ifndef __ANDROID__
     11 #include "policy/device_policy_impl.h"
     12 #endif
     13 
     14 namespace policy {
     15 
     16 PolicyProvider::PolicyProvider()
     17     : device_policy_(nullptr),
     18       device_policy_is_loaded_(false) {
     19 #ifndef __ANDROID__
     20   device_policy_.reset(new DevicePolicyImpl());
     21 #endif
     22 }
     23 
     24 PolicyProvider::PolicyProvider(std::unique_ptr<DevicePolicy> device_policy)
     25     : device_policy_(std::move(device_policy)),
     26       device_policy_is_loaded_(true) {}
     27 
     28 PolicyProvider::~PolicyProvider() {}
     29 
     30 bool PolicyProvider::Reload() {
     31   if (!device_policy_)
     32     return false;
     33   device_policy_is_loaded_ = device_policy_->LoadPolicy();
     34   if (!device_policy_is_loaded_) {
     35     LOG(WARNING) << "Could not load the device policy file.";
     36   }
     37   return device_policy_is_loaded_;
     38 }
     39 
     40 bool PolicyProvider::device_policy_is_loaded() const {
     41   return device_policy_is_loaded_;
     42 }
     43 
     44 const DevicePolicy& PolicyProvider::GetDevicePolicy() const {
     45   if (!device_policy_is_loaded_)
     46     DCHECK("Trying to get policy data but policy was not loaded!");
     47 
     48   return *device_policy_;
     49 }
     50 
     51 }  // namespace policy
     52