summaryrefslogtreecommitdiffstats
path: root/chrome/utility
diff options
context:
space:
mode:
authoramistry <amistry@chromium.org>2015-05-19 18:49:12 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-20 01:49:17 +0000
commitfaa231a441d9890d8dee349b578dee7abed70501 (patch)
treee99e9416358b5963371ee4220051ecf6ad0f2913 /chrome/utility
parent7e4f0459fd2d0af0e1b5a6a5069465862afb5bae (diff)
downloadchromium_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.gn5
-rw-r--r--chrome/utility/chrome_content_utility_client.cc33
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
}