summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authoralph@chromium.org <alph@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-04 16:11:03 +0000
committeralph@chromium.org <alph@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-04 16:11:03 +0000
commit2af28f2bd9354b636207dc0388553b830dc9957e (patch)
treebc4d3abfb805b441376373f6cb03d5f3b67fbb1e /content
parent6e2c9c8323e9ac4414b6bc04afbc22fb96cafa14 (diff)
downloadchromium_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')
-rw-r--r--content/browser/renderer_host/render_message_filter.cc16
-rw-r--r--content/browser/renderer_host/render_message_filter.h1
-rw-r--r--content/common/view_messages.h5
-rw-r--r--content/renderer/renderer_webkitplatformsupport_impl.cc9
-rw-r--r--content/renderer/renderer_webkitplatformsupport_impl.h2
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