diff options
-rw-r--r-- | webkit/api/public/WebKitClient.h | 8 | ||||
-rw-r--r-- | webkit/api/src/ChromiumBridge.cpp | 7 | ||||
-rw-r--r-- | webkit/glue/webkitclient_impl.cc | 9 | ||||
-rw-r--r-- | webkit/glue/webkitclient_impl.h | 1 |
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>*); |