summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]chrome/common/extensions/docs/examples/extensions/benchmark/background.html14
-rw-r--r--webkit/extensions/v8/benchmarking_extension.cc13
2 files changed, 27 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..100755
--- 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/webkit/extensions/v8/benchmarking_extension.cc b/webkit/extensions/v8/benchmarking_extension.cc
index 362a928..8eb0f00 100644
--- a/webkit/extensions/v8/benchmarking_extension.cc
+++ b/webkit/extensions/v8/benchmarking_extension.cc
@@ -2,7 +2,9 @@
// 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 "chrome/common/chrome_switches.h"
#include "third_party/WebKit/WebKit/chromium/public/WebCache.h"
#include "webkit/extensions/v8/benchmarking_extension.h"
#include "webkit/glue/webkit_glue.h"
@@ -35,6 +37,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 +51,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 +81,11 @@ 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(CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kSingleProcess));
+ }
};
v8::Extension* BenchmarkingExtension::Get() {