1// Copyright (c) 2011 The Chromium 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#ifndef CHROME_BROWSER_POLICY_USER_POLICY_CACHE_H_ 6#define CHROME_BROWSER_POLICY_USER_POLICY_CACHE_H_ 7#pragma once 8 9#include <string> 10 11#include "base/file_path.h" 12#include "chrome/browser/policy/cloud_policy_cache_base.h" 13 14// <Old-style policy support> (see comment below) 15namespace enterprise_management { 16class GenericValue; 17} // namespace enterprise_management 18// </Old-style policy support> 19 20namespace policy { 21 22// CloudPolicyCacheBase implementation that persists policy information 23// into the file specified by the c'tor parameter |backing_file_path|. 24class UserPolicyCache : public CloudPolicyCacheBase { 25 public: 26 explicit UserPolicyCache(const FilePath& backing_file_path); 27 virtual ~UserPolicyCache(); 28 29 // CloudPolicyCacheBase implementation: 30 virtual void Load() OVERRIDE; 31 virtual void SetPolicy(const em::PolicyFetchResponse& policy) OVERRIDE; 32 virtual void SetUnmanaged() OVERRIDE; 33 34 private: 35 void PersistPolicy(const em::PolicyFetchResponse& policy, 36 const base::Time& timestamp); 37 38 // CloudPolicyCacheBase implementation: 39 virtual bool DecodePolicyData(const em::PolicyData& policy_data, 40 PolicyMap* mandatory, 41 PolicyMap* recommended) OVERRIDE; 42 43 // <Old-style policy support> 44 // The following member functions are needed to support old-style policy and 45 // can be removed once all server-side components (CPanel, D3) have been 46 // migrated to providing the new policy format. 47 48 // If |mandatory| and |recommended| are both empty, and |policy_data| 49 // contains a field named "repeated GenericNamedValue named_value = 2;", 50 // this field is decoded into |mandatory|. 51 void MaybeDecodeOldstylePolicy(const std::string& policy_data, 52 PolicyMap* mandatory, 53 PolicyMap* recommended); 54 55 Value* DecodeIntegerValue(google::protobuf::int64 value) const; 56 Value* DecodeValue(const em::GenericValue& value) const; 57 58 // </Old-style policy support> 59 60 // The file in which we store a cached version of the policy information. 61 const FilePath backing_file_path_; 62 63 DISALLOW_COPY_AND_ASSIGN(UserPolicyCache); 64}; 65 66} // namespace policy 67 68#endif // CHROME_BROWSER_POLICY_USER_POLICY_CACHE_H_ 69