Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index e99e3b54b3edc684a57ae75264ffb588e9b4192c..468b7f6bc88d1d85aa2315bf6c930f55a56e2b2c 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -71,6 +71,7 @@ |
#include "content/common/content_constants_internal.h" |
#include "content/common/dom_storage/dom_storage_messages.h" |
#include "content/common/features.h" |
+#include "content/common/field_trial_recorder.mojom.h" |
#include "content/common/frame_messages.h" |
#include "content/common/frame_owner_properties.h" |
#include "content/common/render_process_messages.h" |
@@ -579,7 +580,8 @@ RenderThreadImpl::RenderThreadImpl( |
renderer_scheduler_(std::move(scheduler)), |
categorized_worker_pool_(new CategorizedWorkerPool()), |
renderer_binding_(this), |
- client_id_(1) { |
+ client_id_(1), |
+ field_trial_syncer_(this) { |
Init(resource_task_queue); |
} |
@@ -597,7 +599,8 @@ RenderThreadImpl::RenderThreadImpl( |
categorized_worker_pool_(new CategorizedWorkerPool()), |
is_scroll_animator_enabled_(false), |
is_surface_synchronization_enabled_(false), |
- renderer_binding_(this) { |
+ renderer_binding_(this), |
+ field_trial_syncer_(this) { |
scoped_refptr<base::SingleThreadTaskRunner> test_task_counter; |
DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kRendererClientId)); |
@@ -717,6 +720,9 @@ void RenderThreadImpl::Init( |
GetContentClient()->renderer()->RenderThreadStarted(); |
+ field_trial_syncer_.InitFieldTrialObserving( |
+ *base::CommandLine::ForCurrentProcess(), switches::kSingleProcess); |
+ |
GetAssociatedInterfaceRegistry()->AddInterface( |
base::Bind(&RenderThreadImpl::OnRendererInterfaceRequest, |
base::Unretained(this))); |
@@ -1485,6 +1491,11 @@ RenderThreadImpl::GetLoadingTaskRunner() { |
return renderer_scheduler_->LoadingTaskRunner(); |
} |
+void RenderThreadImpl::SetFieldTrialGroup(const std::string& trial_name, |
+ const std::string& group_name) { |
+ field_trial_syncer_.OnSetFieldTrialGroup(trial_name, group_name); |
+} |
+ |
void RenderThreadImpl::OnAssociatedInterfaceRequest( |
const std::string& name, |
mojo::ScopedInterfaceEndpointHandle handle) { |
@@ -2047,6 +2058,14 @@ gpu::GpuChannelHost* RenderThreadImpl::GetGpuChannel() { |
return gpu_channel_.get(); |
} |
+void RenderThreadImpl::OnFieldTrialGroupFinalized( |
+ const std::string& trial_name, |
+ const std::string& group_name) { |
+ mojom::FieldTrialRecorderPtr field_trial_recorder; |
+ GetRemoteInterfaces()->GetInterface(&field_trial_recorder); |
+ field_trial_recorder->FieldTrialActivated(trial_name); |
+} |
+ |
void RenderThreadImpl::CreateView(mojom::CreateViewParamsPtr params) { |
CompositorDependencies* compositor_deps = this; |
is_scroll_animator_enabled_ = params->web_preferences.enable_scroll_animator; |