| Index: chrome/browser/prefs/pref_notifier.cc
|
| diff --git a/chrome/browser/prefs/pref_notifier.cc b/chrome/browser/prefs/pref_notifier.cc
|
| deleted file mode 100644
|
| index 151b128aa60c88e42cd2c6698c1ca4bc8b08fc4b..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/prefs/pref_notifier.cc
|
| +++ /dev/null
|
| @@ -1,137 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/prefs/pref_notifier.h"
|
| -
|
| -#include "base/stl_util-inl.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/policy/configuration_policy_pref_store.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/browser/prefs/pref_value_store.h"
|
| -#include "chrome/common/notification_service.h"
|
| -
|
| -
|
| -PrefNotifier::PrefNotifier(PrefService* service, PrefValueStore* value_store)
|
| - : pref_service_(service),
|
| - pref_value_store_(value_store) {
|
| - registrar_.Add(this,
|
| - NotificationType(NotificationType::POLICY_CHANGED),
|
| - NotificationService::AllSources());
|
| -}
|
| -
|
| -PrefNotifier::~PrefNotifier() {
|
| - DCHECK(CalledOnValidThread());
|
| -
|
| - // Verify that there are no pref observers when we shut down.
|
| - for (PrefObserverMap::iterator it = pref_observers_.begin();
|
| - it != pref_observers_.end(); ++it) {
|
| - NotificationObserverList::Iterator obs_iterator(*(it->second));
|
| - if (obs_iterator.GetNext()) {
|
| - LOG(WARNING) << "pref observer found at shutdown " << it->first;
|
| - }
|
| - }
|
| -
|
| - STLDeleteContainerPairSecondPointers(pref_observers_.begin(),
|
| - pref_observers_.end());
|
| - pref_observers_.clear();
|
| -}
|
| -
|
| -void PrefNotifier::OnPreferenceSet(const char* pref_name,
|
| - PrefNotifier::PrefStoreType new_store) {
|
| - if (pref_value_store_->PrefHasChanged(pref_name, new_store))
|
| - FireObservers(pref_name);
|
| -}
|
| -
|
| -void PrefNotifier::OnUserPreferenceSet(const char* pref_name) {
|
| - OnPreferenceSet(pref_name, PrefNotifier::USER_STORE);
|
| -}
|
| -
|
| -void PrefNotifier::FireObservers(const char* path) {
|
| - DCHECK(CalledOnValidThread());
|
| -
|
| - // Convert path to a std::string because the Details constructor requires a
|
| - // class.
|
| - std::string path_str(path);
|
| - PrefObserverMap::iterator observer_iterator = pref_observers_.find(path_str);
|
| - if (observer_iterator == pref_observers_.end())
|
| - return;
|
| -
|
| - NotificationObserverList::Iterator it(*(observer_iterator->second));
|
| - NotificationObserver* observer;
|
| - while ((observer = it.GetNext()) != NULL) {
|
| - observer->Observe(NotificationType::PREF_CHANGED,
|
| - Source<PrefService>(pref_service_),
|
| - Details<std::string>(&path_str));
|
| - }
|
| -}
|
| -
|
| -void PrefNotifier::AddPrefObserver(const char* path,
|
| - NotificationObserver* obs) {
|
| - // Get the pref observer list associated with the path.
|
| - NotificationObserverList* observer_list = NULL;
|
| - PrefObserverMap::iterator observer_iterator = pref_observers_.find(path);
|
| - if (observer_iterator == pref_observers_.end()) {
|
| - observer_list = new NotificationObserverList;
|
| - pref_observers_[path] = observer_list;
|
| - } else {
|
| - observer_list = observer_iterator->second;
|
| - }
|
| -
|
| - // Verify that this observer doesn't already exist.
|
| - NotificationObserverList::Iterator it(*observer_list);
|
| - NotificationObserver* existing_obs;
|
| - while ((existing_obs = it.GetNext()) != NULL) {
|
| - DCHECK(existing_obs != obs) << path << " observer already registered";
|
| - if (existing_obs == obs)
|
| - return;
|
| - }
|
| -
|
| - // Ok, safe to add the pref observer.
|
| - observer_list->AddObserver(obs);
|
| -}
|
| -
|
| -void PrefNotifier::RemovePrefObserver(const char* path,
|
| - NotificationObserver* obs) {
|
| - DCHECK(CalledOnValidThread());
|
| -
|
| - PrefObserverMap::iterator observer_iterator = pref_observers_.find(path);
|
| - if (observer_iterator == pref_observers_.end()) {
|
| - return;
|
| - }
|
| -
|
| - NotificationObserverList* observer_list = observer_iterator->second;
|
| - observer_list->RemoveObserver(obs);
|
| -}
|
| -
|
| -void PrefNotifier::FireObserversForRefreshedManagedPrefs(
|
| - std::vector<std::string> changed_prefs_paths) {
|
| - DCHECK(CalledOnValidThread());
|
| - std::vector<std::string>::const_iterator current;
|
| - for (current = changed_prefs_paths.begin();
|
| - current != changed_prefs_paths.end();
|
| - ++current) {
|
| - FireObservers(current->c_str());
|
| - }
|
| -}
|
| -
|
| -void PrefNotifier::Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - using policy::ConfigurationPolicyPrefStore;
|
| -
|
| - if (type == NotificationType::POLICY_CHANGED) {
|
| - PrefValueStore::AfterRefreshCallback* callback =
|
| - NewCallback(this,
|
| - &PrefNotifier::FireObserversForRefreshedManagedPrefs);
|
| - // The notification of the policy refresh can come from any thread,
|
| - // but the manipulation of the PrefValueStore must happen on the UI
|
| - // thread, thus the policy refresh must be explicitly started on it.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - NewRunnableMethod(
|
| - pref_value_store_,
|
| - &PrefValueStore::RefreshPolicyPrefs,
|
| - callback));
|
| - }
|
| -}
|
|
|