| Index: webkit/tools/test_shell/test_shell_main.cc
|
| diff --git a/webkit/tools/test_shell/test_shell_main.cc b/webkit/tools/test_shell/test_shell_main.cc
|
| deleted file mode 100644
|
| index 38e70e017deacd443f5cfa2ce2a3a902ffd9f017..0000000000000000000000000000000000000000
|
| --- a/webkit/tools/test_shell/test_shell_main.cc
|
| +++ /dev/null
|
| @@ -1,270 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/at_exit.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/command_line.h"
|
| -#include "base/debug/stack_trace.h"
|
| -#include "base/debug/trace_event.h"
|
| -#include "base/environment.h"
|
| -#include "base/event_recorder.h"
|
| -#include "base/file_util.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/i18n/icu_util.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/metrics/stats_table.h"
|
| -#include "base/path_service.h"
|
| -#include "base/process_util.h"
|
| -#include "base/rand_util.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/sys_info.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "net/base/net_module.h"
|
| -#include "net/base/net_util.h"
|
| -#include "net/cookies/cookie_monster.h"
|
| -#include "net/http/http_cache.h"
|
| -#include "net/http/http_util.h"
|
| -#include "net/test/spawned_test_server.h"
|
| -#include "net/url_request/url_request_context.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptController.h"
|
| -#include "ui/base/window_open_disposition.h"
|
| -#include "ui/gl/gl_implementation.h"
|
| -#include "ui/gl/gl_switches.h"
|
| -#include "webkit/glue/webkit_glue.h"
|
| -#include "webkit/glue/webpreferences.h"
|
| -#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
|
| -#include "webkit/tools/test_shell/test_shell.h"
|
| -#include "webkit/tools/test_shell/test_shell_platform_delegate.h"
|
| -#include "webkit/tools/test_shell/test_shell_request_context.h"
|
| -#include "webkit/tools/test_shell/test_shell_switches.h"
|
| -#include "webkit/tools/test_shell/test_shell_webkit_init.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#pragma warning(disable: 4996)
|
| -#endif
|
| -
|
| -static const size_t kPathBufSize = 2048;
|
| -
|
| -using WebKit::WebScriptController;
|
| -
|
| -namespace {
|
| -
|
| -// StatsTable initialization parameters.
|
| -const char* const kStatsFilePrefix = "testshell_";
|
| -int kStatsFileThreads = 20;
|
| -int kStatsFileCounters = 200;
|
| -
|
| -void RemoveSharedMemoryFile(std::string& filename) {
|
| - // Stats uses SharedMemory under the hood. On posix, this results in a file
|
| - // on disk.
|
| -#if defined(OS_POSIX)
|
| - base::SharedMemory memory;
|
| - memory.Delete(filename);
|
| -#endif
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -int main(int argc, char* argv[]) {
|
| - base::debug::EnableInProcessStackDumping();
|
| - base::EnableTerminationOnHeapCorruption();
|
| -
|
| - // Some tests may use base::Singleton<>, thus we need to instanciate
|
| - // the AtExitManager or else we will leak objects.
|
| - base::AtExitManager at_exit_manager;
|
| -
|
| - TestShellPlatformDelegate::PreflightArgs(&argc, &argv);
|
| - CommandLine::Init(argc, argv);
|
| - const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
|
| -
|
| - TestShellPlatformDelegate platform(parsed_command_line);
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kStartupDialog))
|
| - TestShell::ShowStartupDebuggingDialog();
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kCheckLayoutTestSystemDeps)) {
|
| - exit(platform.CheckLayoutTestSystemDependencies() ? 0 : 1);
|
| - }
|
| -
|
| - // Allocate a message loop for this thread. Although it is not used
|
| - // directly, its constructor sets up some necessary state.
|
| - MessageLoopForUI main_message_loop;
|
| -
|
| - scoped_ptr<base::Environment> env(base::Environment::Create());
|
| - bool suppress_error_dialogs = (
|
| - env->HasVar("CHROME_HEADLESS") ||
|
| - parsed_command_line.HasSwitch(test_shell::kNoErrorDialogs));
|
| - bool ux_theme = parsed_command_line.HasSwitch(test_shell::kUxTheme);
|
| -#if defined(OS_MACOSX)
|
| - // The "classic theme" flag is meaningless on OS X. But there is a bunch
|
| - // of code that sets up the environment for running pixel tests that only
|
| - // runs if it's set to true.
|
| - bool classic_theme = true;
|
| -#else
|
| - bool classic_theme =
|
| - parsed_command_line.HasSwitch(test_shell::kClassicTheme);
|
| -#endif // !OS_MACOSX
|
| -#if defined(OS_WIN)
|
| - bool generic_theme = parsed_command_line.HasSwitch(test_shell::kGenericTheme);
|
| -#else
|
| - // Stop compiler warnings about unused variables.
|
| - static_cast<void>(ux_theme);
|
| -#endif
|
| -
|
| - bool enable_gp_fault_error_box = false;
|
| - enable_gp_fault_error_box =
|
| - parsed_command_line.HasSwitch(test_shell::kGPFaultErrorBox);
|
| -
|
| - bool allow_external_pages =
|
| - parsed_command_line.HasSwitch(test_shell::kAllowExternalPages);
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kEnableAccel2DCanvas))
|
| - TestShell::SetAccelerated2dCanvasEnabled(true);
|
| - if (parsed_command_line.HasSwitch(test_shell::kEnableAccelCompositing))
|
| - TestShell::SetAcceleratedCompositingEnabled(true);
|
| -
|
| - bool layout_test_mode = false;
|
| - TestShell::InitLogging(suppress_error_dialogs,
|
| - layout_test_mode,
|
| - enable_gp_fault_error_box);
|
| -
|
| - // Initialize WebKit for this scope.
|
| - TestShellWebKitInit test_shell_webkit_init(layout_test_mode);
|
| -
|
| - // Suppress abort message in v8 library in debugging mode (but not
|
| - // actually under a debugger). V8 calls abort() when it hits
|
| - // assertion errors.
|
| - if (suppress_error_dialogs) {
|
| - platform.SuppressErrorReporting();
|
| - }
|
| -
|
| - net::HttpCache::Mode cache_mode = net::HttpCache::NORMAL;
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kEnableFileCookies))
|
| - net::CookieMonster::EnableFileScheme();
|
| -
|
| - base::FilePath cache_path =
|
| - parsed_command_line.GetSwitchValuePath(test_shell::kCacheDir);
|
| - if (cache_path.empty()) {
|
| - PathService::Get(base::DIR_EXE, &cache_path);
|
| - cache_path = cache_path.AppendASCII("cache");
|
| - }
|
| -
|
| - // Initializing with a default context, which means no on-disk cookie DB,
|
| - // and no support for directory listings.
|
| - SimpleResourceLoaderBridge::Init(cache_path, cache_mode, layout_test_mode);
|
| -
|
| - // Load ICU data tables
|
| - icu_util::Initialize();
|
| -
|
| - // Config the modules that need access to a limited set of resources.
|
| - net::NetModule::SetResourceProvider(TestShell::ResourceProvider);
|
| -
|
| - platform.InitializeGUI();
|
| -
|
| - TestShell::InitializeTestShell(layout_test_mode, allow_external_pages);
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kAllowScriptsToCloseWindows))
|
| - TestShell::SetAllowScriptsToCloseWindows();
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kEnableSmoothScrolling))
|
| - TestShell::GetWebPreferences()->enable_scroll_animator = true;
|
| -
|
| - // Disable user themes for layout tests so pixel tests are consistent.
|
| -#if defined(OS_WIN)
|
| - TestShellWebTheme::Engine engine;
|
| -#endif
|
| - if (classic_theme)
|
| - platform.SelectUnifiedTheme();
|
| -#if defined(OS_WIN)
|
| - if (generic_theme)
|
| - test_shell_webkit_init.SetThemeEngine(&engine);
|
| -#endif
|
| -
|
| - // Unless specifically requested otherwise, default to OSMesa for GL.
|
| - if (!parsed_command_line.HasSwitch(switches::kUseGL))
|
| - gfx::InitializeGLBindings(gfx::kGLImplementationOSMesaGL);
|
| -
|
| - // Treat the first argument as the initial URL to open.
|
| - GURL starting_url;
|
| -
|
| - base::FilePath path;
|
| - PathService::Get(base::DIR_SOURCE_ROOT, &path);
|
| - path = path.AppendASCII("webkit").AppendASCII("data")
|
| - .AppendASCII("test_shell").AppendASCII("index.html");
|
| - starting_url = net::FilePathToFileURL(path);
|
| -
|
| - const CommandLine::StringVector& args = parsed_command_line.GetArgs();
|
| - if (!args.empty()) {
|
| - GURL url(args[0]);
|
| - if (url.is_valid()) {
|
| - starting_url = url;
|
| - } else {
|
| - // Treat as a relative file path.
|
| - base::FilePath path = base::MakeAbsoluteFilePath(base::FilePath(args[0]));
|
| - starting_url = net::FilePathToFileURL(path);
|
| - }
|
| - }
|
| -
|
| - // Get the JavaScript flags. The test runner might send a quoted string which
|
| - // needs to be unquoted before further processing.
|
| - std::string js_flags =
|
| - parsed_command_line.GetSwitchValueASCII(test_shell::kJavaScriptFlags);
|
| - js_flags = net::HttpUtil::Unquote(js_flags);
|
| - // Split the JavaScript flags into a list.
|
| - std::vector<std::string> js_flags_list;
|
| - size_t start = 0;
|
| - while (true) {
|
| - size_t comma_pos = js_flags.find_first_of(',', start);
|
| - std::string flags;
|
| - if (comma_pos == std::string::npos) {
|
| - flags = js_flags.substr(start, js_flags.length() - start);
|
| - } else {
|
| - flags = js_flags.substr(start, comma_pos - start);
|
| - start = comma_pos + 1;
|
| - }
|
| - js_flags_list.push_back(flags);
|
| - if (comma_pos == std::string::npos)
|
| - break;
|
| - }
|
| - TestShell::SetJavaScriptFlags(js_flags_list);
|
| -
|
| - // Test shell always exposes the GC.
|
| - webkit_glue::SetJavaScriptFlags("--expose-gc");
|
| -
|
| - // Load and initialize the stats table. Attempt to construct a somewhat
|
| - // unique name to isolate separate instances from each other.
|
| -
|
| - // truncate the random # to 32 bits for the benefit of Mac OS X, to
|
| - // avoid tripping over its maximum shared memory segment name length
|
| - std::string stats_filename = kStatsFilePrefix +
|
| - base::Uint64ToString(base::RandUint64() & 0xFFFFFFFFL);
|
| - RemoveSharedMemoryFile(stats_filename);
|
| - base::StatsTable *table = new base::StatsTable(stats_filename,
|
| - kStatsFileThreads,
|
| - kStatsFileCounters);
|
| - base::StatsTable::set_current(table);
|
| -
|
| - TestShell* shell;
|
| - if (TestShell::CreateNewWindow(starting_url, &shell)) {
|
| - shell->Show(WebKit::WebNavigationPolicyNewWindow);
|
| -
|
| - if (parsed_command_line.HasSwitch(test_shell::kDumpStatsTable))
|
| - shell->DumpStatsTableOnExit();
|
| -
|
| - webkit_glue::SetJavaScriptFlags(TestShell::GetJSFlagsForLoad(0));
|
| - MessageLoop::current()->Run();
|
| - }
|
| -
|
| - TestShell::ShutdownTestShell();
|
| - TestShell::CleanupLogging();
|
| -
|
| - // Tear down shared StatsTable; prevents unit_tests from leaking it.
|
| - base::StatsTable::set_current(NULL);
|
| - delete table;
|
| - RemoveSharedMemoryFile(stats_filename);
|
| -
|
| - return 0;
|
| -}
|
|
|