Skip to content
This repository was archived by the owner on Sep 25, 2019. It is now read-only.

Commit c50f758

Browse files
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
1 parent 0af2a8a commit c50f758

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

base/metrics/field_trial.cc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,8 @@ bool FieldTrialList::used_without_global_ = false;
213213
FieldTrialList::FieldTrialList(const std::string& client_id)
214214
: application_start_time_(TimeTicks::Now()),
215215
client_id_(client_id),
216-
observer_list_(ObserverList<Observer>::NOTIFY_EXISTING_ONLY) {
216+
observer_list_(new ObserverListThreadSafe<FieldTrialList::Observer>(
217+
ObserverListBase<FieldTrialList::Observer>::NOTIFY_EXISTING_ONLY)) {
217218
DCHECK(!global_);
218219
DCHECK(!used_without_global_);
219220
global_ = this;
@@ -393,15 +394,15 @@ void FieldTrialList::AddObserver(Observer* observer) {
393394
if (!global_)
394395
return;
395396
DCHECK(global_);
396-
global_->observer_list_.AddObserver(observer);
397+
global_->observer_list_->AddObserver(observer);
397398
}
398399

399400
// static
400401
void FieldTrialList::RemoveObserver(Observer* observer) {
401402
if (!global_)
402403
return;
403404
DCHECK(global_);
404-
global_->observer_list_.RemoveObserver(observer);
405+
global_->observer_list_->RemoveObserver(observer);
405406
}
406407

407408
// static
@@ -411,9 +412,10 @@ void FieldTrialList::NotifyFieldTrialGroupSelection(
411412
if (!global_)
412413
return;
413414
DCHECK(global_);
414-
FOR_EACH_OBSERVER(Observer,
415-
global_->observer_list_,
416-
OnFieldTrialGroupFinalized(name, group_name));
415+
global_->observer_list_->Notify(
416+
&FieldTrialList::Observer::OnFieldTrialGroupFinalized,
417+
name,
418+
group_name);
417419
}
418420

419421
// static

base/metrics/field_trial.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
#include "base/base_export.h"
8383
#include "base/gtest_prod_util.h"
8484
#include "base/memory/ref_counted.h"
85-
#include "base/observer_list.h"
85+
#include "base/observer_list_threadsafe.h"
8686
#include "base/synchronization/lock.h"
8787
#include "base/time.h"
8888

@@ -256,7 +256,7 @@ class BASE_EXPORT FieldTrialList {
256256
static int kExpirationYearInFuture;
257257

258258
// Observer is notified when a FieldTrial's group is selected.
259-
class Observer {
259+
class BASE_EXPORT Observer {
260260
public:
261261
// Notify observers when FieldTrials's group is selected.
262262
virtual void OnFieldTrialGroupFinalized(const std::string& trial_name,
@@ -423,7 +423,7 @@ class BASE_EXPORT FieldTrialList {
423423
std::string client_id_;
424424

425425
// List of observers to be notified when a group is selected for a FieldTrial.
426-
ObserverList<Observer> observer_list_;
426+
scoped_refptr<ObserverListThreadSafe<Observer> > observer_list_;
427427

428428
DISALLOW_COPY_AND_ASSIGN(FieldTrialList);
429429
};

0 commit comments

Comments
 (0)