// Copyright (c) 2011 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef LIBBRILLO_POLICY_LIBPOLICY_H_ #define LIBBRILLO_POLICY_LIBPOLICY_H_ #include #include #include #include "install_attributes/libinstallattributes.h" #pragma GCC visibility push(default) namespace policy { class DevicePolicy; // This class holds device settings that are to be enforced across all users. // // If there is a policy on disk at creation time, we will load it at verify // its signature. class PolicyProvider { public: // The default constructor does not load policy. PolicyProvider(); virtual ~PolicyProvider(); // Constructor for tests only! explicit PolicyProvider(std::unique_ptr device_policy); // This function will ensure the freshness of the contents that the getters // are delivering. Normally contents are cached to prevent unnecessary load. virtual bool Reload(); virtual bool device_policy_is_loaded() const; // Returns a value from the device policy cache. virtual const DevicePolicy& GetDevicePolicy() const; // Returns true if the device is not an enterprise enrolled device, so it // won't have device policy before the next powerwash. Returns false if device // is still in OOBE (so device mode is not determined yet). virtual bool IsConsumerDevice() const; void SetDevicePolicyForTesting( std::unique_ptr device_policy); void SetInstallAttributesReaderForTesting( std::unique_ptr install_attributes_reader); private: std::unique_ptr device_policy_; bool device_policy_is_loaded_ = false; std::unique_ptr install_attributes_reader_; DISALLOW_COPY_AND_ASSIGN(PolicyProvider); }; } // namespace policy #pragma GCC visibility pop #endif // LIBBRILLO_POLICY_LIBPOLICY_H_