Report Synthetic Field Trials in Crash Reports

This CL will add support for reporting synthetic field trials in crash reports.
This will help with better triage of bugs related to such experiments.

BUG=728266

Review-Url: https://codereview.chromium.org/2921773002
Cr-Commit-Position: refs/heads/master@{#477645}
diff --git a/components/variations/active_field_trials.cc b/components/variations/active_field_trials.cc
index 07c8b6b5..71ff95d 100644
--- a/components/variations/active_field_trials.cc
+++ b/components/variations/active_field_trials.cc
@@ -11,6 +11,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/variations/metrics_util.h"
+#include "components/variations/synthetic_trials_active_group_id_provider.h"
 
 namespace variations {
 
@@ -28,6 +29,15 @@
   }
 }
 
+void AppendActiveGroupIdsAsStrings(
+    const std::vector<ActiveGroupId> name_group_ids,
+    std::vector<std::string>* output) {
+  for (const auto& active_group_id : name_group_ids) {
+    output->push_back(base::StringPrintf("%x-%x", active_group_id.name,
+                                         active_group_id.group));
+  }
+}
+
 }  // namespace
 
 ActiveGroupId MakeActiveGroupId(const std::string& trial_name,
@@ -54,10 +64,14 @@
   DCHECK(output->empty());
   std::vector<ActiveGroupId> name_group_ids;
   GetFieldTrialActiveGroupIds(&name_group_ids);
-  for (size_t i = 0; i < name_group_ids.size(); ++i) {
-    output->push_back(base::StringPrintf(
-        "%x-%x", name_group_ids[i].name, name_group_ids[i].group));
-  }
+  AppendActiveGroupIdsAsStrings(name_group_ids, output);
+}
+
+void GetSyntheticTrialGroupIdsAsString(std::vector<std::string>* output) {
+  std::vector<ActiveGroupId> name_group_ids;
+  SyntheticTrialsActiveGroupIdProvider::GetInstance()->GetActiveGroupIds(
+      &name_group_ids);
+  AppendActiveGroupIdsAsStrings(name_group_ids, output);
 }
 
 namespace testing {