| Index: chrome/utility/chrome_content_utility_client.cc
|
| diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc
|
| index 25a744455b2a2a8978f1b0dc63202c2b09140588..755a86539c9e99018eabf528b76864fb659f5631 100644
|
| --- a/chrome/utility/chrome_content_utility_client.cc
|
| +++ b/chrome/utility/chrome_content_utility_client.cc
|
| @@ -15,10 +15,15 @@
|
| #include "chrome/utility/utility_message_handler.h"
|
| #include "content/public/child/image_decoder_utils.h"
|
| #include "content/public/common/content_switches.h"
|
| +#include "content/public/common/process_resource_service.mojom.h"
|
| +#include "content/public/common/service_registry.h"
|
| #include "content/public/utility/utility_thread.h"
|
| #include "courgette/courgette.h"
|
| #include "courgette/third_party/bsdiff.h"
|
| #include "ipc/ipc_channel.h"
|
| +#include "net/proxy/proxy_resolver.mojom.h"
|
| +#include "net/proxy/proxy_resolver_mojo_host.h"
|
| +#include "net/proxy/proxy_resolver_v8.h"
|
| #include "skia/ext/image_operations.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| #include "third_party/zlib/google/zip.h"
|
| @@ -160,6 +165,46 @@ bool ChromeContentUtilityClient::OnMessageReceived(
|
| return handled;
|
| }
|
|
|
| +static bool g_v8_proxy_created = false;
|
| +
|
| +class ProcessResourceServiceImpl
|
| + : public mojo::InterfaceImpl<content::ProcessResourceService> {
|
| + public:
|
| + ProcessResourceServiceImpl() {}
|
| + ~ProcessResourceServiceImpl() override {}
|
| +
|
| + private:
|
| + void GetResourceData(
|
| + const mojo::Callback<void(content::ResourceDataPtr)>& callback) override {
|
| + content::ResourceDataPtr data = content::ResourceData::New();
|
| + data->reports_v8_stats = g_v8_proxy_created;
|
| + if (g_v8_proxy_created) {
|
| + data->v8_memory_allocated = net::ProxyResolverV8::GetTotalHeapSize();
|
| + data->v8_memory_used = net::ProxyResolverV8::GetUsedHeapSize();
|
| + }
|
| + callback.Run(data.Pass());
|
| + }
|
| +};
|
| +
|
| +static void CreateProcessResourceService(
|
| + mojo::InterfaceRequest<content::ProcessResourceService> request) {
|
| + mojo::BindToRequest(new ProcessResourceServiceImpl, &request);
|
| +}
|
| +
|
| +static void CreateProxyResolverFactory(
|
| + mojo::InterfaceRequest<net::proxy::ResolverFactory> request) {
|
| + g_v8_proxy_created = true;
|
| + mojo::BindToRequest(new net::ProxyResolverMojoFactory(nullptr), &request);
|
| +}
|
| +
|
| +void ChromeContentUtilityClient::RegisterMojoServices(
|
| + content::ServiceRegistry* registry) {
|
| + registry->AddService<content::ProcessResourceService>(base::Bind(
|
| + CreateProcessResourceService));
|
| + registry->AddService<net::proxy::ResolverFactory>(base::Bind(
|
| + CreateProxyResolverFactory));
|
| +}
|
| +
|
| // static
|
| void ChromeContentUtilityClient::PreSandboxStartup() {
|
| #if defined(ENABLE_EXTENSIONS)
|
|
|