summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/common/extensions/docs/examples/extensions/benchmark/background.html14
-rw-r--r--chrome/renderer/renderer_glue.cc5
-rw-r--r--webkit/extensions/v8/benchmarking_extension.cc11
-rw-r--r--webkit/glue/webkit_glue.h3
-rw-r--r--webkit/support/webkit_support_glue.cc4
-rw-r--r--webkit/tools/test_shell/test_shell.cc4
6 files changed, 41 insertions, 0 deletions
diff --git a/chrome/common/extensions/docs/examples/extensions/benchmark/background.html b/chrome/common/extensions/docs/examples/extensions/benchmark/background.html
index d7af961..c560e11 100644
--- a/chrome/common/extensions/docs/examples/extensions/benchmark/background.html
+++ b/chrome/common/extensions/docs/examples/extensions/benchmark/background.html
@@ -322,6 +322,20 @@ chrome.extension.onConnect.addListener(function(port) {
});
function run() {
+ if (window.clearCache) {
+ // Show a warning if we will try to clear the cache between runs
+ // but will also be reusing the same WebKit instance (i.e. Chrome
+ // is in single-process mode, or 'Use New Tabs' is turned off)
+ // because the WebKit cache might not get completely cleared between runs.
+ if (chrome.benchmarking.isSingleProcess()) {
+ alert("Warning: the WebKit cache may not be cleared correctly " +
+ "between runs because Chrome is running in single-process mode.");
+ } else if (!window.useNewTabs) {
+ alert("Warning: the WebKit cache may not be cleared correctly " +
+ "between runs because 'Use New Tabs Per Page' is turned off.");
+ }
+ }
+
var urls = testUrl.split(",");
for (var i = 0; i < urls.length; i++) {
var benchmark = new Benchmark();
diff --git a/chrome/renderer/renderer_glue.cc b/chrome/renderer/renderer_glue.cc
index 07301b5..72a7629 100644
--- a/chrome/renderer/renderer_glue.cc
+++ b/chrome/renderer/renderer_glue.cc
@@ -15,6 +15,7 @@
#include "app/clipboard/clipboard.h"
#include "app/clipboard/scoped_clipboard_writer.h"
#include "app/resource_bundle.h"
+#include "base/command_line.h"
#include "base/file_version_info.h"
#include "base/ref_counted.h"
#include "base/string_util.h"
@@ -281,4 +282,8 @@ std::string GetProductVersion() {
return product;
}
+bool IsSingleProcess() {
+ return CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess);
+}
+
} // namespace webkit_glue
diff --git a/webkit/extensions/v8/benchmarking_extension.cc b/webkit/extensions/v8/benchmarking_extension.cc
index 362a928..5790ee4 100644
--- a/webkit/extensions/v8/benchmarking_extension.cc
+++ b/webkit/extensions/v8/benchmarking_extension.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/command_line.h"
#include "base/stats_table.h"
#include "third_party/WebKit/WebKit/chromium/public/WebCache.h"
#include "webkit/extensions/v8/benchmarking_extension.h"
@@ -35,6 +36,10 @@ class BenchmarkingWrapper : public v8::Extension {
" native function GetCounter();"
" return GetCounter(name);"
"};"
+ "chrome.benchmarking.isSingleProcess = function() {"
+ " native function IsSingleProcess();"
+ " return IsSingleProcess();"
+ "};"
) {}
virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
@@ -45,6 +50,8 @@ class BenchmarkingWrapper : public v8::Extension {
return v8::FunctionTemplate::New(ClearCache);
} else if (name->Equals(v8::String::New("GetCounter"))) {
return v8::FunctionTemplate::New(GetCounter);
+ } else if (name->Equals(v8::String::New("IsSingleProcess"))) {
+ return v8::FunctionTemplate::New(IsSingleProcess);
}
return v8::Handle<v8::FunctionTemplate>();
}
@@ -73,6 +80,10 @@ class BenchmarkingWrapper : public v8::Extension {
int counter = StatsTable::current()->GetCounterValue(name);
return v8::Integer::New(counter);
}
+
+ static v8::Handle<v8::Value> IsSingleProcess(const v8::Arguments& args) {
+ return v8::Boolean::New(webkit_glue::IsSingleProcess());
+ }
};
v8::Extension* BenchmarkingExtension::Get() {
diff --git a/webkit/glue/webkit_glue.h b/webkit/glue/webkit_glue.h
index 8f6b42c..110d15a 100644
--- a/webkit/glue/webkit_glue.h
+++ b/webkit/glue/webkit_glue.h
@@ -248,6 +248,9 @@ void ClearCache();
// Returns the product version. E.g., Chrome/4.1.333.0
std::string GetProductVersion();
+// Returns true if the embedder is running in single process mode.
+bool IsSingleProcess();
+
// ---- END FUNCTIONS IMPLEMENTED BY EMBEDDER ---------------------------------
diff --git a/webkit/support/webkit_support_glue.cc b/webkit/support/webkit_support_glue.cc
index 28bf904..a82b941 100644
--- a/webkit/support/webkit_support_glue.cc
+++ b/webkit/support/webkit_support_glue.cc
@@ -68,4 +68,8 @@ bool DownloadUrl(const std::string& url, HWND caller_window) {
}
#endif
+bool IsSingleProcess() {
+ return true;
+}
+
} // namespace webkit_glue
diff --git a/webkit/tools/test_shell/test_shell.cc b/webkit/tools/test_shell/test_shell.cc
index 6845a95..63de00b 100644
--- a/webkit/tools/test_shell/test_shell.cc
+++ b/webkit/tools/test_shell/test_shell.cc
@@ -809,4 +809,8 @@ std::string GetProductVersion() {
return std::string("Chrome/0.0.0.0");
}
+bool IsSingleProcess() {
+ return true;
+}
+
} // namespace webkit_glue