diff options
author | John Reck <jreck@google.com> | 2010-11-04 12:00:17 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2010-11-09 11:35:04 -0800 |
commit | e14391e94c850b8bd03680c23b38978db68687a8 (patch) | |
tree | 3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp | |
parent | 1bd705833a68f07850cf7e204b26f8d328d16951 (diff) | |
download | external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.zip external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.gz external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.bz2 |
Merge Webkit at r70949: Initial merge by git.
Change-Id: I77b8645c083b5d0da8dba73ed01d4014aab9848e
Diffstat (limited to 'WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp')
-rw-r--r-- | WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp index 72c0c3c..3bbba98 100644 --- a/WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp +++ b/WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp @@ -32,6 +32,7 @@ #include "TestShell.h" #include "webkit/support/webkit_support.h" +#include <v8/include/v8.h> #include <wtf/Vector.h> using namespace std; @@ -51,6 +52,9 @@ static const char optionCheckLayoutTestSystemDeps[] = "--check-layout-test-sys-d static const char optionEnableAcceleratedCompositing[] = "--enable-accelerated-compositing"; static const char optionEnableAccelerated2DCanvas[] = "--enable-accelerated-2d-canvas"; +static const char optionMultipleLoads[] = "--multiple-loads="; +static const char optionJavaScriptFlags[] = "--js-flags="; + static void runTest(TestShell& shell, TestParams& params, const string& testName, bool testShellMode) { int oldTimeoutMsec = shell.layoutTestTimeout(); @@ -78,8 +82,14 @@ static void runTest(TestShell& shell, TestParams& params, const string& testName } params.testUrl = webkit_support::CreateURLForPathOrURL(pathOrURL); webkit_support::SetCurrentDirectoryForFileURL(params.testUrl); - shell.resetTestController(); - shell.runFileTest(params); + for (int i = 0; i < shell.loadCount(); i++) { + string javaScriptFlags = shell.javaScriptFlagsForLoad(i); + v8::V8::SetFlagsFromString(javaScriptFlags.data(), static_cast<int>(javaScriptFlags.size())); + bool isLastLoad = (i == (shell.loadCount() - 1)); + shell.setDumpWhenFinished(isLastLoad); + shell.resetTestController(); + shell.runFileTest(params); + } shell.setLayoutTestTimeout(oldTimeoutMsec); } @@ -96,6 +106,8 @@ int main(int argc, char* argv[]) bool startupDialog = false; bool acceleratedCompositingEnabled = false; bool accelerated2DCanvasEnabled = false; + int loadCount = 1; + string javaScriptFlags; for (int i = 1; i < argc; ++i) { string argument(argv[i]); if (argument == "-") @@ -120,7 +132,12 @@ int main(int argc, char* argv[]) acceleratedCompositingEnabled = true; else if (argument == optionEnableAccelerated2DCanvas) accelerated2DCanvasEnabled = true; - else if (argument.size() && argument[0] == '-') + else if (!argument.find(optionMultipleLoads)) { + string multipleLoadsStr = argument.substr(strlen(optionMultipleLoads)); + loadCount = atoi(multipleLoadsStr.c_str()); + } else if (!argument.find(optionJavaScriptFlags)) { + javaScriptFlags = argument.substr(strlen(optionJavaScriptFlags)); + } else if (argument.size() && argument[0] == '-') fprintf(stderr, "Unknown option: %s\n", argv[i]); else tests.append(argument); @@ -129,6 +146,30 @@ int main(int argc, char* argv[]) fprintf(stderr, "--pixel-tests with --test-shell requires a file name.\n"); return EXIT_FAILURE; } + if (loadCount < 1) { + fprintf(stderr, "--multiple-loads requires a positive numeric argument.\n"); + return EXIT_FAILURE; + } + + // The test runner might send a quoted string which needs to be unquoted before further processing. + if (javaScriptFlags.length() > 1 && javaScriptFlags[0] == '"' && javaScriptFlags[javaScriptFlags.length() - 1] == '"') + javaScriptFlags = javaScriptFlags.substr(1, javaScriptFlags.length() - 2); + // Split the JavaScript flags into a list. + Vector<string> flagsList; + size_t start = 0; + while (true) { + size_t commaPos = javaScriptFlags.find_first_of(',', start); + string flags; + if (commaPos == string::npos) + flags = javaScriptFlags.substr(start, javaScriptFlags.length() - start); + else { + flags = javaScriptFlags.substr(start, commaPos - start); + start = commaPos + 1; + } + flagsList.append(flags); + if (commaPos == string::npos) + break; + } if (startupDialog) openStartupDialog(); @@ -138,6 +179,8 @@ int main(int argc, char* argv[]) shell.setAllowExternalPages(allowExternalPages); shell.setAcceleratedCompositingEnabled(acceleratedCompositingEnabled); shell.setAccelerated2dCanvasEnabled(accelerated2DCanvasEnabled); + shell.setLoadCount(loadCount); + shell.setJavaScriptFlags(flagsList); if (serverMode && !tests.size()) { params.printSeparators = true; char testString[2048]; // 2048 is the same as the sizes of other platforms. |