// 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 "chrome_frame/test/reliability/reliability_test_suite.h" #include "base/command_line.h" #include "chrome/common/chrome_paths.h" #include "chrome_frame/test/chrome_frame_test_utils.h" #include "chrome_frame/test_utils.h" #include "chrome_frame/utils.h" static const char kRegisterDllFlag[] = "register"; int main(int argc, char **argv) { ScopedChromeFrameRegistrar::RegisterAndExitProcessIfDirected(); // We create this slightly early as it is the one who instantiates THE // AtExitManager which some of the other stuff below relies on. ReliabilityTestSuite test_suite(argc, argv); SetConfigBool(kChromeFrameHeadlessMode, true); base::ProcessHandle crash_service = chrome_frame_test::StartCrashService(); int result = -1; // If --register is passed, then we need to ensure that Chrome Frame is // registered before starting up the reliability tests. CommandLine* cmd_line = CommandLine::ForCurrentProcess(); DCHECK(cmd_line); if (!cmd_line) { NOTREACHED() << "CommandLine object not initialized"; return result; } if (cmd_line->HasSwitch(kRegisterDllFlag)) { std::wstring dll_path = cmd_line->GetSwitchValueNative(kRegisterDllFlag); // Run() must be called within the scope of the ScopedChromeFrameRegistrar // to ensure that the correct DLL remains registered during the tests. ScopedChromeFrameRegistrar scoped_chrome_frame_registrar( dll_path, ScopedChromeFrameRegistrar::SYSTEM_LEVEL); result = test_suite.Run(); } else { result = test_suite.Run(); } DeleteConfigValue(kChromeFrameHeadlessMode); if (crash_service) base::KillProcess(crash_service, 0, false); return result; }