| Index: chrome_frame/test/test_server_test.cc
|
| diff --git a/chrome_frame/test/test_server_test.cc b/chrome_frame/test/test_server_test.cc
|
| deleted file mode 100644
|
| index 92d8e0e9f2abb9e1968f7c8d911a34c8fa6c958d..0000000000000000000000000000000000000000
|
| --- a/chrome_frame/test/test_server_test.cc
|
| +++ /dev/null
|
| @@ -1,197 +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 <windows.h>
|
| -#include <wininet.h>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/bind.h"
|
| -#include "base/path_service.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "base/win/scoped_handle.h"
|
| -#include "chrome_frame/test/test_server.h"
|
| -#include "net/base/request_priority.h"
|
| -#include "net/cookies/cookie_monster.h"
|
| -#include "net/disk_cache/disk_cache.h"
|
| -#include "net/dns/host_resolver_proc.h"
|
| -#include "net/http/http_auth_handler_factory.h"
|
| -#include "net/http/http_cache.h"
|
| -#include "net/http/http_network_session.h"
|
| -#include "net/proxy/proxy_service.h"
|
| -#include "net/url_request/url_request.h"
|
| -#include "net/url_request/url_request_test_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -class TestServerTest: public testing::Test {
|
| - protected:
|
| - virtual void SetUp() {
|
| - PathService::Get(base::DIR_SOURCE_ROOT, &source_path_);
|
| - source_path_ = source_path_.Append(FILE_PATH_LITERAL("chrome_frame"));
|
| - }
|
| - virtual void TearDown() {
|
| - }
|
| -
|
| - public:
|
| - const base::FilePath& source_path() const {
|
| - return source_path_;
|
| - }
|
| -
|
| - protected:
|
| - base::FilePath source_path_;
|
| -};
|
| -
|
| -namespace {
|
| -
|
| -class ScopedInternet {
|
| - public:
|
| - explicit ScopedInternet(HINTERNET handle)
|
| - : h_(handle) {
|
| - }
|
| - ~ScopedInternet() {
|
| - if (h_) {
|
| - InternetCloseHandle(h_);
|
| - }
|
| - }
|
| -
|
| - operator HINTERNET() {
|
| - return h_;
|
| - }
|
| -
|
| - protected:
|
| - HINTERNET h_;
|
| -};
|
| -
|
| -class TestURLRequest : public net::URLRequest {
|
| - public:
|
| - TestURLRequest(const GURL& url,
|
| - net::RequestPriority priority,
|
| - Delegate* delegate,
|
| - const net::TestURLRequestContext* context)
|
| - : net::URLRequest(url, priority, delegate, context) {}
|
| -};
|
| -
|
| -class UrlTaskChain {
|
| - public:
|
| - UrlTaskChain(const std::string& url, UrlTaskChain* next)
|
| - : url_(url), next_(next) {
|
| - }
|
| -
|
| - void Run() {
|
| - EXPECT_EQ(0, delegate_.response_started_count());
|
| -
|
| - base::MessageLoopForIO loop;
|
| -
|
| - net::TestURLRequestContext context;
|
| - TestURLRequest r(GURL(url_), net::DEFAULT_PRIORITY, &delegate_, &context);
|
| - r.Start();
|
| - EXPECT_TRUE(r.is_pending());
|
| -
|
| - base::MessageLoop::current()->Run();
|
| -
|
| - EXPECT_EQ(1, delegate_.response_started_count());
|
| - EXPECT_FALSE(delegate_.received_data_before_response());
|
| - EXPECT_NE(0, delegate_.bytes_received());
|
| - }
|
| -
|
| - UrlTaskChain* next() const {
|
| - return next_;
|
| - }
|
| -
|
| - const std::string& response() const {
|
| - return delegate_.data_received();
|
| - }
|
| -
|
| - protected:
|
| - std::string url_;
|
| - net::TestDelegate delegate_;
|
| - UrlTaskChain* next_;
|
| -};
|
| -
|
| -DWORD WINAPI FetchUrl(void* param) {
|
| - UrlTaskChain* task = reinterpret_cast<UrlTaskChain*>(param);
|
| - while (task != NULL) {
|
| - task->Run();
|
| - task = task->next();
|
| - }
|
| -
|
| - return 0;
|
| -}
|
| -
|
| -struct QuitMessageHit {
|
| - explicit QuitMessageHit(base::MessageLoopForUI* loop)
|
| - : loop_(loop), hit_(false) {}
|
| -
|
| - base::MessageLoopForUI* loop_;
|
| - bool hit_;
|
| -};
|
| -
|
| -void QuitMessageLoop(QuitMessageHit* msg) {
|
| - msg->hit_ = true;
|
| - msg->loop_->PostTask(FROM_HERE, base::MessageLoop::QuitClosure());
|
| -}
|
| -
|
| -} // end namespace
|
| -
|
| -TEST_F(TestServerTest, TestServer) {
|
| - // The web server needs a loop to exist on this thread during construction
|
| - // the loop must be created before we construct the server.
|
| - base::MessageLoopForUI loop;
|
| -
|
| - test_server::SimpleWebServer server(1337);
|
| - test_server::SimpleWebServer redirected_server(server.host(), 1338);
|
| - test_server::SimpleResponse person("/person", "Guthrie Govan!");
|
| - server.AddResponse(&person);
|
| - test_server::FileResponse file("/file", source_path().Append(
|
| - FILE_PATH_LITERAL("CFInstance.js")));
|
| - server.AddResponse(&file);
|
| - test_server::RedirectResponse redir(
|
| - "/redir",
|
| - base::StringPrintf("http://%s:1338/dest",
|
| - redirected_server.host().c_str()));
|
| - server.AddResponse(&redir);
|
| -
|
| - test_server::SimpleResponse dest("/dest", "Destination");
|
| - redirected_server.AddResponse(&dest);
|
| -
|
| - // We should never hit this, but it's our way to break out of the test if
|
| - // things start hanging.
|
| - QuitMessageHit quit_msg(&loop);
|
| - loop.PostDelayedTask(FROM_HERE, base::Bind(QuitMessageLoop, &quit_msg),
|
| - base::TimeDelta::FromSeconds(10));
|
| -
|
| - UrlTaskChain quit_task(
|
| - base::StringPrintf("http://%s:1337/quit", server.host().c_str()), NULL);
|
| - UrlTaskChain fnf_task(
|
| - base::StringPrintf("http://%s:1337/404", server.host().c_str()),
|
| - &quit_task);
|
| - UrlTaskChain person_task(
|
| - base::StringPrintf("http://%s:1337/person", server.host().c_str()),
|
| - &fnf_task);
|
| - UrlTaskChain file_task(
|
| - base::StringPrintf("http://%s:1337/file", server.host().c_str()),
|
| - &person_task);
|
| - UrlTaskChain redir_task(
|
| - base::StringPrintf("http://%s:1337/redir", server.host().c_str()),
|
| - &file_task);
|
| -
|
| - DWORD tid = 0;
|
| - base::win::ScopedHandle worker(::CreateThread(
|
| - NULL, 0, FetchUrl, &redir_task, 0, &tid));
|
| - loop.base::MessageLoop::Run();
|
| -
|
| - EXPECT_FALSE(quit_msg.hit_);
|
| - if (!quit_msg.hit_) {
|
| - EXPECT_EQ(::WaitForSingleObject(worker, 10 * 1000), WAIT_OBJECT_0);
|
| -
|
| - EXPECT_EQ(person.accessed(), 1);
|
| - EXPECT_EQ(file.accessed(), 1);
|
| - EXPECT_EQ(redir.accessed(), 1);
|
| -
|
| - EXPECT_TRUE(person_task.response().find("Guthrie") != std::string::npos);
|
| - EXPECT_TRUE(file_task.response().find("function") != std::string::npos);
|
| - EXPECT_TRUE(redir_task.response().find("Destination") != std::string::npos);
|
| - } else {
|
| - ::TerminateThread(worker, ~0);
|
| - }
|
| -}
|
|
|