Chromium Code Reviews| Index: chrome/worker/worker_uitest.cc |
| =================================================================== |
| --- chrome/worker/worker_uitest.cc (revision 19210) |
| +++ chrome/worker/worker_uitest.cc (working copy) |
| @@ -37,11 +37,12 @@ |
| void RunTest(const std::wstring& test_case); |
| - void InitializeForLayoutTest(const FilePath& test_case_dir); |
| - void RunLayoutTest(const std::string& test_case_file_name); |
| - void RunHttpTest(const std::string& test_case_name); |
| + void InitializeForLayoutTest(const FilePath& test_parent_dir, |
| + const FilePath& test_case_dir, |
| + bool for_http); |
|
Dmitry Titov
2009/06/25 18:09:13
bool vars are usually named using "is_foo" pattern
|
| + void RunLayoutTest(const std::string& test_case_file_name, bool for_http); |
| - private: |
| + protected: |
| bool ReadExpectedResult(const FilePath& result_dir_path, |
| const std::string test_case_file_name, |
| std::string* expected_result_value); |
| @@ -50,6 +51,8 @@ |
| int test_count_; |
| FilePath temp_test_dir_; |
| FilePath layout_test_dir_; |
| + FilePath test_case_dir_; |
| + FilePath new_http_root_dir_; |
| FilePath new_layout_test_dir_; |
| FilePath rebase_result_dir_; |
| std::string layout_test_controller_; |
| @@ -76,20 +79,9 @@ |
| ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| } |
| -void WorkerTest::RunHttpTest(const std::string& test_case_name) { |
| - scoped_refptr<TabProxy> tab(GetActiveTab()); |
| - |
| - std::string test_url_string(std::string("http://localhost:8080/") + |
| - test_case_name); |
| - GURL url(test_url_string); |
| - ASSERT_TRUE(tab->NavigateToURL(url)); |
| - |
| - std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| - kTestCompleteCookie, kTestIntervalMs, kTestWaitTimeoutMs); |
| - ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| -} |
| - |
| -void WorkerTest::InitializeForLayoutTest(const FilePath& test_case_dir) { |
| +void WorkerTest::InitializeForLayoutTest(const FilePath& test_parent_dir, |
| + const FilePath& test_case_dir, |
| + bool for_http) { |
| FilePath src_dir; |
| PathService::Get(base::DIR_SOURCE_ROOT, &src_dir); |
| @@ -101,8 +93,21 @@ |
| layout_test_dir_ = layout_test_dir_.AppendASCII("test"); |
| layout_test_dir_ = layout_test_dir_.AppendASCII("data"); |
| layout_test_dir_ = layout_test_dir_.AppendASCII("workers"); |
| + layout_test_dir_ = layout_test_dir_.Append(test_parent_dir); |
| layout_test_dir_ = layout_test_dir_.Append(test_case_dir); |
| + // If not found, try to use the original copy of WebKit layout tests for |
| + // workers. For testing only in local machine only. |
| + // webkit/data/layout_tests/LayoutTests/.../workers |
| + if (!file_util::DirectoryExists(layout_test_dir_)) { |
| + layout_test_dir_ = src_dir.AppendASCII("webkit"); |
| + layout_test_dir_ = layout_test_dir_.AppendASCII("data"); |
| + layout_test_dir_ = layout_test_dir_.AppendASCII("layout_tests"); |
| + layout_test_dir_ = layout_test_dir_.Append(test_parent_dir); |
| + layout_test_dir_ = layout_test_dir_.Append(test_case_dir); |
| + ASSERT_TRUE(file_util::DirectoryExists(layout_test_dir_)); |
| + } |
| + |
| // Gets the file path to rebased expected result directory for workers. |
| // webkit/data/layout_tests/platform/chromium_***/LayoutTests/.../workers |
| rebase_result_dir_ = src_dir.AppendASCII("webkit"); |
| @@ -110,6 +115,7 @@ |
| rebase_result_dir_ = rebase_result_dir_.AppendASCII("layout_tests"); |
| rebase_result_dir_ = rebase_result_dir_.AppendASCII("platform"); |
| rebase_result_dir_ = rebase_result_dir_.AppendASCII(kPlatformName); |
| + rebase_result_dir_ = rebase_result_dir_.Append(test_parent_dir); |
| rebase_result_dir_ = rebase_result_dir_.Append(test_case_dir); |
| // Creates the temporary directory. |
| @@ -121,6 +127,11 @@ |
| // like .../LayoutTests/fast/workers/.... Otherwise those layout tests |
| // dealing with location property, like worker-location.html, could fail. |
| new_layout_test_dir_ = temp_test_dir_; |
| + new_layout_test_dir_ = new_layout_test_dir_.Append(test_parent_dir); |
| + if (for_http) { |
| + new_http_root_dir_ = new_layout_test_dir_; |
| + test_case_dir_ = test_case_dir; |
| + } |
| new_layout_test_dir_ = new_layout_test_dir_.Append(test_case_dir); |
| ASSERT_TRUE(file_util::CreateDirectory(new_layout_test_dir_)); |
| @@ -131,10 +142,21 @@ |
| FilePath new_layout_test_resource_path(new_layout_test_dir_); |
| new_layout_test_resource_path = |
| new_layout_test_resource_path.AppendASCII("resources"); |
| - ASSERT_TRUE(file_util::DirectoryExists(layout_test_resource_path)); |
| ASSERT_TRUE(file_util::CopyDirectory( |
| layout_test_resource_path, new_layout_test_resource_path, true)); |
| + // Copies the parent resource subdirectory. This is needed in order to run |
| + // http layout tests. |
| + if (for_http) { |
| + FilePath parent_resource_path(layout_test_dir_.DirName()); |
| + parent_resource_path = parent_resource_path.AppendASCII("resources"); |
| + FilePath new_parent_resource_path(new_layout_test_dir_.DirName()); |
| + new_parent_resource_path = |
| + new_parent_resource_path.AppendASCII("resources"); |
| + ASSERT_TRUE(file_util::CopyDirectory( |
| + parent_resource_path, new_parent_resource_path, true)); |
| + } |
| + |
| // Reads the layout test controller simulation script. |
| FilePath path; |
| PathService::Get(chrome::DIR_TEST_DATA, &path); |
| @@ -143,7 +165,8 @@ |
| ASSERT_TRUE(file_util::ReadFileToString(path, &layout_test_controller_)); |
| } |
| -void WorkerTest::RunLayoutTest(const std::string& test_case_file_name) { |
| +void WorkerTest::RunLayoutTest(const std::string& test_case_file_name, |
| + bool for_http) { |
| SCOPED_TRACE(test_case_file_name.c_str()); |
| ASSERT_TRUE(!layout_test_controller_.empty()); |
| @@ -171,13 +194,22 @@ |
| ASSERT_TRUE(file_util::WriteFile(new_test_file_path, |
| &test_html.at(0), |
| static_cast<int>(test_html.size()))); |
| - GURL new_test_file_url = net::FilePathToFileURL(new_test_file_path); |
| + scoped_ptr<GURL> new_test_url; |
| + if (for_http) |
| + new_test_url.reset(new GURL( |
| + std::string("http://localhost:8080/") + |
| + UTF16ToUTF8(test_case_dir_.ToWStringHack()) + |
| + "/" + |
| + test_case_file_name)); |
| + else |
| + new_test_url.reset(new GURL(net::FilePathToFileURL(new_test_file_path))); |
| + |
| // Runs the new layout test. |
| scoped_refptr<TabProxy> tab(GetActiveTab()); |
| - ASSERT_TRUE(tab->NavigateToURL(new_test_file_url)); |
| + ASSERT_TRUE(tab->NavigateToURL(*new_test_url.get())); |
| std::string escaped_value = |
| - WaitUntilCookieNonEmpty(tab.get(), new_test_file_url, |
| + WaitUntilCookieNonEmpty(tab.get(), *new_test_url.get(), |
| status_cookie.c_str(), kTestIntervalMs, kTestWaitTimeoutMs); |
| // Unescapes and normalizes the actual result. |
| @@ -246,13 +278,61 @@ |
| FilePath fast_test_dir; |
| fast_test_dir = fast_test_dir.AppendASCII("LayoutTests"); |
| fast_test_dir = fast_test_dir.AppendASCII("fast"); |
| - fast_test_dir = fast_test_dir.AppendASCII("workers"); |
| - InitializeForLayoutTest(fast_test_dir); |
| + FilePath worker_test_dir; |
| + worker_test_dir = worker_test_dir.AppendASCII("workers"); |
| + InitializeForLayoutTest(fast_test_dir, worker_test_dir, false); |
| + |
| for (int i = 0; i < arraysize(kLayoutTestFiles); ++i) |
| - RunLayoutTest(kLayoutTestFiles[i]); |
| + RunLayoutTest(kLayoutTestFiles[i], false); |
| } |
| +TEST_F(WorkerTest, WorkerHttpLayoutTests) { |
| + static const char* kLayoutTestFiles[] = { |
| + //"text-encoding.html", |
| + "worker-importScripts.html", |
| + "worker-redirect.html", |
| + }; |
| + |
| + FilePath http_test_dir; |
| + http_test_dir = http_test_dir.AppendASCII("LayoutTests"); |
| + http_test_dir = http_test_dir.AppendASCII("http"); |
| + http_test_dir = http_test_dir.AppendASCII("tests"); |
| + |
| + FilePath worker_test_dir; |
| + worker_test_dir = worker_test_dir.AppendASCII("workers"); |
| + InitializeForLayoutTest(http_test_dir, worker_test_dir, true); |
| + |
| + StartHttpServer(new_http_root_dir_); |
| + for (int i = 0; i < arraysize(kLayoutTestFiles); ++i) |
| + RunLayoutTest(kLayoutTestFiles[i], true); |
| + StopHttpServer(); |
| +} |
| + |
| +TEST_F(WorkerTest, WorkerXhrHttpLayoutTests) { |
| + static const char* kLayoutTestFiles[] = { |
| + "abort-exception-assert.html", |
| + //"methods-async.html", |
| + //"methods.html", |
| + "xmlhttprequest-file-not-found.html" |
| + }; |
| + |
| + FilePath http_test_dir; |
| + http_test_dir = http_test_dir.AppendASCII("LayoutTests"); |
| + http_test_dir = http_test_dir.AppendASCII("http"); |
| + http_test_dir = http_test_dir.AppendASCII("tests"); |
| + |
| + FilePath worker_test_dir; |
| + worker_test_dir = worker_test_dir.AppendASCII("xmlhttprequest"); |
| + worker_test_dir = worker_test_dir.AppendASCII("workers"); |
| + InitializeForLayoutTest(http_test_dir, worker_test_dir, true); |
| + |
| + StartHttpServer(new_http_root_dir_); |
| + for (int i = 0; i < arraysize(kLayoutTestFiles); ++i) |
| + RunLayoutTest(kLayoutTestFiles[i], true); |
| + StopHttpServer(); |
| +} |
| + |
| TEST_F(WorkerTest, LimitPerPage) { |
| int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
| GURL url = GetTestUrl(L"workers", L"many_workers.html"); |
| @@ -290,12 +370,3 @@ |
| EXPECT_EQ(total_workers + 1 + (UITest::in_process_renderer() ? 0 : tab_count), |
| UITest::GetBrowserProcessCount()); |
| } |
| - |
| -TEST_F(WorkerTest, TestHttpServer) { |
|
Dmitry Titov
2009/06/25 18:09:13
either leave this test (as a test for StartHttpSer
|
| - FilePath path; |
| - PathService::Get(chrome::DIR_TEST_DATA, &path); |
| - path = path.AppendASCII("workers"); |
| - StartHttpServer(path); |
| - RunHttpTest("test_http_server_up.html"); |
| - StopHttpServer(); |
| -} |