Move FieldTrialRecorder mojom to content

After this move, we can change PpapiHostMsg_FieldTrialActivated and
GpuHostMsg_FieldTrialActivated to mojo.

To see an example sequence of calls see:
    https://docs.google.com/a/google.com/document/d/18radEJD0pTzz79I7jFsfw8NIuF_jXufNUj6Mr48cO1U/edit?usp=sharing

BUG=698284

Review-Url: https://codereview.chromium.org/2732213004
Cr-Commit-Position: refs/heads/master@{#457644}
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h
index 7100b0c..c924093 100644
--- a/content/renderer/render_thread_impl.h
+++ b/content/renderer/render_thread_impl.h
@@ -18,12 +18,14 @@
 #include "base/memory/memory_coordinator_client.h"
 #include "base/memory/memory_pressure_listener.h"
 #include "base/memory/ref_counted.h"
+#include "base/metrics/field_trial.h"
 #include "base/metrics/user_metrics_action.h"
 #include "base/observer_list.h"
 #include "base/strings/string16.h"
 #include "base/threading/thread_checker.h"
 #include "base/timer/timer.h"
 #include "build/build_config.h"
+#include "components/variations/child_process_field_trial_syncer.h"
 #include "content/child/child_thread_impl.h"
 #include "content/child/memory/child_memory_coordinator_impl.h"
 #include "content/common/associated_interface_registry_impl.h"
@@ -158,6 +160,7 @@
       public blink::scheduler::RendererScheduler::RAILModeObserver,
       public ChildMemoryCoordinatorDelegate,
       public base::MemoryCoordinatorClient,
+      public base::FieldTrialList::Observer,
       NON_EXPORTED_BASE(public mojom::Renderer),
       NON_EXPORTED_BASE(public CompositorDependencies) {
  public:
@@ -211,6 +214,8 @@
   int32_t GetClientId() override;
   scoped_refptr<base::SingleThreadTaskRunner> GetTimerTaskRunner() override;
   scoped_refptr<base::SingleThreadTaskRunner> GetLoadingTaskRunner() override;
+  void SetFieldTrialGroup(const std::string& trial_name,
+                          const std::string& group_name) override;
 
   // IPC::Listener implementation via ChildThreadImpl:
   void OnAssociatedInterfaceRequest(
@@ -540,6 +545,10 @@
   void OnTransferBitmap(const SkBitmap& bitmap, int resource_id);
   void OnGetAccessibilityTree();
 
+  // base::FieldTrialList::Observer:
+  void OnFieldTrialGroupFinalized(const std::string& trial_name,
+                                  const std::string& group_name) override;
+
   // mojom::Renderer:
   void CreateView(mojom::CreateViewParamsPtr params) override;
   void CreateFrame(mojom::CreateFrameParamsPtr params) override;
@@ -774,6 +783,8 @@
 
   int32_t client_id_;
 
+  variations::ChildProcessFieldTrialSyncer field_trial_syncer_;
+
   DISALLOW_COPY_AND_ASSIGN(RenderThreadImpl);
 };