summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_focus_uitest.cc38
-rw-r--r--chrome/browser/browser_uitest.cc8
-rw-r--r--chrome/browser/errorpage_uitest.cc6
-rw-r--r--chrome/browser/history/redirect_uitest.cc128
-rw-r--r--chrome/browser/interstitial_page_uitest.cc35
-rw-r--r--chrome/browser/login_prompt_uitest.cc42
-rw-r--r--chrome/browser/printing/printing_layout_uitest.cc33
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host_uitest.cc29
-rw-r--r--chrome/browser/session_history_uitest.cc62
-rw-r--r--chrome/browser/sessions/session_restore_uitest.cc6
-rw-r--r--chrome/browser/ssl_uitest.cc87
-rw-r--r--chrome/browser/tab_restore_uitest.cc16
-rw-r--r--chrome/browser/url_fetcher_unittest.cc48
-rw-r--r--chrome/browser/view_source_uitest.cc24
-rw-r--r--chrome/browser/views/find_bar_win_interactive_uitest.cc6
-rw-r--r--chrome/browser/views/find_bar_win_uitest.cc54
-rw-r--r--chrome/common/chrome_plugin_unittest.cc7
-rw-r--r--chrome/common/net/cache_uitest.cc6
-rw-r--r--chrome/test/ui/inspector_controller_uitest.cc14
-rw-r--r--net/proxy/proxy_script_fetcher_unittest.cc40
-rw-r--r--net/tools/testserver/testserver.py97
-rw-r--r--net/url_request/url_request_unittest.cc291
-rw-r--r--net/url_request/url_request_unittest.h573
-rw-r--r--webkit/glue/mimetype_unittest.cc12
-rw-r--r--webkit/glue/resource_fetcher_unittest.cc19
-rw-r--r--webkit/glue/unittest_test_server.h18
26 files changed, 1155 insertions, 544 deletions
diff --git a/chrome/browser/browser_focus_uitest.cc b/chrome/browser/browser_focus_uitest.cc
index ca89162..160c3ab 100644
--- a/chrome/browser/browser_focus_uitest.cc
+++ b/chrome/browser/browser_focus_uitest.cc
@@ -55,10 +55,12 @@ bool ActivateTabByClick(AutomationProxy* automation,
} // namespace
TEST_F(BrowserFocusTest, BrowsersRememberFocus) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to our test page.
- GURL url = server.TestServerPageW(kSimplePage);
+ GURL url = server->TestServerPageW(kSimplePage);
scoped_ptr<TabProxy> tab(GetActiveTab());
EXPECT_NE(AUTOMATION_MSG_NAVIGATION_ERROR, tab->NavigateToURL(url));
@@ -130,7 +132,9 @@ TEST_F(BrowserFocusTest, BrowsersRememberFocus) {
// Tabs remember focus.
TEST_F(BrowserFocusTest, TabsRememberFocus) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
scoped_ptr<WindowProxy> window(automation()->GetActiveWindow());
ASSERT_TRUE(window.get() != NULL);
@@ -139,7 +143,7 @@ TEST_F(BrowserFocusTest, TabsRememberFocus) {
ASSERT_TRUE(browser.get() != NULL);
// First we navigate to our test page.
- GURL url = server.TestServerPageW(kSimplePage);
+ GURL url = server->TestServerPageW(kSimplePage);
scoped_ptr<TabProxy> tab(GetActiveTab());
tab->NavigateToURL(url);
@@ -194,10 +198,12 @@ TEST_F(BrowserFocusTest, TabsRememberFocus) {
// Background window does not steal focus.
TEST_F(BrowserFocusTest, BackgroundBrowserDontStealFocus) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to our test page.
- GURL simple_page_url = server.TestServerPageW(kSimplePage);
+ GURL simple_page_url = server->TestServerPageW(kSimplePage);
scoped_ptr<TabProxy> tab(GetActiveTab());
tab->NavigateToURL(simple_page_url);
@@ -215,7 +221,7 @@ TEST_F(BrowserFocusTest, BackgroundBrowserDontStealFocus) {
automation()->GetBrowserForWindow(new_window.get()));
ASSERT_TRUE(new_browser.get() != NULL);
- GURL steal_focus_url = server.TestServerPageW(kStealFocusPage);
+ GURL steal_focus_url = server->TestServerPageW(kStealFocusPage);
new_browser->AppendTab(steal_focus_url);
// Make the first browser active
@@ -232,10 +238,12 @@ TEST_F(BrowserFocusTest, BackgroundBrowserDontStealFocus) {
// Page cannot steal focus when focus is on location bar.
TEST_F(BrowserFocusTest, LocationBarLockFocus) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// Open the page that steals focus.
- GURL url = server.TestServerPageW(kStealFocusPage);
+ GURL url = server->TestServerPageW(kStealFocusPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
tab->NavigateToURL(url);
@@ -264,10 +272,12 @@ TEST_F(BrowserFocusTest, LocationBarLockFocus) {
// Focus traversal
TEST_F(BrowserFocusTest, FocusTraversal) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// Open the page the test page.
- GURL url = server.TestServerPageW(kTypicalPage);
+ GURL url = server->TestServerPageW(kTypicalPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
tab->NavigateToURL(url);
@@ -337,10 +347,12 @@ TEST_F(BrowserFocusTest, FocusTraversal) {
// Make sure Find box can request focus, even when it is already open.
TEST_F(BrowserFocusTest, FindFocusTest) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// Open some page (any page that doesn't steal focus).
- GURL url = server.TestServerPageW(kTypicalPage);
+ GURL url = server->TestServerPageW(kTypicalPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
tab->NavigateToURL(url);
diff --git a/chrome/browser/browser_uitest.cc b/chrome/browser/browser_uitest.cc
index 49649f8..b3ad491 100644
--- a/chrome/browser/browser_uitest.cc
+++ b/chrome/browser/browser_uitest.cc
@@ -243,7 +243,9 @@ TEST_F(BrowserTest, NullOpenerRedirectForksProcess) {
return;
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
std::wstring test_file(test_data_directory_);
scoped_ptr<BrowserProxy> window(automation()->GetBrowserWindow(0));
scoped_ptr<TabProxy> tab(window->GetActiveTab());
@@ -281,7 +283,9 @@ TEST_F(BrowserTest, OtherRedirectsDontForkProcess) {
return;
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
std::wstring test_file(test_data_directory_);
scoped_ptr<BrowserProxy> window(automation()->GetBrowserWindow(0));
scoped_ptr<TabProxy> tab(window->GetActiveTab());
diff --git a/chrome/browser/errorpage_uitest.cc b/chrome/browser/errorpage_uitest.cc
index ec63430..a071fb2 100644
--- a/chrome/browser/errorpage_uitest.cc
+++ b/chrome/browser/errorpage_uitest.cc
@@ -38,8 +38,10 @@ TEST_F(ErrorPageTest, IFrame404) {
// In this test, the iframe sets the title of the parent page to "SUCCESS"
// when the iframe loads. If the iframe fails to load (because an alternate
// error page loads instead), then the title will remain as "FAIL".
- TestServer server(L"chrome/test/data");
- GURL test_url = server.TestServerPage("files/iframe404.html");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
+ GURL test_url = server->TestServerPage("files/iframe404.html");
NavigateToURL(test_url);
// Verify that the url is in the title. Since it's set via Javascript, we
diff --git a/chrome/browser/history/redirect_uitest.cc b/chrome/browser/history/redirect_uitest.cc
index 272c59a..4002500 100644
--- a/chrome/browser/history/redirect_uitest.cc
+++ b/chrome/browser/history/redirect_uitest.cc
@@ -30,10 +30,12 @@ class RedirectTest : public UITest {
// Tests a single server redirect
TEST_F(RedirectTest, Server) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
- GURL final_url = server.TestServerPageW(std::wstring());
- GURL first_url = server.TestServerPageW(
+ GURL final_url = server->TestServerPageW(std::wstring());
+ GURL first_url = server->TestServerPageW(
std::wstring(L"server-redirect?") + UTF8ToWide(final_url.spec()));
NavigateToURL(first_url);
@@ -50,10 +52,12 @@ TEST_F(RedirectTest, Server) {
// Tests a single client redirect.
TEST_F(RedirectTest, Client) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
- GURL final_url = server.TestServerPageW(std::wstring());
- GURL first_url = server.TestServerPageW(
+ GURL final_url = server->TestServerPageW(std::wstring());
+ GURL first_url = server->TestServerPageW(
std::wstring(L"client-redirect?") + UTF8ToWide(final_url.spec()));
// We need the sleep for the client redirects, because it appears as two
@@ -72,30 +76,32 @@ TEST_F(RedirectTest, Client) {
}
TEST_F(RedirectTest, ClientEmptyReferer) {
- TestServer server(kDocRoot);
-
- GURL final_url = server.TestServerPageW(std::wstring());
- std::wstring test_file = test_data_directory_;
- file_util::AppendToPath(&test_file, L"file_client_redirect.html");
- GURL first_url = net::FilePathToFileURL(test_file);
-
- NavigateToURL(first_url);
- std::vector<GURL> redirects;
- // We need the sleeps for the client redirects, because it appears as two
- // page visits in the browser. And note for this test the browser actually
- // loads the html file on disk, rather than just getting a response from
- // the TestServer.
- for (int i = 0; i < 10; ++i) {
- Sleep(kWaitForActionMaxMsec / 10);
- scoped_ptr<TabProxy> tab_proxy(GetActiveTab());
- ASSERT_TRUE(tab_proxy.get());
- ASSERT_TRUE(tab_proxy->GetRedirectsFrom(first_url, &redirects));
- if (!redirects.empty())
- break;
- }
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
+ GURL final_url = server->TestServerPageW(std::wstring());
+ std::wstring test_file = test_data_directory_;
+ file_util::AppendToPath(&test_file, L"file_client_redirect.html");
+ GURL first_url = net::FilePathToFileURL(test_file);
- EXPECT_EQ(1, redirects.size());
- EXPECT_EQ(final_url.spec(), redirects[0].spec());
+ NavigateToURL(first_url);
+ std::vector<GURL> redirects;
+ // We need the sleeps for the client redirects, because it appears as two
+ // page visits in the browser. And note for this test the browser actually
+ // loads the html file on disk, rather than just getting a response from
+ // the TestServer.
+ for (int i = 0; i < 10; ++i) {
+ Sleep(kWaitForActionMaxMsec / 10);
+ scoped_ptr<TabProxy> tab_proxy(GetActiveTab());
+ ASSERT_TRUE(tab_proxy.get());
+ ASSERT_TRUE(tab_proxy->GetRedirectsFrom(first_url, &redirects));
+ if (!redirects.empty())
+ break;
+ }
+
+ EXPECT_EQ(1, redirects.size());
+ EXPECT_EQ(final_url.spec(), redirects[0].spec());
}
// Tests to make sure a location change when a pending redirect exists isn't
@@ -136,14 +142,16 @@ TEST_F(RedirectTest, ClientCancelled) {
// TODO(creis): This is disabled temporarily while I figure out why it is
// failing.
TEST_F(RedirectTest, DISABLED_ClientServerServer) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
- GURL final_url = server.TestServerPageW(std::wstring());
- GURL next_to_last = server.TestServerPageW(
+ GURL final_url = server->TestServerPageW(std::wstring());
+ GURL next_to_last = server->TestServerPageW(
std::wstring(L"server-redirect?") + UTF8ToWide(final_url.spec()));
- GURL second_url = server.TestServerPageW(
+ GURL second_url = server->TestServerPageW(
std::wstring(L"server-redirect?") + UTF8ToWide(next_to_last.spec()));
- GURL first_url = server.TestServerPageW(
+ GURL first_url = server->TestServerPageW(
std::wstring(L"client-redirect?") + UTF8ToWide(second_url.spec()));
std::vector<GURL> redirects;
@@ -168,12 +176,14 @@ TEST_F(RedirectTest, DISABLED_ClientServerServer) {
// Tests that the "#reference" gets preserved across server redirects.
TEST_F(RedirectTest, ServerReference) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
const std::string ref("reference");
- GURL final_url = server.TestServerPageW(std::wstring());
- GURL initial_url = server.TestServerPageW(
+ GURL final_url = server->TestServerPageW(std::wstring());
+ GURL initial_url = server->TestServerPageW(
std::wstring(L"server-redirect?") + UTF8ToWide(final_url.spec()) +
L"#" + UTF8ToWide(ref));
@@ -187,12 +197,14 @@ TEST_F(RedirectTest, ServerReference) {
// A) does not crash the browser or confuse the redirect chain, see bug 1080873
// B) does not take place.
TEST_F(RedirectTest, NoHttpToFile) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
std::wstring test_file = test_data_directory_;
file_util::AppendToPath(&test_file, L"http_to_file.html");
GURL file_url = net::FilePathToFileURL(test_file);
- GURL initial_url = server.TestServerPageW(
+ GURL initial_url = server->TestServerPageW(
std::wstring(L"client-redirect?") + UTF8ToWide(file_url.spec()));
NavigateToURL(initial_url);
@@ -208,7 +220,10 @@ TEST_F(RedirectTest, NoHttpToFile) {
// Ensures that non-user initiated location changes (within page) are
// flagged as client redirects. See bug 1139823.
TEST_F(RedirectTest, ClientFragments) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
std::wstring test_file = test_data_directory_;
file_util::AppendToPath(&test_file, L"ref_redirect.html");
GURL first_url = net::FilePathToFileURL(test_file);
@@ -229,24 +244,27 @@ TEST_F(RedirectTest, ClientFragments) {
}
// TODO(timsteele): This is disabled because our current testserver can't
-// handle multiple requests in parallel, making it hang on the first request to
-// /slow?60. It's unable to serve our second request for files/title2.html until
-// /slow? completes, which doesn't give the desired behavior. We could
-// alternatively load the second page from disk, but we would need to start the
-// browser for this testcase with --process-per-tab, and I don't think we can do
-// this at test-case-level granularity at the moment.
-TEST_F(RedirectTest, DISABLED_ClientCancelledByNewNavigationAfterProvisionalLoad) {
+// handle multiple requests in parallel, making it hang on the first request
+// to /slow?60. It's unable to serve our second request for files/title2.html
+// until /slow? completes, which doesn't give the desired behavior. We could
+// alternatively load the second page from disk, but we would need to start
+// the browser for this testcase with --process-per-tab, and I don't think
+// we can do this at test-case-level granularity at the moment.
+TEST_F(RedirectTest,
+ DISABLED_ClientCancelledByNewNavigationAfterProvisionalLoad) {
// We want to initiate a second navigation after the provisional load for
// the client redirect destination has started, but before this load is
// committed. To achieve this, we tell the browser to load a slow page,
// which causes it to start a provisional load, and while it is waiting
// for the response (which means it hasn't committed the load for the client
// redirect destination page yet), we issue a new navigation request.
- TestServer server(kDocRoot);
-
- GURL final_url = server.TestServerPageW(std::wstring(L"files/title2.html"));
- GURL slow = server.TestServerPageW(std::wstring(L"slow?60"));
- GURL first_url = server.TestServerPageW(
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
+ GURL final_url = server->TestServerPageW(std::wstring(L"files/title2.html"));
+ GURL slow = server->TestServerPageW(std::wstring(L"slow?60"));
+ GURL first_url = server->TestServerPageW(
std::wstring(L"client-redirect?") + UTF8ToWide(slow.spec()));
std::vector<GURL> redirects;
@@ -256,7 +274,7 @@ TEST_F(RedirectTest, DISABLED_ClientCancelledByNewNavigationAfterProvisionalLoad
// started it's provisional load for the client redirect destination page but
// hasn't completed. Our time is now!
NavigateToURL(final_url);
-
+
std::wstring tab_title;
std::wstring final_url_title = L"Title Of Awesomeness";
// Wait till the final page has been loaded.
@@ -271,9 +289,9 @@ TEST_F(RedirectTest, DISABLED_ClientCancelledByNewNavigationAfterProvisionalLoad
}
}
- // Check to make sure the navigation did in fact take place and we are
+ // Check to make sure the navigation did in fact take place and we are
// at the expected page.
- EXPECT_EQ(final_url_title, tab_title);
+ EXPECT_EQ(final_url_title, tab_title);
bool final_navigation_not_redirect = true;
// Check to make sure our request for files/title2.html doesn't get flagged
diff --git a/chrome/browser/interstitial_page_uitest.cc b/chrome/browser/interstitial_page_uitest.cc
index a50908c9..c3d675c 100644
--- a/chrome/browser/interstitial_page_uitest.cc
+++ b/chrome/browser/interstitial_page_uitest.cc
@@ -52,10 +52,13 @@ class InterstitialPageTest : public UITest {
// causes the actual navigation entry (title) to be modified by the content of
// the interstitial.
TEST_F(InterstitialPageTest, TestShowHideInterstitial) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
- server.TestServerPageW(L"files/interstitial_page/google.html"));
+ server->TestServerPageW(L"files/interstitial_page/google.html"));
NavigationEntry::PageType page_type;
EXPECT_TRUE(tab->GetPageType(&page_type));
EXPECT_EQ(NavigationEntry::NORMAL_PAGE, page_type);
@@ -78,10 +81,13 @@ TEST_F(InterstitialPageTest, TestShowHideInterstitial) {
// the interstitial. In the mean time, we are treating Back like cancelling
// the interstitial, which breaks this test because no notification occurs.
TEST_F(InterstitialPageTest, DISABLED_TestShowInterstitialThenBack) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
- server.TestServerPageW(L"files/interstitial_page/google.html"));
+ server->TestServerPageW(L"files/interstitial_page/google.html"));
EXPECT_EQ(L"Google", GetActiveTabTitle());
tab->ShowInterstitialPage(kInterstitialPageHTMLText, action_timeout_ms());
@@ -94,26 +100,31 @@ TEST_F(InterstitialPageTest, DISABLED_TestShowInterstitialThenBack) {
// Shows an interstitial page then navigates to a new URL.
// Flacky on Windows 2000 bot. Disabled for now bug #1173138.
TEST_F(InterstitialPageTest, DISABLED_TestShowInterstitialThenNavigate) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
- server.TestServerPageW(L"files/interstitial_page/google.html"));
+ server->TestServerPageW(L"files/interstitial_page/google.html"));
EXPECT_EQ(L"Google", GetActiveTabTitle());
tab->ShowInterstitialPage(kInterstitialPageHTMLText, action_timeout_ms());
EXPECT_EQ(L"Interstitial page", GetActiveTabTitle());
tab->NavigateToURL(
- server.TestServerPageW(L"files/interstitial_page/shopping.html"));
+ server->TestServerPageW(L"files/interstitial_page/shopping.html"));
EXPECT_EQ(L"Google Product Search", GetActiveTabTitle());
}
// Shows an interstitial page then closes the tab (to make sure we don't crash).
TEST_F(InterstitialPageTest, TestShowInterstitialThenCloseTab) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// Create 2 tabs so closing one does not close the browser.
- AppendTab(server.TestServerPageW(L"files/interstitial_page/google.html"));
+ AppendTab(server->TestServerPageW(L"files/interstitial_page/google.html"));
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
EXPECT_EQ(L"Google", GetActiveTabTitle());
@@ -126,11 +137,13 @@ TEST_F(InterstitialPageTest, TestShowInterstitialThenCloseTab) {
// crash).
// This test is disabled. See bug #1119448.
TEST_F(InterstitialPageTest, DISABLED_TestShowInterstitialThenCloseBrowser) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
tab->NavigateToURL(
- server.TestServerPageW(L"files/interstitial_page/google.html"));
+ server->TestServerPageW(L"files/interstitial_page/google.html"));
EXPECT_EQ(L"Google", GetActiveTabTitle());
tab->ShowInterstitialPage(kInterstitialPageHTMLText, action_timeout_ms());
diff --git a/chrome/browser/login_prompt_uitest.cc b/chrome/browser/login_prompt_uitest.cc
index 3969ccf..1d7d25c 100644
--- a/chrome/browser/login_prompt_uitest.cc
+++ b/chrome/browser/login_prompt_uitest.cc
@@ -62,9 +62,11 @@ wstring ExpectedTitleFromAuth(wstring username, wstring password) {
// Test that "Basic" HTTP authentication works.
TEST_F(LoginPromptTest, TestBasicAuth) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-basic"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_FALSE(tab->SetAuth(username_basic_, password_bad_));
@@ -72,7 +74,7 @@ TEST_F(LoginPromptTest, TestBasicAuth) {
EXPECT_TRUE(tab->CancelAuth());
EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle());
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-basic"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_TRUE(tab->SetAuth(username_basic_, password_));
@@ -82,16 +84,18 @@ TEST_F(LoginPromptTest, TestBasicAuth) {
// Test that "Digest" HTTP authentication works.
TEST_F(LoginPromptTest, TestDigestAuth) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-digest"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-digest"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_FALSE(tab->SetAuth(username_digest_, password_bad_));
EXPECT_TRUE(tab->CancelAuth());
EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle());
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-digest"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-digest"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_TRUE(tab->SetAuth(username_digest_, password_));
@@ -101,14 +105,16 @@ TEST_F(LoginPromptTest, TestDigestAuth) {
// Test that logging in on 2 tabs at once works.
TEST_F(LoginPromptTest, TestTwoAuths) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
::scoped_ptr<TabProxy> basic_tab(GetActiveTabProxy());
- NavigateTab(basic_tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(basic_tab.get(), server->TestServerPageW(L"auth-basic"));
AppendTab(GURL("about:blank"));
::scoped_ptr<TabProxy> digest_tab(GetActiveTabProxy());
- NavigateTab(digest_tab.get(), server.TestServerPageW(L"auth-digest"));
+ NavigateTab(digest_tab.get(), server->TestServerPageW(L"auth-digest"));
// TODO(devint): http://b/1158262 basic_tab is not active, so this logs in to
// a page whose tab isn't active, which isn't actually possible for the user
@@ -129,34 +135,36 @@ TEST_F(LoginPromptTest, TestTwoAuths) {
// Test that cancelling authentication works.
TEST_F(LoginPromptTest, TestCancelAuth) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
// First navigate to a test server page so we have something to go back to.
- EXPECT_TRUE(tab->NavigateToURL(server.TestServerPageW(L"a")));
+ EXPECT_TRUE(tab->NavigateToURL(server->TestServerPageW(L"a")));
// Navigating while auth is requested is the same as cancelling.
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-basic"));
EXPECT_TRUE(tab->NeedsAuth());
- EXPECT_TRUE(tab->NavigateToURL(server.TestServerPageW(L"b")));
+ EXPECT_TRUE(tab->NavigateToURL(server->TestServerPageW(L"b")));
EXPECT_FALSE(tab->NeedsAuth());
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-basic"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_TRUE(tab->GoBack()); // should bring us back to 'a'
EXPECT_FALSE(tab->NeedsAuth());
// Now add a page and go back, so we have something to go forward to.
- EXPECT_TRUE(tab->NavigateToURL(server.TestServerPageW(L"c")));
+ EXPECT_TRUE(tab->NavigateToURL(server->TestServerPageW(L"c")));
EXPECT_TRUE(tab->GoBack()); // should bring us back to 'a'
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-basic"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_TRUE(tab->GoForward()); // should bring us to 'c'
EXPECT_FALSE(tab->NeedsAuth());
// Now test that cancelling works as expected.
- NavigateTab(tab.get(), server.TestServerPageW(L"auth-basic"));
+ NavigateTab(tab.get(), server->TestServerPageW(L"auth-basic"));
EXPECT_TRUE(tab->NeedsAuth());
EXPECT_TRUE(tab->CancelAuth());
EXPECT_FALSE(tab->NeedsAuth());
diff --git a/chrome/browser/printing/printing_layout_uitest.cc b/chrome/browser/printing/printing_layout_uitest.cc
index a8c5059..086c2b9 100644
--- a/chrome/browser/printing/printing_layout_uitest.cc
+++ b/chrome/browser/printing/printing_layout_uitest.cc
@@ -457,7 +457,8 @@ class DismissTheWindow : public base::RefCountedThreadSafe<DismissTheWindow> {
dialog_window,
WM_COMMAND,
print_button_id,
- reinterpret_cast<LPARAM>(GetDlgItem(dialog_window, print_button_id)));
+ reinterpret_cast<LPARAM>(GetDlgItem(dialog_window,
+ print_button_id)));
// Try again.
if (res)
return;
@@ -498,8 +499,11 @@ TEST_F(PrintingLayoutTextTest, DISABLED_Complex) {
return;
// Print a document, check its output.
- TestServer server(kDocRoot);
- NavigateToURL(server.TestServerPage("files/printing/test1.html"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
+ NavigateToURL(server->TestServerPage("files/printing/test1.html"));
PrintNowTab();
EXPECT_EQ(0., CompareWithResult(L"test1"));
}
@@ -524,13 +528,16 @@ TEST_F(PrintingLayoutTestHidden, ManyTimes) {
if (IsTestCaseDisabled())
return;
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
ASSERT_GT(arraysize(kTestPool), 0u);
for (int i = 0; i < arraysize(kTestPool); ++i) {
if (i)
CleanupDumpDirectory();
const TestPool& test = kTestPool[i % arraysize(kTestPool)];
- NavigateToURL(server.TestServerPageW(test.source));
+ NavigateToURL(server->TestServerPageW(test.source));
PrintNowTab();
EXPECT_EQ(0., CompareWithResult(test.result)) << test.result;
CleanupDumpDirectory();
@@ -554,13 +561,15 @@ TEST_F(PrintingLayoutTest, DISABLED_Delayed) {
if (win_util::GetWinVersion() < win_util::WINVERSION_XP)
return;
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
{
scoped_ptr<TabProxy> tab_proxy(GetActiveTab());
ASSERT_TRUE(tab_proxy.get());
bool is_timeout = true;
- GURL url = server.TestServerPage("files/printing/popup_delayed_print.htm");
+ GURL url = server->TestServerPage("files/printing/popup_delayed_print.htm");
EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
tab_proxy->NavigateToURL(url));
@@ -579,7 +588,7 @@ TEST_F(PrintingLayoutTest, DISABLED_Delayed) {
worker->Stop();
// Force a navigation elsewhere to verify that it's fine with it.
- url = server.TestServerPage("files/printing/test1.html");
+ url = server->TestServerPage("files/printing/test1.html");
EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
tab_proxy->NavigateToURL(url));
}
@@ -594,12 +603,14 @@ TEST_F(PrintingLayoutTest, DISABLED_IFrame) {
if (IsTestCaseDisabled())
return;
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
{
scoped_ptr<TabProxy> tab_proxy(GetActiveTab());
ASSERT_TRUE(tab_proxy.get());
- GURL url = server.TestServerPage("files/printing/iframe.htm");
+ GURL url = server->TestServerPage("files/printing/iframe.htm");
EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
tab_proxy->NavigateToURL(url));
@@ -617,7 +628,7 @@ TEST_F(PrintingLayoutTest, DISABLED_IFrame) {
worker->Stop();
// Force a navigation elsewhere to verify that it's fine with it.
- url = server.TestServerPage("files/printing/test1.html");
+ url = server->TestServerPage("files/printing/test1.html");
EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS,
tab_proxy->NavigateToURL(url));
}
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host_uitest.cc b/chrome/browser/renderer_host/resource_dispatcher_host_uitest.cc
index 6d276ee..350e544 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host_uitest.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host_uitest.cc
@@ -89,12 +89,15 @@ TEST_F(ResourceDispatcherTest, ContentDispositionInline) {
// Test for bug #1091358.
TEST_F(ResourceDispatcherTest, SyncXMLHttpRequest) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0));
EXPECT_TRUE(browser_proxy.get());
scoped_ptr<TabProxy> tab(browser_proxy->GetActiveTab());
- tab->NavigateToURL(server.TestServerPageW(L"files/sync_xmlhttprequest.html"));
+ tab->NavigateToURL(server->TestServerPageW(
+ L"files/sync_xmlhttprequest.html"));
// Let's check the XMLHttpRequest ran successfully.
bool success = false;
@@ -109,14 +112,16 @@ TEST_F(ResourceDispatcherTest, SyncXMLHttpRequest) {
// if executed while navigating to a new page.
TEST_F(ResourceDispatcherTest, SyncXMLHttpRequestDuringUnload) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0));
EXPECT_TRUE(browser_proxy.get());
scoped_ptr<TabProxy> tab(browser_proxy->GetActiveTab());
tab->NavigateToURL(
- server.TestServerPageW(L"files/sync_xmlhttprequest_during_unload.html"));
+ server->TestServerPageW(L"files/sync_xmlhttprequest_during_unload.html"));
// Confirm that the page has loaded (since it changes its title during load).
std::wstring tab_title;
@@ -126,7 +131,7 @@ TEST_F(ResourceDispatcherTest, SyncXMLHttpRequestDuringUnload) {
// Navigate to a new page, to dispatch unload event and trigger xhr.
// (the bug would make this step hang the renderer).
bool timed_out = false;
- tab->NavigateToURLWithTimeout(server.TestServerPageW(L"files/title2.html"),
+ tab->NavigateToURLWithTimeout(server->TestServerPageW(L"files/title2.html"),
kWaitForActionMaxMsec,
&timed_out);
EXPECT_FALSE(timed_out);
@@ -142,13 +147,15 @@ TEST_F(ResourceDispatcherTest, SyncXMLHttpRequestDuringUnload) {
// Tests that onunload is run for cross-site requests. (Bug 1114994)
TEST_F(ResourceDispatcherTest, CrossSiteOnunloadCookie) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0));
EXPECT_TRUE(browser_proxy.get());
scoped_ptr<TabProxy> tab(browser_proxy->GetActiveTab());
- GURL url(server.TestServerPageW(L"files/onunload_cookie.html"));
+ GURL url(server->TestServerPageW(L"files/onunload_cookie.html"));
tab->NavigateToURL(url);
// Confirm that the page has loaded (since it changes its title during load).
@@ -219,13 +226,15 @@ TEST_F(ResourceDispatcherTest, CrossSiteNavigationNonBuffered) {
// away from the link doctor page. (Bug 1235537)
TEST_F(ResourceDispatcherTest, CrossSiteNavigationErrorPage) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0));
EXPECT_TRUE(browser_proxy.get());
scoped_ptr<TabProxy> tab(browser_proxy->GetActiveTab());
- GURL url(server.TestServerPageW(L"files/onunload_cookie.html"));
+ GURL url(server->TestServerPageW(L"files/onunload_cookie.html"));
tab->NavigateToURL(url);
// Confirm that the page has loaded (since it changes its title during load).
@@ -259,7 +268,7 @@ TEST_F(ResourceDispatcherTest, CrossSiteNavigationErrorPage) {
// WebContents was in the NORMAL state, it would ignore the attempt to run
// the onunload handler, and the navigation would fail.
// (Test by redirecting to javascript:window.location='someURL'.)
- GURL test_url(server.TestServerPageW(L"files/title2.html"));
+ GURL test_url(server->TestServerPageW(L"files/title2.html"));
std::wstring redirect_url = L"javascript:window.location='" +
ASCIIToWide(test_url.possibly_invalid_spec()) + L"'";
tab->NavigateToURLAsync(GURL(redirect_url));
diff --git a/chrome/browser/session_history_uitest.cc b/chrome/browser/session_history_uitest.cc
index 251a3ba..bc8fadc 100644
--- a/chrome/browser/session_history_uitest.cc
+++ b/chrome/browser/session_history_uitest.cc
@@ -107,22 +107,24 @@ class SessionHistoryTest : public UITest {
} // namespace
TEST_F(SessionHistoryTest, BasicBackForward) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// about:blank should be loaded first.
ASSERT_FALSE(tab_->GoBack());
EXPECT_EQ(L"", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot1.html")));
+ server->TestServerPage("files/session_history/bot1.html")));
EXPECT_EQ(L"bot1", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot2.html")));
+ server->TestServerPage("files/session_history/bot2.html")));
EXPECT_EQ(L"bot2", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot3.html")));
+ server->TestServerPage("files/session_history/bot3.html")));
EXPECT_EQ(L"bot3", GetTabTitle());
// history is [blank, bot1, bot2, *bot3]
@@ -140,7 +142,7 @@ TEST_F(SessionHistoryTest, BasicBackForward) {
EXPECT_EQ(L"bot1", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot3.html")));
+ server->TestServerPage("files/session_history/bot3.html")));
EXPECT_EQ(L"bot3", GetTabTitle());
// history is [blank, bot1, *bot3]
@@ -171,7 +173,9 @@ TEST_F(SessionHistoryTest, FrameBackForward) {
if (win_util::GetWinVersion() <= win_util::WINVERSION_2000)
return;
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// about:blank should be loaded first.
GURL home(homepage_);
@@ -179,7 +183,7 @@ TEST_F(SessionHistoryTest, FrameBackForward) {
EXPECT_EQ(L"", GetTabTitle());
EXPECT_EQ(home, GetTabURL());
- GURL frames(server.TestServerPage("files/session_history/frames.html"));
+ GURL frames(server->TestServerPage("files/session_history/frames.html"));
ASSERT_TRUE(tab_->NavigateToURL(frames));
EXPECT_EQ(L"bot1", GetTabTitle());
EXPECT_EQ(frames, GetTabURL());
@@ -235,13 +239,15 @@ TEST_F(SessionHistoryTest, FrameBackForward) {
// Test that back/forward preserves POST data and document state in subframes.
TEST_F(SessionHistoryTest, FrameFormBackForward) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// about:blank should be loaded first.
ASSERT_FALSE(tab_->GoBack());
EXPECT_EQ(L"", GetTabTitle());
- GURL frames(server.TestServerPage("files/session_history/frames.html"));
+ GURL frames(server->TestServerPage("files/session_history/frames.html"));
ASSERT_TRUE(tab_->NavigateToURL(frames));
EXPECT_EQ(L"bot1", GetTabTitle());
@@ -295,13 +301,15 @@ TEST_F(SessionHistoryTest, FrameFormBackForward) {
// Test that back/forward preserves POST data and document state when navigating
// across frames (ie, from frame -> nonframe).
TEST_F(SessionHistoryTest, CrossFrameFormBackForward) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// about:blank should be loaded first.
ASSERT_FALSE(tab_->GoBack());
EXPECT_EQ(L"", GetTabTitle());
- GURL frames(server.TestServerPage("files/session_history/frames.html"));
+ GURL frames(server->TestServerPage("files/session_history/frames.html"));
ASSERT_TRUE(tab_->NavigateToURL(frames));
EXPECT_EQ(L"bot1", GetTabTitle());
@@ -337,16 +345,18 @@ TEST_F(SessionHistoryTest, CrossFrameFormBackForward) {
}
#endif
-// Test that back/forward entries are created for reference fragment navigations.
-// Bug 730379.
+// Test that back/forward entries are created for reference fragment
+// navigations. Bug 730379.
TEST_F(SessionHistoryTest, FragmentBackForward) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// about:blank should be loaded first.
ASSERT_FALSE(tab_->GoBack());
EXPECT_EQ(L"", GetTabTitle());
- GURL fragment(server.TestServerPage("files/session_history/fragment.html"));
+ GURL fragment(server->TestServerPage("files/session_history/fragment.html"));
ASSERT_TRUE(tab_->NavigateToURL(fragment));
EXPECT_EQ(L"fragment", GetTabTitle());
EXPECT_EQ(fragment, GetTabURL());
@@ -385,7 +395,7 @@ TEST_F(SessionHistoryTest, FragmentBackForward) {
ASSERT_TRUE(tab_->GoForward());
EXPECT_EQ(fragment_a, GetTabURL());
- GURL bot3(server.TestServerPage("files/session_history/bot3.html"));
+ GURL bot3(server->TestServerPage("files/session_history/bot3.html"));
ASSERT_TRUE(tab_->NavigateToURL(bot3));
EXPECT_EQ(L"bot3", GetTabTitle());
EXPECT_EQ(bot3, GetTabURL());
@@ -408,22 +418,24 @@ TEST_F(SessionHistoryTest, FragmentBackForward) {
// means the test will hang if it attempts to navigate too far forward or back,
// since we'll be waiting forever for a load stop event.
TEST_F(SessionHistoryTest, JavascriptHistory) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// about:blank should be loaded first.
ASSERT_FALSE(tab_->GoBack());
EXPECT_EQ(L"", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot1.html")));
+ server->TestServerPage("files/session_history/bot1.html")));
EXPECT_EQ(L"bot1", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot2.html")));
+ server->TestServerPage("files/session_history/bot2.html")));
EXPECT_EQ(L"bot2", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot3.html")));
+ server->TestServerPage("files/session_history/bot3.html")));
EXPECT_EQ(L"bot3", GetTabTitle());
// history is [blank, bot1, bot2, *bot3]
@@ -455,7 +467,7 @@ TEST_F(SessionHistoryTest, JavascriptHistory) {
EXPECT_EQ(L"bot1", GetTabTitle());
ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/bot3.html")));
+ server->TestServerPage("files/session_history/bot3.html")));
EXPECT_EQ(L"bot3", GetTabTitle());
// history is [blank, bot1, *bot3]
@@ -489,10 +501,12 @@ TEST_F(SessionHistoryTest, JavascriptHistory) {
TEST_F(SessionHistoryTest, LocationReplace) {
// Test that using location.replace doesn't leave the title of the old page
// visible.
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
- ASSERT_TRUE(tab_->NavigateToURL(
- server.TestServerPage("files/session_history/replace.html?no-title.html")));
+ ASSERT_TRUE(tab_->NavigateToURL(server->TestServerPage(
+ "files/session_history/replace.html?no-title.html")));
EXPECT_EQ(L"", GetTabTitle());
}
diff --git a/chrome/browser/sessions/session_restore_uitest.cc b/chrome/browser/sessions/session_restore_uitest.cc
index 8843567..434f937 100644
--- a/chrome/browser/sessions/session_restore_uitest.cc
+++ b/chrome/browser/sessions/session_restore_uitest.cc
@@ -145,8 +145,10 @@ TEST_F(SessionRestoreUITest, RestoresForwardAndBackwardNavs) {
// cross-site page and then forward again works. (Bug 1204135)
TEST_F(SessionRestoreUITest, RestoresCrossSiteForwardAndBackwardNavs) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
- GURL cross_site_url(server.TestServerPageW(L"files/title2.html"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+ GURL cross_site_url(server->TestServerPageW(L"files/title2.html"));
// Visit URLs on different sites.
NavigateToURL(url1);
diff --git a/chrome/browser/ssl_uitest.cc b/chrome/browser/ssl_uitest.cc
index 94fcf70..2a84744 100644
--- a/chrome/browser/ssl_uitest.cc
+++ b/chrome/browser/ssl_uitest.cc
@@ -41,17 +41,17 @@ class SSLUITest : public UITest {
EXPECT_TRUE(browser_proxy->AppendTab(url));
}
- TestServer* PlainServer() {
- return new TestServer(kDocRoot);
+ HTTPTestServer* PlainServer() {
+ return HTTPTestServer::CreateServer(kDocRoot);
}
HTTPSTestServer* GoodCertServer() {
- return new HTTPSTestServer(util_.kHostName, util_.kOKHTTPSPort,
+ return HTTPSTestServer::CreateServer(util_.kHostName, util_.kOKHTTPSPort,
kDocRoot, util_.GetOKCertPath().ToWStringHack());
}
HTTPSTestServer* BadCertServer() {
- return new HTTPSTestServer(util_.kHostName, util_.kBadHTTPSPort,
+ return HTTPSTestServer::CreateServer(util_.kHostName, util_.kBadHTTPSPort,
kDocRoot, util_.GetExpiredCertPath().ToWStringHack());
}
@@ -65,7 +65,7 @@ class SSLUITest : public UITest {
// Visits a regular page over http.
TEST_F(SSLUITest, TestHTTP) {
- scoped_ptr<TestServer> server(PlainServer());
+ scoped_refptr<HTTPTestServer> server = PlainServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(), server->TestServerPageW(L"files/ssl/google.html"));
@@ -87,8 +87,8 @@ TEST_F(SSLUITest, TestHTTP) {
// Visits a page over http which includes broken https resources (status should
// be OK).
TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
@@ -106,7 +106,7 @@ TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) {
// Visits a page over OK https:
TEST_F(SSLUITest, TestOKHTTPS) {
- scoped_ptr<HTTPSTestServer> https_server(GoodCertServer());
+ scoped_refptr<HTTPSTestServer> https_server = GoodCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
https_server->TestServerPageW(L"files/ssl/google.html"));
@@ -127,7 +127,7 @@ TEST_F(SSLUITest, TestOKHTTPS) {
// Visits a page with https error and proceed:
TEST_F(SSLUITest, TestHTTPSExpiredCertAndProceed) {
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
bad_https_server->TestServerPageW(L"files/ssl/google.html"));
@@ -160,9 +160,9 @@ TEST_F(SSLUITest, TestHTTPSExpiredCertAndProceed) {
// Visits a page with https error and don't proceed (and ensure we can still
// navigate at that point):
TEST_F(SSLUITest, TestHTTPSExpiredCertAndDontProceed) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
// First navigate to an OK page.
@@ -221,8 +221,8 @@ TEST_F(SSLUITest, TestHTTPSExpiredCertAndDontProceed) {
// Visits a page with mixed content.
TEST_F(SSLUITest, TestMixedContents) {
- scoped_ptr<HTTPSTestServer> https_server(GoodCertServer());
- scoped_ptr<TestServer> http_server(PlainServer());
+ scoped_refptr<HTTPSTestServer> https_server = GoodCertServer();
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
// Load a page with mixed-content, the default behavior is to show the mixed
// content.
@@ -293,8 +293,8 @@ TEST_F(SSLUITest, TestMixedContents) {
// - frames content is replaced with warning
// - images and scripts are filtered out entirely
TEST_F(SSLUITest, TestUnsafeContents) {
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
@@ -343,8 +343,8 @@ TEST_F(SSLUITest, TestUnsafeContents) {
// Visits a page with mixed content loaded by JS (after the initial page load).
TEST_F(SSLUITest, TestMixedContentsLoadedFromJS) {
- scoped_ptr<HTTPSTestServer> https_server(GoodCertServer());
- scoped_ptr<TestServer> http_server(PlainServer());
+ scoped_refptr<HTTPSTestServer> https_server = GoodCertServer();
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(), https_server->TestServerPageW(
@@ -382,8 +382,8 @@ TEST_F(SSLUITest, TestMixedContentsLoadedFromJS) {
// referencing that same image over http (hoping it is coming from the webcore
// memory cache).
TEST_F(SSLUITest, TestCachedMixedContents) {
- scoped_ptr<HTTPSTestServer> https_server(GoodCertServer());
- scoped_ptr<TestServer> http_server(PlainServer());
+ scoped_refptr<HTTPSTestServer> https_server = GoodCertServer();
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(), http_server->TestServerPageW(
@@ -422,9 +422,10 @@ TEST_F(SSLUITest, TestCachedMixedContents) {
// TODO(jcampan): this test is flacky and fails sometimes (bug #1065095)
TEST_F(SSLUITest, DISABLED_TestCNInvalidStickiness) {
const std::string kLocalHost = "localhost";
- scoped_ptr<HTTPSTestServer> https_server(
- new HTTPSTestServer(kLocalHost, util_.kOKHTTPSPort,
- kDocRoot, util_.GetOKCertPath().ToWStringHack()));
+ scoped_refptr<HTTPSTestServer> https_server =
+ HTTPSTestServer::CreateServer(kLocalHost, util_.kOKHTTPSPort,
+ kDocRoot, util_.GetOKCertPath().ToWStringHack());
+ ASSERT_TRUE(NULL != https_server.get());
// First we hit the server with hostname, this generates an invalid policy
// error.
@@ -490,7 +491,7 @@ TEST_F(SSLUITest, DISABLED_TestCNInvalidStickiness) {
// Test that navigating to a #ref does not change a bad security state.
TEST_F(SSLUITest, TestRefNavigation) {
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
bad_https_server->TestServerPageW(L"files/ssl/page_with_refs.html"));
@@ -533,8 +534,8 @@ TEST_F(SSLUITest, TestRefNavigation) {
// (bug #1966).
// Disabled because flaky (bug #2136).
TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
@@ -558,8 +559,8 @@ TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) {
// Visit a page over bad https that is a redirect to a page with good https.
TEST_F(SSLUITest, TestRedirectBadToGoodHTTPS) {
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
GURL url1 = bad_https_server->TestServerPageW(L"server-redirect?");
@@ -591,8 +592,8 @@ TEST_F(SSLUITest, TestRedirectBadToGoodHTTPS) {
// Visit a page over good https that is a redirect to a page with bad https.
TEST_F(SSLUITest, TestRedirectGoodToBadHTTPS) {
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
GURL url1 = good_https_server->TestServerPageW(L"server-redirect?");
@@ -619,9 +620,9 @@ TEST_F(SSLUITest, TestRedirectGoodToBadHTTPS) {
// Visit a page over http that is a redirect to a page with https (good and
// bad).
TEST_F(SSLUITest, TestRedirectHTTPToHTTPS) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
// HTTP redirects to good HTTPS.
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
@@ -662,8 +663,8 @@ TEST_F(SSLUITest, TestRedirectHTTPToHTTPS) {
// Visit a page over https that is a redirect to a page with http (to make sure
// we don't keep the secure state).
TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> https_server(GoodCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> https_server = GoodCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
GURL https_url = https_server->TestServerPageW(L"server-redirect?");
@@ -718,9 +719,9 @@ TEST_F(SSLUITest, TestConnectToBadPort) {
// back
// - navigate to HTTP (expect mixed content), then back
TEST_F(SSLUITest, TestGoodFrameNavigation) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
@@ -814,8 +815,8 @@ TEST_F(SSLUITest, TestGoodFrameNavigation) {
// From a bad HTTPS top frame:
// - navigate to an OK HTTPS frame (expected to be still authentication broken).
TEST_F(SSLUITest, TestBadFrameNavigation) {
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
@@ -856,9 +857,9 @@ TEST_F(SSLUITest, TestBadFrameNavigation) {
// From an HTTP top frame, navigate to good and bad HTTPS (security state should
// stay unauthenticated).
TEST_F(SSLUITest, TestUnauthenticatedFrameNavigation) {
- scoped_ptr<TestServer> http_server(PlainServer());
- scoped_ptr<HTTPSTestServer> good_https_server(GoodCertServer());
- scoped_ptr<HTTPSTestServer> bad_https_server(BadCertServer());
+ scoped_refptr<HTTPTestServer> http_server = PlainServer();
+ scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer();
+ scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer();
scoped_ptr<TabProxy> tab(GetActiveTabProxy());
NavigateTab(tab.get(),
diff --git a/chrome/browser/tab_restore_uitest.cc b/chrome/browser/tab_restore_uitest.cc
index 0bf2dbe..facd015 100644
--- a/chrome/browser/tab_restore_uitest.cc
+++ b/chrome/browser/tab_restore_uitest.cc
@@ -133,9 +133,11 @@ TEST_F(TabRestoreUITest, RestoreToDifferentWindow) {
// to an existing SiteInstance. (Bug 1230446)
TEST_F(TabRestoreUITest, RestoreWithExistingSiteInstance) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
- GURL http_url1(server.TestServerPageW(L"files/title1.html"));
- GURL http_url2(server.TestServerPageW(L"files/title2.html"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+ GURL http_url1(server->TestServerPageW(L"files/title1.html"));
+ GURL http_url2(server->TestServerPageW(L"files/title2.html"));
scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0));
int initial_tab_count;
@@ -176,9 +178,11 @@ TEST_F(TabRestoreUITest, RestoreWithExistingSiteInstance) {
// already exists. (Bug 1204135)
TEST_F(TabRestoreUITest, RestoreCrossSiteWithExistingSiteInstance) {
const wchar_t kDocRoot[] = L"chrome/test/data";
- TestServer server(kDocRoot);
- GURL http_url1(server.TestServerPageW(L"files/title1.html"));
- GURL http_url2(server.TestServerPageW(L"files/title2.html"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+ GURL http_url1(server->TestServerPageW(L"files/title1.html"));
+ GURL http_url2(server->TestServerPageW(L"files/title2.html"));
scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0));
int initial_tab_count;
diff --git a/chrome/browser/url_fetcher_unittest.cc b/chrome/browser/url_fetcher_unittest.cc
index fe73d3f..308964b 100644
--- a/chrome/browser/url_fetcher_unittest.cc
+++ b/chrome/browser/url_fetcher_unittest.cc
@@ -338,15 +338,19 @@ TEST_F(URLFetcherTest, SameThreadsTest) {
// Create the fetcher on the main thread. Since IO will happen on the main
// thread, this will test URLFetcher's ability to do everything on one
// thread.
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
- CreateFetcher(GURL(server.TestServerPage("defaultresponse")));
+ CreateFetcher(GURL(server->TestServerPage("defaultresponse")));
MessageLoop::current()->Run();
}
TEST_F(URLFetcherTest, DifferentThreadsTest) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// Create a separate thread that will create the URLFetcher. The current
// (main) thread will do the IO, and when the fetch is complete it will
// terminate the main thread's message loop; then the other thread's
@@ -355,27 +359,33 @@ TEST_F(URLFetcherTest, DifferentThreadsTest) {
base::Thread t("URLFetcher test thread");
t.Start();
t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this,
- GURL(server.TestServerPage("defaultresponse"))));
+ GURL(server->TestServerPage("defaultresponse"))));
MessageLoop::current()->Run();
}
TEST_F(URLFetcherPostTest, Basic) {
- TestServer server(kDocRoot);
- CreateFetcher(GURL(server.TestServerPage("echo")));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+ CreateFetcher(GURL(server->TestServerPage("echo")));
MessageLoop::current()->Run();
}
TEST_F(URLFetcherHeadersTest, Headers) {
- TestServer server(L"net/data/url_request_unittest");
- CreateFetcher(GURL(server.TestServerPage("files/with-headers.html")));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
+ CreateFetcher(GURL(server->TestServerPage("files/with-headers.html")));
MessageLoop::current()->Run();
// The actual tests are in the URLFetcherHeadersTest fixture.
}
TEST_F(URLFetcherProtectTest, Overload) {
- TestServer server(kDocRoot);
- GURL url = GURL(server.TestServerPage("defaultresponse"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+ GURL url = GURL(server->TestServerPage("defaultresponse"));
// Registers an entry for test url. It only allows 3 requests to be sent
// in 200 milliseconds.
@@ -390,8 +400,10 @@ TEST_F(URLFetcherProtectTest, Overload) {
}
TEST_F(URLFetcherProtectTest, ServerUnavailable) {
- TestServer server(L"chrome/test/data");
- GURL url = GURL(server.TestServerPage("files/server-unavailable.html"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
+ GURL url = GURL(server->TestServerPage("files/server-unavailable.html"));
// Registers an entry for test url. The backoff time is calculated by:
// new_backoff = 2.0 * old_backoff + 0
@@ -408,17 +420,21 @@ TEST_F(URLFetcherProtectTest, ServerUnavailable) {
}
TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) {
- HTTPSTestServer server(util_.kHostName, util_.kBadHTTPSPort,
+ scoped_refptr<HTTPSTestServer> server =
+ HTTPSTestServer::CreateServer(util_.kHostName, util_.kBadHTTPSPort,
kDocRoot, util_.GetExpiredCertPath().ToWStringHack());
+ ASSERT_TRUE(NULL != server.get());
- CreateFetcher(GURL(server.TestServerPage("defaultresponse")));
+ CreateFetcher(GURL(server->TestServerPage("defaultresponse")));
MessageLoop::current()->Run();
}
TEST_F(URLFetcherCancelTest, ReleasesContext) {
- TestServer server(L"chrome/test/data");
- GURL url = GURL(server.TestServerPage("files/server-unavailable.html"));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
+ GURL url = GURL(server->TestServerPage("files/server-unavailable.html"));
// Registers an entry for test url. The backoff time is calculated by:
// new_backoff = 2.0 * old_backoff + 0
diff --git a/chrome/browser/view_source_uitest.cc b/chrome/browser/view_source_uitest.cc
index 1aad505..73cc875 100644
--- a/chrome/browser/view_source_uitest.cc
+++ b/chrome/browser/view_source_uitest.cc
@@ -38,12 +38,14 @@ class ViewSourceTest : public UITest {
// set in the html was set successfully (it shouldn't because we rendered the
// page in view source)
TEST_F(ViewSourceTest, DoesBrowserRenderInViewSource) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
std::string cookie = "viewsource_cookie";
std::string cookie_data = "foo";
// First we navigate to our view-source test page
- GURL url = server.TestServerPageW(test_html_);
+ GURL url = server->TestServerPageW(test_html_);
url = GURL("view-source:" + url.spec());
scoped_ptr<TabProxy> tab(GetActiveTab());
tab->NavigateToURL(url);
@@ -61,10 +63,12 @@ TEST_F(ViewSourceTest, DoesBrowserRenderInViewSource) {
// implementation of the view-source: prefix being consumed (removed from the
// URL) if the URL was not changed (apart from adding the view-source prefix)
TEST_F(ViewSourceTest, DoesBrowserConsumeViewSourcePrefix) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to google.html
- GURL url = server.TestServerPageW(test_html_);
+ GURL url = server->TestServerPageW(test_html_);
NavigateToURL(url);
// Then we navigate to the SAME url but with the view-source: prefix
@@ -78,10 +82,12 @@ TEST_F(ViewSourceTest, DoesBrowserConsumeViewSourcePrefix) {
// Make sure that when looking at the actual page, we can select
// "View Source" from the Page menu.
TEST_F(ViewSourceTest, ViewSourceInPageMenuEnabledOnANormalPage) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to google.html
- GURL url = server.TestServerPageW(test_html_);
+ GURL url = server->TestServerPageW(test_html_);
NavigateToURL(url);
EXPECT_TRUE(IsPageMenuCommandEnabled(IDC_VIEW_SOURCE));
@@ -90,10 +96,12 @@ TEST_F(ViewSourceTest, ViewSourceInPageMenuEnabledOnANormalPage) {
// Make sure that when looking at the page source, we can't select
// "View Source" from the Page menu.
TEST_F(ViewSourceTest, ViewSourceInPageMenuDisabledWhileViewingSource) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to google.html
- GURL url = server.TestServerPageW(test_html_);
+ GURL url = server->TestServerPageW(test_html_);
GURL url_viewsource = GURL("view-source:" + url.spec());
NavigateToURL(url_viewsource);
diff --git a/chrome/browser/views/find_bar_win_interactive_uitest.cc b/chrome/browser/views/find_bar_win_interactive_uitest.cc
index 383a64a..c036b7c 100644
--- a/chrome/browser/views/find_bar_win_interactive_uitest.cc
+++ b/chrome/browser/views/find_bar_win_interactive_uitest.cc
@@ -52,7 +52,9 @@ bool ActivateTabByClick(AutomationProxy* automation,
} // namespace
TEST_F(FindInPageTest, CrashEscHandlers) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
scoped_ptr<BrowserProxy> browser(automation()->GetLastActiveBrowserWindow());
ASSERT_TRUE(browser.get() != NULL);
@@ -61,7 +63,7 @@ TEST_F(FindInPageTest, CrashEscHandlers) {
ASSERT_TRUE(window.get() != NULL);
// First we navigate to our test page (tab A).
- GURL url = server.TestServerPageW(kSimplePage);
+ GURL url = server->TestServerPageW(kSimplePage);
scoped_ptr<TabProxy> tabA(GetActiveTab());
EXPECT_NE(AUTOMATION_MSG_NAVIGATION_ERROR, tabA->NavigateToURL(url));
diff --git a/chrome/browser/views/find_bar_win_uitest.cc b/chrome/browser/views/find_bar_win_uitest.cc
index ac534b4..94906b8 100644
--- a/chrome/browser/views/find_bar_win_uitest.cc
+++ b/chrome/browser/views/find_bar_win_uitest.cc
@@ -25,10 +25,12 @@ const std::wstring kTooFewMatchesPage = L"files/find_in_page/bug_1155639.html";
// This test loads a page with frames and starts FindInPage requests
TEST_F(FindInPageControllerTest, FindInPageFrames) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to our frames page.
- GURL url = server.TestServerPageW(kFramePage);
+ GURL url = server->TestServerPageW(kFramePage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -76,10 +78,12 @@ TEST_F(FindInPageControllerTest, FindInPageFrames) {
// This test loads a single-frame page and makes sure the ordinal returned makes
// sense as we FindNext over all the items.
TEST_F(FindInPageControllerTest, FindInPageOrdinal) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to our frames page.
- GURL url = server.TestServerPageW(kFrameData);
+ GURL url = server->TestServerPageW(kFrameData);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -112,10 +116,12 @@ TEST_F(FindInPageControllerTest, FindInPageOrdinal) {
// This test loads a page with frames and makes sure the ordinal returned makes
// sense.
TEST_F(FindInPageControllerTest, FindInPageMultiFramesOrdinal) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to our frames page.
- GURL url = server.TestServerPageW(kFramePage);
+ GURL url = server->TestServerPageW(kFramePage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -156,10 +162,12 @@ TEST_F(FindInPageControllerTest, FindInPageMultiFramesOrdinal) {
// We could get ordinals out of whack when restarting search in subframes.
// See http://crbug.com/5132
TEST_F(FindInPageControllerTest, FindInPage_Issue5132) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
// First we navigate to our frames page.
- GURL url = server.TestServerPageW(kFramePage);
+ GURL url = server->TestServerPageW(kFramePage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -185,9 +193,11 @@ TEST_F(FindInPageControllerTest, FindInPage_Issue5132) {
// Load a page with no selectable text and make sure we don't crash.
TEST_F(FindInPageControllerTest, FindUnSelectableText) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
- GURL url = server.TestServerPageW(kUserSelectPage);
+ GURL url = server->TestServerPageW(kUserSelectPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -199,9 +209,11 @@ TEST_F(FindInPageControllerTest, FindUnSelectableText) {
// Try to reproduce the crash seen in issue 1341577.
TEST_F(FindInPageControllerTest, FindCrash_Issue1341577) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
- GURL url = server.TestServerPageW(kCrashPage);
+ GURL url = server->TestServerPageW(kCrashPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -229,9 +241,11 @@ TEST_F(FindInPageControllerTest, FindCrash_Issue1341577) {
// ms) to find one or more of those matches (so Find times out and has to try
// again from where it left off).
TEST_F(FindInPageControllerTest, FindEnoughMatches_Issue1155639) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
- GURL url = server.TestServerPageW(kTooFewMatchesPage);
+ GURL url = server->TestServerPageW(kTooFewMatchesPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -244,9 +258,11 @@ TEST_F(FindInPageControllerTest, FindEnoughMatches_Issue1155639) {
// The find window should not change its location just because we open and close
// a new tab.
TEST_F(FindInPageControllerTest, FindMovesOnTabClose_Issue1343052) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
- GURL url = server.TestServerPageW(kFramePage);
+ GURL url = server->TestServerPageW(kFramePage);
scoped_ptr<TabProxy> tabA(GetActiveTab());
ASSERT_TRUE(tabA->NavigateToURL(url));
WaitUntilTabCount(1);
@@ -303,9 +319,11 @@ TEST_F(FindInPageControllerTest, FindMovesOnTabClose_Issue1343052) {
// Make sure Find box disappears on Navigate but not on Refresh.
TEST_F(FindInPageControllerTest, FindDisappearOnNavigate) {
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
- GURL url = server.TestServerPageW(kUserSelectPage);
+ GURL url = server->TestServerPageW(kUserSelectPage);
scoped_ptr<TabProxy> tab(GetActiveTab());
ASSERT_TRUE(tab->NavigateToURL(url));
WaitUntilTabCount(1);
diff --git a/chrome/common/chrome_plugin_unittest.cc b/chrome/common/chrome_plugin_unittest.cc
index 09ae2f4..45088a8 100644
--- a/chrome/common/chrome_plugin_unittest.cc
+++ b/chrome/common/chrome_plugin_unittest.cc
@@ -259,8 +259,11 @@ TEST_F(ChromePluginTest, CanMakeGETRequestAsync) {
// Tests that the plugin can issue a POST request.
TEST_F(ChromePluginTest, CanMakePOSTRequest) {
- TestServer server(kDocRoot);
- GURL url = server.TestServerPage("echo");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
+
+ GURL url = server->TestServerPage("echo");
EXPECT_EQ(CPERR_SUCCESS, test_funcs_.test_make_request("POST", url));
diff --git a/chrome/common/net/cache_uitest.cc b/chrome/common/net/cache_uitest.cc
index 69b5892..19ecc01 100644
--- a/chrome/common/net/cache_uitest.cc
+++ b/chrome/common/net/cache_uitest.cc
@@ -54,8 +54,10 @@ class CacheTest : public UITest {
void CacheTest::RunCacheTest(const std::wstring &url,
bool expect_new_tab_cached,
bool expect_delayed_reload) {
- TestServer server(L"chrome/test/data");
- GURL test_page(server.TestServerPageW(url));
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
+ GURL test_page(server->TestServerPageW(url));
NavigateToURL(test_page);
std::wstring original_time = GetActiveTabTitle();
diff --git a/chrome/test/ui/inspector_controller_uitest.cc b/chrome/test/ui/inspector_controller_uitest.cc
index 885eb69..29b1489 100644
--- a/chrome/test/ui/inspector_controller_uitest.cc
+++ b/chrome/test/ui/inspector_controller_uitest.cc
@@ -37,14 +37,20 @@ TEST_F(InspectorControllerTest, DISABLED_InspectElement) {
if (CommandLine().HasSwitch(switches::kSingleProcess))
return;
- TestServer server(L"chrome/test/data");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"chrome/test/data");
+ ASSERT_TRUE(NULL != server.get());
+
::scoped_ptr<TabProxy> tab(GetActiveTabProxy());
// We don't track resources until we've opened the inspector.
- NavigateTab(tab.get(), server.TestServerPageW(L"files/inspector/test1.html"));
+ NavigateTab(tab.get(), server->TestServerPageW(
+ L"files/inspector/test1.html"));
tab->InspectElement(0, 0);
- NavigateTab(tab.get(), server.TestServerPageW(L"files/inspector/test1.html"));
+ NavigateTab(tab.get(), server->TestServerPageW(
+ L"files/inspector/test1.html"));
EXPECT_EQ(1, tab->InspectElement(0, 0));
- NavigateTab(tab.get(), server.TestServerPageW(L"files/inspector/test2.html"));
+ NavigateTab(tab.get(), server->TestServerPageW(
+ L"files/inspector/test2.html"));
EXPECT_EQ(2, tab->InspectElement(0, 0));
}
diff --git a/net/proxy/proxy_script_fetcher_unittest.cc b/net/proxy/proxy_script_fetcher_unittest.cc
index 8507a86..2139b6c 100644
--- a/net/proxy/proxy_script_fetcher_unittest.cc
+++ b/net/proxy/proxy_script_fetcher_unittest.cc
@@ -181,23 +181,25 @@ TEST_F(ProxyScriptFetcherTest, FileUrl) {
// Note that all mime types are allowed for PAC file, to be consistent
// with other browsers.
TEST_F(ProxyScriptFetcherTest, HttpMimeType) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
SynchFetcher pac_fetcher;
{ // Fetch a PAC with mime type "text/plain"
- GURL url = server.TestServerPage("files/pac.txt");
+ GURL url = server->TestServerPage("files/pac.txt");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::OK, result.code);
EXPECT_EQ("-pac.txt-\n", result.bytes);
}
{ // Fetch a PAC with mime type "text/html"
- GURL url = server.TestServerPage("files/pac.html");
+ GURL url = server->TestServerPage("files/pac.html");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::OK, result.code);
EXPECT_EQ("-pac.html-\n", result.bytes);
}
{ // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig"
- GURL url = server.TestServerPage("files/pac.nsproxy");
+ GURL url = server->TestServerPage("files/pac.nsproxy");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::OK, result.code);
EXPECT_EQ("-pac.nsproxy-\n", result.bytes);
@@ -205,17 +207,19 @@ TEST_F(ProxyScriptFetcherTest, HttpMimeType) {
}
TEST_F(ProxyScriptFetcherTest, HttpStatusCode) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
SynchFetcher pac_fetcher;
{ // Fetch a PAC which gives a 500 -- FAIL
- GURL url = server.TestServerPage("files/500.pac");
+ GURL url = server->TestServerPage("files/500.pac");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code);
EXPECT_TRUE(result.bytes.empty());
}
{ // Fetch a PAC which gives a 404 -- FAIL
- GURL url = server.TestServerPage("files/404.pac");
+ GURL url = server->TestServerPage("files/404.pac");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code);
EXPECT_TRUE(result.bytes.empty());
@@ -223,19 +227,23 @@ TEST_F(ProxyScriptFetcherTest, HttpStatusCode) {
}
TEST_F(ProxyScriptFetcherTest, ContentDisposition) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
SynchFetcher pac_fetcher;
// Fetch PAC scripts via HTTP with a Content-Disposition header -- should
// have no effect.
- GURL url = server.TestServerPage("files/downloadable.pac");
+ GURL url = server->TestServerPage("files/downloadable.pac");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::OK, result.code);
EXPECT_EQ("-downloadable.pac-\n", result.bytes);
}
TEST_F(ProxyScriptFetcherTest, TooLarge) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
SynchFetcher pac_fetcher;
// Set the maximum response size to 50 bytes.
@@ -243,7 +251,7 @@ TEST_F(ProxyScriptFetcherTest, TooLarge) {
// These two URLs are the same file, but are http:// vs file://
GURL urls[] = {
- server.TestServerPage("files/large-pac.nsproxy"),
+ server->TestServerPage("files/large-pac.nsproxy"),
GetTestFileUrl("large-pac.nsproxy")
};
@@ -260,7 +268,7 @@ TEST_F(ProxyScriptFetcherTest, TooLarge) {
net::ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size);
{ // Make sure we can still fetch regular URLs.
- GURL url = server.TestServerPage("files/pac.nsproxy");
+ GURL url = server->TestServerPage("files/pac.nsproxy");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::OK, result.code);
EXPECT_EQ("-pac.nsproxy-\n", result.bytes);
@@ -268,7 +276,9 @@ TEST_F(ProxyScriptFetcherTest, TooLarge) {
}
TEST_F(ProxyScriptFetcherTest, Hang) {
- TestServer server(kDocRoot);
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(kDocRoot);
+ ASSERT_TRUE(NULL != server.get());
SynchFetcher pac_fetcher;
// Set the timeout period to 0.5 seconds.
@@ -277,7 +287,7 @@ TEST_F(ProxyScriptFetcherTest, Hang) {
// Try fetching a URL which takes 1.2 seconds. We should abort the request
// after 500 ms, and fail with a timeout error.
- { GURL url = server.TestServerPage("slow/proxy.pac?1.2");
+ { GURL url = server->TestServerPage("slow/proxy.pac?1.2");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::ERR_TIMED_OUT, result.code);
EXPECT_TRUE(result.bytes.empty());
@@ -287,7 +297,7 @@ TEST_F(ProxyScriptFetcherTest, Hang) {
net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout);
{ // Make sure we can still fetch regular URLs.
- GURL url = server.TestServerPage("files/pac.nsproxy");
+ GURL url = server->TestServerPage("files/pac.nsproxy");
FetchResult result = pac_fetcher.Fetch(url);
EXPECT_EQ(net::OK, result.code);
EXPECT_EQ("-pac.nsproxy-\n", result.bytes);
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
index 2d3049e..e7124f9 100644
--- a/net/tools/testserver/testserver.py
+++ b/net/tools/testserver/testserver.py
@@ -24,6 +24,10 @@ import sys
import time
import tlslite
import tlslite.api
+import pyftpdlib.ftpserver
+
+SERVER_HTTP = 0
+SERVER_FTP = 1
debug_output = sys.stderr
def debug(str):
@@ -863,12 +867,12 @@ class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
for handler in self._get_handlers:
- if (handler()):
+ if handler():
return
def do_POST(self):
for handler in self._post_handlers:
- if(handler()):
+ if handler():
return
# called by the redirect handling function when there is no parameter
@@ -880,6 +884,23 @@ class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
self.wfile.write('Use <pre>%s?http://dest...</pre>' % redirect_name)
self.wfile.write('</body></html>')
+def MakeDataDir():
+ if options.data_dir:
+ if not os.path.isdir(options.data_dir):
+ print 'specified data dir not found: ' + options.data_dir + ' exiting...'
+ return None
+ my_data_dir = options.data_dir
+ else:
+ # Create the default path to our data dir, relative to the exe dir.
+ my_data_dir = os.path.dirname(sys.argv[0])
+ my_data_dir = os.path.join(my_data_dir, "..", "..", "..", "..",
+ "test", "data")
+
+ #TODO(ibrar): Must use Find* funtion defined in google\tools
+ #i.e my_data_dir = FindUpward(my_data_dir, "test", "data")
+
+ return my_data_dir
+
def main(options, args):
# redirect output to a log file so it doesn't spam the unit test output
logfile = open('testserver.log', 'w')
@@ -887,27 +908,51 @@ def main(options, args):
port = options.port
- if options.cert:
- # let's make sure the cert file exists.
- if not os.path.isfile(options.cert):
- print 'specified cert file not found: ' + options.cert + ' exiting...'
- return
- server = HTTPSServer(('127.0.0.1', port), TestPageHandler, options.cert)
- print 'HTTPS server started on port %d...' % port
- else:
- server = StoppableHTTPServer(('127.0.0.1', port), TestPageHandler)
- print 'HTTP server started on port %d...' % port
+ if options.server_type == SERVER_HTTP:
+ if options.cert:
+ # let's make sure the cert file exists.
+ if not os.path.isfile(options.cert):
+ print 'specified cert file not found: ' + options.cert + ' exiting...'
+ return
+ server = HTTPSServer(('127.0.0.1', port), TestPageHandler, options.cert)
+ print 'HTTPS server started on port %d...' % port
+ else:
+ server = StoppableHTTPServer(('127.0.0.1', port), TestPageHandler)
+ print 'HTTP server started on port %d...' % port
- if options.data_dir:
- if not os.path.isdir(options.data_dir):
- print 'specified data dir not found: ' + options.data_dir + ' exiting...'
- return
- server.data_dir = options.data_dir
+ server.data_dir = MakeDataDir()
+
+ # means FTP Server
else:
- # Create the default path to our data dir, relative to the exe dir.
- server.data_dir = os.path.dirname(sys.argv[0])
- server.data_dir = os.path.join(server.data_dir, "..", "..", "..", "..",
- "test", "data")
+ my_data_dir = MakeDataDir()
+
+ def line_logger(msg):
+ if (msg.find("kill") >= 0):
+ server.stop = True
+ print 'shutting down server'
+ sys.exit(0)
+
+ # Instantiate a dummy authorizer for managing 'virtual' users
+ authorizer = pyftpdlib.ftpserver.DummyAuthorizer()
+
+ # Define a new user having full r/w permissions and a read-only
+ # anonymous user
+ authorizer.add_user('chrome', 'chrome', my_data_dir, perm='elradfmw')
+
+ authorizer.add_anonymous(my_data_dir)
+
+ # Instantiate FTP handler class
+ ftp_handler = pyftpdlib.ftpserver.FTPHandler
+ ftp_handler.authorizer = authorizer
+ pyftpdlib.ftpserver.logline = line_logger
+
+ # Define a customized banner (string returned when client connects)
+ ftp_handler.banner = "pyftpdlib %s based ftpd ready." % pyftpdlib.ftpserver.__ver__
+
+ # Instantiate FTP server class and listen to 127.0.0.1:port
+ address = ('127.0.0.1', port)
+ server = pyftpdlib.ftpserver.FTPServer(address, ftp_handler)
+ print 'FTP server started on port %d...' % port
try:
server.serve_forever()
@@ -917,15 +962,19 @@ def main(options, args):
if __name__ == '__main__':
option_parser = optparse.OptionParser()
+ option_parser.add_option("-f", '--ftp', action='store_const',
+ const=SERVER_FTP, default=SERVER_HTTP,
+ dest='server_type',
+ help='FTP or HTTP server default HTTP')
option_parser.add_option('', '--port', default='8888', type='int',
help='Port used by the server')
- option_parser.add_option('', '--data-dir', dest='data_dir',
+ option_parser.add_option('', '--data-dir', dest='data_dir',
help='Directory from which to read the files')
- option_parser.add_option('', '--https', dest='cert',
+ option_parser.add_option('', '--https', dest='cert',
help='Specify that https should be used, specify '
'the path to the cert containing the private key '
'the server should use')
options, args = option_parser.parse_args()
sys.exit(main(options, args))
-
+ \ No newline at end of file
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index be26da9..6f965d3 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -83,11 +83,12 @@ class URLRequestTest : public PlatformTest {
};
TEST_F(URLRequestTest, GetTest_NoCache) {
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage(""), &d);
+ TestURLRequest r(server->TestServerPage(""), &d);
r.Start();
EXPECT_TRUE(r.is_pending());
@@ -104,11 +105,12 @@ TEST_F(URLRequestTest, GetTest_NoCache) {
}
TEST_F(URLRequestTest, GetTest) {
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage(""), &d);
+ TestURLRequest r(server->TestServerPage(""), &d);
r.Start();
EXPECT_TRUE(r.is_pending());
@@ -127,7 +129,7 @@ TEST_F(URLRequestTest, GetTest) {
class HTTPSRequestTest : public testing::Test {
protected:
HTTPSRequestTest() : util_() {};
-
+
SSLTestUtil util_;
};
@@ -143,14 +145,15 @@ TEST_F(HTTPSRequestTest, MAYBE_HTTPSGetTest) {
// a working document root to server the pages / and /hello.html,
// so this test doesn't really need to specify a document root.
// But if it did, a good one would be net/data/ssl.
- HTTPSTestServer https_server(util_.kHostName, util_.kOKHTTPSPort,
- L"net/data/ssl",
- util_.GetOKCertPath().ToWStringHack());
+ scoped_refptr<HTTPSTestServer> server =
+ HTTPSTestServer::CreateServer(util_.kHostName, util_.kOKHTTPSPort,
+ L"net/data/ssl", util_.GetOKCertPath().ToWStringHack());
+ ASSERT_TRUE(NULL != server.get());
EXPECT_TRUE(util_.CheckCATrusted());
TestDelegate d;
{
- TestURLRequest r(https_server.TestServerPage(""), &d);
+ TestURLRequest r(server->TestServerPage(""), &d);
r.Start();
EXPECT_TRUE(r.is_pending());
@@ -190,11 +193,16 @@ TEST_F(URLRequestTest, CancelTest) {
}
TEST_F(URLRequestTest, CancelTest2) {
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
+
+ // error C2446: '!=' : no conversion from 'HTTPTestServer *const '
+ // to 'const int'
+
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage(""), &d);
+ TestURLRequest r(server->TestServerPage(""), &d);
d.set_cancel_in_response_started(true);
@@ -214,11 +222,12 @@ TEST_F(URLRequestTest, CancelTest2) {
}
TEST_F(URLRequestTest, CancelTest3) {
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage(""), &d);
+ TestURLRequest r(server->TestServerPage(""), &d);
d.set_cancel_in_received_data(true);
@@ -241,11 +250,12 @@ TEST_F(URLRequestTest, CancelTest3) {
}
TEST_F(URLRequestTest, CancelTest4) {
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage(""), &d);
+ TestURLRequest r(server->TestServerPage(""), &d);
r.Start();
EXPECT_TRUE(r.is_pending());
@@ -266,14 +276,15 @@ TEST_F(URLRequestTest, CancelTest4) {
}
TEST_F(URLRequestTest, CancelTest5) {
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
scoped_refptr<URLRequestContext> context = new URLRequestHttpCacheContext();
// populate cache
{
TestDelegate d;
- URLRequest r(server.TestServerPage("cachetime"), &d);
+ URLRequest r(server->TestServerPage("cachetime"), &d);
r.set_context(context);
r.Start();
MessageLoop::current()->Run();
@@ -283,7 +294,7 @@ TEST_F(URLRequestTest, CancelTest5) {
// cancel read from cache (see bug 990242)
{
TestDelegate d;
- URLRequest r(server.TestServerPage("cachetime"), &d);
+ URLRequest r(server->TestServerPage("cachetime"), &d);
r.set_context(context);
r.Start();
r.Cancel();
@@ -301,9 +312,9 @@ TEST_F(URLRequestTest, CancelTest5) {
}
TEST_F(URLRequestTest, PostTest) {
- TestServer server(L"net/data");
- ASSERT_TRUE(server.init_successful());
-
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data");
+ ASSERT_TRUE(NULL != server.get());
const int kMsgSize = 20000; // multiple of 10
const int kIterations = 50;
char *uploadBytes = new char[kMsgSize+1];
@@ -327,7 +338,7 @@ TEST_F(URLRequestTest, PostTest) {
for (int i = 0; i < kIterations; ++i) {
TestDelegate d;
- URLRequest r(server.TestServerPage("echo"), &d);
+ URLRequest r(server->TestServerPage("echo"), &d);
r.set_context(context);
r.set_method("POST");
@@ -353,11 +364,12 @@ TEST_F(URLRequestTest, PostTest) {
}
TEST_F(URLRequestTest, PostEmptyTest) {
- TestServer server(L"net/data");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage("echo"), &d);
+ TestURLRequest r(server->TestServerPage("echo"), &d);
r.set_method("POST");
r.Start();
@@ -377,11 +389,12 @@ TEST_F(URLRequestTest, PostEmptyTest) {
}
TEST_F(URLRequestTest, PostFileTest) {
- TestServer server(L"net/data");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
- TestURLRequest r(server.TestServerPage("echo"), &d);
+ TestURLRequest r(server->TestServerPage("echo"), &d);
r.set_method("POST");
std::wstring dir;
@@ -409,7 +422,8 @@ TEST_F(URLRequestTest, PostFileTest) {
int size = static_cast<int>(longsize);
scoped_array<char> buf(new char[size]);
- int size_read = static_cast<int>(file_util::ReadFile(path, buf.get(), size));
+ int size_read = static_cast<int>(file_util::ReadFile(path,
+ buf.get(), size));
ASSERT_EQ(size, size_read);
ASSERT_EQ(1, d.response_started_count()) << "request failed: " <<
@@ -506,10 +520,11 @@ TEST_F(URLRequestTest, DISABLED_DnsFailureTest) {
}
TEST_F(URLRequestTest, ResponseHeadersTest) {
- TestServer server(L"net/data/url_request_unittest");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
- TestURLRequest req(server.TestServerPage("files/with-headers.html"), &d);
+ TestURLRequest req(server->TestServerPage("files/with-headers.html"), &d);
req.Start();
MessageLoop::current()->Run();
@@ -530,13 +545,14 @@ TEST_F(URLRequestTest, ResponseHeadersTest) {
}
TEST_F(URLRequestTest, BZip2ContentTest) {
- TestServer server(L"net/data/filter_unittests");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/filter_unittests");
+ ASSERT_TRUE(NULL != server.get());
// for localhost domain, we also should support bzip2 encoding
// first, get the original file
TestDelegate d1;
- TestURLRequest req1(server.TestServerPage("realfiles/google.txt"), &d1);
+ TestURLRequest req1(server->TestServerPage("realfiles/google.txt"), &d1);
req1.Start();
MessageLoop::current()->Run();
@@ -544,7 +560,7 @@ TEST_F(URLRequestTest, BZip2ContentTest) {
// second, get bzip2 content
TestDelegate d2;
- TestURLRequest req2(server.TestServerPage("realbz2files/google.txt"), &d2);
+ TestURLRequest req2(server->TestServerPage("realbz2files/google.txt"), &d2);
req2.Start();
MessageLoop::current()->Run();
@@ -555,13 +571,14 @@ TEST_F(URLRequestTest, BZip2ContentTest) {
}
TEST_F(URLRequestTest, BZip2ContentTest_IncrementalHeader) {
- TestServer server(L"net/data/filter_unittests");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/filter_unittests");
+ ASSERT_TRUE(NULL != server.get());
// for localhost domain, we also should support bzip2 encoding
// first, get the original file
TestDelegate d1;
- TestURLRequest req1(server.TestServerPage("realfiles/google.txt"), &d1);
+ TestURLRequest req1(server->TestServerPage("realfiles/google.txt"), &d1);
req1.Start();
MessageLoop::current()->Run();
@@ -570,7 +587,8 @@ TEST_F(URLRequestTest, BZip2ContentTest_IncrementalHeader) {
// second, get bzip2 content. ask the testserver to send the BZ2 header in
// two chunks with a delay between them. this tests our fix for bug 867161.
TestDelegate d2;
- TestURLRequest req2(server.TestServerPage("realbz2files/google.txt?incremental-header"), &d2);
+ TestURLRequest req2(server->TestServerPage(
+ "realbz2files/google.txt?incremental-header"), &d2);
req2.Start();
MessageLoop::current()->Run();
@@ -654,10 +672,12 @@ TEST_F(URLRequestTest, ResolveShortcutTest) {
#endif // defined(OS_WIN)
TEST_F(URLRequestTest, ContentTypeNormalizationTest) {
- TestServer server(L"net/data/url_request_unittest");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
+
TestDelegate d;
- TestURLRequest req(server.TestServerPage(
+ TestURLRequest req(server->TestServerPage(
"files/content-type-normalization.html"), &d);
req.Start();
MessageLoop::current()->Run();
@@ -701,10 +721,12 @@ TEST_F(URLRequestTest, FileDirCancelTest) {
}
TEST_F(URLRequestTest, RestrictRedirects) {
- TestServer server(L"net/data/url_request_unittest");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
+
TestDelegate d;
- TestURLRequest req(server.TestServerPage(
+ TestURLRequest req(server->TestServerPage(
"files/redirect-to-file.html"), &d);
req.Start();
MessageLoop::current()->Run();
@@ -714,10 +736,11 @@ TEST_F(URLRequestTest, RestrictRedirects) {
}
TEST_F(URLRequestTest, NoUserPassInReferrer) {
- TestServer server(L"net/data/url_request_unittest");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
- TestURLRequest req(server.TestServerPage(
+ TestURLRequest req(server->TestServerPage(
"echoheader?Referer"), &d);
req.set_referrer("http://user:pass@foo.com/");
req.Start();
@@ -727,12 +750,13 @@ TEST_F(URLRequestTest, NoUserPassInReferrer) {
}
TEST_F(URLRequestTest, CancelRedirect) {
- TestServer server(L"net/data/url_request_unittest");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
{
d.set_cancel_in_received_redirect(true);
- TestURLRequest req(server.TestServerPage(
+ TestURLRequest req(server->TestServerPage(
"files/redirect-test.html"), &d);
req.Start();
MessageLoop::current()->Run();
@@ -745,8 +769,9 @@ TEST_F(URLRequestTest, CancelRedirect) {
}
TEST_F(URLRequestTest, VaryHeader) {
- TestServer server(L"net/data/url_request_unittest");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
scoped_refptr<URLRequestContext> context = new URLRequestHttpCacheContext();
@@ -755,7 +780,7 @@ TEST_F(URLRequestTest, VaryHeader) {
// populate the cache
{
TestDelegate d;
- URLRequest req(server.TestServerPage("echoheader?foo"), &d);
+ URLRequest req(server->TestServerPage("echoheader?foo"), &d);
req.set_context(context);
req.SetExtraRequestHeaders("foo:1");
req.Start();
@@ -771,7 +796,7 @@ TEST_F(URLRequestTest, VaryHeader) {
// expect a cache hit
{
TestDelegate d;
- URLRequest req(server.TestServerPage("echoheader?foo"), &d);
+ URLRequest req(server->TestServerPage("echoheader?foo"), &d);
req.set_context(context);
req.SetExtraRequestHeaders("foo:1");
req.Start();
@@ -783,7 +808,7 @@ TEST_F(URLRequestTest, VaryHeader) {
// expect a cache miss
{
TestDelegate d;
- URLRequest req(server.TestServerPage("echoheader?foo"), &d);
+ URLRequest req(server->TestServerPage("echoheader?foo"), &d);
req.set_context(context);
req.SetExtraRequestHeaders("foo:2");
req.Start();
@@ -795,8 +820,9 @@ TEST_F(URLRequestTest, VaryHeader) {
TEST_F(URLRequestTest, BasicAuth) {
scoped_refptr<URLRequestContext> context = new URLRequestHttpCacheContext();
- TestServer server(L"");
- ASSERT_TRUE(server.init_successful());
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
Time response_time;
@@ -806,7 +832,7 @@ TEST_F(URLRequestTest, BasicAuth) {
d.set_username(L"user");
d.set_password(L"secret");
- URLRequest r(server.TestServerPage("auth-basic"), &d);
+ URLRequest r(server->TestServerPage("auth-basic"), &d);
r.set_context(context);
r.Start();
@@ -829,7 +855,7 @@ TEST_F(URLRequestTest, BasicAuth) {
d.set_username(L"user");
d.set_password(L"secret");
- URLRequest r(server.TestServerPage("auth-basic"), &d);
+ URLRequest r(server->TestServerPage("auth-basic"), &d);
r.set_context(context);
r.set_load_flags(net::LOAD_VALIDATE_CACHE);
r.Start();
@@ -849,16 +875,20 @@ TEST_F(URLRequestTest, BasicAuth) {
// Content-Type header.
// http://code.google.com/p/chromium/issues/detail?id=843
TEST_F(URLRequestTest, Post302RedirectGet) {
- TestServer server(L"net/data/url_request_unittest");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
- TestURLRequest req(server.TestServerPage("files/redirect-to-echoall"), &d);
+ TestURLRequest req(server->TestServerPage("files/redirect-to-echoall"), &d);
req.set_method("POST");
// Set headers (some of which are specific to the POST).
// ("Content-Length: 10" is just a junk value to make sure it gets stripped).
req.SetExtraRequestHeaders(
- "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAADeAA+NAAWMAAwZ\r\n"
- "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"
+ "Content-Type: multipart/form-data; "
+ "boundary=----WebKitFormBoundaryAADeAA+NAAWMAAwZ\r\n"
+ "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,"
+ "text/plain;q=0.8,image/png,*/*;q=0.5\r\n"
"Accept-Language: en-US,en\r\n"
"Accept-Charset: ISO-8859-1,*,utf-8\r\n"
"Content-Length: 10\r\n"
@@ -885,11 +915,126 @@ TEST_F(URLRequestTest, Post302RedirectGet) {
}
TEST_F(URLRequestTest, Post307RedirectPost) {
- TestServer server(L"net/data/url_request_unittest");
+ scoped_refptr<HTTPTestServer> server =
+ HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
+ ASSERT_TRUE(NULL != server.get());
TestDelegate d;
- TestURLRequest req(server.TestServerPage("files/redirect307-to-echoall"), &d);
+ TestURLRequest req(server->TestServerPage("files/redirect307-to-echoall"),
+ &d);
req.set_method("POST");
req.Start();
MessageLoop::current()->Run();
EXPECT_EQ(req.method(), "POST");
}
+
+#if !defined(OS_WIN)
+ #define MAYBE_FTPGetTestAnonymous DISABLED_FTPGetTestAnonymous
+ #define MAYBE_FTPGetTest DISABLED_FTPGetTest
+ #define MAYBE_FTPCheckWrongUser DISABLED_FTPCheckWrongUser
+ #define MAYBE_FTPCheckWrongPassword DISABLED_FTPCheckWrongPassword
+#else
+ #define MAYBE_FTPGetTestAnonymous FTPGetTestAnonymous
+ #define MAYBE_FTPGetTest FTPGetTest
+ #define MAYBE_FTPCheckWrongUser FTPCheckWrongUser
+ #define MAYBE_FTPCheckWrongPassword FTPCheckWrongPassword
+#endif
+
+TEST_F(URLRequestTest, MAYBE_FTPGetTestAnonymous) {
+ scoped_refptr<FTPTestServer> server = FTPTestServer::CreateServer(L"");
+ ASSERT_TRUE(NULL != server.get());
+ std::wstring app_path;
+ PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
+ app_path.append(L"\\LICENSE");
+ TestDelegate d;
+ {
+ TestURLRequest r(server->TestServerPage("/LICENSE"), &d);
+ r.Start();
+ EXPECT_TRUE(r.is_pending());
+
+ MessageLoop::current()->Run();
+
+ int64 file_size = 0;
+ file_util::GetFileSize(app_path, &file_size);
+
+ EXPECT_TRUE(!r.is_pending());
+ EXPECT_EQ(1, d.response_started_count());
+ EXPECT_FALSE(d.received_data_before_response());
+ EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size));
+ }
+}
+
+TEST_F(URLRequestTest, MAYBE_FTPGetTest) {
+ scoped_refptr<FTPTestServer> server =
+ FTPTestServer::CreateServer(L"", "chrome", "chrome");
+ ASSERT_TRUE(NULL != server.get());
+ std::wstring app_path;
+ PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
+ app_path.append(L"\\LICENSE");
+ TestDelegate d;
+ {
+ TestURLRequest r(server->TestServerPage("/LICENSE"), &d);
+ r.Start();
+ EXPECT_TRUE(r.is_pending());
+
+ MessageLoop::current()->Run();
+
+ int64 file_size = 0;
+ file_util::GetFileSize(app_path, &file_size);
+
+ EXPECT_TRUE(!r.is_pending());
+ EXPECT_EQ(1, d.response_started_count());
+ EXPECT_FALSE(d.received_data_before_response());
+ EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size));
+ }
+}
+
+TEST_F(URLRequestTest, MAYBE_FTPCheckWrongPassword) {
+ scoped_refptr<FTPTestServer> server =
+ FTPTestServer::CreateServer(L"", "chrome", "wrong_password");
+ ASSERT_TRUE(NULL != server.get());
+ std::wstring app_path;
+ PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
+ app_path.append(L"\\LICENSE");
+ TestDelegate d;
+ {
+ TestURLRequest r(server->TestServerPage("/LICENSE"), &d);
+ r.Start();
+ EXPECT_TRUE(r.is_pending());
+
+ MessageLoop::current()->Run();
+
+ int64 file_size = 0;
+ file_util::GetFileSize(app_path, &file_size);
+
+ EXPECT_TRUE(!r.is_pending());
+ EXPECT_EQ(1, d.response_started_count());
+ EXPECT_FALSE(d.received_data_before_response());
+ EXPECT_EQ(d.bytes_received(), 0);
+ }
+}
+
+TEST_F(URLRequestTest, MAYBE_FTPCheckWrongUser) {
+ scoped_refptr<FTPTestServer> server =
+ FTPTestServer::CreateServer(L"", "wrong_user", "chrome");
+ ASSERT_TRUE(NULL != server.get());
+ std::wstring app_path;
+ PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
+ app_path.append(L"\\LICENSE");
+ TestDelegate d;
+ {
+ TestURLRequest r(server->TestServerPage("/LICENSE"), &d);
+ r.Start();
+ EXPECT_TRUE(r.is_pending());
+
+ MessageLoop::current()->Run();
+
+ int64 file_size = 0;
+ file_util::GetFileSize(app_path, &file_size);
+
+ EXPECT_TRUE(!r.is_pending());
+ EXPECT_EQ(1, d.response_started_count());
+ EXPECT_FALSE(d.received_data_before_response());
+ EXPECT_EQ(d.bytes_received(), 0);
+ }
+}
+
diff --git a/net/url_request/url_request_unittest.h b/net/url_request/url_request_unittest.h
index a33be39..c2158aa 100644
--- a/net/url_request/url_request_unittest.h
+++ b/net/url_request/url_request_unittest.h
@@ -9,6 +9,7 @@
#include <sstream>
#include <string>
+#include <vector>
#include "base/file_path.h"
#include "base/file_util.h"
@@ -27,9 +28,13 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "googleurl/src/url_util.h"
-const int kDefaultPort = 1337;
+const int kHTTPDefaultPort = 1337;
+const int kFTPDefaultPort = 1338;
+
const std::string kDefaultHostName("localhost");
+using base::TimeDelta;
+
// This URLRequestContext does not use a local cache.
class TestURLRequestContext : public URLRequestContext {
public:
@@ -190,29 +195,42 @@ class TestDelegate : public URLRequest::Delegate {
char buf_[4096];
};
-// This object bounds the lifetime of an external python-based HTTP server
+// This object bounds the lifetime of an external python-based HTTP/FTP server
// that can provide various responses useful for testing.
-class TestServer : public base::ProcessFilter {
- public:
- TestServer(const std::wstring& document_root)
- : process_handle_(NULL),
- is_shutdown_(true) {
- Init(kDefaultHostName, kDefaultPort, document_root, std::wstring());
+class BaseTestServer : public base::ProcessFilter,
+ public base::RefCounted<BaseTestServer> {
+ protected:
+ BaseTestServer()
+ : process_handle_(NULL) {
}
- virtual ~TestServer() {
- Shutdown();
+ public:
+ virtual ~BaseTestServer() {
+ if (process_handle_) {
+#if defined(OS_WIN)
+ CloseHandle(process_handle_);
+#endif
+ process_handle_ = NULL;
+ }
+ // Make sure we don't leave any stray testserver processes laying around.
+ std::wstring testserver_name =
+ file_util::GetFilenameFromPath(python_runtime_);
+ base::CleanupProcesses(testserver_name, 10000, 1, this);
+ EXPECT_EQ(0, base::GetProcessCount(testserver_name, this));
}
// Implementation of ProcessFilter
virtual bool Includes(uint32 pid, uint32 parent_pid) const {
- // This function may be called after Shutdown(), in which process_handle_ is
- // set to NULL. Since no process handle is set, it can't be included in the
- // filter.
+ // Since no process handle is set, it can't be included in the filter.
if (!process_handle_)
return false;
// TODO(port): rationalize return value of GetProcId
- return pid == (uint32)base::GetProcId(process_handle_);
+ return pid == static_cast<uint32>(base::GetProcId(process_handle_));
+ }
+
+ GURL TestServerPage(const std::string& base_address,
+ const std::string& path) {
+ return GURL(base_address + path);
}
GURL TestServerPage(const std::string& path) {
@@ -223,101 +241,46 @@ class TestServer : public base::ProcessFilter {
return GURL(base_address_ + WideToUTF8(path));
}
- // A subclass may wish to send the request in a different manner
- virtual bool MakeGETRequest(const std::string& page_name) {
- const GURL& url = TestServerPage(page_name);
-
- // Spin up a background thread for this request so that we have access to
- // an IO message loop, and in cases where this thread already has an IO
- // message loop, we also want to avoid spinning a nested message loop.
-
- SyncTestDelegate d;
- {
- base::Thread io_thread("MakeGETRequest");
- base::Thread::Options options;
- options.message_loop_type = MessageLoop::TYPE_IO;
- io_thread.StartWithOptions(options);
- io_thread.message_loop()->PostTask(FROM_HERE, NewRunnableFunction(
- &TestServer::StartGETRequest, url, &d));
- d.Wait();
- }
- return d.did_succeed();
- }
-
- bool init_successful() const { return init_successful_; }
-
- protected:
- struct ManualInit {};
-
- // Used by subclasses that need to defer initialization until they are fully
- // constructed. The subclass should call Init once it is ready (usually in
- // its constructor).
- TestServer(ManualInit)
- : process_handle_(NULL),
- init_successful_(false),
- is_shutdown_(true) {
- }
-
- virtual std::string scheme() { return std::string("http"); }
-
- // This is in a separate function so that we can have assertions and so that
- // subclasses can call this later.
- void Init(const std::string& host_name, int port,
- const std::wstring& document_root,
- const std::wstring& cert_path) {
- std::stringstream ss;
- std::string port_str;
- ss << (port ? port : kDefaultPort);
- ss >> port_str;
- base_address_ = scheme() + "://" + host_name + ":" + port_str + "/";
-
- std::wstring testserver_path;
- ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &testserver_path));
- file_util::AppendToPath(&testserver_path, L"net");
- file_util::AppendToPath(&testserver_path, L"tools");
- file_util::AppendToPath(&testserver_path, L"testserver");
- file_util::AppendToPath(&testserver_path, L"testserver.py");
-
- ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &python_runtime_));
- file_util::AppendToPath(&python_runtime_, L"third_party");
- file_util::AppendToPath(&python_runtime_, L"python_24");
- file_util::AppendToPath(&python_runtime_, L"python.exe");
-
- std::wstring test_data_directory;
- PathService::Get(base::DIR_SOURCE_ROOT, &test_data_directory);
- std::wstring normalized_document_root = document_root;
+ void SetPythonPaths() {
#if defined(OS_WIN)
- std::replace(normalized_document_root.begin(),
- normalized_document_root.end(),
- L'/', FilePath::kSeparators[0]);
-#endif
- file_util::AppendToPath(&test_data_directory, normalized_document_root);
+ // Set up PYTHONPATH so that Python is able to find the in-tree copy of
+ // pyftpdlib.
+ static bool set_python_path = false;
+ if (!set_python_path) {
+ FilePath pyftpdlib_path;
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &pyftpdlib_path));
+ pyftpdlib_path = pyftpdlib_path.Append(L"third_party");
+ pyftpdlib_path = pyftpdlib_path.Append(L"pyftpdlib");
+
+ const wchar_t kPythonPath[] = L"PYTHONPATH";
+ wchar_t python_path_c[1024];
+ if (GetEnvironmentVariable(kPythonPath, python_path_c, 1023) > 0) {
+ // PYTHONPATH is already set, append to it.
+ std::wstring python_path(python_path_c);
+ python_path.append(L":");
+ python_path.append(pyftpdlib_path.value());
+ SetEnvironmentVariableW(kPythonPath, python_path.c_str());
+ } else {
+ SetEnvironmentVariableW(kPythonPath, pyftpdlib_path.value().c_str());
+ }
-#if defined(OS_WIN)
- std::wstring command_line =
- L"\"" + python_runtime_ + L"\" " + L"\"" + testserver_path +
- L"\" --port=" + UTF8ToWide(port_str) + L" --data-dir=\"" +
- test_data_directory + L"\"";
- if (!cert_path.empty()) {
- command_line.append(L" --https=\"");
- command_line.append(cert_path);
- command_line.append(L"\"");
+ set_python_path = true;
}
-
- ASSERT_TRUE(
- base::LaunchApp(command_line, false, true, &process_handle_)) <<
- "Failed to launch " << command_line;
#elif defined(OS_POSIX)
// Set up PYTHONPATH so that Python is able to find the in-tree copy of
- // tlslite.
-
+ // tlslite and pyftpdlib.
static bool set_python_path = false;
if (!set_python_path) {
FilePath tlslite_path;
+ FilePath pyftpdlib_path;
ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &tlslite_path));
tlslite_path = tlslite_path.Append("third_party");
tlslite_path = tlslite_path.Append("tlslite");
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &pyftpdlib_path));
+ pyftpdlib_path = pyftpdlib_path.Append("third_party");
+ pyftpdlib_path = pyftpdlib_path.Append("pyftpdlib");
+
const char kPythonPath[] = "PYTHONPATH";
char* python_path_c = getenv(kPythonPath);
if (python_path_c) {
@@ -325,81 +288,89 @@ class TestServer : public base::ProcessFilter {
std::string python_path(python_path_c);
python_path.append(":");
python_path.append(tlslite_path.value());
+ python_path.append(":");
+ python_path.append(pyftpdlib_path.value());
setenv(kPythonPath, python_path.c_str(), 1);
} else {
- setenv(kPythonPath, tlslite_path.value().c_str(), 1);
+ std::string python_path = tlslite_path.value().c_str();
+ python_path.append(":");
+ python_path.append(pyftpdlib_path.value());
+ setenv(kPythonPath, python_path.c_str(), 1);
}
-
set_python_path = true;
}
-
- std::vector<std::string> command_line;
- command_line.push_back("python");
- command_line.push_back(WideToUTF8(testserver_path));
- command_line.push_back("--port=" + port_str);
- command_line.push_back("--data-dir=" + WideToUTF8(test_data_directory));
- if (!cert_path.empty())
- command_line.push_back("--https=" + WideToUTF8(cert_path));
-
- base::file_handle_mapping_vector no_mappings;
- ASSERT_TRUE(
- base::LaunchApp(command_line, no_mappings, false, &process_handle_)) <<
- "Failed to launch " << command_line[0] << " ...";
#endif
+ }
- // Verify that the webserver is actually started.
- // Otherwise tests can fail if they run faster than Python can start.
- int retries = 10;
- bool success;
- while ((success = MakeGETRequest("hello.html")) == false && retries > 0) {
- retries--;
- PlatformThread::Sleep(500);
+ void SetAppPath(const std::string& host_name, int port,
+ const std::wstring& document_root, const std::string& scheme,
+ std::wstring* testserver_path, std::wstring* test_data_directory) {
+ port_str_ = IntToString(port);
+ if (url_user_.empty()) {
+ base_address_ = scheme + "://" + host_name + ":" + port_str_ + "/";
+ } else {
+ if (url_password_.empty())
+ base_address_ = scheme + "://" + url_user_ + "@" +
+ host_name + ":" + port_str_ + "/";
+ else
+ base_address_ = scheme + "://" + url_user_ + ":" + url_password_ +
+ "@" + host_name + ":" + port_str_ + "/";
}
- ASSERT_TRUE(success) << "Webserver not starting properly.";
- init_successful_ = true;
- is_shutdown_ = false;
- }
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, testserver_path));
+ file_util::AppendToPath(testserver_path, L"net");
+ file_util::AppendToPath(testserver_path, L"tools");
+ file_util::AppendToPath(testserver_path, L"testserver");
+ file_util::AppendToPath(testserver_path, L"testserver.py");
- void Shutdown() {
- if (is_shutdown_)
- return;
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &python_runtime_));
+ file_util::AppendToPath(&python_runtime_, L"third_party");
+ file_util::AppendToPath(&python_runtime_, L"python_24");
+ file_util::AppendToPath(&python_runtime_, L"python.exe");
- // here we append the time to avoid problems where the kill page
- // is being cached rather than being executed on the server
- std::ostringstream page_name;
- page_name << "kill?" << (unsigned int)(base::Time::Now().ToInternalValue());
- int retry_count = 5;
- while (retry_count > 0) {
- bool r = MakeGETRequest(page_name.str());
- // BUG #1048625 causes the kill GET to fail. For now we just retry.
- // Once the bug is fixed, we should remove the while loop and put back
- // the following DCHECK.
- // DCHECK(r);
- if (r)
- break;
- retry_count--;
- }
- // Make sure we were successfull in stopping the testserver.
- DCHECK(retry_count > 0);
+ PathService::Get(base::DIR_SOURCE_ROOT, test_data_directory);
+ std::wstring normalized_document_root = document_root;
- if (process_handle_) {
#if defined(OS_WIN)
- CloseHandle(process_handle_);
+ // It is just for windows only and have no effect on other OS
+ std::replace(normalized_document_root.begin(),
+ normalized_document_root.end(),
+ L'/', FilePath::kSeparators[0]);
#endif
- process_handle_ = NULL;
- }
+ if (!normalized_document_root.empty())
+ file_util::AppendToPath(test_data_directory, normalized_document_root);
- // Make sure we don't leave any stray testserver processes laying around.
- std::wstring testserver_name =
- file_util::GetFilenameFromPath(python_runtime_);
- base::CleanupProcesses(testserver_name, 10000, 1, this);
- EXPECT_EQ(0, base::GetProcessCount(testserver_name, this));
+ }
- is_shutdown_ = true;
+#if defined(OS_WIN)
+ void LaunchApp(const std::wstring& command_line) {
+ ASSERT_TRUE(base::LaunchApp(command_line, false, true, &process_handle_)) <<
+ "Failed to launch " << command_line;
}
+#elif defined(OS_POSIX)
+ void LaunchApp(const std::vector<std::string>& command_line) {
+ ASSERT_TRUE(base::LaunchApp(command_line, false, true, &process_handle_)) <<
+ "Failed to launch " << command_line[0] << " ...";
+ }
+#endif
- private:
+ virtual bool MakeGETRequest(const std::string& page_name) = 0;
+
+ // Verify that the Server is actually started.
+ // Otherwise tests can fail if they run faster than Python can start.
+ bool VerifyLaunchApp(const std::string& page_name) {
+ int retries = 10;
+ bool success;
+ while ((success = MakeGETRequest(page_name)) == false && retries > 0) {
+ retries--;
+ PlatformThread::Sleep(500);
+ }
+ if (!success)
+ return false;
+ return true;
+ }
+
+ protected:
// Used by MakeGETRequest to implement sync load behavior.
class SyncTestDelegate : public TestDelegate {
public:
@@ -410,13 +381,91 @@ class TestServer : public base::ProcessFilter {
success_ = request->status().is_success();
event_.Signal();
}
- void Wait() { event_.Wait(); }
+ bool Wait(int64 secs) {
+ TimeDelta td = TimeDelta::FromSeconds(secs);
+ if (event_.TimedWait(td))
+ return true;
+ return false;
+ }
bool did_succeed() const { return success_; }
private:
base::WaitableEvent event_;
bool success_;
DISALLOW_COPY_AND_ASSIGN(SyncTestDelegate);
};
+
+ std::string host_name_;
+ std::string base_address_;
+ std::string url_user_;
+ std::string url_password_;
+ std::wstring python_runtime_;
+ base::ProcessHandle process_handle_;
+ std::string port_str_;
+};
+
+class HTTPTestServer : public BaseTestServer {
+ protected:
+ HTTPTestServer() {
+ }
+
+ public:
+ static HTTPTestServer* CreateServer(const std::wstring& document_root) {
+ HTTPTestServer* test_server = new HTTPTestServer();
+ if (!test_server->Init(kDefaultHostName, kHTTPDefaultPort, document_root)) {
+ delete test_server;
+ return NULL;
+ }
+ return test_server;
+ }
+
+ bool Init(const std::string& host_name, int port,
+ const std::wstring& document_root) {
+ std::wstring testserver_path;
+ std::wstring test_data_directory;
+ host_name_ = host_name;
+#if defined(OS_WIN)
+ std::wstring command_line;
+#elif defined(OS_POSIX)
+ std::vector<std::string> command_line;
+#endif
+
+ // Set PYTHONPATH for tlslite and pyftpdlib
+ SetPythonPaths();
+ SetAppPath(host_name, port, document_root, scheme(),
+ &testserver_path, &test_data_directory);
+ SetCommandLineOption(testserver_path, test_data_directory, &command_line);
+ LaunchApp(command_line);
+ if (!VerifyLaunchApp("hello.html")) {
+ LOG(ERROR) << "Webserver not starting properly";
+ return false;
+ }
+ return true;
+ }
+
+ // A subclass may wish to send the request in a different manner
+ virtual bool MakeGETRequest(const std::string& page_name) {
+ const GURL& url = TestServerPage(page_name);
+
+ // Spin up a background thread for this request so that we have access to
+ // an IO message loop, and in cases where this thread already has an IO
+ // message loop, we also want to avoid spinning a nested message loop.
+ SyncTestDelegate d;
+ {
+ base::Thread io_thread("MakeGETRequest");
+ base::Thread::Options options;
+ options.message_loop_type = MessageLoop::TYPE_IO;
+ io_thread.StartWithOptions(options);
+ io_thread.message_loop()->PostTask(FROM_HERE, NewRunnableFunction(
+ &HTTPTestServer::StartGETRequest, url, &d));
+
+ // Build bot wait for only 300 seconds we should ensure wait do not take
+ // more than 300 seconds
+ if (!d.Wait(250))
+ return false;
+ }
+ return d.did_succeed();
+ }
+
static void StartGETRequest(const GURL& url, URLRequest::Delegate* delegate) {
URLRequest* request = new URLRequest(url, delegate);
request->set_context(new TestURLRequestContext());
@@ -425,23 +474,213 @@ class TestServer : public base::ProcessFilter {
EXPECT_TRUE(request->is_pending());
}
- std::string base_address_;
- std::wstring python_runtime_;
- base::ProcessHandle process_handle_;
- bool init_successful_;
- bool is_shutdown_;
+ virtual ~HTTPTestServer() {
+ // here we append the time to avoid problems where the kill page
+ // is being cached rather than being executed on the server
+ std::string page_name = StringPrintf("kill?%u",
+ static_cast<int>(base::Time::Now().ToInternalValue()));
+ int retry_count = 5;
+ while (retry_count > 0) {
+ bool r = MakeGETRequest(page_name);
+ // BUG #1048625 causes the kill GET to fail. For now we just retry.
+ // Once the bug is fixed, we should remove the while loop and put back
+ // the following DCHECK.
+ // DCHECK(r);
+ if (r)
+ break;
+ retry_count--;
+ }
+ // Make sure we were successfull in stopping the testserver.
+ DCHECK(retry_count > 0);
+ }
+
+ virtual std::string scheme() { return "http"; }
+
+#if defined(OS_WIN)
+ virtual void SetCommandLineOption(const std::wstring& testserver_path,
+ const std::wstring& test_data_directory,
+ std::wstring* command_line ) {
+ command_line->append(L"\"" + python_runtime_ + L"\" " + L"\"" +
+ testserver_path + L"\" --port=" + UTF8ToWide(port_str_) +
+ L" --data-dir=\"" + test_data_directory + L"\"");
+ }
+#elif defined(OS_POSIX)
+ virtual void SetCommandLineOption(const std::wstring& testserver_path,
+ const std::wstring& test_data_directory,
+ std::vector<std::string>* command_line) {
+ command_line->push_back("python");
+ command_line->push_back(WideToUTF8(testserver_path));
+ command_line->push_back("--port=" + port_str_);
+ command_line->push_back("--data-dir=" + WideToUTF8(test_data_directory));
+ }
+#endif
};
-class HTTPSTestServer : public TestServer {
+class HTTPSTestServer : public HTTPTestServer {
+ protected:
+ explicit HTTPSTestServer(const std::wstring& cert_path)
+ : cert_path_(cert_path) {
+ }
+
public:
- HTTPSTestServer(const std::string& host_name, int port,
- const std::wstring& document_root,
- const std::wstring& cert_path) : TestServer(ManualInit()) {
- Init(host_name, port, document_root, cert_path);
+ static HTTPSTestServer* CreateServer(const std::string& host_name, int port,
+ const std::wstring& document_root,
+ const std::wstring& cert_path) {
+ HTTPSTestServer* test_server = new HTTPSTestServer(cert_path);
+ if (!test_server->Init(host_name, port, document_root)) {
+ delete test_server;
+ return NULL;
+ }
+ return test_server;
+ }
+
+#if defined(OS_WIN)
+ virtual void SetCommandLineOption(const std::wstring& testserver_path,
+ const std::wstring& test_data_directory,
+ std::wstring* command_line ) {
+ command_line->append(L"\"" + python_runtime_ + L"\" " + L"\"" +
+ testserver_path + L"\"" + L" --port=" +
+ UTF8ToWide(port_str_) + L" --data-dir=\"" +
+ test_data_directory + L"\"");
+ if (!cert_path_.empty()) {
+ command_line->append(L" --https=\"");
+ command_line->append(cert_path_);
+ command_line->append(L"\"");
+ }
+ }
+#elif defined(OS_POSIX)
+ virtual void SetCommandLineOption(const std::wstring& testserver_path,
+ const std::wstring& test_data_directory,
+ std::vector<std::string>* command_line) {
+ command_line->push_back("python");
+ command_line->push_back(WideToUTF8(testserver_path));
+ command_line->push_back("--port=" + port_str_);
+ command_line->push_back("--data-dir=" + WideToUTF8(test_data_directory));
+ if (!cert_path_.empty())
+ command_line->push_back("--https=" + WideToUTF8(cert_path_));
+}
+#endif
+
+ virtual std::string scheme() { return "https"; }
+
+ virtual ~HTTPSTestServer() {
}
- virtual std::string scheme() { return std::string("https"); }
+ protected:
+ std::wstring cert_path_;
};
-#endif // NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_
+class FTPTestServer : public BaseTestServer {
+ protected:
+ FTPTestServer() {
+ }
+
+ public:
+ FTPTestServer(const std::string& url_user, const std::string& url_password) {
+ url_user_ = url_user;
+ url_password_ = url_password;
+ }
+
+ static FTPTestServer* CreateServer(const std::wstring& document_root) {
+ FTPTestServer* test_server = new FTPTestServer();
+ if (!test_server->Init(kDefaultHostName, kFTPDefaultPort, document_root)) {
+ delete test_server;
+ return NULL;
+ }
+ return test_server;
+ }
+
+ static FTPTestServer* CreateServer(const std::wstring& document_root,
+ const std::string& url_user,
+ const std::string& url_password) {
+ FTPTestServer* test_server = new FTPTestServer(url_user, url_password);
+ if (!test_server->Init(kDefaultHostName, kFTPDefaultPort, document_root)) {
+ delete test_server;
+ return NULL;
+ }
+ return test_server;
+ }
+
+ bool Init(const std::string& host_name, int port,
+ const std::wstring& document_root) {
+ std::wstring testserver_path;
+ std::wstring test_data_directory;
+ host_name_ = host_name;
+
+#if defined(OS_WIN)
+ std::wstring command_line;
+#elif defined(OS_POSIX)
+ std::vector<std::string> command_line;
+#endif
+
+ // Set PYTHONPATH for tlslite and pyftpdlib
+ SetPythonPaths();
+ SetAppPath(kDefaultHostName, port, document_root, scheme(),
+ &testserver_path, &test_data_directory);
+ SetCommandLineOption(testserver_path, test_data_directory, &command_line);
+ LaunchApp(command_line);
+ if (!VerifyLaunchApp("/LICENSE")) {
+ LOG(ERROR) << "FTPServer not starting properly.";
+ return false;
+ }
+ return true;
+ }
+
+ virtual ~FTPTestServer() {
+ const std::string base_address = scheme() + "://" + host_name_ + ":" +
+ port_str_ + "/";
+ const GURL& url = TestServerPage(base_address, "kill");
+ TestDelegate d;
+ URLRequest request(url, &d);
+ request.set_context(new TestURLRequestContext());
+ request.set_method("GET");
+ request.Start();
+ EXPECT_TRUE(request.is_pending());
+
+ MessageLoop::current()->Run();
+ }
+
+ virtual std::string scheme() { return "ftp"; }
+
+ virtual bool MakeGETRequest(const std::string& page_name) {
+ const std::string base_address = scheme() + "://" + host_name_ + ":" +
+ port_str_ + "/";
+ const GURL& url = TestServerPage(base_address, page_name);
+ TestDelegate d;
+ URLRequest request(url, &d);
+ request.set_context(new TestURLRequestContext());
+ request.set_method("GET");
+ request.Start();
+ EXPECT_TRUE(request.is_pending());
+
+ MessageLoop::current()->Run();
+ if (request.is_pending())
+ return false;
+
+ return true;
+ }
+
+#if defined(OS_WIN)
+ virtual void SetCommandLineOption(const std::wstring& testserver_path,
+ const std::wstring& test_data_directory,
+ std::wstring* command_line ) {
+ command_line->append(L"\"" + python_runtime_ + L"\" " + L"\"" +
+ testserver_path + L"\"" + L" -f " + L" --port=" +
+ UTF8ToWide(port_str_) + L" --data-dir=\"" +
+ test_data_directory + L"\"");
+ }
+#elif defined(OS_POSIX)
+ virtual void SetCommandLineOption(const std::wstring& testserver_path,
+ const std::wstring& test_data_directory,
+ std::vector<std::string>* command_line) {
+ command_line->push_back("python");
+ command_line->push_back(WideToUTF8(testserver_path));
+ command_line->push_back(" -f ");
+ command_line->push_back("--data-dir=" + WideToUTF8(test_data_directory));
+ command_line->push_back("--port=" + port_str_);
+ }
+#endif
+};
+
+#endif // NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_
diff --git a/webkit/glue/mimetype_unittest.cc b/webkit/glue/mimetype_unittest.cc
index bbbf0f6..a746d96 100644
--- a/webkit/glue/mimetype_unittest.cc
+++ b/webkit/glue/mimetype_unittest.cc
@@ -23,7 +23,7 @@ class MimeTypeTests : public TestShellTest {
test_shell_->LoadURL(UTF8ToWide(url.spec()).c_str());
test_shell_->WaitTestFinished();
}
-
+
void CheckMimeType(const char* mimetype, const std::wstring& expected) {
std::string path("contenttype?");
GURL url = server_->TestServerPage(path + mimetype);
@@ -31,16 +31,17 @@ class MimeTypeTests : public TestShellTest {
WebFrame* frame = test_shell_->webView()->GetMainFrame();
EXPECT_EQ(expected, webkit_glue::DumpDocumentText(frame));
}
-
- scoped_ptr<UnittestTestServer> server_;
+
+ scoped_refptr<UnittestTestServer> server_;
};
TEST_F(MimeTypeTests, MimeTypeTests) {
- server_.reset(new UnittestTestServer);
+ server_ = UnittestTestServer::CreateServer();
+ ASSERT_TRUE(NULL != server_.get());
std::wstring expected_src(L"<html>\n<body>\n"
L"<p>HTML text</p>\n</body>\n</html>\n");
-
+
// These files should all be displayed as plain text.
const char* plain_text[] = {
"text/css",
@@ -80,7 +81,6 @@ TEST_F(MimeTypeTests, MimeTypeTests) {
// TODO(tc): make sure other mime types properly go to download (e.g.,
// image/foo).
- server_.reset(NULL);
}
} // namespace
diff --git a/webkit/glue/resource_fetcher_unittest.cc b/webkit/glue/resource_fetcher_unittest.cc
index d996f3b..81d9646 100644
--- a/webkit/glue/resource_fetcher_unittest.cc
+++ b/webkit/glue/resource_fetcher_unittest.cc
@@ -153,14 +153,16 @@ FetcherDelegate* FetcherDelegate::instance_ = NULL;
// Test a fetch from the test server.
TEST_F(ResourceFetcherTests, ResourceFetcherDownload) {
- UnittestTestServer server;
+ scoped_refptr<UnittestTestServer> server =
+ UnittestTestServer::CreateServer();
+ ASSERT_TRUE(NULL != server.get());
WebFrame* web_frame = test_shell_->webView()->GetMainFrame();
// Not safe, but this is a unittest, so whatever.
WebFrameImpl* web_frame_impl = reinterpret_cast<WebFrameImpl*>(web_frame);
WebCore::Frame* frame = web_frame_impl->frame();
- GURL url = server.TestServerPage("files/test_shell/index.html");
+ GURL url = server->TestServerPage("files/test_shell/index.html");
scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
scoped_ptr<ResourceFetcher> fetcher(new ResourceFetcher(
url, frame, delegate.get()));
@@ -173,7 +175,7 @@ TEST_F(ResourceFetcherTests, ResourceFetcherDownload) {
EXPECT_TRUE(text.find("What is this page?") != std::string::npos);
// Test 404 response.
- url = server.TestServerPage("files/thisfiledoesntexist.html");
+ url = server->TestServerPage("files/thisfiledoesntexist.html");
delegate.reset(new FetcherDelegate);
fetcher.reset(new ResourceFetcher(url, frame, delegate.get()));
@@ -185,7 +187,10 @@ TEST_F(ResourceFetcherTests, ResourceFetcherDownload) {
}
TEST_F(ResourceFetcherTests, ResourceFetcherDidFail) {
- UnittestTestServer server;
+ scoped_refptr<UnittestTestServer> server =
+ UnittestTestServer::CreateServer();
+ ASSERT_TRUE(NULL != server.get());
+
WebFrame* web_frame = test_shell_->webView()->GetMainFrame();
// Not safe, but this is a unittest, so whatever.
WebFrameImpl* web_frame_impl = reinterpret_cast<WebFrameImpl*>(web_frame);
@@ -208,7 +213,9 @@ TEST_F(ResourceFetcherTests, ResourceFetcherDidFail) {
}
TEST_F(ResourceFetcherTests, ResourceFetcherTimeout) {
- UnittestTestServer server;
+ scoped_refptr<UnittestTestServer> server =
+ UnittestTestServer::CreateServer();
+ ASSERT_TRUE(NULL != server.get());
WebFrame* web_frame = test_shell_->webView()->GetMainFrame();
// Not safe, but this is a unittest, so whatever.
@@ -217,7 +224,7 @@ TEST_F(ResourceFetcherTests, ResourceFetcherTimeout) {
// Grab a page that takes at least 1 sec to respond, but set the fetcher to
// timeout in 0 sec.
- GURL url = server.TestServerPage("slow?1");
+ GURL url = server->TestServerPage("slow?1");
scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
scoped_ptr<ResourceFetcher> fetcher(new ResourceFetcherWithTimeout(
url, frame, 0, delegate.get()));
diff --git a/webkit/glue/unittest_test_server.h b/webkit/glue/unittest_test_server.h
index d9b4ce2..3e27b875 100644
--- a/webkit/glue/unittest_test_server.h
+++ b/webkit/glue/unittest_test_server.h
@@ -14,14 +14,22 @@ using webkit_glue::ResourceLoaderBridge;
// We need to use ResourceLoaderBridge to communicate with the testserver
// instead of using URLRequest directly because URLRequests need to be run on
// the test_shell's IO thread.
-class UnittestTestServer : public TestServer {
+class UnittestTestServer : public HTTPTestServer {
+ protected:
+ UnittestTestServer() {
+ }
+
public:
- UnittestTestServer() : TestServer(TestServer::ManualInit()) {
- Init("localhost", 1337, L"webkit/data", std::wstring());
+ static UnittestTestServer* CreateServer() {
+ UnittestTestServer* test_server = new UnittestTestServer();
+ if (!test_server->Init("localhost", 1337, L"webkit/data")) {
+ delete test_server;
+ return NULL;
+ }
+ return test_server;
}
- ~UnittestTestServer() {
- Shutdown();
+ virtual ~UnittestTestServer() {
}
virtual bool MakeGETRequest(const std::string& page_name) {