summaryrefslogtreecommitdiffstats
path: root/chrome/test/ui/ui_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/ui/ui_test.cc')
-rw-r--r--chrome/test/ui/ui_test.cc77
1 files changed, 70 insertions, 7 deletions
diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc
index e1bea1b..4963a87 100644
--- a/chrome/test/ui/ui_test.cc
+++ b/chrome/test/ui/ui_test.cc
@@ -10,6 +10,7 @@
#include "base/base_switches.h"
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/platform_thread.h"
#include "base/process_util.h"
#include "base/scoped_ptr.h"
#include "base/string_util.h"
@@ -19,19 +20,29 @@
#include "chrome/browser/url_fixer_upper.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_process_filter.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 "googleurl/src/gurl.h"
+#include "net/base/net_util.h"
+
+#if defined(OS_WIN)
+// TODO(port): these just need to be ported.
+#include "chrome/common/chrome_process_filter.h"
#include "chrome/test/automation/browser_proxy.h"
#include "chrome/test/automation/tab_proxy.h"
#include "chrome/test/automation/window_proxy.h"
-#include "googleurl/src/gurl.h"
-#include "net/base/net_util.h"
+#endif
using base::TimeTicks;
+// Delay to let browser complete a requested action.
+const int UITest::kWaitForActionMsec = 2000;
+const int UITest::kWaitForActionMaxMsec = 10000;
+// Delay to let the browser complete the test.
+const int UITest::kMaxTestExecutionTime = 30000;
+
const wchar_t UITest::kFailedNoCrashService[] =
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 "
@@ -73,7 +84,7 @@ bool UITest::DieFileDie(const std::wstring& file, bool recurse) {
for (int i = 0; i < 10; ++i) {
if (file_util::Delete(file, recurse))
return true;
- Sleep(kWaitForActionMaxMsec / 10);
+ PlatformThread::Sleep(kWaitForActionMaxMsec / 10);
}
return false;
}
@@ -82,10 +93,10 @@ UITest::UITest()
: testing::Test(),
expected_errors_(0),
expected_crashes_(0),
- wait_for_initial_loads_(true),
homepage_(L"about:blank"),
+ wait_for_initial_loads_(true),
dom_automation_enabled_(false),
- process_(NULL),
+ process_(0), // NULL on Windows, 0 PID on POSIX.
show_window_(false),
clear_profile_(true),
include_testing_id_(true),
@@ -95,7 +106,11 @@ UITest::UITest()
action_max_timeout_ms_(kWaitForActionMaxMsec) {
PathService::Get(chrome::DIR_APP, &browser_directory_);
PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_);
+#if defined(OS_WIN)
GetSystemTimeAsFileTime(&test_start_time_);
+#else
+ NOTIMPLEMENTED();
+#endif
}
void UITest::SetUp() {
@@ -118,7 +133,7 @@ void UITest::TearDown() {
// 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 (static_cast<int>(assertions.size()) > expected_errors_) {
+ if (assertions.size() > expected_errors_) {
logging::AssertionList::const_iterator iter = assertions.begin();
for (; iter != assertions.end(); ++iter) {
failures.append(L"\n\n");
@@ -127,6 +142,7 @@ void UITest::TearDown() {
}
EXPECT_EQ(expected_errors_, assertions.size()) << failures;
+#if defined(OS_WIN)
// Check for crashes during the test
std::wstring crash_dump_path;
PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dump_path);
@@ -140,6 +156,10 @@ void UITest::TearDown() {
error_msg += kFailedNoCrashService;
}
EXPECT_EQ(expected_crashes_, actual_crashes) << error_msg;
+#else
+ // TODO(port): we don't catch crashes, nor have CountFilesCreatedAfter.
+ NOTIMPLEMENTED();
+#endif
}
// Pick up the various test time out values from the command line.
@@ -165,6 +185,7 @@ void UITest::InitializeTimeouts() {
}
void UITest::LaunchBrowserAndServer() {
+#if defined(OS_WIN)
// Set up IPC testing interface server.
server_.reset(new AutomationProxy(command_execution_timeout_ms_));
@@ -175,14 +196,23 @@ void UITest::LaunchBrowserAndServer() {
Sleep(2000);
automation()->SetFilteredInet(true);
+#else
+ // TODO(port): depends on AutomationProxy.
+ NOTIMPLEMENTED();
+#endif
}
void UITest::CloseBrowserAndServer() {
QuitBrowser();
CleanupAppProcesses();
+#if defined(OS_WIN)
// Shut down IPC testing interface.
server_.reset();
+#else
+ // TODO(port): depends on AutomationProxy.
+ NOTIMPLEMENTED();
+#endif
}
void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
@@ -203,6 +233,7 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
CommandLine::AppendSwitch(&command_line,
switches::kDomAutomationController);
+#if defined(OS_WIN)
if (include_testing_id_) {
if (use_existing_browser_) {
// TODO(erikkay): The new switch depends on a browser instance already
@@ -219,6 +250,10 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
server_->channel_id());
}
}
+#else
+ // TODO(port): depends on AutomationProxy.
+ NOTIMPLEMENTED();
+#endif
if (!show_error_dialogs_)
CommandLine::AppendSwitch(&command_line, switches::kNoErrorDialogs);
@@ -277,6 +312,7 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
if (clear_profile)
ASSERT_TRUE(DieFileDie(user_data_dir_, true));
+#if defined(OS_WIN)
if (!template_user_data_.empty()) {
// Recursively copy the template directory to the user_data_dir.
ASSERT_TRUE(file_util::CopyRecursiveDirNoCache(template_user_data_,
@@ -302,9 +338,16 @@ void UITest::LaunchBrowser(const std::wstring& arguments, bool clear_profile) {
CloseHandle(process_);
process_ = OpenProcess(SYNCHRONIZE, false, pid);
}
+#else
+ // TODO(port): above code is very Windows-specific; we need to
+ // figure out and abstract out how we'll handle finding any existing
+ // running process, etc. on other platforms.
+ NOTIMPLEMENTED();
+#endif
}
void UITest::QuitBrowser() {
+#if defined(OS_WIN)
typedef std::vector<BrowserProxy*> BrowserVector;
// There's nothing to do here if the browser is not running.
@@ -350,13 +393,23 @@ void UITest::QuitBrowser() {
// Don't forget to close the handle
CloseHandle(process_);
process_ = NULL;
+#else
+ // TODO(port): depends on AutomationProxy.
+ NOTIMPLEMENTED();
+#endif // OS_WIN
}
void UITest::AssertAppNotRunning(const std::wstring& error_message) {
+#if defined(OS_WIN)
ASSERT_EQ(0, GetBrowserProcessCount()) << error_message;
+#else
+ // TODO(port): depends on AutomationProxy.
+ NOTIMPLEMENTED();
+#endif
}
void UITest::CleanupAppProcesses() {
+#if defined(OS_WIN)
BrowserProcessFilter filter(L"");
// Make sure that no instances of the browser remain.
@@ -372,8 +425,16 @@ void UITest::CleanupAppProcesses() {
if (!in_process_renderer_) {
AssertAppNotRunning(L"Unable to quit all browser processes.");
}
+#else
+ // TODO(port): depends on BrowserProcessFilter.
+ NOTIMPLEMENTED();
+#endif
}
+// TODO(port): this #if effectively cuts out half of this file on
+// non-Windows platforms, and is a temporary hack to get things
+// building.
+#if defined(OS_WIN)
TabProxy* UITest::GetActiveTab() {
scoped_ptr<BrowserProxy> window_proxy(automation()->GetBrowserWindow(0));
if (!window_proxy.get())
@@ -719,3 +780,5 @@ void UITest::PrintResultsImpl(const std::wstring& measurement,
trace.c_str(), prefix.c_str(), values.c_str(), suffix.c_str(),
units.c_str());
}
+
+#endif // OS_WIN