Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2013 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_MANAGED_MODE_MANAGED_USER_SHARED_SETTINGS_SERVICE_H_ | |
| 6 #define CHROME_BROWSER_MANAGED_MODE_MANAGED_USER_SHARED_SETTINGS_SERVICE_H_ | |
| 7 | |
| 8 #include "base/callback.h" | |
| 9 #include "base/callback_list.h" | |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "chrome/browser/managed_mode/managed_users.h" | |
| 12 #include "components/browser_context_keyed_service/browser_context_keyed_service .h" | |
| 13 #include "sync/api/syncable_service.h" | |
| 14 | |
| 15 class PrefService; | |
| 16 | |
| 17 namespace base { | |
| 18 class DictionaryValue; | |
| 19 class Value; | |
| 20 } | |
| 21 | |
| 22 namespace user_prefs { | |
| 23 class PrefRegistrySyncable; | |
| 24 } | |
| 25 | |
| 26 // ManagedUserSharedSettingsService syncs settings (as key-value pairs) that can | |
| 27 // be modified both by a supervised user and their manager. | |
| 28 // A supervised user can only modify their own settings, whereas a manager can | |
| 29 // modify settings for all their supervised users. | |
| 30 class ManagedUserSharedSettingsService : public BrowserContextKeyedService, | |
| 31 public syncer::SyncableService { | |
| 32 public: | |
| 33 typedef base::Callback<void(const std::string& /* mu_id */, | |
|
Pam (message me for reviews)
2014/01/08 10:30:40
A comment saying that this is called with settings
Bernhard Bauer
2014/01/08 11:42:04
Done.
| |
| 34 const std::string& /* key */)> Callback; | |
| 35 typedef base::CallbackList<void(const std::string& /* mu_id */, | |
| 36 const std::string& /* key */)> CallbackList; | |
| 37 | |
| 38 // Public for testing. Use |ManagedUserSyncServiceFactory::GetForProfile(...)| | |
| 39 // to get an instance of this service. | |
|
Pam (message me for reviews)
2014/01/08 10:30:40
It's not clear from this comment whether the secon
Bernhard Bauer
2014/01/08 11:42:04
Done.
| |
| 40 explicit ManagedUserSharedSettingsService(PrefService* prefs); | |
| 41 virtual ~ManagedUserSharedSettingsService(); | |
| 42 | |
| 43 // Returns the value for the given |key| and the supervised user identified by | |
| 44 // |mu_id|. If either the supervised user or the key does not exist, NULL is | |
| 45 // returned. Note that a supervised user will only see settings for their own | |
| 46 // |mu_id|. | |
|
Pam (message me for reviews)
2014/01/08 10:30:40
For complete clarity, something like
Returns the
Bernhard Bauer
2014/01/08 11:42:04
Well, the "must be their own" part isn't entirely
| |
| 47 const base::Value* GetValue(const std::string& mu_id, const std::string& key); | |
| 48 | |
| 49 // Sets the value for the given |key| and the supervised user identified by | |
| 50 // |mu_id|. If the profile that owns this service belongs to a supervised | |
| 51 // user, |mu_id| must be their own. | |
| 52 void SetValue(const std::string& mu_id, | |
| 53 const std::string& key, | |
| 54 const base::Value& value); | |
| 55 | |
| 56 // Subscribes to changes in the synced settings. The callback will be notified | |
| 57 // whenever any setting for any supervised user is changed via Sync (but not | |
| 58 // for local changes). Subscribers should filter the settings and users they | |
| 59 // are interested in with the |mu_id| and |key| parameters to the callback. | |
| 60 scoped_ptr<CallbackList::Subscription> Subscribe(const Callback& cb); | |
| 61 | |
| 62 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | |
| 63 | |
| 64 // Public for testing. | |
| 65 void SetValueInternal(const std::string& mu_id, | |
|
Pam (message me for reviews)
2014/01/08 10:30:40
I remember seeing some announcement about naming p
Bernhard Bauer
2014/01/08 11:42:04
There is indeed such a presubmit check, but it is
Pam (message me for reviews)
2014/01/08 12:19:28
Agreed. I reviewed the .h before the .cc and didn'
| |
| 66 const std::string& key, | |
| 67 const base::Value& value, | |
| 68 bool acknowledged); | |
| 69 | |
| 70 // Public for testing. | |
| 71 static syncer::SyncData CreateSyncDataForSetting(const std::string& mu_id, | |
| 72 const std::string& key, | |
| 73 const base::Value& value, | |
| 74 bool acknowledged); | |
| 75 | |
| 76 // BrowserContextKeyedService implementation: | |
| 77 virtual void Shutdown() OVERRIDE; | |
| 78 | |
| 79 // SyncableService implementation: | |
| 80 virtual syncer::SyncMergeResult MergeDataAndStartSyncing( | |
| 81 syncer::ModelType type, | |
| 82 const syncer::SyncDataList& initial_sync_data, | |
| 83 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, | |
| 84 scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE; | |
| 85 virtual void StopSyncing(syncer::ModelType type) OVERRIDE; | |
| 86 virtual syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const | |
| 87 OVERRIDE; | |
| 88 virtual syncer::SyncError ProcessSyncChanges( | |
| 89 const tracked_objects::Location& from_here, | |
| 90 const syncer::SyncChangeList& change_list) OVERRIDE; | |
| 91 | |
| 92 private: | |
| 93 friend class ManagedUserSharedSettingsUpdate; | |
| 94 | |
| 95 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; | |
| 96 scoped_ptr<syncer::SyncErrorFactory> error_handler_; | |
| 97 | |
| 98 CallbackList callbacks_; | |
| 99 | |
| 100 PrefService* prefs_; | |
| 101 }; | |
| 102 | |
| 103 #endif // CHROME_BROWSER_MANAGED_MODE_MANAGED_USER_SHARED_SETTINGS_SERVICE_H_ | |
| OLD | NEW |