| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #ifndef CHROME_COMMON_VARIATIONS_CHILD_PROCESS_FIELD_TRIAL_SYNCER_H_ | 5 #ifndef CHROME_COMMON_VARIATIONS_CHILD_PROCESS_FIELD_TRIAL_SYNCER_H_ |
| 6 #define CHROME_COMMON_VARIATIONS_CHILD_PROCESS_FIELD_TRIAL_SYNCER_H_ | 6 #define CHROME_COMMON_VARIATIONS_CHILD_PROCESS_FIELD_TRIAL_SYNCER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/metrics/field_trial.h" | 11 #include "base/metrics/field_trial.h" |
| 12 #include "ipc/ipc_sender.h" | |
| 13 | 12 |
| 14 namespace base { | 13 namespace base { |
| 15 class CommandLine; | 14 class CommandLine; |
| 16 } | 15 } |
| 17 | 16 |
| 18 namespace chrome_variations { | 17 namespace chrome_variations { |
| 19 | 18 |
| 20 // ChildProcessFieldTrialSyncer is a utility class that's responsible for | 19 // ChildProcessFieldTrialSyncer is a utility class that's responsible for |
| 21 // syncing the "activated" state of field trials between browser and child | 20 // syncing the "activated" state of field trials between browser and child |
| 22 // processes. Specifically, when a field trial is activated in the browser, it | 21 // processes. Specifically, when a field trial is activated in the browser, it |
| 23 // also activates it in the child process and when a field trial is activated | 22 // also activates it in the child process and when a field trial is activated |
| 24 // in the child process, it notifies the browser process to activate it. | 23 // in the child process, it notifies the browser process to activate it. |
| 25 class ChildProcessFieldTrialSyncer : public base::FieldTrialList::Observer { | 24 class ChildProcessFieldTrialSyncer { |
| 26 public: | 25 public: |
| 27 // ChildProcessFieldTrialSyncer constructor taking an externally owned | 26 // ChildProcessFieldTrialSyncer constructor taking an externally owned |
| 28 // |ipc_sender| param for sending ChromeViewHostMsg_FieldTrialActivated IPCs | 27 // |observer| param that's responsible for sending IPCs to the browser process |
| 29 // to the browser process. The |ipc_sender| must outlive this object. | 28 // when a trial is activated. The |observer| must outlive this object. |
| 30 explicit ChildProcessFieldTrialSyncer(IPC::Sender* ipc_sender); | 29 explicit ChildProcessFieldTrialSyncer( |
| 31 ~ChildProcessFieldTrialSyncer() override; | 30 base::FieldTrialList::Observer* observer); |
| 31 ~ChildProcessFieldTrialSyncer(); |
| 32 | 32 |
| 33 // Initializes field trial state change observation and notifies the browser | 33 // Initializes field trial state change observation and notifies the browser |
| 34 // of any field trials that might have already been activated. | 34 // of any field trials that might have already been activated. |
| 35 void InitFieldTrialObserving(const base::CommandLine& command_line); | 35 void InitFieldTrialObserving(const base::CommandLine& command_line); |
| 36 | 36 |
| 37 // Handler for messages from the browser process notifying the child process | 37 // Handler for messages from the browser process notifying the child process |
| 38 // that a field trial was activated. | 38 // that a field trial was activated. |
| 39 void OnSetFieldTrialGroup(const std::string& trial_name, | 39 void OnSetFieldTrialGroup(const std::string& trial_name, |
| 40 const std::string& group_name); | 40 const std::string& group_name); |
| 41 | 41 |
| 42 private: | 42 private: |
| 43 // base::FieldTrialList::Observer: | 43 base::FieldTrialList::Observer* const observer_; |
| 44 void OnFieldTrialGroupFinalized(const std::string& trial_name, | |
| 45 const std::string& group_name) override; | |
| 46 | |
| 47 IPC::Sender* const ipc_sender_; | |
| 48 | 44 |
| 49 DISALLOW_COPY_AND_ASSIGN(ChildProcessFieldTrialSyncer); | 45 DISALLOW_COPY_AND_ASSIGN(ChildProcessFieldTrialSyncer); |
| 50 }; | 46 }; |
| 51 | 47 |
| 52 } // namespace chrome_variations | 48 } // namespace chrome_variations |
| 53 | 49 |
| 54 #endif // CHROME_COMMON_VARIATIONS_CHILD_PROCESS_FIELD_TRIAL_SYNCER_H_ | 50 #endif // CHROME_COMMON_VARIATIONS_CHILD_PROCESS_FIELD_TRIAL_SYNCER_H_ |
| OLD | NEW |