diff options
author | alph@chromium.org <alph@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-04 16:11:03 +0000 |
---|---|---|
committer | alph@chromium.org <alph@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-04 16:11:03 +0000 |
commit | 2af28f2bd9354b636207dc0388553b830dc9957e (patch) | |
tree | bc4d3abfb805b441376373f6cb03d5f3b67fbb1e /content | |
parent | 6e2c9c8323e9ac4414b6bc04afbc22fb96cafa14 (diff) | |
download | chromium_src-2af28f2bd9354b636207dc0388553b830dc9957e.zip chromium_src-2af28f2bd9354b636207dc0388553b830dc9957e.tar.gz chromium_src-2af28f2bd9354b636207dc0388553b830dc9957e.tar.bz2 |
Retrieve renderer process memory sizes from browser via IPC.
The patch implements requestProcessMemorySizes function from
Platform support WebKit interface. It requests renderer process memory
sizes information from a browser via IPC as long as direct request is
not possible due to sandbox restrictions.
BUG=162467
Review URL: https://chromiumcodereview.appspot.com/11860007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180417 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
5 files changed, 33 insertions, 0 deletions
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc index 6f4ca95..cd202d6 100644 --- a/content/browser/renderer_host/render_message_filter.cc +++ b/content/browser/renderer_host/render_message_filter.cc @@ -373,6 +373,8 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message, IPC_MESSAGE_HANDLER(ViewHostMsg_PreCacheFontCharacters, OnPreCacheFontCharacters) #endif + IPC_MESSAGE_HANDLER(ViewHostMsg_GetProcessMemorySizes, + OnGetProcessMemorySizes) IPC_MESSAGE_HANDLER(ViewHostMsg_GenerateRoutingID, OnGenerateRoutingID) IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWindow, OnCreateWindow) IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWidget, OnCreateWidget) @@ -498,6 +500,20 @@ void RenderMessageFilter::OnCreateFullscreenWidget(int opener_id, opener_id, route_id, surface_id); } +void RenderMessageFilter::OnGetProcessMemorySizes( + size_t* private_bytes, size_t* shared_bytes) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); + using base::ProcessMetrics; +#if !defined(OS_MACOSX) || defined(OS_IOS) + scoped_ptr<ProcessMetrics> metrics( + ProcessMetrics::CreateProcessMetrics(peer_handle())); +#else + scoped_ptr<ProcessMetrics> metrics( + ProcessMetrics::CreateProcessMetrics(peer_handle(), NULL)); +#endif + metrics->GetMemoryBytes(private_bytes, shared_bytes); +} + void RenderMessageFilter::OnSetCookie(const IPC::Message& message, const GURL& url, const GURL& first_party_for_cookies, diff --git a/content/browser/renderer_host/render_message_filter.h b/content/browser/renderer_host/render_message_filter.h index af6036e..4218fd7 100644 --- a/content/browser/renderer_host/render_message_filter.h +++ b/content/browser/renderer_host/render_message_filter.h @@ -113,6 +113,7 @@ class RenderMessageFilter : public BrowserMessageFilter { virtual ~RenderMessageFilter(); + void OnGetProcessMemorySizes(size_t* private_bytes, size_t* shared_bytes); void OnCreateWindow(const ViewHostMsg_CreateWindow_Params& params, int* route_id, int* surface_id, diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 4e064fa..22c246d 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -734,6 +734,11 @@ IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GetCPUUsage, IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GetMonitorColorProfile, std::vector<char> /* profile */) +// Asks the browser for the renderer process memory size stats. +IPC_SYNC_MESSAGE_CONTROL0_2(ViewHostMsg_GetProcessMemorySizes, + size_t /* private_bytes */, + size_t /* shared_bytes */) + // Tells the renderer to create a new view. // This message is slightly different, the view it takes (via // ViewMsg_New_Params) is the view to create, the message itself is sent as a diff --git a/content/renderer/renderer_webkitplatformsupport_impl.cc b/content/renderer/renderer_webkitplatformsupport_impl.cc index 685d642..8fd136b 100644 --- a/content/renderer/renderer_webkitplatformsupport_impl.cc +++ b/content/renderer/renderer_webkitplatformsupport_impl.cc @@ -769,4 +769,13 @@ size_t RendererWebKitPlatformSupportImpl::computeLastHyphenLocation( before_index); } +//------------------------------------------------------------------------------ + +bool RendererWebKitPlatformSupportImpl::processMemorySizesInBytes( + size_t* private_bytes, size_t* shared_bytes) { + content::RenderThread::Get()->Send( + new ViewHostMsg_GetProcessMemorySizes(private_bytes, shared_bytes)); + return true; +} + } // namespace content diff --git a/content/renderer/renderer_webkitplatformsupport_impl.h b/content/renderer/renderer_webkitplatformsupport_impl.h index adef101..41100dd 100644 --- a/content/renderer/renderer_webkitplatformsupport_impl.h +++ b/content/renderer/renderer_webkitplatformsupport_impl.h @@ -96,6 +96,8 @@ class CONTENT_EXPORT RendererWebKitPlatformSupportImpl size_t length, size_t before_index, const WebKit::WebString& locale); + virtual bool processMemorySizesInBytes( + size_t* private_bytes, size_t* shared_bytes); // Disables the WebSandboxSupport implementation for testing. // Tests that do not set up a full sandbox environment should call |