| OLD | NEW | 
|   1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |   1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|   2 // Use of this source code is governed by a BSD-style license that can be |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4  |   4  | 
|   5 #include "chrome/browser/metrics/field_trial_synchronizer.h" |   5 #include "chrome/browser/metrics/field_trial_synchronizer.h" | 
|   6  |   6  | 
|   7 #include "base/bind.h" |   7 #include "base/bind.h" | 
|   8 #include "base/logging.h" |   8 #include "base/logging.h" | 
|   9 #include "base/threading/thread.h" |   9 #include "base/threading/thread.h" | 
|  10 #include "chrome/common/chrome_constants.h" |  10 #include "chrome/common/chrome_constants.h" | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
|  31   base::FieldTrialList::AddObserver(this); |  31   base::FieldTrialList::AddObserver(this); | 
|  32  |  32  | 
|  33   chrome_variations::SetChildProcessLoggingVariationList(); |  33   chrome_variations::SetChildProcessLoggingVariationList(); | 
|  34 } |  34 } | 
|  35  |  35  | 
|  36 void FieldTrialSynchronizer::NotifyAllRenderers( |  36 void FieldTrialSynchronizer::NotifyAllRenderers( | 
|  37     const std::string& field_trial_name, |  37     const std::string& field_trial_name, | 
|  38     const std::string& group_name) { |  38     const std::string& group_name) { | 
|  39   // To iterate over RenderProcessHosts, or to send messages to the hosts, we |  39   // To iterate over RenderProcessHosts, or to send messages to the hosts, we | 
|  40   // need to be on the UI thread. |  40   // need to be on the UI thread. | 
|  41   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |  41   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
|  42  |  42  | 
|  43   for (content::RenderProcessHost::iterator it( |  43   for (content::RenderProcessHost::iterator it( | 
|  44           content::RenderProcessHost::AllHostsIterator()); |  44           content::RenderProcessHost::AllHostsIterator()); | 
|  45        !it.IsAtEnd(); it.Advance()) { |  45        !it.IsAtEnd(); it.Advance()) { | 
|  46     it.GetCurrentValue()->Send( |  46     it.GetCurrentValue()->Send( | 
|  47         new ChromeViewMsg_SetFieldTrialGroup(field_trial_name, group_name)); |  47         new ChromeViewMsg_SetFieldTrialGroup(field_trial_name, group_name)); | 
|  48   } |  48   } | 
|  49 } |  49 } | 
|  50  |  50  | 
|  51 void FieldTrialSynchronizer::OnFieldTrialGroupFinalized( |  51 void FieldTrialSynchronizer::OnFieldTrialGroupFinalized( | 
|  52     const std::string& field_trial_name, |  52     const std::string& field_trial_name, | 
|  53     const std::string& group_name) { |  53     const std::string& group_name) { | 
|  54   CHECK(!field_trial_name.empty() && !group_name.empty()); |  54   CHECK(!field_trial_name.empty() && !group_name.empty()); | 
|  55   BrowserThread::PostTask( |  55   BrowserThread::PostTask( | 
|  56       BrowserThread::UI, FROM_HERE, |  56       BrowserThread::UI, FROM_HERE, | 
|  57       base::Bind(&FieldTrialSynchronizer::NotifyAllRenderers, |  57       base::Bind(&FieldTrialSynchronizer::NotifyAllRenderers, | 
|  58                  this, |  58                  this, | 
|  59                  field_trial_name, |  59                  field_trial_name, | 
|  60                  group_name)); |  60                  group_name)); | 
|  61   chrome_variations::SetChildProcessLoggingVariationList(); |  61   chrome_variations::SetChildProcessLoggingVariationList(); | 
|  62 } |  62 } | 
|  63  |  63  | 
|  64 FieldTrialSynchronizer::~FieldTrialSynchronizer() { |  64 FieldTrialSynchronizer::~FieldTrialSynchronizer() { | 
|  65   base::FieldTrialList::RemoveObserver(this); |  65   base::FieldTrialList::RemoveObserver(this); | 
|  66   g_field_trial_synchronizer = NULL; |  66   g_field_trial_synchronizer = NULL; | 
|  67 } |  67 } | 
| OLD | NEW |