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

Unified Diff: chrome_frame/test/test_with_web_server.cc

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/test/test_with_web_server.h ('k') | chrome_frame/test/ui_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/test/test_with_web_server.cc
diff --git a/chrome_frame/test/test_with_web_server.cc b/chrome_frame/test/test_with_web_server.cc
deleted file mode 100644
index d979dd9ee33d7203881ec96fac031ab14bc2f264..0000000000000000000000000000000000000000
--- a/chrome_frame/test/test_with_web_server.cc
+++ /dev/null
@@ -1,1101 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome_frame/test/test_with_web_server.h"
-
-#include "base/base_paths.h"
-#include "base/file_util.h"
-#include "base/file_version_info.h"
-#include "base/files/memory_mapped_file.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/path_service.h"
-#include "base/process/kill.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/test_timeouts.h"
-#include "base/win/windows_version.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/installer/util/helper.h"
-#include "chrome/installer/util/install_util.h"
-#include "chrome/installer/util/product.h"
-#include "chrome_frame/html_utils.h"
-#include "chrome_frame/test/chrome_frame_test_utils.h"
-#include "chrome_frame/test/mock_ie_event_sink_actions.h"
-#include "chrome_frame/test/mock_ie_event_sink_test.h"
-#include "chrome_frame/test/test_scrubber.h"
-#include "chrome_frame/utils.h"
-#include "net/base/mime_util.h"
-#include "net/http/http_util.h"
-#include "net/socket/stream_listen_socket.h"
-
-using chrome_frame_test::kChromeFrameLongNavigationTimeout;
-using chrome_frame_test::kChromeFrameVeryLongNavigationTimeout;
-
-using testing::_;
-using testing::StrCaseEq;
-
-const wchar_t kDocRoot[] = L"chrome_frame\\test\\data";
-
-namespace {
-
-// Helper method for creating the appropriate HTTP response headers.
-std::string CreateHttpHeaders(CFInvocation invocation,
- bool add_no_cache_header,
- const std::string& content_type) {
- std::ostringstream ss;
- ss << "HTTP/1.1 200 OK\r\n"
- << "Connection: close\r\n"
- << "Content-Type: " << content_type << "\r\n";
- if (invocation.type() == CFInvocation::HTTP_HEADER)
- ss << "X-UA-Compatible: chrome=1\r\n";
- if (add_no_cache_header) {
- ss << "Cache-Control: no-cache\r\n";
- ss << "Expires: Tue, 15 Nov 1994 08:12:31 GMT\r\n";
- }
- return ss.str();
-}
-
-std::string GetMockHttpHeaders(const base::FilePath& mock_http_headers_path) {
- std::string headers;
- base::ReadFileToString(mock_http_headers_path, &headers);
- return headers;
-}
-
-class ChromeFrameTestEnvironment: public testing::Environment {
- public:
- virtual ~ChromeFrameTestEnvironment() {}
- virtual void SetUp() OVERRIDE {
- ScopedChromeFrameRegistrar::RegisterDefaults();
- }
-};
-
-::testing::Environment* const chrome_frame_env =
- ::testing::AddGlobalTestEnvironment(new ChromeFrameTestEnvironment);
-
-} // namespace
-
-base::FilePath ChromeFrameTestWithWebServer::test_file_path_;
-base::FilePath ChromeFrameTestWithWebServer::results_dir_;
-base::FilePath ChromeFrameTestWithWebServer::CFInstall_path_;
-base::FilePath ChromeFrameTestWithWebServer::CFInstance_path_;
-base::ScopedTempDir ChromeFrameTestWithWebServer::temp_dir_;
-base::FilePath ChromeFrameTestWithWebServer::chrome_user_data_dir_;
-chrome_frame_test::TimedMsgLoop* ChromeFrameTestWithWebServer::loop_;
-std::string ChromeFrameTestWithWebServer::local_address_;
-testing::StrictMock<MockWebServerListener>*
- ChromeFrameTestWithWebServer::listener_mock_;
-testing::StrictMock<MockWebServer>* ChromeFrameTestWithWebServer::server_mock_;
-
-ChromeFrameTestWithWebServer::ChromeFrameTestWithWebServer() {
-}
-
-// static
-void ChromeFrameTestWithWebServer::SetUpTestCase() {
- base::FilePath chrome_frame_source_path;
- PathService::Get(base::DIR_SOURCE_ROOT, &chrome_frame_source_path);
- chrome_frame_source_path = chrome_frame_source_path.Append(
- FILE_PATH_LITERAL("chrome_frame"));
-
- test_file_path_ = chrome_frame_source_path
- .Append(FILE_PATH_LITERAL("test"))
- .Append(FILE_PATH_LITERAL("data"));
-
- results_dir_ = chrome_frame_test::GetTestDataFolder().AppendASCII("dump");
-
- // Copy the CFInstance.js and CFInstall.js files from src\chrome_frame to
- // src\chrome_frame\test\data.
- base::FilePath CFInstance_src_path;
- base::FilePath CFInstall_src_path;
-
- CFInstance_src_path = chrome_frame_source_path.AppendASCII("CFInstance.js");
- CFInstance_path_ = test_file_path_.AppendASCII("CFInstance.js");
-
- ASSERT_TRUE(base::CopyFile(CFInstance_src_path, CFInstance_path_));
-
- CFInstall_src_path = chrome_frame_source_path.AppendASCII("CFInstall.js");
- CFInstall_path_ = test_file_path_.AppendASCII("CFInstall.js");
-
- ASSERT_TRUE(base::CopyFile(CFInstall_src_path, CFInstall_path_));
-
- loop_ = new chrome_frame_test::TimedMsgLoop();
- loop_->set_snapshot_on_timeout(true);
- local_address_ = chrome_frame_test::GetLocalIPv4Address();
- listener_mock_ = new testing::StrictMock<MockWebServerListener>();
- server_mock_ = new testing::StrictMock<MockWebServer>(
- 1337, base::ASCIIToWide(local_address_),
- chrome_frame_test::GetTestDataFolder());
- server_mock_->set_listener(listener_mock_);
-}
-
-// static
-void ChromeFrameTestWithWebServer::TearDownTestCase() {
- delete server_mock_;
- server_mock_ = NULL;
- delete listener_mock_;
- listener_mock_ = NULL;
- local_address_.clear();
- delete loop_;
- loop_ = NULL;
- base::DeleteFile(CFInstall_path_, false);
- base::DeleteFile(CFInstance_path_, false);
- if (temp_dir_.IsValid())
- EXPECT_TRUE(temp_dir_.Delete());
-}
-
-// static
-const base::FilePath&
-ChromeFrameTestWithWebServer::GetChromeUserDataDirectory() {
- if (!temp_dir_.IsValid()) {
- EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
- chrome_user_data_dir_ = temp_dir_.path().AppendASCII("User Data");
- }
- return chrome_user_data_dir_;
-}
-
-void ChromeFrameTestWithWebServer::SetUp() {
- // Make sure that we are not accidentally enabling gcf protocol.
- SetConfigBool(kAllowUnsafeURLs, false);
-
- server_mock().ClearResults();
- server_mock().ExpectAndServeAnyRequests(CFInvocation(CFInvocation::NONE));
- server_mock().set_expected_result("OK");
-}
-
-void ChromeFrameTestWithWebServer::TearDown() {
- CloseBrowser();
- loop().RunUntilIdle();
- testing::Mock::VerifyAndClear(listener_mock_);
- testing::Mock::VerifyAndClear(server_mock_);
-}
-
-bool ChromeFrameTestWithWebServer::LaunchBrowser(BrowserKind browser,
- const wchar_t* page) {
- std::wstring url = page;
-
- // We should resolve the URL only if it is a relative url.
- GURL parsed_url(base::WideToUTF8(page));
- if (!parsed_url.has_scheme()) {
- url = server_mock().Resolve(page);
- }
-
- browser_ = browser;
- if (browser == IE) {
- browser_handle_.Set(chrome_frame_test::LaunchIE(url));
- } else if (browser == CHROME) {
- const base::FilePath& user_data_dir = GetChromeUserDataDirectory();
- chrome_frame_test::OverrideDataDirectoryForThisTest(user_data_dir.value());
- browser_handle_.Set(chrome_frame_test::LaunchChrome(url, user_data_dir));
- } else {
- NOTREACHED();
- }
-
- return browser_handle_.IsValid();
-}
-
-void ChromeFrameTestWithWebServer::CloseBrowser() {
- if (!browser_handle_.IsValid())
- return;
-
- int attempts = 0;
- if (browser_ == IE) {
- attempts = chrome_frame_test::CloseAllIEWindows();
- } else {
- attempts = chrome_frame_test::CloseVisibleWindowsOnAllThreads(
- browser_handle_);
- }
-
- if (attempts > 0) {
- DWORD wait = ::WaitForSingleObject(browser_handle_, 20000);
- if (wait == WAIT_OBJECT_0) {
- browser_handle_.Close();
- } else {
- LOG(ERROR) << "WaitForSingleObject returned " << wait;
- }
- } else {
- LOG(ERROR) << "No attempts to close browser windows";
- }
-
- if (browser_handle_.IsValid()) {
- DWORD exit_code = 0;
- if (!::GetExitCodeProcess(browser_handle_, &exit_code) ||
- exit_code == STILL_ACTIVE) {
- LOG(ERROR) << L"Forcefully killing browser process. Exit:" << exit_code;
- base::KillProcess(browser_handle_, 0, true);
- }
- browser_handle_.Close();
- }
-}
-
-bool ChromeFrameTestWithWebServer::BringBrowserToTop() {
- return simulate_input::EnsureProcessInForeground(
- GetProcessId(browser_handle_));
-}
-
-bool ChromeFrameTestWithWebServer::WaitForTestToComplete(
- base::TimeDelta duration) {
- loop().RunFor(duration);
- return !loop().WasTimedOut();
-}
-
-bool ChromeFrameTestWithWebServer::WaitForOnLoad(int milliseconds) {
- return false;
-}
-
-const wchar_t kPostedResultSubstring[] = L"/writefile/";
-
-void ChromeFrameTestWithWebServer::SimpleBrowserTestExpectedResult(
- BrowserKind browser, const wchar_t* page, const char* result) {
- if (browser == IE && chrome_frame_test::GetInstalledIEVersion() >= IE_9) {
- LOG(INFO) << "Temporarily disabling IE9 web server tests. "
- "See http://crbug.com/143699";
- return;
- }
-
- int tries = 0;
- ExpectAndHandlePostedResult();
- // Retry tests that timeout once; see http://crbug.com/96449.
- do {
- // NOTE: Failed ASSERTs cause this function to exit immediately.
- // Don't take a snapshot on the first try.
- loop().set_snapshot_on_timeout(tries != 0);
- ASSERT_TRUE(LaunchBrowser(browser, page));
- if (WaitForTestToComplete(TestTimeouts::action_max_timeout())) {
- // The test exited without timing out. Confirm that the expected response
- // was posted and return.
- ASSERT_EQ(result, server_mock().posted_result());
- break;
- }
- ASSERT_EQ(std::string(), server_mock().posted_result())
- << "Test timed out yet provided a result.";
- ASSERT_EQ(0, tries++) << "Failing test due to two timeouts.";
- // Close the browser and try a second time.
- CloseBrowser();
- LOG(ERROR) << "Retrying test once since it timed out.";
- } while (true);
- loop().set_snapshot_on_timeout(true);
-}
-
-void ChromeFrameTestWithWebServer::SimpleBrowserTest(BrowserKind browser,
- const wchar_t* page) {
- SimpleBrowserTestExpectedResult(browser, page, "OK");
-}
-
-void ChromeFrameTestWithWebServer::ExpectAndHandlePostedResult() {
- EXPECT_CALL(listener_mock(), OnExpectedResponse())
- .WillRepeatedly(QUIT_LOOP_SOON(loop(),
- base::TimeDelta::FromMilliseconds(100)));
- server_mock().ExpectAndHandlePostedResult(CFInvocation(CFInvocation::NONE),
- kPostedResultSubstring);
-}
-
-void ChromeFrameTestWithWebServer::VersionTest(BrowserKind browser,
- const wchar_t* page) {
- base::FilePath plugin_path;
- PathService::Get(base::DIR_MODULE, &plugin_path);
- plugin_path = plugin_path.Append(kChromeFrameDllName);
-
- static FileVersionInfo* version_info =
- FileVersionInfo::CreateFileVersionInfo(plugin_path);
-
- std::wstring version;
- if (version_info)
- version = version_info->product_version();
-
- // If we can't find the Chrome Frame DLL in the src tree, we turn to
- // the directory where chrome is installed.
- if (!version_info) {
- BrowserDistribution* dist = BrowserDistribution::GetDistribution();
- Version ver_system;
- InstallUtil::GetChromeVersion(dist, true, &ver_system);
- Version ver_user;
- InstallUtil::GetChromeVersion(dist, false, &ver_system);
- ASSERT_TRUE(ver_system.IsValid() || ver_user.IsValid());
-
- bool system_install = ver_system.IsValid();
- base::FilePath cf_dll_path(installer::GetChromeInstallPath(system_install, dist));
- cf_dll_path = cf_dll_path.Append(base::UTF8ToWide(
- ver_system.IsValid() ? ver_system.GetString() : ver_user.GetString()));
- cf_dll_path = cf_dll_path.Append(kChromeFrameDllName);
- version_info = FileVersionInfo::CreateFileVersionInfo(cf_dll_path);
- if (version_info)
- version = version_info->product_version();
- }
-
- server_mock().set_expected_result(base::WideToUTF8(version));
-
- EXPECT_TRUE(version_info);
- EXPECT_FALSE(version.empty());
-
- SimpleBrowserTestExpectedResult(browser, page, WideToASCII(version).c_str());
-}
-
-// MockWebServer methods
-void MockWebServer::ExpectAndServeRequest(CFInvocation invocation,
- const std::wstring& url) {
- ExpectAndServeRequestWithCardinality(invocation, url, testing::Exactly(1));
-}
-
-void MockWebServer::ExpectAndServeRequestWithCardinality(
- CFInvocation invocation, const std::wstring& url,
- testing::Cardinality cardinality) {
- EXPECT_CALL(*this, Get(_, chrome_frame_test::UrlPathEq(url), _))
- .Times(cardinality)
- .WillRepeatedly(SendResponse(this, invocation));
-}
-
-void MockWebServer::ExpectAndServeRequestAllowCache(CFInvocation invocation,
- const std::wstring &url) {
- EXPECT_CALL(*this, Get(_, chrome_frame_test::UrlPathEq(url), _))
- .WillOnce(SendResponse(this, invocation));
-}
-
-void MockWebServer::ExpectAndServeRequestAnyNumberTimes(
- CFInvocation invocation, const std::wstring& path_prefix) {
- EXPECT_CALL(*this, Get(_, testing::StartsWith(path_prefix), _))
- .WillRepeatedly(SendResponse(this, invocation));
-}
-
-void MockWebServer::ExpectAndHandlePostedResult(
- CFInvocation invocation, const std::wstring& post_suffix) {
- EXPECT_CALL(*this, Post(_, testing::HasSubstr(post_suffix), _))
- .WillRepeatedly(HandlePostedResponseHelper(this, invocation));
-}
-
-void MockWebServer::HandlePostedResponse(
- test_server::ConfigurableConnection* connection,
- const test_server::Request& request) {
- posted_result_ = request.content();
- if (listener_ && posted_result_ == expected_result_)
- listener_->OnExpectedResponse();
- connection->Send("HTTP/1.1 200 OK\r\n", "");
-}
-
-void MockWebServer::SendResponseHelper(
- test_server::ConfigurableConnection* connection,
- const std::wstring& request_uri,
- const test_server::Request& request,
- CFInvocation invocation,
- bool add_no_cache_header) {
- static const wchar_t kEchoHeader[] = L"/echoheader?";
- if (request_uri.find(kEchoHeader) != std::wstring::npos) {
- std::wstring header = request_uri.substr(
- wcslen(kEchoHeader),
- request_uri.length() - wcslen(kEchoHeader));
-
- std::string header_value = http_utils::GetHttpHeaderFromHeaderList(
- base::WideToUTF8(header), request.headers());
- connection->Send(header_value, "");
- return;
- }
- // Convert |request_uri| to a path.
- std::wstring path = request_uri;
- size_t query_index = request_uri.find(L"?");
- if (query_index != std::string::npos) {
- path = path.erase(query_index);
- }
- base::FilePath file_path = root_dir_;
- if (path.size())
- file_path = file_path.Append(path.substr(1)); // remove first '/'
-
- std::string headers, body;
- std::string content_type;
- if (base::PathExists(file_path) &&
- !base::DirectoryExists(file_path)) {
- base::FilePath mock_http_headers(file_path.value() + L".mock-http-headers");
- if (base::PathExists(mock_http_headers)) {
- headers = GetMockHttpHeaders(mock_http_headers);
- content_type = http_utils::GetHttpHeaderFromHeaderList("Content-type",
- headers);
- } else {
- EXPECT_TRUE(net::GetMimeTypeFromFile(file_path, &content_type));
- VLOG(1) << "Going to send file (" << base::WideToUTF8(file_path.value())
- << ") with content type (" << content_type << ")";
- headers = CreateHttpHeaders(invocation, add_no_cache_header,
- content_type);
- }
-
- EXPECT_FALSE(headers.empty());
-
- EXPECT_TRUE(base::ReadFileToString(file_path, &body))
- << "Could not read file ("
- << base::WideToUTF8(file_path.value()) << ")";
- if (invocation.type() == CFInvocation::META_TAG &&
- StartsWithASCII(content_type, "text/html", false)) {
- EXPECT_TRUE(chrome_frame_test::AddCFMetaTag(&body)) << "Could not add "
- << "meta tag to HTML file.";
- }
- } else {
- VLOG(1) << "Going to send 404 for non-existent file ("
- << base::WideToUTF8(file_path.value()) << ")";
- headers = "HTTP/1.1 404 Not Found";
- body = "";
- }
- connection->Send(headers, body);
-}
-
-const wchar_t kPostMessageBasicPage[] = L"postmessage_basic_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_PostMessageBasic) {
- SimpleBrowserTest(IE, kPostMessageBasicPage);
-}
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabIE_MIMEFilterBasic) {
- const wchar_t kMIMEFilterBasicPage[] =
- L"chrome_frame_mime_filter_test.html";
-
- // If this test fails for IE8 then it is possible that prebinding is enabled.
- // A known workaround is to disable it until CF properly handles it.
- //
- // HKCU\Software\Microsoft\Internet Explorer\Main
- // Value name: EnablePreBinding (REG_DWORD)
- // Value: 0
- SimpleBrowserTest(IE, kMIMEFilterBasicPage);
-}
-
-// Times out: http://crbug.com/163728
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_WidgetModeIE_Resize) {
- SimpleBrowserTest(IE, L"chrome_frame_resize.html");
-}
-
-const wchar_t kNavigateURLAbsolutePage[] =
- L"navigateurl_absolute_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_NavigateURLAbsolute) {
- SimpleBrowserTest(IE, kNavigateURLAbsolutePage);
-}
-
-const wchar_t kNavigateURLRelativePage[] =
- L"navigateurl_relative_host.html";
-
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer,
- DISABLED_WidgetModeIE_NavigateURLRelative) {
- SimpleBrowserTest(IE, kNavigateURLRelativePage);
-}
-
-const wchar_t kNavigateSimpleObjectFocus[] = L"simple_object_focus.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_ObjectFocus) {
- SimpleBrowserTest(IE, kNavigateSimpleObjectFocus);
-}
-
-const wchar_t kiframeBasicPage[] = L"iframe_basic_host.html";
-
-
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_WidgetModeIE_iframeBasic) {
- SimpleBrowserTest(IE, kiframeBasicPage);
-}
-
-const wchar_t kSrcPropertyTestPage[] = L"src_property_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_SrcProperty) {
- SimpleBrowserTest(IE, kSrcPropertyTestPage);
-}
-
-const wchar_t kCFInstanceBasicTestPage[] = L"CFInstance_basic_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceBasic) {
- SimpleBrowserTest(IE, kCFInstanceBasicTestPage);
-}
-
-const wchar_t kCFISingletonPage[] = L"CFInstance_singleton_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceSingleton) {
- SimpleBrowserTest(IE, kCFISingletonPage);
-}
-
-const wchar_t kCFIDelayPage[] = L"CFInstance_delay_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceDelay) {
- SimpleBrowserTest(IE, kCFIDelayPage);
-}
-
-const wchar_t kCFIFallbackPage[] = L"CFInstance_fallback_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceFallback) {
- SimpleBrowserTest(IE, kCFIFallbackPage);
-}
-
-const wchar_t kCFINoSrcPage[] = L"CFInstance_no_src_host.html";
-
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_WidgetModeIE_CFInstanceNoSrc) {
- SimpleBrowserTest(IE, kCFINoSrcPage);
-}
-
-const wchar_t kCFIIfrOnLoadPage[] = L"CFInstance_iframe_onload_host.html";
-
-// disabled since it's unlikely that we care about this case
-TEST_F(ChromeFrameTestWithWebServer,
- DISABLED_WidgetModeIE_CFInstanceIfrOnLoad) {
- SimpleBrowserTest(IE, kCFIIfrOnLoadPage);
-}
-
-const wchar_t kCFIZeroSizePage[] = L"CFInstance_zero_size_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceZeroSize) {
- SimpleBrowserTest(IE, kCFIZeroSizePage);
-}
-
-const wchar_t kCFIIfrPostPage[] = L"CFInstance_iframe_post_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceIfrPost) {
- SimpleBrowserTest(IE, kCFIIfrPostPage);
-}
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeChrome_CFInstanceIfrPost) {
- SimpleBrowserTest(CHROME, kCFIIfrPostPage);
-}
-
-const wchar_t kCFIPostPage[] = L"CFInstance_post_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstancePost) {
- if (chrome_frame_test::GetInstalledIEVersion() == IE_9) {
- LOG(INFO) << "Not running test on Vista/Windows 7 with IE9";
- return;
- }
- SimpleBrowserTest(IE, kCFIPostPage);
-}
-
-// This test randomly fails on the ChromeFrame builder.
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeChrome_CFInstancePost) {
- SimpleBrowserTest(CHROME, kCFIPostPage);
-}
-
-const wchar_t kCFIRPCPage[] = L"CFInstance_rpc_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceRPC) {
- if (chrome_frame_test::GetInstalledIEVersion() == IE_9) {
- LOG(INFO) << "Not running test on Vista/Windows 7 with IE9";
- return;
- }
- SimpleBrowserTest(IE, kCFIRPCPage);
-}
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeChrome_CFInstanceRPC) {
- SimpleBrowserTest(CHROME, kCFIRPCPage);
-}
-
-const wchar_t kCFIRPCInternalPage[] =
- L"CFInstance_rpc_internal_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceRPCInternal) {
- if (chrome_frame_test::GetInstalledIEVersion() == IE_9) {
- LOG(INFO) << "Not running test on Vista/Windows 7 with IE9";
- return;
- }
- SimpleBrowserTest(IE, kCFIRPCInternalPage);
-}
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeChrome_CFInstanceRPCInternal) {
- SimpleBrowserTest(CHROME, kCFIRPCInternalPage);
-}
-
-const wchar_t kCFIDefaultCtorPage[] =
- L"CFInstance_default_ctor_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_CFInstanceDefaultCtor) {
- SimpleBrowserTest(IE, kCFIDefaultCtorPage);
-}
-
-const wchar_t kCFInstallBasicTestPage[] = L"CFInstall_basic.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabIE_CFInstallBasic) {
- SimpleBrowserTest(IE, kCFInstallBasicTestPage);
-}
-
-const wchar_t kCFInstallPlaceTestPage[] = L"CFInstall_place.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabIE_CFInstallPlace) {
- SimpleBrowserTest(IE, kCFInstallPlaceTestPage);
-}
-
-const wchar_t kCFInstallOverlayTestPage[] = L"CFInstall_overlay.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabIE_CFInstallOverlay) {
- SimpleBrowserTest(IE, kCFInstallOverlayTestPage);
-}
-
-const wchar_t kCFInstallDismissTestPage[] = L"CFInstall_dismiss.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabIE_CFInstallDismiss) {
- SimpleBrowserTest(IE, kCFInstallDismissTestPage);
-}
-
-const wchar_t kInitializeHiddenPage[] = L"initialize_hidden.html";
-// Times out: http://crbug.com/163728
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_WidgetModeIE_InitializeHidden) {
- SimpleBrowserTest(IE, kInitializeHiddenPage);
-}
-
-const wchar_t kFullTabHttpHeaderPage[] = L"chrome_frame_http_header.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_CFHttpHeaderBasic) {
- SimpleBrowserTest(IE, kFullTabHttpHeaderPage);
-}
-
-const wchar_t kFullTabHttpHeaderPageIFrame[] =
- L"chrome_frame_http_header_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_CFHttpHeaderIFrame) {
- SimpleBrowserTest(IE, kFullTabHttpHeaderPageIFrame);
-}
-
-const wchar_t kFullTabHttpHeaderPageFrameset[] =
- L"chrome_frame_http_header_frameset.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_CFHttpHeaderFrameSet) {
- SimpleBrowserTest(IE, kFullTabHttpHeaderPageFrameset);
-}
-
-const wchar_t kVersionPage[] = L"version.html";
-
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_WidgetModeIE_Version) {
- VersionTest(IE, kVersionPage);
-}
-
-const wchar_t kEventListenerPage[] = L"event_listener.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_EventListener) {
- SimpleBrowserTest(IE, kEventListenerPage);
-}
-
-const wchar_t kPrivilegedApisPage[] = L"privileged_apis_host.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_PrivilegedApis) {
- SimpleBrowserTest(IE, kPrivilegedApisPage);
-}
-
-const wchar_t kMetaTagPage[] = L"meta_tag.html";
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_MetaTag) {
- SimpleBrowserTest(IE, kMetaTagPage);
-}
-
-// Times out: http://crbug.com/163728
-const wchar_t kCFProtocolPage[] = L"cf_protocol.html";
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_CFProtocol) {
- // Temporarily enable gcf: protocol for this test.
- SetConfigBool(kAllowUnsafeURLs, true);
- SimpleBrowserTest(IE, kCFProtocolPage);
- SetConfigBool(kAllowUnsafeURLs, false);
-}
-
-const wchar_t kPersistentCookieTest[] =
- L"persistent_cookie_test_page.html";
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_PersistentCookieTest) {
- SimpleBrowserTest(IE, kPersistentCookieTest);
-}
-
-const wchar_t kNavigateOutPage[] = L"navigate_out.html";
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_NavigateOut) {
- SimpleBrowserTest(IE, kNavigateOutPage);
-}
-
-const wchar_t kReferrerMainTest[] = L"referrer_main.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_ReferrerTest) {
- SimpleBrowserTest(IE, kReferrerMainTest);
-}
-
-// Times out: http://crbug.com/163728
-const wchar_t kSubFrameTestPage[] = L"full_tab_sub_frame_main.html";
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_SubFrame) {
- SimpleBrowserTest(IE, kSubFrameTestPage);
-}
-
-const wchar_t kSubIFrameTestPage[] = L"full_tab_sub_iframe_main.html";
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_SubIFrame) {
- SimpleBrowserTest(IE, kSubIFrameTestPage);
-}
-
-const wchar_t kXMLHttpRequestTestUrl[] =
- L"xmlhttprequest_test.html";
-
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_XHRTest) {
- SimpleBrowserTest(IE, kXMLHttpRequestTestUrl);
-}
-
-const wchar_t kInstallFlowTestUrl[] =
- L"install_flow_test.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_InstallFlowTest) {
- if (base::win::GetVersion() < base::win::VERSION_VISTA) {
- ScopedChromeFrameRegistrar::UnregisterAtPath(
- GetChromeFrameBuildPath().value(),
- chrome_frame_test::GetTestBedType());
-
- ASSERT_TRUE(LaunchBrowser(IE, kInstallFlowTestUrl));
-
- loop().RunFor(kChromeFrameLongNavigationTimeout);
-
- ScopedChromeFrameRegistrar::RegisterAtPath(
- GetChromeFrameBuildPath().value(),
- chrome_frame_test::GetTestBedType());
-
- ExpectAndHandlePostedResult();
- loop().RunFor(kChromeFrameLongNavigationTimeout);
-
- chrome_frame_test::CloseAllIEWindows();
- ASSERT_EQ("OK", server_mock().posted_result());
- }
-}
-
-const wchar_t kMultipleCFInstancesTestUrl[] =
- L"multiple_cf_instances_main.html";
-
-TEST_F(ChromeFrameTestWithWebServer, WidgetModeIE_MultipleCFInstances) {
- SimpleBrowserTest(IE, kMultipleCFInstancesTestUrl);
-}
-
-const wchar_t kXHRHeaderTestUrl[] =
- L"xmlhttprequest_header_test.html";
-
-// Marking as flaky since it occasionally times out. crbug.com/127395.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_XHRHeaderTest) {
- SimpleBrowserTest(IE, kXHRHeaderTestUrl);
-}
-
-const wchar_t kDeleteCookieTest[] =
- L"fulltab_delete_cookie_test.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_DeleteCookieTest) {
- SimpleBrowserTest(IE, kDeleteCookieTest);
-}
-
-const wchar_t kAnchorUrlNavigate[] =
- L"fulltab_anchor_url_navigate.html#chrome_frame";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_AnchorUrlNavigateTest) {
- SimpleBrowserTest(IE, kAnchorUrlNavigate);
-}
-
-// Test whether POST-ing a form from an mshtml page to a CF page will cause
-// the request to get reissued. It should not.
-// https://code.google.com/p/chromium/issues/detail?id=143699
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_TestPostReissue) {
- // The order of pages in this array is assumed to be mshtml, cf, script.
- const wchar_t* kPages[] = {
- L"full_tab_post_mshtml.html",
- L"full_tab_post_target_cf.html",
- L"chrome_frame_tester_helpers.js",
- };
-
- SimpleWebServerTest server(local_address_, 46664);
- server.PopulateStaticFileListT<test_server::FileResponse>(kPages,
- arraysize(kPages), GetCFTestFilePath());
-
- ASSERT_TRUE(LaunchBrowser(IE, server.FormatHttpPath(kPages[0]).c_str()));
-
- loop().RunFor(kChromeFrameLongNavigationTimeout);
-
- const test_server::Request* request = NULL;
- server.FindRequest("/quit?OK", &request);
- ASSERT_TRUE(request != NULL);
- EXPECT_EQ("OK", request->arguments());
-
- if (request->arguments().compare("OK") == 0) {
- // Check how many requests we got for the cf page. Also expect it to be
- // a POST.
- int requests = server.GetRequestCountForPage(kPages[1], "POST");
- EXPECT_EQ(1, requests);
- }
-}
-
-// Test whether following a link from an mshtml page to a CF page will cause
-// multiple network requests. It should not.
-// Flaky, crbug.com/160497.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_TestMultipleGet) {
- // The order of pages in this array is assumed to be mshtml, cf, script.
- const wchar_t* kPages[] = {
- L"full_tab_get_mshtml.html",
- L"full_tab_get_target_cf.html",
- L"chrome_frame_tester_helpers.js",
- };
-
- SimpleWebServerTest server(local_address_, 46664);
-
- server.PopulateStaticFileListT<test_server::FileResponse>(kPages,
- arraysize(kPages), GetCFTestFilePath());
-
- ASSERT_TRUE(LaunchBrowser(IE, server.FormatHttpPath(kPages[0]).c_str()));
-
- loop().RunFor(kChromeFrameVeryLongNavigationTimeout);
-
- const test_server::Request* request = NULL;
- server.FindRequest("/quit?OK", &request);
- ASSERT_TRUE(request != NULL);
- EXPECT_EQ("OK", request->arguments());
-
- if (request->arguments().compare("OK") == 0) {
- // Check how many requests we got for the cf page and check that it was
- // a GET.
- int requests = server.GetRequestCountForPage(kPages[1], "GET");
- EXPECT_EQ(1, requests);
- }
-}
-
-const wchar_t kSetCookieTest[] =
- L"fulltab_set_cookie_test.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_SetCookieTest) {
- SimpleBrowserTest(IE, kSetCookieTest);
-}
-
-const wchar_t kXHRConditionalHeaderTestUrl[] =
- L"xmlhttprequest_conditional_header_test.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_XHRConditionalHeaderTest) {
- SimpleBrowserTest(IE, kXHRConditionalHeaderTestUrl);
-}
-
-const wchar_t kWindowCloseTestUrl[] =
- L"window_close.html";
-
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_WindowClose) {
- SimpleBrowserTest(IE, kWindowCloseTestUrl);
-}
-
-std::string GetHeaderValue(const std::string& headers,
- const char* header_name) {
- net::HttpUtil::HeadersIterator it(headers.begin(), headers.end(),
- "\r\n");
- while (it.GetNext()) {
- if (lstrcmpiA(it.name().c_str(), header_name) == 0) {
- return it.values();
- }
- }
- return "";
-}
-
-// Specialized implementation of test_server::FileResponse that supports
-// adding the request's User-Agent header to the returned document.
-// The class also supports $request_id$ which will be replaced with an
-// id that's incremented each time the response is sent over a socket.
-class UaTemplateFileResponse : public test_server::FileResponse {
- public:
- typedef test_server::FileResponse SuperClass;
-
- UaTemplateFileResponse(const char* request_path,
- const base::FilePath& file_path)
- : test_server::FileResponse(request_path, file_path), request_id_(0) {
- }
-
- virtual bool Matches(const test_server::Request& r) const {
- bool ret = SuperClass::Matches(r);
- if (ret)
- ua_ = GetHeaderValue(r.headers(), "User-Agent");
- return ret;
- }
-
- virtual size_t ContentLength() const {
- const char kRequestIdTemplate[] = "$request_id$";
- const char kUserAgentTemplate[] = "$UA$";
-
- size_t length = SuperClass::ContentLength();
- DCHECK(length);
- content_.assign(reinterpret_cast<const char*>(file_->data()),
- file_->length());
- size_t i = content_.find(kUserAgentTemplate);
- if (i != std::string::npos)
- content_.replace(i, arraysize(kUserAgentTemplate) - 1, ua_);
- i = content_.find(kRequestIdTemplate);
- if (i != std::string::npos) {
- content_.replace(i, arraysize(kRequestIdTemplate) - 1,
- base::StringPrintf("%i", request_id_));
- }
- return content_.length();
- }
-
- virtual void WriteContents(net::StreamListenSocket* socket) const {
- DCHECK(content_.length());
- socket->Send(content_.c_str(), content_.length(), false);
- request_id_++;
- }
-
- protected:
- mutable std::string ua_;
- mutable std::string content_;
- mutable int request_id_;
-};
-
-// This test simulates a URL that on first request returns a document
-// that should be rendered in mshtml, then pops up a sign-in page that
-// after signing in, refreshes the original page that should then return
-// a page that needs to be rendered in GCF.
-//
-// This test currently fails because GCF does not add the chromeframe header
-// to requests that mshtml initiates via IInternetSession::CreateBinding.
-TEST_F(ChromeFrameTestWithWebServer, DISABLED_FullTabModeIE_RefreshMshtmlTest) {
- const wchar_t* kPages[] = {
- L"mshtml_refresh_test.html",
- L"mshtml_refresh_test_popup.html",
- };
-
- SimpleWebServerTest server(local_address_, 46664);
- server.PopulateStaticFileListT<UaTemplateFileResponse>(kPages,
- arraysize(kPages), GetCFTestFilePath());
-
- ASSERT_TRUE(LaunchBrowser(IE, server.FormatHttpPath(kPages[0]).c_str()));
-
- loop().RunFor(kChromeFrameLongNavigationTimeout);
-
- test_server::SimpleWebServer* ws = server.web_server();
- const test_server::ConnectionList& connections = ws->connections();
- test_server::ConnectionList::const_iterator it = connections.begin();
- int requests_for_first_page = 0;
- for (; it != connections.end(); ++it) {
- test_server::Connection* c = (*it);
- const test_server::Request& r = c->request();
- if (!r.path().empty() &&
- base::ASCIIToWide(r.path().substr(1)).compare(kPages[0]) == 0) {
- requests_for_first_page++;
- std::string ua(GetHeaderValue(r.headers(), "User-Agent"));
- EXPECT_NE(std::string::npos, ua.find("chromeframe"));
- }
- }
- EXPECT_GT(requests_for_first_page, 1);
-}
-
-// See bug 36694 for details. http://crbug.com/36694
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_TestDownloadFromForm) {
- chrome_frame_test::MockWindowObserver win_observer_mock;
- win_observer_mock.WatchWindow("File Download", "");
- win_observer_mock.WatchWindow("View Downloads*", "");
-
- // The content of our HTML test page. This will be returned whenever
- // we reply to a GET request.
- static const char kHtml[] =
- "<html><head>\n"
- "<title>ChromeFrame Form Download Test</title>\n"
- // To see how this test runs with only IE (no CF in the picture), comment
- // out this meta tag. The outcome of the test should be identical.
- "<meta http-equiv=\"X-UA-Compatible\" content=\"chrome=1\" />\n"
- "</head>\n"
- "<script language=\"javascript\">\n"
- "function SubmitForm() {\n"
- " var form = document.forms['myform'];\n"
- " form.action = document.location;\n"
- " form.submit();\n"
- " return true;\n"
- "}\n"
- "</script>\n"
- "<body onload=\"SubmitForm();\">\n"
- "<form method=\"post\" action=\"foo.html\" id=\"myform\">\n"
- " <input type=\"hidden\" name=\"Field1\" value=\"myvalue\" />\n"
- " <input type=\"button\" name=\"btn\" value=\"Test Download\" "
- "onclick=\"return SubmitForm();\" id=\"Button1\"/>\n"
- "</form></body></html>\n";
-
- // The content of our HTML test page. This will be returned whenever
- // we reply to a POST request.
- static const char kText[] =
- "This is a text file (in case you were wondering).";
-
- // This http response class will return an HTML document that contains
- // a form whenever it receives a GET request. Whenever it gets a POST
- // request, it will respond with a text file that needs to be downloaded
- // (content-disposition is "attachment").
- class CustomResponse : public test_server::ResponseForPath {
- public:
- explicit CustomResponse(const char* path)
- : test_server::ResponseForPath(path), is_post_(false),
- post_requests_(0), get_requests_(0) {
- }
-
- virtual bool GetContentType(std::string* content_type) const {
- DCHECK(!is_post_);
- return false;
- }
-
- virtual size_t ContentLength() const {
- DCHECK(!is_post_);
- return sizeof(kHtml) - 1;
- }
-
- virtual bool GetCustomHeaders(std::string* headers) const {
- if (!is_post_)
- return false;
- *headers = base::StringPrintf(
- "HTTP/1.1 200 OK\r\n"
- "Content-Disposition: attachment;filename=\"test.txt\"\r\n"
- "Content-Type: application/text\r\n"
- "Connection: close\r\n"
- "Content-Length: %i\r\n\r\n", sizeof(kText) - 1);
- return true;
- }
-
- virtual bool Matches(const test_server::Request& r) const {
- bool match = __super::Matches(r);
- if (match) {
- is_post_ = LowerCaseEqualsASCII(r.method().c_str(), "post");
- }
- return match;
- }
-
- virtual void WriteContents(net::StreamListenSocket* socket) const {
- if (is_post_) {
- socket->Send(kText, sizeof(kText) - 1, false);
- } else {
- socket->Send(kHtml, sizeof(kHtml) - 1, false);
- }
- }
-
- virtual void IncrementAccessCounter() {
- __super::IncrementAccessCounter();
- if (is_post_) {
- post_requests_++;
- } else {
- get_requests_++;
- }
- }
-
- size_t get_request_count() const {
- return get_requests_;
- }
-
- size_t post_request_count() const {
- return get_requests_;
- }
-
- protected:
- mutable bool is_post_;
- size_t post_requests_;
- size_t get_requests_;
- };
-
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .Times(testing::AtMost(1))
- .WillOnce(chrome_frame_test::DoCloseWindow());
-
- EXPECT_CALL(win_observer_mock, OnWindowClose(_))
- .Times(testing::AtMost(1))
- .WillOnce(QUIT_LOOP(loop()));
-
- SimpleWebServerTest server(local_address_, 46664);
- CustomResponse* response = new CustomResponse("/form.html");
- server.web_server()->AddResponse(response);
-
- std::wstring url(server.FormatHttpPath(L"form.html"));
-
- ASSERT_TRUE(LaunchBrowser(IE, url.c_str()));
- loop().RunFor(kChromeFrameLongNavigationTimeout);
-
- EXPECT_EQ(1, response->get_request_count());
- EXPECT_EQ(1, response->post_request_count());
-}
-
-// This test loads a large page and ensures that the full page contents are
-// actually loaded via a self-validating HTML page. This is done due to a bug
-// whereby the middle of the response stream would sometimes be truncated when
-// loading a CF document. See http://crbug.com/178421 for details.
-TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_LargePageLoad) {
- const wchar_t kLargePageLoadPage[] =
- L"chrome_frame_large_page.html";
-
- SimpleBrowserTest(IE, kLargePageLoadPage);
-}
« no previous file with comments | « chrome_frame/test/test_with_web_server.h ('k') | chrome_frame/test/ui_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698