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

Unified Diff: chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h

Issue 654263003: Implemented OwnerSettingsService::Set() method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes. Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h
index 8f47b4d968582b8e0ed8a6a907ea2cc25d325ddf..70d56add98eee9d07889f84126c01a07990762d5 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h
+++ b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h
@@ -5,12 +5,14 @@
#ifndef CHROME_BROWSER_CHROMEOS_OWNERSHIP_OWNER_SETTINGS_SERVICE_CHROMEOS_H_
#define CHROME_BROWSER_CHROMEOS_OWNERSHIP_OWNER_SETTINGS_SERVICE_CHROMEOS_H_
-#include <deque>
+#include <queue>
+#include <utility>
#include <vector>
#include "base/callback_forward.h"
-#include "base/compiler_specific.h"
#include "base/macros.h"
+#include "base/memory/linked_ptr.h"
+#include "base/observer_list.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chromeos/dbus/session_manager_client.h"
#include "components/keyed_service/core/keyed_service.h"
@@ -27,8 +29,6 @@ class OwnerKeyUtil;
namespace chromeos {
-class SessionManagerOperation;
-
// The class is a profile-keyed service which holds public/private
// keypair corresponds to a profile. The keypair is reloaded automatically when
// profile is created and TPM token is ready. Note that the private part of a
@@ -38,16 +38,23 @@ class SessionManagerOperation;
// (crbug.com/230018).
class OwnerSettingsServiceChromeOS : public ownership::OwnerSettingsService,
public content::NotificationObserver,
- public SessionManagerClient::Observer {
+ public SessionManagerClient::Observer,
+ public DeviceSettingsService::Observer {
public:
+ class Observer {
+ public:
+ virtual ~Observer() {}
+ virtual void OnSetCompleted(bool success) = 0;
+ };
+
virtual ~OwnerSettingsServiceChromeOS();
void OnTPMTokenReady(bool tpm_token_enabled);
// ownership::OwnerSettingsService implementation:
- virtual void SignAndStorePolicyAsync(
- scoped_ptr<enterprise_management::PolicyData> policy,
- const base::Closure& callback) override;
+ virtual bool HandlesSetting(const std::string& setting) override;
+ virtual void Set(const std::string& setting,
+ const base::Value& value) override;
// NotificationObserver implementation:
virtual void Observe(int type,
@@ -57,6 +64,10 @@ class OwnerSettingsServiceChromeOS : public ownership::OwnerSettingsService,
// SessionManagerClient::Observer:
virtual void OwnerKeySet(bool success) override;
+ // DeviceSettingsService::Observer:
+ virtual void OwnershipStatusChanged() override;
+ virtual void DeviceSettingsUpdated() override;
+
// Checks if the user is the device owner, without the user profile having to
// been initialized. Should be used only if login state is in safe mode.
static void IsOwnerForSafeModeAsync(
@@ -67,7 +78,14 @@ class OwnerSettingsServiceChromeOS : public ownership::OwnerSettingsService,
static void SetDeviceSettingsServiceForTesting(
DeviceSettingsService* device_settings_service);
+ void AddObserver(Observer* observer);
+
+ void RemoveObserver(Observer* observer);
+
private:
+ // Scoped lock for DeviceSettingsService processing loop.
+ class DeviceSettingsServiceLock;
+
friend class OwnerSettingsServiceChromeOSFactory;
OwnerSettingsServiceChromeOS(
@@ -85,13 +103,17 @@ class OwnerSettingsServiceChromeOS : public ownership::OwnerSettingsService,
// Possibly notifies DeviceSettingsService that owner's keypair is loaded.
virtual void OnPostKeypairLoadedActions() override;
- // Performs next operation in the queue.
- void StartNextOperation();
+ void ProcessNextSetRequestAsync();
Mattias Nissler (ping if slow) 2014/10/17 12:05:27 The functions here could use some documentation.
ygorshenin1 2014/10/20 11:36:10 Done.
- // Called when sign-and-store operation completes it's work.
- void HandleCompletedOperation(const base::Closure& callback,
- SessionManagerOperation* operation,
- DeviceSettingsService::Status status);
+ void ProcessNextSetRequest();
+
+ void OnPolicyAssembledAndSigned(
+ scoped_ptr<DeviceSettingsServiceLock> lock,
+ scoped_ptr<enterprise_management::PolicyFetchResponse> policy_response);
+
+ void OnSignedPolicyStored();
+
+ void HandleError();
// Profile this service instance belongs to.
Profile* profile_;
@@ -105,14 +127,18 @@ class OwnerSettingsServiceChromeOS : public ownership::OwnerSettingsService,
// Whether TPM token still needs to be initialized.
bool waiting_for_tpm_token_;
- // The queue of pending sign-and-store operations. The first operation on the
- // queue is currently active; it gets removed and destroyed once it completes.
- std::deque<SessionManagerOperation*> pending_operations_;
+ typedef std::pair<std::string, linked_ptr<base::Value>> SetRequest;
Mattias Nissler (ping if slow) 2014/10/17 12:05:27 Looking at this, I can only guess what the first c
ygorshenin1 2014/10/20 11:36:10 Done.
+ std::queue<SetRequest> set_requests_;
+
+ ObserverList<Observer> observers_;
content::NotificationRegistrar registrar_;
base::WeakPtrFactory<OwnerSettingsServiceChromeOS> weak_factory_;
+ base::WeakPtrFactory<OwnerSettingsServiceChromeOS>
+ set_requests_callback_factory_;
+
DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOS);
};

Powered by Google App Engine
This is Rietveld 408576698