Chromium Code Reviews| Index: content/renderer/render_thread_impl.cc |
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
| index 3cd25f1ebba73068fdcfec0e57e0bcb32d4fc927..b1a42cbfb8cb2dd3c815c31072d7fbd1da7063e1 100644 |
| --- a/content/renderer/render_thread_impl.cc |
| +++ b/content/renderer/render_thread_impl.cc |
| @@ -51,6 +51,8 @@ |
| #include "cc/trees/layer_tree_host_common.h" |
| #include "cc/trees/layer_tree_settings.h" |
| #include "components/discardable_memory/client/client_discardable_shared_memory_manager.h" |
| +#include "components/metrics/public/interfaces/single_sample_metrics.mojom.h" |
| +#include "components/metrics/single_sample_metrics_factory_impl.h" |
| #include "content/child/appcache/appcache_dispatcher.h" |
| #include "content/child/appcache/appcache_frontend_impl.h" |
| #include "content/child/blob_storage/blob_message_filter.h" |
| @@ -393,6 +395,22 @@ bool IsRunningInMash() { |
| return cmdline->HasSwitch(switches::kIsRunningInMash); |
| } |
| +// Necessary since BindInterface() is a template and can't be bound directly. |
| +void CreateSingleSampleMetricsProvider( |
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
| + service_manager::Connector* connector, |
| + metrics::mojom::SingleSampleMetricsProviderRequest request) { |
| + if (task_runner->BelongsToCurrentThread()) { |
| + connector->BindInterface(mojom::kBrowserServiceName, std::move(request)); |
| + return; |
| + } |
| + |
| + task_runner->PostTask( |
| + FROM_HERE, |
| + base::Bind(&CreateSingleSampleMetricsProvider, std::move(task_runner), |
| + connector, base::Passed(&request))); |
| +} |
| + |
| } // namespace |
| // For measuring memory usage after each task. Behind a command line flag. |
| @@ -614,6 +632,14 @@ void RenderThreadImpl::Init( |
| // Register this object as the main thread. |
| ChildProcess::current()->set_main_thread(this); |
| + // In single process mode we may already have a factory set. |
| + if (!base::SingleSampleMetricsFactory::Get()) { |
| + base::SingleSampleMetricsFactory::SetFactory( |
| + new metrics::SingleSampleMetricsFactoryImpl(base::BindRepeating( |
|
Alexei Svitkine (slow)
2017/05/03 21:18:48
Hmm, it seems strange that this is constructing an
DaleCurtis
2017/05/03 21:37:52
You mean something like a "static metrics::Initial
Alexei Svitkine (slow)
2017/05/03 21:45:08
Yep!
DaleCurtis
2017/05/04 02:28:59
Done.
Alexei Svitkine (slow)
2017/05/04 14:15:08
Hmm, did you forget to upload a patchset? Don't se
DaleCurtis
2017/05/04 18:55:27
No intentionally didn't upload since it was busted
|
| + &CreateSingleSampleMetricsProvider, message_loop()->task_runner(), |
| + GetConnector()))); |
| + } |
| + |
| gpu_ = ui::Gpu::Create( |
| GetConnector(), |
| IsRunningInMash() ? ui::mojom::kServiceName : mojom::kBrowserServiceName, |