Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(252)

Side by Side Diff: chrome/browser/policy/cros_user_policy_cache.h

Issue 7233006: Store/Retrieve CrOS user policy in session_manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address gfeher's comments Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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_CROS_USER_POLICY_CACHE_H_
6 #define CHROME_BROWSER_POLICY_CROS_USER_POLICY_CACHE_H_
7 #pragma once
8
9 #include <string>
10
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/file_path.h"
14 #include "base/memory/ref_counted.h"
15 #include "chrome/browser/policy/cloud_policy_cache_base.h"
16 #include "chrome/browser/policy/user_policy_disk_cache.h"
17 #include "chrome/browser/policy/user_policy_token_cache.h"
18
19 namespace chromeos {
20 class LoginLibrary;
21 }
22
23 namespace policy {
24
25 class CloudPolicyDataStore;
26 class CrosUserPolicyIdentityStrategy;
gfeher 2011/07/21 23:37:15 Obsolete, please remove.
Mattias Nissler (ping if slow) 2011/07/22 11:29:48 Done.
27
28 // User policy cache that talks to the ChromeOS login library in order to store
29 // and fetch policy data.
30 class CrosUserPolicyCache : public CloudPolicyCacheBase,
31 public UserPolicyTokenCache::Delegate,
32 public UserPolicyDiskCache::Delegate {
33 public:
34 CrosUserPolicyCache(chromeos::LoginLibrary* login_library,
35 CloudPolicyDataStore* data_store,
36 const FilePath& legacy_token_cache_file,
37 const FilePath& legacy_policy_cache_file);
38 virtual ~CrosUserPolicyCache();
39
40 // CloudPolicyCacheBase implementation.
41 virtual void Load() OVERRIDE;
42 virtual void SetPolicy(const em::PolicyFetchResponse& policy) OVERRIDE;
43 virtual void SetUnmanaged() OVERRIDE;
44 virtual bool IsReady() OVERRIDE;
45
46 protected:
47 virtual bool DecodePolicyData(const em::PolicyData& policy_data,
48 PolicyMap* mandatory,
49 PolicyMap* recommended) OVERRIDE;
50
51 private:
52 class PolicyKey;
53 class StorePolicyOperation;
54 class RetrievePolicyOperation;
55
56 // UserPolicyTokenLoader::Delegate:
57 virtual void OnTokenLoaded(const std::string& token,
58 const std::string& device_id) OVERRIDE;
59
60 // UserPolicyDiskCache::Delegate:
61 virtual void OnDiskCacheLoaded(
62 const em::CachedCloudPolicyResponse& policy) OVERRIDE;
63
64 // Used as a callback for the policy store operation.
65 void OnPolicyStored(bool result);
66
67 // Callback for the initial policy load. Installs the policy and passes the
68 // loaded token and device ID to the identity strategy.
gfeher 2011/07/21 23:37:15 Nit: identity strategy -> data store
Mattias Nissler (ping if slow) 2011/07/22 11:29:48 Done.
69 void OnPolicyLoadDone(bool result, const em::PolicyFetchResponse& policy);
70
71 // Callback for the policy retrieval operation run to reload the policy after
72 // new policy has been successfully stored. Installs the new policy in the
73 // cache and publishes it if successful.
74 void OnPolicyReloadDone(bool result, const em::PolicyFetchResponse& policy);
75
76 // Starts a new retrieval operation.
77 void StartRetrieve(bool reload_key);
78
79 void CancelStore();
80 void CancelRetrieve();
81
82 // Removes the legacy cache dir.
83 static void RemoveLegacyCacheDir(const FilePath& dir);
84
85 scoped_refptr<PolicyKey> key_;
86 chromeos::LoginLibrary* login_library_;
87 CloudPolicyDataStore* data_store_;
88
89 // Whether we have loaded the policy cache.
90 bool policy_cache_loaded_;
91
92 // Storage and retrieval operations that are currently in flight.
93 StorePolicyOperation* store_operation_;
94 RetrievePolicyOperation* retrieve_operation_;
95
96 // TODO(mnissler): Remove all the legacy policy support members below after
97 // the number of M14 clients drops back to zero.
98 FilePath legacy_cache_dir_;
99
100 base::WeakPtrFactory<UserPolicyTokenCache::Delegate>
101 legacy_token_cache_delegate_factory_;
102 scoped_refptr<UserPolicyTokenLoader> legacy_token_loader_;
103
104 base::WeakPtrFactory<UserPolicyDiskCache::Delegate>
105 legacy_policy_cache_delegate_factory_;
106 scoped_refptr<UserPolicyDiskCache> legacy_policy_cache_;
107
gfeher 2011/07/21 23:37:15 Nit: extra newline.
Mattias Nissler (ping if slow) 2011/07/22 11:29:48 Done.
108
109 DISALLOW_COPY_AND_ASSIGN(CrosUserPolicyCache);
110 };
111
112 } // namespace policy
113
114 #endif // CHROME_BROWSER_POLICY_CROS_USER_POLICY_CACHE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698