Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8814)

Unified Diff: chrome/test/ui/ui_perf_test.cc

Issue 3137040: GTTF: Extract performance-testing-specific parts of UITestBase to UIPerfTest.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/ui/ui_perf_test.h ('k') | chrome/test/ui/ui_test.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/ui/ui_perf_test.cc
===================================================================
--- chrome/test/ui/ui_perf_test.cc (revision 57402)
+++ chrome/test/ui/ui_perf_test.cc (working copy)
@@ -2,936 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/test/ui/ui_test.h"
+#include "chrome/test/ui/ui_perf_test.h"
-#if defined(OS_POSIX)
-#include <signal.h>
-#include <sys/types.h>
-#endif
-
-#include <set>
-#include <vector>
-
-#include "app/sql/connection.h"
-#include "base/base_switches.h"
-#include "base/command_line.h"
-#include "base/file_path.h"
-#include "base/file_util.h"
#include "base/path_service.h"
-#include "base/platform_thread.h"
-#include "base/process_util.h"
-#include "base/scoped_ptr.h"
-#include "base/scoped_temp_dir.h"
#include "base/string_number_conversions.h"
-#include "base/test/test_file_util.h"
-#include "base/time.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/app/chrome_dll_resource.h"
-#include "chrome/browser/net/url_fixer_upper.h"
-#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/debug_flags.h"
-#include "chrome/common/logging_chrome.h"
-#include "chrome/common/json_value_serializer.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/automation/automation_messages.h"
-#include "chrome/test/automation/automation_proxy.h"
-#include "chrome/test/automation/browser_proxy.h"
-#include "chrome/test/automation/javascript_execution_controller.h"
-#include "chrome/test/automation/tab_proxy.h"
-#include "chrome/test/automation/window_proxy.h"
#include "chrome/test/chrome_process_util.h"
-#include "googleurl/src/gurl.h"
-#include "net/base/net_util.h"
-#if defined(OS_WIN)
-#include "base/win_util.h"
-#endif
-
-
-using base::Time;
-using base::TimeDelta;
-using base::TimeTicks;
-
-// Delay to let browser complete a requested action.
-static const int kWaitForActionMsec = 2000;
-static const int kWaitForActionMaxMsec = 15000;
-// Command execution timeout passed to AutomationProxy.
-static const int kCommandExecutionTimeout = 25000;
-// Delay to let the browser shut down before trying more brutal methods.
-static const int kWaitForTerminateMsec = 15000;
-// Passed as value of kTestType.
-static const char kUITestType[] = "ui";
-
-const wchar_t UITestBase::kFailedNoCrashService[] =
-#if defined(OS_WIN)
- L"NOTE: This test is expected to fail if crash_service.exe is not "
- L"running. Start it manually before running this test (see the build "
- L"output directory).";
-#elif defined(OS_LINUX)
- L"NOTE: This test is expected to fail if breakpad is not built in "
- L"or if chromium is not running headless (try CHROME_HEADLESS=1).";
-#else
- L"NOTE: Crash service not ported to this platform!";
-#endif
-bool UITestBase::in_process_renderer_ = false;
-bool UITestBase::no_sandbox_ = false;
-bool UITestBase::full_memory_dump_ = false;
-bool UITestBase::safe_plugins_ = false;
-bool UITestBase::show_error_dialogs_ = true;
-bool UITestBase::dump_histograms_on_exit_ = false;
-bool UITestBase::enable_dcheck_ = false;
-bool UITestBase::silent_dump_on_dcheck_ = false;
-bool UITestBase::disable_breakpad_ = false;
-int UITestBase::timeout_ms_ = 10 * 60 * 1000;
-std::string UITestBase::js_flags_ = "";
-std::string UITestBase::log_level_ = "";
-
-// Specify the time (in milliseconds) that the ui_tests should wait before
-// timing out. This is used to specify longer timeouts when running under Purify
-// which requires much more time.
-const char kUiTestTimeout[] = "ui-test-timeout";
-const char kUiTestActionTimeout[] = "ui-test-action-timeout";
-const char kUiTestActionMaxTimeout[] = "ui-test-action-max-timeout";
-const char kUiTestSleepTimeout[] = "ui-test-sleep-timeout";
-const char kUiTestTerminateTimeout[] = "ui-test-terminate-timeout";
-
-const char kExtraChromeFlagsSwitch[] = "extra-chrome-flags";
-
-// By default error dialogs are hidden, which makes debugging failures in the
-// slave process frustrating. By passing this in error dialogs are enabled.
-const char kEnableErrorDialogs[] = "enable-errdialogs";
-
-// Uncomment this line to have the spawned process wait for the debugger to
-// attach. This only works on Windows. On posix systems, you can set the
-// BROWSER_WRAPPER env variable to wrap the browser process.
-// #define WAIT_FOR_DEBUGGER_ON_OPEN 1
-
-UITestBase::UITestBase()
- : launch_arguments_(CommandLine::ARGUMENTS_ONLY),
- expected_errors_(0),
- expected_crashes_(0),
- homepage_(chrome::kAboutBlankURL),
- wait_for_initial_loads_(true),
- dom_automation_enabled_(false),
- process_(base::kNullProcessHandle),
- process_id_(-1),
- show_window_(false),
- clear_profile_(true),
- include_testing_id_(true),
- enable_file_cookies_(true),
- profile_type_(UITestBase::DEFAULT_THEME),
- shutdown_type_(UITestBase::WINDOW_CLOSE),
- test_start_time_(Time::NowFromSystemTime()),
- command_execution_timeout_ms_(kCommandExecutionTimeout),
- action_timeout_ms_(kWaitForActionMsec),
- action_max_timeout_ms_(kWaitForActionMaxMsec),
- sleep_timeout_ms_(kWaitForActionMsec),
- terminate_timeout_ms_(kWaitForTerminateMsec),
- temp_profile_dir_(new ScopedTempDir()) {
- PathService::Get(chrome::DIR_APP, &browser_directory_);
- PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_);
-}
-
-UITestBase::UITestBase(MessageLoop::Type msg_loop_type)
- : launch_arguments_(CommandLine::ARGUMENTS_ONLY),
- expected_errors_(0),
- expected_crashes_(0),
- homepage_(chrome::kAboutBlankURL),
- wait_for_initial_loads_(true),
- dom_automation_enabled_(false),
- process_(base::kNullProcessHandle),
- process_id_(-1),
- show_window_(false),
- clear_profile_(true),
- include_testing_id_(true),
- enable_file_cookies_(true),
- profile_type_(UITestBase::DEFAULT_THEME),
- shutdown_type_(UITestBase::WINDOW_CLOSE),
- test_start_time_(Time::NowFromSystemTime()),
- command_execution_timeout_ms_(kCommandExecutionTimeout),
- action_timeout_ms_(kWaitForActionMsec),
- action_max_timeout_ms_(kWaitForActionMaxMsec),
- sleep_timeout_ms_(kWaitForActionMsec),
- terminate_timeout_ms_(kWaitForTerminateMsec) {
- PathService::Get(chrome::DIR_APP, &browser_directory_);
- PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_);
-}
-
-UITestBase::~UITestBase() {
-}
-
-void UITestBase::SetUp() {
- AssertAppNotRunning(L"Please close any other instances "
- L"of the app before testing.");
-
- InitializeTimeouts();
- JavaScriptExecutionController::set_timeout(action_max_timeout_ms_);
- LaunchBrowserAndServer();
-}
-
-void UITestBase::TearDown() {
- CloseBrowserAndServer();
-
- // Make sure that we didn't encounter any assertion failures
- logging::AssertionList assertions;
- logging::GetFatalAssertions(&assertions);
-
- // If there were errors, get all the error strings for display.
- std::wstring failures =
- L"The following error(s) occurred in the application during this test:";
- if (assertions.size() > expected_errors_) {
- logging::AssertionList::const_iterator iter = assertions.begin();
- for (; iter != assertions.end(); ++iter) {
- failures.append(L"\n\n");
- failures.append(*iter);
- }
- }
- EXPECT_EQ(expected_errors_, assertions.size()) << failures;
-
- // Check for crashes during the test
- FilePath crash_dump_path;
- PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dump_path);
- int actual_crashes =
- file_util::CountFilesCreatedAfter(crash_dump_path, test_start_time_);
-
-#if defined(OS_WIN)
- // Each crash creates two dump files, so we divide by two here.
- actual_crashes /= 2;
-#endif
-
- std::wstring error_msg =
- L"Encountered an unexpected crash in the program during this test.";
- if (expected_crashes_ > 0 && actual_crashes == 0) {
- error_msg += L" ";
- error_msg += kFailedNoCrashService;
- }
- EXPECT_EQ(expected_crashes_, actual_crashes) << error_msg;
-}
-
-void UITestBase::set_command_execution_timeout_ms(int timeout) {
- if (server_.get()) {
- // automation channel already created. Set its timeout for use by
- // subsequent automation calls.
- server_->set_command_execution_timeout_ms(timeout);
- }
- command_execution_timeout_ms_ = timeout;
- LOG(INFO) << "Automation command execution timeout set to "
- << timeout << " milli secs.";
-}
-
-// Pick up the various test time out values from the command line.
-void UITestBase::InitializeTimeouts() {
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
- if (command_line.HasSwitch(kUiTestTimeout)) {
- std::string timeout_str = command_line.GetSwitchValueASCII(kUiTestTimeout);
- int timeout;
- base::StringToInt(timeout_str, &timeout);
- command_execution_timeout_ms_ = std::max(kCommandExecutionTimeout, timeout);
- }
-
- if (command_line.HasSwitch(kUiTestActionTimeout)) {
- std::string act_str =
- command_line.GetSwitchValueASCII(kUiTestActionTimeout);
- int act_timeout;
- base::StringToInt(act_str, &act_timeout);
- action_timeout_ms_ = std::max(kWaitForActionMsec, act_timeout);
- }
-
- if (command_line.HasSwitch(kUiTestActionMaxTimeout)) {
- std::string action_max_str =
- command_line.GetSwitchValueASCII(kUiTestActionMaxTimeout);
- int max_timeout;
- base::StringToInt(action_max_str, &max_timeout);
- action_max_timeout_ms_ = std::max(kWaitForActionMaxMsec, max_timeout);
- }
-
- if (CommandLine::ForCurrentProcess()->HasSwitch(kUiTestSleepTimeout)) {
- std::string sleep_timeout_str =
- command_line.GetSwitchValueASCII(kUiTestSleepTimeout);
- int sleep_timeout;
- base::StringToInt(sleep_timeout_str, &sleep_timeout);
- sleep_timeout_ms_ = std::max(kWaitForActionMsec, sleep_timeout);
- }
-
- if (CommandLine::ForCurrentProcess()->HasSwitch(kUiTestTerminateTimeout)) {
- std::string terminate_timeout_str =
- command_line.GetSwitchValueASCII(kUiTestTerminateTimeout);
- int terminate_timeout;
- base::StringToInt(terminate_timeout_str, &terminate_timeout);
- terminate_timeout_ms_ = std::max(kWaitForActionMsec, terminate_timeout);
- }
-}
-
-AutomationProxy* UITestBase::CreateAutomationProxy(int execution_timeout) {
- return new AutomationProxy(execution_timeout, false);
-}
-
-void UITestBase::LaunchBrowserAndServer() {
- // Set up IPC testing interface server.
- server_.reset(CreateAutomationProxy(command_execution_timeout_ms_));
-
- LaunchBrowser(launch_arguments_, clear_profile_);
- server_->WaitForAppLaunch();
- if (wait_for_initial_loads_)
- ASSERT_TRUE(server_->WaitForInitialLoads());
- else
- PlatformThread::Sleep(sleep_timeout_ms());
-
- EXPECT_TRUE(automation()->SetFilteredInet(ShouldFilterInet()));
-}
-
-void UITestBase::CloseBrowserAndServer() {
- QuitBrowser();
- CleanupAppProcesses();
-
- // Suppress spammy failures that seem to be occurring when running
- // the UI tests in single-process mode.
- // TODO(jhughes): figure out why this is necessary at all, and fix it
- if (!in_process_renderer_)
- AssertAppNotRunning(StringPrintf(
- L"Unable to quit all browser processes. Original PID %d", process_id_));
-
- server_.reset(); // Shut down IPC testing interface.
-}
-
-static CommandLine* CreatePythonCommandLine() {
- return new CommandLine(FilePath(FILE_PATH_LITERAL("python")));
-}
-
-static CommandLine* CreateHttpServerCommandLine() {
- FilePath src_path;
- // Get to 'src' dir.
- PathService::Get(base::DIR_SOURCE_ROOT, &src_path);
-
- FilePath script_path(src_path);
- script_path = script_path.AppendASCII("third_party");
- script_path = script_path.AppendASCII("WebKit");
- script_path = script_path.AppendASCII("WebKitTools");
- script_path = script_path.AppendASCII("Scripts");
- script_path = script_path.AppendASCII("new-run-webkit-httpd");
-
- CommandLine* cmd_line = CreatePythonCommandLine();
- cmd_line->AppendArgPath(script_path);
- return cmd_line;
-}
-
-static void RunCommand(const CommandLine& cmd_line) {
-#if defined(OS_WIN)
- // For Win32, use this 'version' of base::LaunchApp() with bInheritHandles
- // parameter to CreateProcess set to TRUE. This is needed in test harness
- // because it launches all the processes with 'chained' standard i/o pipes.
- STARTUPINFO startup_info = {0};
- startup_info.cb = sizeof(startup_info);
- PROCESS_INFORMATION process_info;
- if (!CreateProcess(
- NULL,
- const_cast<wchar_t*>(cmd_line.command_line_string().c_str()),
- NULL, NULL,
- TRUE, // Inherit the standard pipes, needed when
- // running in test harnesses.
- 0, NULL, NULL, &startup_info, &process_info))
- return;
-
- // Handles must be closed or they will leak
- CloseHandle(process_info.hThread);
- WaitForSingleObject(process_info.hProcess, INFINITE);
- CloseHandle(process_info.hProcess);
-#else
- base::LaunchApp(cmd_line, true, false, NULL);
-#endif
-}
-
-void UITestBase::StartHttpServer(const FilePath& root_directory) {
- StartHttpServerWithPort(root_directory, 0);
-}
-
-void UITestBase::StartHttpServerWithPort(const FilePath& root_directory,
- int port) {
- scoped_ptr<CommandLine> cmd_line(CreateHttpServerCommandLine());
- ASSERT_TRUE(cmd_line.get());
- cmd_line->AppendSwitchASCII("server", "start");
- cmd_line->AppendSwitch("register_cygwin");
- cmd_line->AppendSwitchPath("root", root_directory);
-
- // For Windows 7, if we start the lighttpd server on the foreground mode,
- // it will mess up with the command window and cause conhost.exe to crash. To
- // work around this, we start the http server on the background mode.
-#if defined(OS_WIN)
- if (win_util::GetWinVersion() >= win_util::WINVERSION_WIN7)
- cmd_line->AppendSwitch("run_background");
-#endif
-
- if (port)
- cmd_line->AppendSwitchASCII("port", base::IntToString(port));
- RunCommand(*cmd_line.get());
-}
-
-void UITestBase::StopHttpServer() {
- scoped_ptr<CommandLine> cmd_line(CreateHttpServerCommandLine());
- ASSERT_TRUE(cmd_line.get());
- cmd_line->AppendSwitchASCII("server", "stop");
- RunCommand(*cmd_line.get());
-}
-
-void UITestBase::LaunchBrowser(const CommandLine& arguments,
- bool clear_profile) {
- if (clear_profile || !temp_profile_dir_->IsValid()) {
- temp_profile_dir_.reset(new ScopedTempDir());
- ASSERT_TRUE(temp_profile_dir_->CreateUniqueTempDir());
-
- // Update the information about user data directory location on the ui_test
- // side. Using PathService seems to be the most reliable, consistent way
- // to do that.
- ASSERT_TRUE(PathService::Override(chrome::DIR_USER_DATA, user_data_dir()));
- }
-
- if (!template_user_data_.empty()) {
- // Recursively copy the template directory to the user_data_dir.
- ASSERT_TRUE(file_util::CopyRecursiveDirNoCache(
- template_user_data_,
- user_data_dir()));
- // If we're using the complex theme data, we need to write the
- // user_data_dir_ to our preferences file.
- if (profile_type_ == UITestBase::COMPLEX_THEME) {
- RewritePreferencesFile(user_data_dir());
- }
-
- // Update the history file to include recent dates.
- UpdateHistoryDates();
- }
-
- ASSERT_TRUE(LaunchBrowserHelper(arguments, false, &process_));
- process_id_ = base::GetProcId(process_);
-}
-
-bool UITestBase::LaunchAnotherBrowserBlockUntilClosed(
- const CommandLine& cmdline) {
- return LaunchBrowserHelper(cmdline, true, NULL);
-}
-
-void UITestBase::QuitBrowser() {
- if (SESSION_ENDING == shutdown_type_) {
- TerminateBrowser();
- return;
- }
-
- // There's nothing to do here if the browser is not running.
- if (IsBrowserRunning()) {
- TimeTicks quit_start = TimeTicks::Now();
- EXPECT_TRUE(automation()->SetFilteredInet(false));
-
- if (WINDOW_CLOSE == shutdown_type_) {
- int window_count = 0;
- EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
-
- // Synchronously close all but the last browser window. Closing them
- // one-by-one may help with stability.
- while (window_count > 1) {
- scoped_refptr<BrowserProxy> browser_proxy =
- automation()->GetBrowserWindow(0);
- EXPECT_TRUE(browser_proxy.get());
- if (browser_proxy.get()) {
- EXPECT_TRUE(browser_proxy->RunCommand(IDC_CLOSE_WINDOW));
- EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
- } else {
- break;
- }
- }
-
- // Close the last window asynchronously, because the browser may
- // shutdown faster than it will be able to send a synchronous response
- // to our message.
- scoped_refptr<BrowserProxy> browser_proxy =
- automation()->GetBrowserWindow(0);
- EXPECT_TRUE(browser_proxy.get());
- if (browser_proxy.get()) {
- EXPECT_TRUE(browser_proxy->ApplyAccelerator(IDC_CLOSE_WINDOW));
- browser_proxy = NULL;
- }
- } else if (USER_QUIT == shutdown_type_) {
- scoped_refptr<BrowserProxy> browser_proxy =
- automation()->GetBrowserWindow(0);
- EXPECT_TRUE(browser_proxy.get());
- if (browser_proxy.get()) {
- EXPECT_TRUE(browser_proxy->RunCommandAsync(IDC_EXIT));
- }
- } else {
- NOTREACHED() << "Invalid shutdown type " << shutdown_type_;
- }
-
- // Now, drop the automation IPC channel so that the automation provider in
- // the browser notices and drops its reference to the browser process.
- automation()->Disconnect();
-
- // Wait for the browser process to quit. It should quit once all tabs have
- // been closed.
- int timeout = terminate_timeout_ms_;
-#ifdef WAIT_FOR_DEBUGGER_ON_OPEN
- timeout = 500000;
-#endif
- if (!base::WaitForSingleProcess(process_, timeout)) {
- // We need to force the browser to quit because it didn't quit fast
- // enough. Take no chance and kill every chrome processes.
- CleanupAppProcesses();
- }
- browser_quit_time_ = TimeTicks::Now() - quit_start;
- }
-
- // Don't forget to close the handle
- base::CloseProcessHandle(process_);
- process_ = base::kNullProcessHandle;
- process_id_ = -1;
-}
-
-void UITestBase::TerminateBrowser() {
- if (IsBrowserRunning()) {
- TimeTicks quit_start = TimeTicks::Now();
- EXPECT_TRUE(automation()->SetFilteredInet(false));
-#if defined(OS_WIN)
- scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(browser.get());
- ASSERT_TRUE(browser->TerminateSession());
-#endif // defined(OS_WIN)
-
- // Now, drop the automation IPC channel so that the automation provider in
- // the browser notices and drops its reference to the browser process.
- automation()->Disconnect();
-
-#if defined(OS_POSIX)
- EXPECT_EQ(kill(process_, SIGTERM), 0);
-#endif // OS_POSIX
-
- // Wait for the browser process to quit.
- int timeout = terminate_timeout_ms_;
-#ifdef WAIT_FOR_DEBUGGER_ON_OPEN
- timeout = 500000;
-#endif
- if (!base::WaitForSingleProcess(process_, timeout)) {
- // We need to force the browser to quit because it didn't quit fast
- // enough. Take no chance and kill every chrome processes.
- CleanupAppProcesses();
- }
- browser_quit_time_ = TimeTicks::Now() - quit_start;
- }
-
- // Don't forget to close the handle
- base::CloseProcessHandle(process_);
- process_ = base::kNullProcessHandle;
- process_id_ = -1;
-}
-
-void UITestBase::AssertAppNotRunning(const std::wstring& error_message) {
- std::wstring final_error_message(error_message);
-
- ChromeProcessList processes = GetRunningChromeProcesses(process_id_);
- if (!processes.empty()) {
- final_error_message += L" Leftover PIDs: [";
- for (ChromeProcessList::const_iterator it = processes.begin();
- it != processes.end(); ++it) {
- final_error_message += StringPrintf(L" %d", *it);
- }
- final_error_message += L" ]";
- }
- ASSERT_TRUE(processes.empty()) << final_error_message;
-}
-
-void UITestBase::CleanupAppProcesses() {
- TerminateAllChromeProcesses(process_id_);
-}
-
-scoped_refptr<TabProxy> UITestBase::GetActiveTab(int window_index) {
- EXPECT_GE(window_index, 0);
- int window_count = -1;
- // We have to use EXPECT rather than ASSERT here because ASSERT_* only works
- // in functions that return void.
- EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
- if (window_count == -1)
- return NULL;
- EXPECT_GT(window_count, window_index);
- scoped_refptr<BrowserProxy> window_proxy(automation()->
- GetBrowserWindow(window_index));
- EXPECT_TRUE(window_proxy.get());
- if (!window_proxy.get())
- return NULL;
-
- int active_tab_index = -1;
- EXPECT_TRUE(window_proxy->GetActiveTabIndex(&active_tab_index));
- if (active_tab_index == -1)
- return NULL;
-
- return window_proxy->GetTab(active_tab_index);
-}
-
-scoped_refptr<TabProxy> UITestBase::GetActiveTab() {
- scoped_refptr<BrowserProxy> window_proxy(automation()->
- GetBrowserWindow(0));
- EXPECT_TRUE(window_proxy.get());
- if (!window_proxy.get())
- return NULL;
-
- scoped_refptr<TabProxy> tab_proxy = window_proxy->GetActiveTab();
- EXPECT_TRUE(tab_proxy.get());
- return tab_proxy;
-}
-
-void UITestBase::NavigateToURLAsync(const GURL& url) {
- scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
- ASSERT_TRUE(tab_proxy.get());
- ASSERT_TRUE(tab_proxy->NavigateToURLAsync(url));
-}
-
-void UITestBase::NavigateToURL(const GURL& url) {
- NavigateToURL(url, 0, GetActiveTabIndex(0));
-}
-
-void UITestBase::NavigateToURL(const GURL& url, int window_index, int
- tab_index) {
- NavigateToURLBlockUntilNavigationsComplete(url, 1, window_index, tab_index);
-}
-
-void UITestBase::NavigateToURLBlockUntilNavigationsComplete(
- const GURL& url, int number_of_navigations) {
- scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
- ASSERT_TRUE(tab_proxy.get());
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
- tab_proxy->NavigateToURLBlockUntilNavigationsComplete(
- url, number_of_navigations)) << url.spec();
-}
-
-void UITestBase::NavigateToURLBlockUntilNavigationsComplete(
- const GURL& url, int number_of_navigations, int window_index,
- int tab_index) {
- scoped_refptr<BrowserProxy> window =
- automation()->GetBrowserWindow(window_index);
- ASSERT_TRUE(window.get());
- scoped_refptr<TabProxy> tab_proxy(window->GetTab(tab_index));
- ASSERT_TRUE(tab_proxy.get());
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
- tab_proxy->NavigateToURLBlockUntilNavigationsComplete(
- url, number_of_navigations)) << url.spec();
-}
-
-bool UITestBase::WaitForDownloadShelfVisible(BrowserProxy* browser) {
- return WaitForDownloadShelfVisibilityChange(browser, true);
-}
-
-bool UITestBase::WaitForDownloadShelfInvisible(BrowserProxy* browser) {
- return WaitForDownloadShelfVisibilityChange(browser, false);
-}
-
-bool UITestBase::WaitForDownloadShelfVisibilityChange(BrowserProxy* browser,
- bool wait_for_open) {
- const int kCycles = 10;
- for (int i = 0; i < kCycles; i++) {
- // Give it a chance to catch up.
- bool browser_survived = CrashAwareSleep(sleep_timeout_ms() / kCycles);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return false;
-
- bool visible = !wait_for_open;
- if (!browser->IsShelfVisible(&visible))
- continue;
- if (visible == wait_for_open)
- return true; // Got the download shelf.
- }
-
- ADD_FAILURE() << "Timeout reached in WaitForDownloadShelfVisibilityChange";
- return false;
-}
-
-bool UITestBase::WaitForFindWindowVisibilityChange(BrowserProxy* browser,
- bool wait_for_open) {
- const int kCycles = 10;
- for (int i = 0; i < kCycles; i++) {
- bool visible = false;
- if (!browser->IsFindWindowFullyVisible(&visible))
- return false; // Some error.
- if (visible == wait_for_open)
- return true; // Find window visibility change complete.
-
- // Give it a chance to catch up.
- bool browser_survived = CrashAwareSleep(sleep_timeout_ms() / kCycles);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return false;
- }
-
- ADD_FAILURE() << "Timeout reached in WaitForFindWindowVisibilityChange";
- return false;
-}
-
-bool UITestBase::WaitForBookmarkBarVisibilityChange(BrowserProxy* browser,
- bool wait_for_open) {
- const int kCycles = 10;
- for (int i = 0; i < kCycles; i++) {
- bool visible = false;
- bool animating = true;
- if (!browser->GetBookmarkBarVisibility(&visible, &animating))
- return false; // Some error.
- if (visible == wait_for_open && !animating)
- return true; // Bookmark bar visibility change complete.
-
- // Give it a chance to catch up.
- bool browser_survived = CrashAwareSleep(sleep_timeout_ms() / kCycles);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return false;
- }
-
- ADD_FAILURE() << "Timeout reached in WaitForBookmarkBarVisibilityChange";
- return false;
-}
-
-GURL UITestBase::GetActiveTabURL(int window_index) {
- scoped_refptr<TabProxy> tab_proxy(GetActiveTab(window_index));
- EXPECT_TRUE(tab_proxy.get());
- if (!tab_proxy.get())
- return GURL();
-
- GURL url;
- bool success = tab_proxy->GetCurrentURL(&url);
- EXPECT_TRUE(success);
- if (!success)
- return GURL();
- return url;
-}
-
-std::wstring UITestBase::GetActiveTabTitle(int window_index) {
- std::wstring title;
- scoped_refptr<TabProxy> tab_proxy(GetActiveTab(window_index));
- EXPECT_TRUE(tab_proxy.get());
- if (!tab_proxy.get())
- return title;
-
- EXPECT_TRUE(tab_proxy->GetTabTitle(&title));
- return title;
-}
-
-int UITestBase::GetActiveTabIndex(int window_index) {
- scoped_refptr<BrowserProxy> window_proxy(automation()->
- GetBrowserWindow(window_index));
- EXPECT_TRUE(window_proxy.get());
- if (!window_proxy.get())
- return -1;
-
- int active_tab_index = -1;
- EXPECT_TRUE(window_proxy->GetActiveTabIndex(&active_tab_index));
- return active_tab_index;
-}
-
-bool UITestBase::IsBrowserRunning() {
- return CrashAwareSleep(0);
-}
-
-bool UITestBase::CrashAwareSleep(int time_out_ms) {
- return base::CrashAwareSleep(process_, time_out_ms);
-}
-
-int UITestBase::GetBrowserProcessCount() {
- return GetRunningChromeProcesses(process_id_).size();
-}
-
-static DictionaryValue* LoadDictionaryValueFromPath(const FilePath& path) {
- if (path.empty())
- return NULL;
-
- JSONFileValueSerializer serializer(path);
- scoped_ptr<Value> root_value(serializer.Deserialize(NULL, NULL));
- if (!root_value.get() || root_value->GetType() != Value::TYPE_DICTIONARY)
- return NULL;
-
- return static_cast<DictionaryValue*>(root_value.release());
-}
-
-DictionaryValue* UITestBase::GetLocalState() {
- FilePath local_state_path;
- PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path);
- return LoadDictionaryValueFromPath(local_state_path);
-}
-
-DictionaryValue* UITestBase::GetDefaultProfilePreferences() {
- FilePath path;
- PathService::Get(chrome::DIR_USER_DATA, &path);
- path = path.AppendASCII(WideToUTF8(chrome::kNotSignedInProfile));
- return LoadDictionaryValueFromPath(path.Append(chrome::kPreferencesFilename));
-}
-
-int UITestBase::GetTabCount() {
- return GetTabCount(0);
-}
-
-int UITestBase::GetTabCount(int window_index) {
- scoped_refptr<BrowserProxy> window(
- automation()->GetBrowserWindow(window_index));
- EXPECT_TRUE(window.get());
- if (!window.get())
- return 0;
-
- int result = 0;
- EXPECT_TRUE(window->GetTabCount(&result));
-
- return result;
-}
-
-bool UITestBase::WaitUntilCookieValue(TabProxy* tab,
- const GURL& url,
- const char* cookie_name,
- int time_out_ms,
- const char* expected_value) {
- const int kIntervalMs = 250;
- const int kMaxIntervals = time_out_ms / kIntervalMs;
-
- std::string cookie_value;
- for (int i = 0; i < kMaxIntervals; ++i) {
- bool browser_survived = CrashAwareSleep(kIntervalMs);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return false;
-
- EXPECT_TRUE(tab->GetCookieByName(url, cookie_name, &cookie_value));
- if (cookie_value == expected_value)
- return true;
- }
-
- ADD_FAILURE() << "Timeout reached in WaitUntilCookieValue";
- return false;
-}
-
-std::string UITestBase::WaitUntilCookieNonEmpty(TabProxy* tab,
- const GURL& url,
- const char* cookie_name,
- int time_out_ms) {
- const int kIntervalMs = 250;
- const int kMaxIntervals = time_out_ms / kIntervalMs;
-
- for (int i = 0; i < kMaxIntervals; ++i) {
- bool browser_survived = CrashAwareSleep(kIntervalMs);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return std::string();
-
- std::string cookie_value;
- EXPECT_TRUE(tab->GetCookieByName(url, cookie_name, &cookie_value));
- if (!cookie_value.empty())
- return cookie_value;
- }
-
- ADD_FAILURE() << "Timeout reached in WaitUntilCookieNonEmpty";
- return std::string();
-}
-
-bool UITestBase::WaitUntilJavaScriptCondition(TabProxy* tab,
- const std::wstring& frame_xpath,
- const std::wstring& jscript,
- int time_out_ms) {
- const int kIntervalMs = 250;
- const int kMaxIntervals = time_out_ms / kIntervalMs;
-
- // Wait until the test signals it has completed.
- for (int i = 0; i < kMaxIntervals; ++i) {
- bool browser_survived = CrashAwareSleep(kIntervalMs);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return false;
-
- bool done_value = false;
- bool success = tab->ExecuteAndExtractBool(frame_xpath, jscript,
- &done_value);
- EXPECT_TRUE(success);
- if (!success)
- return false;
- if (done_value)
- return true;
- }
-
- ADD_FAILURE() << "Timeout reached in WaitUntilJavaScriptCondition";
- return false;
-}
-
-void UITestBase::WaitUntilTabCount(int tab_count) {
- const int kMaxIntervals = 10;
- const int kIntervalMs = sleep_timeout_ms() / kMaxIntervals;
-
- for (int i = 0; i < kMaxIntervals; ++i) {
- bool browser_survived = CrashAwareSleep(kIntervalMs);
- EXPECT_TRUE(browser_survived);
- if (!browser_survived)
- return;
- if (GetTabCount() == tab_count)
- return;
- }
-
- ADD_FAILURE() << "Timeout reached in WaitUntilTabCount";
-}
-
-FilePath UITestBase::GetDownloadDirectory() {
- scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
- EXPECT_TRUE(tab_proxy.get());
- if (!tab_proxy.get())
- return FilePath();
-
- FilePath download_directory;
- EXPECT_TRUE(tab_proxy->GetDownloadDirectory(&download_directory));
- return download_directory;
-}
-
-void UITestBase::CloseBrowserAsync(BrowserProxy* browser) const {
- ASSERT_TRUE(server_->Send(
- new AutomationMsg_CloseBrowserRequestAsync(0, browser->handle())));
-}
-
-bool UITestBase::CloseBrowser(BrowserProxy* browser,
- bool* application_closed) const {
- DCHECK(application_closed);
- if (!browser->is_valid() || !browser->handle())
- return false;
-
- bool result = true;
-
- bool succeeded = server_->Send(new AutomationMsg_CloseBrowser(
- 0, browser->handle(), &result, application_closed));
-
- if (!succeeded)
- return false;
-
- if (*application_closed) {
- // Let's wait until the process dies (if it is not gone already).
- bool success = base::WaitForSingleProcess(process_, base::kNoTimeout);
- EXPECT_TRUE(success);
- }
-
- return result;
-}
-
-void UITestBase::WaitForFinish(const std::string &name,
- const std::string &id,
- const GURL &url,
- const std::string& test_complete_cookie,
- const std::string& expected_cookie_value,
- const int wait_time) {
- // The webpage being tested has javascript which sets a cookie
- // which signals completion of the test. The cookie name is
- // a concatenation of the test name and the test id. This allows
- // us to run multiple tests within a single webpage and test
- // that they all c
- std::string cookie_name = name;
- cookie_name.append(".");
- cookie_name.append(id);
- cookie_name.append(".");
- cookie_name.append(test_complete_cookie);
-
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- std::string cookie_value = WaitUntilCookieNonEmpty(tab.get(), url,
- cookie_name.c_str(),
- wait_time);
- EXPECT_EQ(expected_cookie_value, cookie_value);
-}
-
-void UITestBase::PrintResult(const std::string& measurement,
+void UIPerfTest::PrintResult(const std::string& measurement,
const std::string& modifier,
const std::string& trace,
size_t value,
@@ -941,7 +19,7 @@
"", "", units, important);
}
-void UITestBase::PrintResult(const std::string& measurement,
+void UIPerfTest::PrintResult(const std::string& measurement,
const std::string& modifier,
const std::string& trace,
const std::string& value,
@@ -951,7 +29,7 @@
important);
}
-void UITestBase::PrintResultMeanAndError(const std::string& measurement,
+void UIPerfTest::PrintResultMeanAndError(const std::string& measurement,
const std::string& modifier,
const std::string& trace,
const std::string& mean_and_error,
@@ -961,7 +39,7 @@
"{", "}", units, important);
}
-void UITestBase::PrintResultList(const std::string& measurement,
+void UIPerfTest::PrintResultList(const std::string& measurement,
const std::string& modifier,
const std::string& trace,
const std::string& values,
@@ -971,7 +49,7 @@
"[", "]", units, important);
}
-void UITestBase::PrintResultsImpl(const std::string& measurement,
+void UIPerfTest::PrintResultsImpl(const std::string& measurement,
const std::string& modifier,
const std::string& trace,
const std::string& values,
@@ -988,276 +66,7 @@
units.c_str());
}
-bool UITestBase::EvictFileFromSystemCacheWrapper(const FilePath& path) {
- for (int i = 0; i < 10; i++) {
- if (file_util::EvictFileFromSystemCache(path))
- return true;
- PlatformThread::Sleep(sleep_timeout_ms() / 10);
- }
- return false;
-}
-
-// static
-void UITestBase::RewritePreferencesFile(const FilePath& user_data_dir) {
- const FilePath pref_template_path(
- user_data_dir.AppendASCII("Default").AppendASCII("PreferencesTemplate"));
- const FilePath pref_path(
- user_data_dir.AppendASCII("Default").AppendASCII("Preferences"));
-
- // Read in preferences template.
- std::string pref_string;
- EXPECT_TRUE(file_util::ReadFileToString(pref_template_path, &pref_string));
- string16 format_string = ASCIIToUTF16(pref_string);
-
- // Make sure temp directory has the proper format for writing to prefs file.
-#if defined(OS_POSIX)
- std::wstring user_data_dir_w(ASCIIToWide(user_data_dir.value()));
-#elif defined(OS_WIN)
- std::wstring user_data_dir_w(user_data_dir.value());
- // In Windows, the FilePath will write '\' for the path separators; change
- // these to a separator that won't trigger escapes.
- std::replace(user_data_dir_w.begin(),
- user_data_dir_w.end(), '\\', '/');
-#endif
-
- // Rewrite prefs file.
- std::vector<string16> subst;
- subst.push_back(WideToUTF16(user_data_dir_w));
- const std::string prefs_string =
- UTF16ToASCII(ReplaceStringPlaceholders(format_string, subst, NULL));
- EXPECT_TRUE(file_util::WriteFile(pref_path, prefs_string.c_str(),
- prefs_string.size()));
- file_util::EvictFileFromSystemCache(pref_path);
-}
-
-FilePath UITestBase::user_data_dir() const {
- EXPECT_TRUE(temp_profile_dir_->IsValid());
- return temp_profile_dir_->path();
-}
-
-// static
-FilePath UITestBase::ComputeTypicalUserDataSource(ProfileType profile_type) {
- FilePath source_history_file;
- EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA,
- &source_history_file));
- source_history_file = source_history_file.AppendASCII("profiles");
- switch (profile_type) {
- case UITestBase::DEFAULT_THEME:
- source_history_file = source_history_file.AppendASCII("typical_history");
- break;
- case UITestBase::COMPLEX_THEME:
- source_history_file = source_history_file.AppendASCII("complex_theme");
- break;
- case UITestBase::NATIVE_THEME:
- source_history_file = source_history_file.AppendASCII("gtk_theme");
- break;
- case UITestBase::CUSTOM_FRAME:
- source_history_file = source_history_file.AppendASCII("custom_frame");
- break;
- case UITestBase::CUSTOM_FRAME_NATIVE_THEME:
- source_history_file =
- source_history_file.AppendASCII("custom_frame_gtk_theme");
- break;
- default:
- NOTREACHED();
- }
- return source_history_file;
-}
-
-void UITestBase::WaitForGeneratedFileAndCheck(
- const FilePath& generated_file,
- const FilePath& original_file,
- bool compare_files,
- bool need_equal,
- bool delete_generated_file) {
- // Check whether the target file has been generated.
- file_util::FileInfo previous, current;
- bool exist = false;
- const int kCycles = 20;
- for (int i = 0; i < kCycles; ++i) {
- if (exist) {
- file_util::GetFileInfo(generated_file, &current);
- if (current.size == previous.size)
- break;
- previous = current;
- } else if (file_util::PathExists(generated_file)) {
- file_util::GetFileInfo(generated_file, &previous);
- exist = true;
- }
- PlatformThread::Sleep(sleep_timeout_ms() / kCycles);
- }
- EXPECT_TRUE(exist);
-
- if (compare_files) {
- // Check whether the generated file is equal with original file according to
- // parameter: need_equal.
- int64 generated_file_size = 0;
- int64 original_file_size = 0;
-
- EXPECT_TRUE(file_util::GetFileSize(generated_file, &generated_file_size));
- EXPECT_TRUE(file_util::GetFileSize(original_file, &original_file_size));
- if (need_equal) {
- EXPECT_EQ(generated_file_size, original_file_size);
- EXPECT_TRUE(file_util::ContentsEqual(generated_file, original_file));
- } else {
- EXPECT_NE(generated_file_size, original_file_size);
- EXPECT_FALSE(file_util::ContentsEqual(generated_file, original_file));
- }
- }
- if (delete_generated_file)
- EXPECT_TRUE(file_util::DieFileDie(generated_file, false));
-}
-
-bool UITestBase::LaunchBrowserHelper(const CommandLine& arguments,
- bool wait,
- base::ProcessHandle* process) {
- FilePath command = browser_directory_.Append(
- FilePath::FromWStringHack(chrome::kBrowserProcessExecutablePath));
- CommandLine command_line(command);
-
- // Add any explicit command line flags passed to the process.
- CommandLine::StringType extra_chrome_flags =
- CommandLine::ForCurrentProcess()->GetSwitchValueNative(
- kExtraChromeFlagsSwitch);
- if (!extra_chrome_flags.empty()) {
- // Split by spaces and append to command line
- std::vector<CommandLine::StringType> flags;
- SplitString(extra_chrome_flags, ' ', &flags);
- for (size_t i = 0; i < flags.size(); ++i)
- command_line.AppendArgNative(flags[i]);
- }
-
- // No first-run dialogs, please.
- command_line.AppendSwitch(switches::kNoFirstRun);
-
- // No default browser check, it would create an info-bar (if we are not the
- // default browser) that could conflicts with some tests expectations.
- command_line.AppendSwitch(switches::kNoDefaultBrowserCheck);
-
- // This is a UI test.
- command_line.AppendSwitchASCII(switches::kTestType, kUITestType);
-
- // Tell the browser to use a temporary directory just for this test.
- command_line.AppendSwitchPath(switches::kUserDataDir, user_data_dir());
-
- // We need cookies on file:// for things like the page cycler.
- if (enable_file_cookies_)
- command_line.AppendSwitch(switches::kEnableFileCookies);
-
- if (dom_automation_enabled_)
- command_line.AppendSwitch(switches::kDomAutomationController);
-
- if (include_testing_id_) {
- command_line.AppendSwitchASCII(switches::kTestingChannelID,
- server_->channel_id());
- }
-
- if (!show_error_dialogs_ &&
- !CommandLine::ForCurrentProcess()->HasSwitch(kEnableErrorDialogs)) {
- command_line.AppendSwitch(switches::kNoErrorDialogs);
- }
- if (in_process_renderer_)
- command_line.AppendSwitch(switches::kSingleProcess);
- if (no_sandbox_)
- command_line.AppendSwitch(switches::kNoSandbox);
- if (full_memory_dump_)
- command_line.AppendSwitch(switches::kFullMemoryCrashReport);
- if (safe_plugins_)
- command_line.AppendSwitch(switches::kSafePlugins);
- if (enable_dcheck_)
- command_line.AppendSwitch(switches::kEnableDCHECK);
- if (silent_dump_on_dcheck_)
- command_line.AppendSwitch(switches::kSilentDumpOnDCHECK);
- if (disable_breakpad_)
- command_line.AppendSwitch(switches::kDisableBreakpad);
- if (!homepage_.empty())
- command_line.AppendSwitchASCII(switches::kHomePage, homepage_);
- // Don't try to fetch web resources during UI testing.
- command_line.AppendSwitch(switches::kDisableWebResources);
-
- if (!js_flags_.empty())
- command_line.AppendSwitchASCII(switches::kJavaScriptFlags, js_flags_);
- if (!log_level_.empty())
- command_line.AppendSwitchASCII(switches::kLoggingLevel, log_level_);
-
- command_line.AppendSwitch(switches::kMetricsRecordingOnly);
-
- if (!CommandLine::ForCurrentProcess()->HasSwitch(kEnableErrorDialogs))
- command_line.AppendSwitch(switches::kEnableLogging);
-
- if (dump_histograms_on_exit_)
- command_line.AppendSwitch(switches::kDumpHistogramsOnExit);
-
-#ifdef WAIT_FOR_DEBUGGER_ON_OPEN
- command_line.AppendSwitch(switches::kDebugOnStart);
-#endif
-
- if (!ui_test_name_.empty())
- command_line.AppendSwitchASCII(switches::kTestName, ui_test_name_);
-
- // The tests assume that file:// URIs can freely access other file:// URIs.
- command_line.AppendSwitch(switches::kAllowFileAccessFromFiles);
-
- // Disable TabCloseableStateWatcher for tests.
- command_line.AppendSwitch(switches::kDisableTabCloseableStateWatcher);
-
- DebugFlags::ProcessDebugFlags(
- &command_line, ChildProcessInfo::UNKNOWN_PROCESS, false);
- command_line.AppendArguments(arguments, false);
-
- // TODO(phajdan.jr): Only run it for "main" browser launch.
- browser_launch_time_ = TimeTicks::Now();
-
-#if defined(OS_WIN)
- bool started = base::LaunchApp(command_line,
- wait,
- !show_window_,
- process);
-#elif defined(OS_POSIX)
- // Sometimes one needs to run the browser under a special environment
- // (e.g. valgrind) without also running the test harness (e.g. python)
- // under the special environment. Provide a way to wrap the browser
- // commandline with a special prefix to invoke the special environment.
- const char* browser_wrapper = getenv("BROWSER_WRAPPER");
- if (browser_wrapper) {
- command_line.PrependWrapper(browser_wrapper);
- LOG(INFO) << "BROWSER_WRAPPER was set, prefixing command_line with "
- << browser_wrapper;
- }
-
- bool started = base::LaunchApp(command_line.argv(),
- server_->fds_to_map(),
- wait,
- process);
-#endif
-
- return started;
-}
-
-void UITestBase::UpdateHistoryDates() {
- // Migrate the times in the segment_usage table to yesterday so we get
- // actual thumbnails on the NTP.
- sql::Connection db;
- FilePath history =
- user_data_dir().AppendASCII("Default").AppendASCII("History");
- // Not all test profiles have a history file.
- if (!file_util::PathExists(history))
- return;
-
- ASSERT_TRUE(db.Open(history));
- Time yesterday = Time::Now() - TimeDelta::FromDays(1);
- std::string yesterday_str = base::Int64ToString(yesterday.ToInternalValue());
- std::string query = StringPrintf(
- "UPDATE segment_usage "
- "SET time_slot = %s "
- "WHERE id IN (SELECT id FROM segment_usage WHERE time_slot > 0);",
- yesterday_str.c_str());
- ASSERT_TRUE(db.Execute(query.c_str()));
- db.Close();
- file_util::EvictFileFromSystemCache(history);
-}
-
-void UITestBase::PrintIOPerfInfo(const char* test_name) {
+void UIPerfTest::PrintIOPerfInfo(const char* test_name) {
ChromeProcessList chrome_processes(GetRunningChromeProcesses(process_id_));
size_t read_op_b = 0;
@@ -1363,7 +172,7 @@
PrintResult("total_byte_r", "", "IO_r" + t_name, total_byte_r, "kb", true);
}
-void UITestBase::PrintMemoryUsageInfo(const char* test_name) {
+void UIPerfTest::PrintMemoryUsageInfo(const char* test_name) {
ChromeProcessList chrome_processes(GetRunningChromeProcesses(process_id_));
size_t browser_virtual_size = 0;
@@ -1495,14 +304,14 @@
false /* not important */);
}
-void UITestBase::PrintSystemCommitCharge(const char* test_name,
+void UIPerfTest::PrintSystemCommitCharge(const char* test_name,
size_t charge,
bool important) {
std::string trace_name(test_name);
PrintResult("commit_charge", "", "cc" + trace_name, charge, "kb", important);
}
-void UITestBase::UseReferenceBuild() {
+void UIPerfTest::UseReferenceBuild() {
FilePath dir;
PathService::Get(chrome::DIR_TEST_TOOLS, &dir);
dir = dir.AppendASCII("reference_build");
@@ -1515,35 +324,3 @@
#endif
SetBrowserDirectory(dir);
}
-
-void UITestBase::SetBrowserDirectory(const FilePath& dir) {
- browser_directory_ = dir;
-}
-
-// UITest methods
-
-void UITest::SetUp() {
- // Pass the test case name to chrome.exe on the command line to help with
- // parsing Purify output.
- const testing::TestInfo* const test_info =
- testing::UnitTest::GetInstance()->current_test_info();
- if (test_info) {
- set_ui_test_name(test_info->test_case_name() + std::string(".") +
- test_info->name());
- }
- UITestBase::SetUp();
- PlatformTest::SetUp();
-}
-
-void UITest::TearDown() {
- UITestBase::TearDown();
- PlatformTest::TearDown();
-}
-
-AutomationProxy* UITest::CreateAutomationProxy(int execution_timeout) {
- // Make the AutomationProxy disconnect the channel on the first error,
- // so that we avoid spending a lot of time in timeouts. The browser is likely
- // hosed if we hit those errors.
- return new AutomationProxy(execution_timeout, true);
-}
-
« no previous file with comments | « chrome/test/ui/ui_perf_test.h ('k') | chrome/test/ui/ui_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698