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) 15 namespace enterprise_management { 16 class GenericValue; 17 } // namespace enterprise_management 18 // </Old-style policy support> 19 20 namespace policy { 21 22 // CloudPolicyCacheBase implementation that persists policy information 23 // into the file specified by the c'tor parameter |backing_file_path|. 24 class 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