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

Side by Side Diff: chrome/browser/chromeos/settings/device_settings_service.h

Issue 270663002: Implemented profile-aware owner key loading. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed DeviceOAuth2TokenServiceTest.* unit_tests. Created 6 years, 7 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_SETTINGS_SERVICE_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_SETTINGS_SERVICE_H_
6 #define CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_SETTINGS_SERVICE_H_ 6 #define CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_SETTINGS_SERVICE_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/compiler_specific.h" 14 #include "base/compiler_specific.h"
15 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
16 #include "base/memory/scoped_ptr.h" 16 #include "base/memory/scoped_ptr.h"
17 #include "base/observer_list.h" 17 #include "base/observer_list.h"
18 #include "base/stl_util.h" 18 #include "base/stl_util.h"
19 #include "chromeos/dbus/session_manager_client.h" 19 #include "chromeos/dbus/session_manager_client.h"
20 #include "chromeos/tpm_token_loader.h" 20 #include "chromeos/tpm_token_loader.h"
21 #include "components/policy/core/common/cloud/cloud_policy_validator.h" 21 #include "components/policy/core/common/cloud/cloud_policy_validator.h"
22 #include "content/public/browser/notification_observer.h"
23 #include "content/public/browser/notification_registrar.h"
22 #include "policy/proto/device_management_backend.pb.h" 24 #include "policy/proto/device_management_backend.pb.h"
23 25
24 namespace crypto { 26 namespace crypto {
25 class RSAPrivateKey; 27 class RSAPrivateKey;
26 } 28 }
27 29
28 namespace enterprise_management { 30 namespace enterprise_management {
29 class ChromeDeviceSettingsProto; 31 class ChromeDeviceSettingsProto;
30 } 32 }
31 33
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // settings are brokered by the session_manager daemon. 74 // settings are brokered by the session_manager daemon.
73 // 75 //
74 // The purpose of DeviceSettingsService is to keep track of the current key and 76 // The purpose of DeviceSettingsService is to keep track of the current key and
75 // settings blob. For reading and writing device settings, use CrosSettings 77 // settings blob. For reading and writing device settings, use CrosSettings
76 // instead, which provides a high-level interface that allows for manipulation 78 // instead, which provides a high-level interface that allows for manipulation
77 // of individual settings. 79 // of individual settings.
78 // 80 //
79 // DeviceSettingsService generates notifications for key and policy update 81 // DeviceSettingsService generates notifications for key and policy update
80 // events so interested parties can reload state as appropriate. 82 // events so interested parties can reload state as appropriate.
81 class DeviceSettingsService : public SessionManagerClient::Observer, 83 class DeviceSettingsService : public SessionManagerClient::Observer,
82 public TPMTokenLoader::Observer { 84 public TPMTokenLoader::Observer,
85 public content::NotificationObserver {
83 public: 86 public:
84 // Indicates ownership status of the device. 87 // Indicates ownership status of the device.
85 enum OwnershipStatus { 88 enum OwnershipStatus {
86 // Listed in upgrade order. 89 // Listed in upgrade order.
87 OWNERSHIP_UNKNOWN = 0, 90 OWNERSHIP_UNKNOWN = 0,
88 OWNERSHIP_NONE, 91 OWNERSHIP_NONE,
89 OWNERSHIP_TAKEN 92 OWNERSHIP_TAKEN
90 }; 93 };
91 94
92 typedef base::Callback<void(OwnershipStatus)> OwnershipStatusCallback; 95 typedef base::Callback<void(OwnershipStatus)> OwnershipStatusCallback;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 // Removes an observer. 210 // Removes an observer.
208 void RemoveObserver(Observer* observer); 211 void RemoveObserver(Observer* observer);
209 212
210 // SessionManagerClient::Observer: 213 // SessionManagerClient::Observer:
211 virtual void OwnerKeySet(bool success) OVERRIDE; 214 virtual void OwnerKeySet(bool success) OVERRIDE;
212 virtual void PropertyChangeComplete(bool success) OVERRIDE; 215 virtual void PropertyChangeComplete(bool success) OVERRIDE;
213 216
214 // TPMTokenLoader::Observer: 217 // TPMTokenLoader::Observer:
215 virtual void OnTPMTokenReady() OVERRIDE; 218 virtual void OnTPMTokenReady() OVERRIDE;
216 219
220 // content::NotificationObserver implementation.
221 virtual void Observe(int type,
222 const content::NotificationSource& source,
223 const content::NotificationDetails& details) OVERRIDE;
224
217 private: 225 private:
218 // Enqueues a new operation. Takes ownership of |operation| and starts it 226 // Enqueues a new operation. Takes ownership of |operation| and starts it
219 // right away if there is no active operation currently. 227 // right away if there is no active operation currently.
220 void Enqueue(SessionManagerOperation* operation); 228 void Enqueue(SessionManagerOperation* operation);
221 229
222 // Enqueues a load operation. 230 // Enqueues a load operation.
223 void EnqueueLoad(bool force_key_load); 231 void EnqueueLoad(bool force_key_load);
224 232
225 // Makes sure there's a reload operation so changes to the settings (and key, 233 // Makes sure there's a reload operation so changes to the settings (and key,
226 // in case force_key_load is set) are getting picked up. 234 // in case force_key_load is set) are getting picked up.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 281
274 // The queue of pending operations. The first operation on the queue is 282 // The queue of pending operations. The first operation on the queue is
275 // currently active; it gets removed and destroyed once it completes. 283 // currently active; it gets removed and destroyed once it completes.
276 std::deque<SessionManagerOperation*> pending_operations_; 284 std::deque<SessionManagerOperation*> pending_operations_;
277 285
278 ObserverList<Observer, true> observers_; 286 ObserverList<Observer, true> observers_;
279 287
280 // For recoverable load errors how many retries are left before we give up. 288 // For recoverable load errors how many retries are left before we give up.
281 int load_retries_left_; 289 int load_retries_left_;
282 290
291 content::NotificationRegistrar registrar_;
292
283 base::WeakPtrFactory<DeviceSettingsService> weak_factory_; 293 base::WeakPtrFactory<DeviceSettingsService> weak_factory_;
284 294
285 DISALLOW_COPY_AND_ASSIGN(DeviceSettingsService); 295 DISALLOW_COPY_AND_ASSIGN(DeviceSettingsService);
286 }; 296 };
287 297
288 // Helper class for tests. Initializes the DeviceSettingsService singleton on 298 // Helper class for tests. Initializes the DeviceSettingsService singleton on
289 // construction and tears it down again on destruction. 299 // construction and tears it down again on destruction.
290 class ScopedTestDeviceSettingsService { 300 class ScopedTestDeviceSettingsService {
291 public: 301 public:
292 ScopedTestDeviceSettingsService(); 302 ScopedTestDeviceSettingsService();
293 ~ScopedTestDeviceSettingsService(); 303 ~ScopedTestDeviceSettingsService();
294 304
295 private: 305 private:
296 DISALLOW_COPY_AND_ASSIGN(ScopedTestDeviceSettingsService); 306 DISALLOW_COPY_AND_ASSIGN(ScopedTestDeviceSettingsService);
297 }; 307 };
298 308
299 } // namespace chromeos 309 } // namespace chromeos
300 310
301 #endif // CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_SETTINGS_SERVICE_H_ 311 #endif // CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_SETTINGS_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698