diff options
-rw-r--r-- | chrome/common/extensions/docs/examples/extensions/benchmark/background.html | 14 | ||||
-rw-r--r-- | chrome/renderer/renderer_glue.cc | 5 | ||||
-rw-r--r-- | webkit/extensions/v8/benchmarking_extension.cc | 11 | ||||
-rw-r--r-- | webkit/glue/webkit_glue.h | 3 | ||||
-rw-r--r-- | webkit/support/webkit_support_glue.cc | 4 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell.cc | 4 |
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 |