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

Unified Diff: chrome/browser/managed_mode/managed_user_settings_service.h

Issue 23376002: Move ManagedModePolicyProvider functionality to ManagedUserSettingsService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years, 3 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/managed_mode/managed_user_settings_service.h
diff --git a/chrome/browser/managed_mode/managed_user_settings_service.h b/chrome/browser/managed_mode/managed_user_settings_service.h
index 70bb0c82f59156c36a53e8b6bfb84912baddac67..cc03c01dc80b5ce7554a02dd25c471c748acac9c 100644
--- a/chrome/browser/managed_mode/managed_user_settings_service.h
+++ b/chrome/browser/managed_mode/managed_user_settings_service.h
@@ -15,6 +15,7 @@
#include "base/values.h"
#include "chrome/browser/managed_mode/managed_users.h"
#include "components/browser_context_keyed_service/browser_context_keyed_service.h"
+#include "sync/api/syncable_service.h"
class PersistentPrefStore;
class Profile;
@@ -24,7 +25,6 @@ class FilePath;
class SequencedTaskRunner;
}
-// TODO(bauerb): This class is not yet fully functional.
// This class syncs managed user settings from a server, which are mapped to
// preferences. The downloaded settings are persisted in a PrefStore (which is
// not directly hooked up to the PrefService; it's just used internally).
@@ -50,6 +50,7 @@ class SequencedTaskRunner;
// would be encoded as two sync items, one with key "Moose:foo" and value "bar",
// and one with key "Moose:baz" and value "blurp".
class ManagedUserSettingsService : public BrowserContextKeyedService,
+ public syncer::SyncableService,
public PrefStore::Observer {
public:
// A callback whose first parameter is a dictionary containing all managed
@@ -60,6 +61,14 @@ class ManagedUserSettingsService : public BrowserContextKeyedService,
ManagedUserSettingsService();
virtual ~ManagedUserSettingsService();
+ // Initializes the service by loading its settings from a file underneath the
+ // |profile_path|. File I/O will be serialized via the
+ // |sequenced_task_runner|. If |load_synchronously| is true, the settings will
+ // be loaded synchronously, otherwise asynchronously.
+ void Init(base::FilePath profile_path,
+ base::SequencedTaskRunner* sequenced_task_runner,
+ bool load_synchronously);
+
// Initializes the service by loading its settings from the |pref_store|.
// Use this method in tests to inject a different PrefStore than the
// default one.
@@ -78,13 +87,42 @@ class ManagedUserSettingsService : public BrowserContextKeyedService,
// Clears all managed user settings and items.
void Clear();
+ // Constructs a key for a split managed user setting from a prefix and a
+ // variable key.
+ static std::string MakeSplitSettingKey(const std::string& prefix,
+ const std::string& key);
+
+ // Uploads an item to the Sync server. Items are the same data structure as
+ // managed user settings (i.e. key-value pairs, as described at the top of
+ // the file), but they are only uploaded (whereas managed user settings are
+ // only downloaded), and never passed to the preference system.
+ // An example of an uploaded item is an access request to a blocked URL.
+ void UploadItem(const std::string& key, scoped_ptr<base::Value> value);
+
// Sets the setting with the given |key| to a copy of the given |value|.
void SetLocalSettingForTesting(const std::string& key,
scoped_ptr<base::Value> value);
+ // Public for testing.
+ static syncer::SyncData CreateSyncDataForSetting(const std::string& name,
+ const base::Value& value);
+
// BrowserContextKeyedService implementation:
virtual void Shutdown() OVERRIDE;
+ // SyncableService implementation:
+ virtual syncer::SyncMergeResult MergeDataAndStartSyncing(
+ syncer::ModelType type,
+ const syncer::SyncDataList& initial_sync_data,
+ scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
+ scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE;
+ virtual void StopSyncing(syncer::ModelType type) OVERRIDE;
+ virtual syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const
+ OVERRIDE;
+ virtual syncer::SyncError ProcessSyncChanges(
+ const tracked_objects::Location& from_here,
+ const syncer::SyncChangeList& change_list) OVERRIDE;
+
// PrefStore::Observer implementation:
virtual void OnPrefValueChanged(const std::string& key) OVERRIDE;
virtual void OnInitializationCompleted(bool success) OVERRIDE;
@@ -95,6 +133,12 @@ class ManagedUserSettingsService : public BrowserContextKeyedService,
base::DictionaryValue* GetSplitSettings() const;
base::DictionaryValue* GetQueuedItems() const;
+ // Returns the dictionary where a given Sync item should be stored, depending
+ // on whether the managed user setting is atomic or split. In case of a split
+ // setting, the split setting prefix of |key| is removed, so that |key| can
+ // be used to update the returned dictionary.
+ base::DictionaryValue* GetDictionaryAndSplitKey(std::string* key) const;
+
// Returns a dictionary with all managed user settings if the service is
// active, or NULL otherwise.
scoped_ptr<base::DictionaryValue> GetSettings();
@@ -114,6 +158,9 @@ class ManagedUserSettingsService : public BrowserContextKeyedService,
std::vector<SettingsCallback> subscribers_;
+ scoped_ptr<syncer::SyncChangeProcessor> sync_processor_;
+ scoped_ptr<syncer::SyncErrorFactory> error_handler_;
+
DISALLOW_COPY_AND_ASSIGN(ManagedUserSettingsService);
};

Powered by Google App Engine
This is Rietveld 408576698