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