diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-04 01:14:14 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-04 01:14:14 +0000 |
commit | 8cffde0ee3ef1f115d8e37e2c34daba3d6b06f64 (patch) | |
tree | 679bb75911426db019d798aa063cbc64e68344c2 /base/metrics | |
parent | c7cf6fb3fd3cb9f8a70a20ddc763ac4065564299 (diff) | |
download | chromium_src-8cffde0ee3ef1f115d8e37e2c34daba3d6b06f64.zip chromium_src-8cffde0ee3ef1f115d8e37e2c34daba3d6b06f64.tar.gz chromium_src-8cffde0ee3ef1f115d8e37e2c34daba3d6b06f64.tar.bz2 |
FieldTrial - Use ObserverListThreadSafe instead of
ObserverList.
R=jar
TEST=base unit tests
BUG=126027
Review URL: http://codereview.chromium.org/10342021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135263 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/metrics')
-rw-r--r-- | base/metrics/field_trial.cc | 14 | ||||
-rw-r--r-- | base/metrics/field_trial.h | 6 |
2 files changed, 11 insertions, 9 deletions
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc index f447c1f..245f2bf 100644 --- a/base/metrics/field_trial.cc +++ b/base/metrics/field_trial.cc @@ -213,7 +213,8 @@ bool FieldTrialList::used_without_global_ = false; FieldTrialList::FieldTrialList(const std::string& client_id) : application_start_time_(TimeTicks::Now()), client_id_(client_id), - observer_list_(ObserverList<Observer>::NOTIFY_EXISTING_ONLY) { + observer_list_(new ObserverListThreadSafe<FieldTrialList::Observer>( + ObserverListBase<FieldTrialList::Observer>::NOTIFY_EXISTING_ONLY)) { DCHECK(!global_); DCHECK(!used_without_global_); global_ = this; @@ -393,7 +394,7 @@ void FieldTrialList::AddObserver(Observer* observer) { if (!global_) return; DCHECK(global_); - global_->observer_list_.AddObserver(observer); + global_->observer_list_->AddObserver(observer); } // static @@ -401,7 +402,7 @@ void FieldTrialList::RemoveObserver(Observer* observer) { if (!global_) return; DCHECK(global_); - global_->observer_list_.RemoveObserver(observer); + global_->observer_list_->RemoveObserver(observer); } // static @@ -411,9 +412,10 @@ void FieldTrialList::NotifyFieldTrialGroupSelection( if (!global_) return; DCHECK(global_); - FOR_EACH_OBSERVER(Observer, - global_->observer_list_, - OnFieldTrialGroupFinalized(name, group_name)); + global_->observer_list_->Notify( + &FieldTrialList::Observer::OnFieldTrialGroupFinalized, + name, + group_name); } // static diff --git a/base/metrics/field_trial.h b/base/metrics/field_trial.h index e1b30b9..87683a1 100644 --- a/base/metrics/field_trial.h +++ b/base/metrics/field_trial.h @@ -82,7 +82,7 @@ #include "base/base_export.h" #include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" -#include "base/observer_list.h" +#include "base/observer_list_threadsafe.h" #include "base/synchronization/lock.h" #include "base/time.h" @@ -256,7 +256,7 @@ class BASE_EXPORT FieldTrialList { static int kExpirationYearInFuture; // Observer is notified when a FieldTrial's group is selected. - class Observer { + class BASE_EXPORT Observer { public: // Notify observers when FieldTrials's group is selected. virtual void OnFieldTrialGroupFinalized(const std::string& trial_name, @@ -423,7 +423,7 @@ class BASE_EXPORT FieldTrialList { std::string client_id_; // List of observers to be notified when a group is selected for a FieldTrial. - ObserverList<Observer> observer_list_; + scoped_refptr<ObserverListThreadSafe<Observer> > observer_list_; DISALLOW_COPY_AND_ASSIGN(FieldTrialList); }; |