12638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 22638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// Use of this source code is governed by a BSD-style license that can be 32638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// found in the LICENSE file. 42638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 5fed60b0c640828b320f56293c8bebc43fd2b1da8Alex Vakulenko#ifndef LIBBRILLO_POLICY_LIBPOLICY_H_ 6fed60b0c640828b320f56293c8bebc43fd2b1da8Alex Vakulenko#define LIBBRILLO_POLICY_LIBPOLICY_H_ 72638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 84ec4c4d2e4f8ac46ea8e767c1ed88242811a8f4dLuis Hector Chavez#include <memory> 92638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov#include <string> 102638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 11f2418e562d358917b02b53290d5f4b3690d6f5d3Alex Vakulenko#include <base/macros.h> 122638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 13c313f8219af31069eaa30f1e42ee896ccbafba7dMike Frysinger#pragma GCC visibility push(default) 14c313f8219af31069eaa30f1e42ee896ccbafba7dMike Frysinger 152638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmovnamespace policy { 162638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 172638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmovclass DevicePolicy; 182638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 192638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// This class holds device settings that are to be enforced across all users. 202638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// 212638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// If there is a policy on disk at creation time, we will load it at verify 222638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov// its signature. 232638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmovclass PolicyProvider { 242638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov public: 252638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov PolicyProvider(); 262638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov virtual ~PolicyProvider(); 272638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 28f2418e562d358917b02b53290d5f4b3690d6f5d3Alex Vakulenko // Constructor for tests only! 29a749d0b68c84ac8f9b6579c43aaa9d3993e08b43Igor explicit PolicyProvider(std::unique_ptr<DevicePolicy> device_policy); 302638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 31f2418e562d358917b02b53290d5f4b3690d6f5d3Alex Vakulenko // This function will ensure the freshness of the contents that the getters 32f2418e562d358917b02b53290d5f4b3690d6f5d3Alex Vakulenko // are delivering. Normally contents are cached to prevent unnecessary load. 335da8faf11780ad48d30921f49684dd648a14833dAlex Deymo virtual bool Reload(); 342638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 355da8faf11780ad48d30921f49684dd648a14833dAlex Deymo virtual bool device_policy_is_loaded() const; 362638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 372638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov // Returns a value from the device policy cache. 382638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov virtual const DevicePolicy& GetDevicePolicy() const; 392638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 402638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov private: 414ec4c4d2e4f8ac46ea8e767c1ed88242811a8f4dLuis Hector Chavez std::unique_ptr<DevicePolicy> device_policy_; 422638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov bool device_policy_is_loaded_; 432638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 442638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov DISALLOW_COPY_AND_ASSIGN(PolicyProvider); 452638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov}; 462638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov} // namespace policy 472638fbc30f4e60caf06d3da3e9b4ef25c0a21e39Julian Pastarmov 48c313f8219af31069eaa30f1e42ee896ccbafba7dMike Frysinger#pragma GCC visibility pop 49c313f8219af31069eaa30f1e42ee896ccbafba7dMike Frysinger 50fed60b0c640828b320f56293c8bebc43fd2b1da8Alex Vakulenko#endif // LIBBRILLO_POLICY_LIBPOLICY_H_ 51