| Index: chrome/browser/prefs/pref_value_store.cc
|
| diff --git a/chrome/browser/prefs/pref_value_store.cc b/chrome/browser/prefs/pref_value_store.cc
|
| index 3ad6c44f009bc614e641d271d666f9f7e0237c9f..0fd3449ad2b407f23ab902e96f9129c89830bd38 100644
|
| --- a/chrome/browser/prefs/pref_value_store.cc
|
| +++ b/chrome/browser/prefs/pref_value_store.cc
|
| @@ -4,10 +4,7 @@
|
|
|
| #include "chrome/browser/prefs/pref_value_store.h"
|
|
|
| -#include "chrome/browser/browser_thread.h"
|
| -#include "chrome/browser/policy/configuration_policy_pref_store.h"
|
| #include "chrome/browser/prefs/pref_notifier.h"
|
| -#include "chrome/common/notification_service.h"
|
|
|
| PrefValueStore::PrefStoreKeeper::PrefStoreKeeper()
|
| : pref_value_store_(NULL),
|
| @@ -48,10 +45,8 @@ PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs,
|
| PrefStore* user_prefs,
|
| PrefStore* recommended_prefs,
|
| PrefStore* default_prefs,
|
| - PrefNotifier* pref_notifier,
|
| - Profile* profile)
|
| - : pref_notifier_(pref_notifier),
|
| - profile_(profile) {
|
| + PrefNotifier* pref_notifier)
|
| + : pref_notifier_(pref_notifier) {
|
| InitPrefStore(MANAGED_PLATFORM_STORE, managed_platform_prefs);
|
| InitPrefStore(DEVICE_MANAGEMENT_STORE, device_management_prefs);
|
| InitPrefStore(EXTENSION_STORE, extension_prefs);
|
| @@ -60,11 +55,6 @@ PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs,
|
| InitPrefStore(RECOMMENDED_STORE, recommended_prefs);
|
| InitPrefStore(DEFAULT_STORE, default_prefs);
|
|
|
| - // TODO(mnissler): Remove after policy refresh cleanup.
|
| - registrar_.Add(this,
|
| - NotificationType(NotificationType::POLICY_CHANGED),
|
| - NotificationService::AllSources());
|
| -
|
| CheckInitializationCompleted();
|
| }
|
|
|
| @@ -250,142 +240,6 @@ bool PrefValueStore::GetValueFromStore(const char* name,
|
| return false;
|
| }
|
|
|
| -void PrefValueStore::RefreshPolicyPrefsOnFileThread(
|
| - BrowserThread::ID calling_thread_id,
|
| - policy::ConfigurationPolicyPrefStore* new_managed_platform_pref_store,
|
| - policy::ConfigurationPolicyPrefStore* new_device_management_pref_store,
|
| - policy::ConfigurationPolicyPrefStore* new_recommended_pref_store) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| - scoped_ptr<policy::ConfigurationPolicyPrefStore> managed_platform_pref_store(
|
| - new_managed_platform_pref_store);
|
| - scoped_ptr<policy::ConfigurationPolicyPrefStore> device_management_pref_store(
|
| - new_device_management_pref_store);
|
| - scoped_ptr<policy::ConfigurationPolicyPrefStore> recommended_pref_store(
|
| - new_recommended_pref_store);
|
| -
|
| - BrowserThread::PostTask(
|
| - calling_thread_id, FROM_HERE,
|
| - NewRunnableMethod(this,
|
| - &PrefValueStore::RefreshPolicyPrefsCompletion,
|
| - managed_platform_pref_store.release(),
|
| - device_management_pref_store.release(),
|
| - recommended_pref_store.release()));
|
| -}
|
| -
|
| -void PrefValueStore::RefreshPolicyPrefs() {
|
| - using policy::ConfigurationPolicyPrefStore;
|
| - // Because loading of policy information must happen on the FILE
|
| - // thread, it's not possible to just replace the contents of the
|
| - // managed and recommended stores in place due to possible
|
| - // concurrent access from the UI thread. Instead, new stores are
|
| - // created and the refreshed policy read into them. The new stores
|
| - // are swapped with the old from a Task on the UI thread after the
|
| - // load is complete.
|
| - ConfigurationPolicyPrefStore* new_managed_platform_pref_store(
|
| - ConfigurationPolicyPrefStore::CreateManagedPlatformPolicyPrefStore());
|
| - ConfigurationPolicyPrefStore* new_device_management_pref_store(
|
| - ConfigurationPolicyPrefStore::CreateDeviceManagementPolicyPrefStore(
|
| - profile_));
|
| - ConfigurationPolicyPrefStore* new_recommended_pref_store(
|
| - ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore());
|
| - BrowserThread::ID current_thread_id;
|
| - CHECK(BrowserThread::GetCurrentThreadIdentifier(¤t_thread_id));
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - NewRunnableMethod(this,
|
| - &PrefValueStore::RefreshPolicyPrefsOnFileThread,
|
| - current_thread_id,
|
| - new_managed_platform_pref_store,
|
| - new_device_management_pref_store,
|
| - new_recommended_pref_store));
|
| -}
|
| -
|
| -void PrefValueStore::RefreshPolicyPrefsCompletion(
|
| - policy::ConfigurationPolicyPrefStore* new_managed_platform_pref_store,
|
| - policy::ConfigurationPolicyPrefStore* new_device_management_pref_store,
|
| - policy::ConfigurationPolicyPrefStore* new_recommended_pref_store) {
|
| - // Determine the paths of all the changed preferences values in the three
|
| - // policy-related stores (managed platform, device management and
|
| - // recommended).
|
| - DictionaryValue* managed_platform_prefs_before(
|
| - static_cast<policy::ConfigurationPolicyPrefStore*>(
|
| - GetPrefStore(MANAGED_PLATFORM_STORE))->prefs());
|
| - DictionaryValue* managed_platform_prefs_after(
|
| - new_managed_platform_pref_store->prefs());
|
| - DictionaryValue* device_management_prefs_before(
|
| - static_cast<policy::ConfigurationPolicyPrefStore*>(
|
| - GetPrefStore(DEVICE_MANAGEMENT_STORE))->prefs());
|
| - DictionaryValue* device_management_prefs_after(
|
| - new_device_management_pref_store->prefs());
|
| - DictionaryValue* recommended_prefs_before(
|
| - static_cast<policy::ConfigurationPolicyPrefStore*>(
|
| - GetPrefStore(RECOMMENDED_STORE))->prefs());
|
| - DictionaryValue* recommended_prefs_after(new_recommended_pref_store->prefs());
|
| -
|
| - std::vector<std::string> changed_managed_platform_paths;
|
| - managed_platform_prefs_before->GetDifferingPaths(
|
| - managed_platform_prefs_after,
|
| - &changed_managed_platform_paths);
|
| -
|
| - std::vector<std::string> changed_device_management_paths;
|
| - device_management_prefs_before->GetDifferingPaths(
|
| - device_management_prefs_after,
|
| - &changed_device_management_paths);
|
| -
|
| - std::vector<std::string> changed_recommended_paths;
|
| - recommended_prefs_before->GetDifferingPaths(
|
| - recommended_prefs_after,
|
| - &changed_recommended_paths);
|
| -
|
| - // Merge all three vectors of changed value paths together, filtering
|
| - // duplicates in a post-processing step.
|
| - std::vector<std::string> all_changed_managed_platform_paths(
|
| - changed_managed_platform_paths.size() +
|
| - changed_device_management_paths.size());
|
| -
|
| - std::vector<std::string>::iterator last_insert =
|
| - std::merge(changed_managed_platform_paths.begin(),
|
| - changed_managed_platform_paths.end(),
|
| - changed_device_management_paths.begin(),
|
| - changed_device_management_paths.end(),
|
| - all_changed_managed_platform_paths.begin());
|
| - all_changed_managed_platform_paths.resize(
|
| - last_insert - all_changed_managed_platform_paths.begin());
|
| -
|
| - std::vector<std::string> changed_paths(
|
| - all_changed_managed_platform_paths.size() +
|
| - changed_recommended_paths.size());
|
| - last_insert = std::merge(all_changed_managed_platform_paths.begin(),
|
| - all_changed_managed_platform_paths.end(),
|
| - changed_recommended_paths.begin(),
|
| - changed_recommended_paths.end(),
|
| - changed_paths.begin());
|
| - changed_paths.resize(last_insert - changed_paths.begin());
|
| -
|
| - last_insert = unique(changed_paths.begin(), changed_paths.end());
|
| - changed_paths.resize(last_insert - changed_paths.begin());
|
| -
|
| - // Replace the old stores with the new and send notification of the changed
|
| - // preferences.
|
| - InitPrefStore(MANAGED_PLATFORM_STORE, new_managed_platform_pref_store);
|
| - InitPrefStore(DEVICE_MANAGEMENT_STORE, new_device_management_pref_store);
|
| - InitPrefStore(RECOMMENDED_STORE, new_recommended_pref_store);
|
| -
|
| - std::vector<std::string>::const_iterator current;
|
| - for (current = changed_paths.begin();
|
| - current != changed_paths.end();
|
| - ++current) {
|
| - pref_notifier_->OnPreferenceChanged(current->c_str());
|
| - }
|
| -}
|
| -
|
| -void PrefValueStore::Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - if (type == NotificationType::POLICY_CHANGED)
|
| - RefreshPolicyPrefs();
|
| -}
|
| -
|
| void PrefValueStore::OnPrefValueChanged(PrefValueStore::PrefStoreType type,
|
| const std::string& key) {
|
| NotifyPrefChanged(key.c_str(), type);
|
|
|