Index: content/common/child_process_host_impl.cc |
diff --git a/content/common/child_process_host_impl.cc b/content/common/child_process_host_impl.cc |
index e9b81e75f9d894f99bc530a4fbe79bf8c9609dff..df934815567ffe0b4ade170aed4eaaf725f9da84 100644 |
--- a/content/common/child_process_host_impl.cc |
+++ b/content/common/child_process_host_impl.cc |
@@ -7,11 +7,14 @@ |
#include <limits> |
#include "base/atomic_sequence_num.h" |
+#include "base/base_switches.h" |
#include "base/command_line.h" |
+#include "base/feature_list.h" |
#include "base/files/file_path.h" |
#include "base/hash.h" |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/metrics/field_trial.h" |
#include "base/metrics/histogram.h" |
#include "base/numerics/safe_math.h" |
#include "base/path_service.h" |
@@ -198,6 +201,27 @@ int ChildProcessHostImpl::GenerateChildProcessUniqueId() { |
return id; |
} |
+void ChildProcessHostImpl::CopyFeatureAndFieldTrialFlags( |
+ base::CommandLine* cmd_line) { |
+ std::string enabled_features; |
+ std::string disabled_features; |
+ base::FeatureList::GetInstance()->GetFeatureOverrides(&enabled_features, |
+ &disabled_features); |
+ if (!enabled_features.empty()) |
+ cmd_line->AppendSwitchASCII(switches::kEnableFeatures, enabled_features); |
+ if (!disabled_features.empty()) |
+ cmd_line->AppendSwitchASCII(switches::kDisableFeatures, disabled_features); |
+ |
+ // If we run base::FieldTrials, we want to pass to their state to the |
+ // child process so that it can act in accordance with each state. |
+ std::string field_trial_states; |
+ base::FieldTrialList::AllStatesToString(&field_trial_states); |
+ if (!field_trial_states.empty()) { |
+ cmd_line->AppendSwitchASCII(switches::kForceFieldTrials, |
+ field_trial_states); |
+ } |
+} |
+ |
uint64_t ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId( |
int child_process_id) { |
// In single process mode, all the children are hosted in the same process, |