diff options
author | amistry <amistry@chromium.org> | 2015-05-19 18:49:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-20 01:49:17 +0000 |
commit | faa231a441d9890d8dee349b578dee7abed70501 (patch) | |
tree | e99e9416358b5963371ee4220051ecf6ad0f2913 /chrome/utility | |
parent | 7e4f0459fd2d0af0e1b5a6a5069465862afb5bae (diff) | |
download | chromium_src-faa231a441d9890d8dee349b578dee7abed70501.zip chromium_src-faa231a441d9890d8dee349b578dee7abed70501.tar.gz chromium_src-faa231a441d9890d8dee349b578dee7abed70501.tar.bz2 |
Report utility process JS memory in task manager.
BUG=467832
Review URL: https://codereview.chromium.org/972083002
Cr-Commit-Position: refs/heads/master@{#330670}
Diffstat (limited to 'chrome/utility')
-rw-r--r-- | chrome/utility/BUILD.gn | 5 | ||||
-rw-r--r-- | chrome/utility/chrome_content_utility_client.cc | 33 |
2 files changed, 37 insertions, 1 deletions
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn index dbf408f..ed55bb0 100644 --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn @@ -36,7 +36,10 @@ static_library("utility") { defines += [ "USE_SECCOMP_BPF" ] } } else { - deps += [ "//net:net_utility_services" ] + deps += [ + "//chrome/common:mojo_bindings", + "//net:net_utility_services", + ] sources += rebase_path(gypi_values.chrome_utility_importer_sources, ".", "..") } diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc index a9c67a1..ba8b9f9 100644 --- a/chrome/utility/chrome_content_utility_client.cc +++ b/chrome/utility/chrome_content_utility_client.cc @@ -31,8 +31,11 @@ #endif #if !defined(OS_ANDROID) +#include "chrome/common/resource_usage_reporter.mojom.h" #include "chrome/utility/profile_import_handler.h" #include "net/proxy/mojo_proxy_resolver_factory_impl.h" +#include "net/proxy/proxy_resolver_v8.h" +#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h" #endif #if defined(OS_ANDROID) && defined(USE_SECCOMP_BPF) @@ -90,6 +93,34 @@ void CreateProxyResolverFactory( // will be destroyed. new net::MojoProxyResolverFactoryImpl(request.Pass()); } + +class ResourceUsageReporterImpl : public ResourceUsageReporter { + public: + explicit ResourceUsageReporterImpl( + mojo::InterfaceRequest<ResourceUsageReporter> req) + : binding_(this, req.Pass()) {} + ~ResourceUsageReporterImpl() override {} + + private: + void GetUsageData( + const mojo::Callback<void(ResourceUsageDataPtr)>& callback) override { + ResourceUsageDataPtr data = ResourceUsageData::New(); + size_t total_heap_size = net::ProxyResolverV8::GetTotalHeapSize(); + if (total_heap_size) { + data->reports_v8_stats = true; + data->v8_bytes_allocated = total_heap_size; + data->v8_bytes_used = net::ProxyResolverV8::GetUsedHeapSize(); + } + callback.Run(data.Pass()); + } + + mojo::StrongBinding<ResourceUsageReporter> binding_; +}; + +void CreateResourceUsageReporter( + mojo::InterfaceRequest<ResourceUsageReporter> request) { + new ResourceUsageReporterImpl(request.Pass()); +} #endif // OS_ANDROID } // namespace @@ -192,6 +223,8 @@ void ChromeContentUtilityClient::RegisterMojoServices( #if !defined(OS_ANDROID) registry->AddService<net::interfaces::ProxyResolverFactory>( base::Bind(CreateProxyResolverFactory)); + registry->AddService<ResourceUsageReporter>( + base::Bind(CreateResourceUsageReporter)); #endif } |