summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-02 17:54:34 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-02 17:54:34 +0000
commit1421207f89748c1c1cd0ed7240d4dfd1a0efc7f6 (patch)
treed8dda3094fcb311b260fe474cea3a0d8a0ac1e5e
parentdf6da1505fc09b8edb5a22e8455e30b112dd7ea8 (diff)
downloadchromium_src-1421207f89748c1c1cd0ed7240d4dfd1a0efc7f6.zip
chromium_src-1421207f89748c1c1cd0ed7240d4dfd1a0efc7f6.tar.gz
chromium_src-1421207f89748c1c1cd0ed7240d4dfd1a0efc7f6.tar.bz2
Expose a method to access amount of memory used by the current process.
Patch by Anton Muhin R=darin BUG=none TEST=none Review URL: http://codereview.chromium.org/345040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30711 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/api/public/WebKitClient.h8
-rw-r--r--webkit/api/src/ChromiumBridge.cpp7
-rw-r--r--webkit/glue/webkitclient_impl.cc9
-rw-r--r--webkit/glue/webkitclient_impl.h1
4 files changed, 24 insertions, 1 deletions
diff --git a/webkit/api/public/WebKitClient.h b/webkit/api/public/WebKitClient.h
index a489d04..7301563 100644
--- a/webkit/api/public/WebKitClient.h
+++ b/webkit/api/public/WebKitClient.h
@@ -162,6 +162,14 @@ namespace WebKit {
const WebKit::WebURL& url) = 0;
+
+ // Memory --------------------------------------------------------------
+
+ // Returns the current space allocated for the pagefile, in MB.
+ // That is committed size for Windows and virtual memory size for POSIX
+ virtual size_t memoryUsageMB() = 0;
+
+
// Message Ports -------------------------------------------------------
// Creates a Message Port Channel. This can be called on any thread.
diff --git a/webkit/api/src/ChromiumBridge.cpp b/webkit/api/src/ChromiumBridge.cpp
index 99495ca..d55abc1 100644
--- a/webkit/api/src/ChromiumBridge.cpp
+++ b/webkit/api/src/ChromiumBridge.cpp
@@ -602,7 +602,7 @@ bool ChromiumBridge::isLinkVisited(LinkHash visitedLinkHash)
return webKitClient()->isLinkVisited(visitedLinkHash);
}
-// These are temporary methoeds that the WebKit layer can use to call to the
+// These are temporary methods that the WebKit layer can use to call to the
// Glue layer. Once the Glue layer moves entirely into the WebKit layer, these
// methods will be deleted.
@@ -622,6 +622,11 @@ void ChromiumBridge::notifyJSOutOfMemory(Frame* frame)
webFrame->client()->didExhaustMemoryAvailableForScript(webFrame);
}
+int ChromiumBridge::memoryUsageMB()
+{
+ return static_cast<int>(webKitClient()->memoryUsageMB());
+}
+
int ChromiumBridge::screenDepth(Widget* widget)
{
WebWidgetClient* client = toWebWidgetClient(widget);
diff --git a/webkit/glue/webkitclient_impl.cc b/webkit/glue/webkitclient_impl.cc
index b04df0c..0bb2edca 100644
--- a/webkit/glue/webkitclient_impl.cc
+++ b/webkit/glue/webkitclient_impl.cc
@@ -15,6 +15,7 @@
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/message_loop.h"
+#include "base/process_util.h"
#include "base/platform_file.h"
#include "base/stats_counters.h"
#include "base/string_util.h"
@@ -338,6 +339,14 @@ WebKit::WebString WebKitClientImpl::signedPublicKeyAndChallengeString(
return WebKit::WebString();
}
+size_t WebKitClientImpl::memoryUsageMB() {
+ using base::ProcessMetrics;
+ static ProcessMetrics* process_metrics =
+ ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle());
+ DCHECK(process_metrics);
+ return process_metrics->GetPagefileUsage() >> 20;
+}
+
bool WebKitClientImpl::fileExists(const WebKit::WebString& path) {
FilePath::StringType file_path = webkit_glue::WebStringToFilePathString(path);
return file_util::PathExists(FilePath(file_path));
diff --git a/webkit/glue/webkitclient_impl.h b/webkit/glue/webkitclient_impl.h
index 1eb9d8c..e190465 100644
--- a/webkit/glue/webkitclient_impl.h
+++ b/webkit/glue/webkitclient_impl.h
@@ -53,6 +53,7 @@ class WebKitClientImpl : public WebKit::WebKitClient {
virtual WebKit::WebString signedPublicKeyAndChallengeString(
unsigned key_size_index, const WebKit::WebString& challenge,
const WebKit::WebURL& url);
+ virtual size_t memoryUsageMB();
virtual bool rawCookies(const WebKit::WebURL& url,
const WebKit::WebURL& policy_url,
WebKit::WebVector<WebKit::WebCookie>*);