diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-23 02:45:11 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-23 02:45:11 +0000 |
commit | 0b48db4400f9a20de3c9f5bea099c1a3cbcf5015 (patch) | |
tree | c7149e77252a1fe846a87cf93c1b98a02fe53296 /base/field_trial.cc | |
parent | 202dee0077b3756f5fad43c521ceec4f7349c91e (diff) | |
download | chromium_src-0b48db4400f9a20de3c9f5bea099c1a3cbcf5015.zip chromium_src-0b48db4400f9a20de3c9f5bea099c1a3cbcf5015.tar.gz chromium_src-0b48db4400f9a20de3c9f5bea099c1a3cbcf5015.tar.bz2 |
Attempt to detect impact of disabling dns prefetching on transaction latency
This is also meant to exercise the field trial infrastructure.
r=mbelshe
Review URL: http://codereview.chromium.org/50084
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12271 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/field_trial.cc')
-rw-r--r-- | base/field_trial.cc | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/base/field_trial.cc b/base/field_trial.cc index 901ba16..d0085e6 100644 --- a/base/field_trial.cc +++ b/base/field_trial.cc @@ -63,6 +63,7 @@ FieldTrialList::FieldTrialList() } FieldTrialList::~FieldTrialList() { + AutoLock auto_lock(lock_); while (!registered_.empty()) { RegistrationList::iterator it = registered_.begin(); it->second->Release(); @@ -74,8 +75,8 @@ FieldTrialList::~FieldTrialList() { // static void FieldTrialList::Register(FieldTrial* trial) { - DCHECK(global_->CalledOnValidThread()); - DCHECK(!Find(trial->name())); + AutoLock auto_lock(global_->lock_); + DCHECK(!global_->PreLockedFind(trial->name())); trial->AddRef(); global_->registered_[trial->name()] = trial; } @@ -96,11 +97,17 @@ std::string FieldTrialList::FindFullName(const std::string& name) { return ""; } - // static +// static FieldTrial* FieldTrialList::Find(const std::string& name) { - DCHECK(global_->CalledOnValidThread()); - RegistrationList::iterator it = global_->registered_.find(name); - if (global_->registered_.end() == it) + if (!global_) + return NULL; + AutoLock auto_lock(global_->lock_); + return global_->PreLockedFind(name); +} + +FieldTrial* FieldTrialList::PreLockedFind(const std::string& name) { + RegistrationList::iterator it = registered_.find(name); + if (registered_.end() == it) return NULL; return it->second; } |