summaryrefslogtreecommitdiffstats
path: root/net/test
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-28 17:00:37 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-28 17:00:37 +0000
commit0d31fbc5d7c041f9ddc0f46faf16b0123c5c2bb3 (patch)
treec3c60822caeabb8382fa5be457d81408775e21ff /net/test
parent96da69d1ae43ad3feff0ac96a280d3212467f9b5 (diff)
downloadchromium_src-0d31fbc5d7c041f9ddc0f46faf16b0123c5c2bb3.zip
chromium_src-0d31fbc5d7c041f9ddc0f46faf16b0123c5c2bb3.tar.gz
chromium_src-0d31fbc5d7c041f9ddc0f46faf16b0123c5c2bb3.tar.bz2
Revert "Revert 202112 "GTTF: Convert most tests in content to use Embedd...""
This is a resubmit of https://codereview.chromium.org/15505003 TBR=avi BUG=96594 Review URL: https://codereview.chromium.org/15740023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202586 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/test')
-rw-r--r--net/test/embedded_test_server/embedded_test_server.cc43
-rw-r--r--net/test/embedded_test_server/embedded_test_server.h4
-rw-r--r--net/test/embedded_test_server/embedded_test_server_unittest.cc4
-rw-r--r--net/test/embedded_test_server/http_response.cc9
-rw-r--r--net/test/embedded_test_server/http_response.h26
-rw-r--r--net/test/embedded_test_server/http_response_unittest.cc2
6 files changed, 53 insertions, 35 deletions
diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc
index ea1d8c5..95ccbcb 100644
--- a/net/test/embedded_test_server/embedded_test_server.cc
+++ b/net/test/embedded_test_server/embedded_test_server.cc
@@ -25,36 +25,31 @@ namespace test_server {
namespace {
-// Callback to handle requests with default predefined response for requests
-// matching the address |url|.
-scoped_ptr<HttpResponse> HandleDefaultRequest(const GURL& url,
- const HttpResponse& response,
- const HttpRequest& request) {
- const GURL request_url = url.Resolve(request.relative_url);
- if (url.path() != request_url.path())
- return scoped_ptr<HttpResponse>(NULL);
- return scoped_ptr<HttpResponse>(new HttpResponse(response));
-}
-
// Handles |request| by serving a file from under |server_root|.
-scoped_ptr<HttpResponse> HandleFileRequest(const base::FilePath& server_root,
- const HttpRequest& request) {
+scoped_ptr<HttpResponse> HandleFileRequest(
+ const base::FilePath& server_root,
+ const HttpRequest& request) {
// This is a test-only server. Ignore I/O thread restrictions.
base::ThreadRestrictions::ScopedAllowIO allow_io;
// Trim the first byte ('/').
std::string request_path(request.relative_url.substr(1));
+ // Remove the query string if present.
+ size_t query_pos = request_path.find('?');
+ if (query_pos != std::string::npos)
+ request_path = request_path.substr(0, query_pos);
+
std::string file_contents;
if (!file_util::ReadFileToString(
server_root.AppendASCII(request_path), &file_contents)) {
return scoped_ptr<HttpResponse>(NULL);
}
- scoped_ptr<HttpResponse> http_response(new HttpResponse);
+ scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse);
http_response->set_code(net::test_server::SUCCESS);
http_response->set_content(file_contents);
- return http_response.Pass();
+ return http_response.PassAs<HttpResponse>();
}
} // namespace
@@ -157,20 +152,26 @@ void EmbeddedTestServer::HandleRequest(HttpConnection* connection,
scoped_ptr<HttpRequest> request) {
DCHECK(io_thread_->BelongsToCurrentThread());
+ bool request_handled = false;
+
for (size_t i = 0; i < request_handlers_.size(); ++i) {
scoped_ptr<HttpResponse> response =
request_handlers_[i].Run(*request.get());
if (response.get()) {
connection->SendResponse(response.Pass());
- return;
+ request_handled = true;
+ break;
}
}
- LOG(WARNING) << "Request not handled. Returning 404: "
- << request->relative_url;
- scoped_ptr<HttpResponse> not_found_response(new HttpResponse());
- not_found_response->set_code(NOT_FOUND);
- connection->SendResponse(not_found_response.Pass());
+ if (!request_handled) {
+ LOG(WARNING) << "Request not handled. Returning 404: "
+ << request->relative_url;
+ scoped_ptr<BasicHttpResponse> not_found_response(new BasicHttpResponse);
+ not_found_response->set_code(NOT_FOUND);
+ connection->SendResponse(
+ not_found_response.PassAs<HttpResponse>());
+ }
// Drop the connection, since we do not support multiple requests per
// connection.
diff --git a/net/test/embedded_test_server/embedded_test_server.h b/net/test/embedded_test_server/embedded_test_server.h
index 6966227..2cf9cb2 100644
--- a/net/test/embedded_test_server/embedded_test_server.h
+++ b/net/test/embedded_test_server/embedded_test_server.h
@@ -77,8 +77,8 @@ class HttpListenSocket : public TCPListenSocket {
//
class EmbeddedTestServer : public StreamListenSocket::Delegate {
public:
- typedef base::Callback<scoped_ptr<HttpResponse>(const HttpRequest& request)>
- HandleRequestCallback;
+ typedef base::Callback<scoped_ptr<HttpResponse>(
+ const HttpRequest& request)> HandleRequestCallback;
// Creates a http test server. |io_thread| is a task runner
// with IO message loop, used as a backend thread.
diff --git a/net/test/embedded_test_server/embedded_test_server_unittest.cc b/net/test/embedded_test_server/embedded_test_server_unittest.cc
index 33f1ff4..c0eb4ed 100644
--- a/net/test/embedded_test_server/embedded_test_server_unittest.cc
+++ b/net/test/embedded_test_server/embedded_test_server_unittest.cc
@@ -91,11 +91,11 @@ class EmbeddedTestServerTest : public testing::Test,
GURL absolute_url = server_->GetURL(request.relative_url);
if (absolute_url.path() == path) {
- scoped_ptr<HttpResponse> http_response(new HttpResponse);
+ scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse);
http_response->set_code(code);
http_response->set_content(content);
http_response->set_content_type(content_type);
- return http_response.Pass();
+ return http_response.PassAs<HttpResponse>();
}
return scoped_ptr<HttpResponse>();
diff --git a/net/test/embedded_test_server/http_response.cc b/net/test/embedded_test_server/http_response.cc
index 2c05c06..4f2bfe8 100644
--- a/net/test/embedded_test_server/http_response.cc
+++ b/net/test/embedded_test_server/http_response.cc
@@ -11,13 +11,16 @@
namespace net {
namespace test_server {
-HttpResponse::HttpResponse() : code_(SUCCESS) {
+HttpResponse::~HttpResponse() {
}
-HttpResponse::~HttpResponse() {
+BasicHttpResponse::BasicHttpResponse() : code_(SUCCESS) {
+}
+
+BasicHttpResponse::~BasicHttpResponse() {
}
-std::string HttpResponse::ToResponseString() const {
+std::string BasicHttpResponse::ToResponseString() const {
// Response line with headers.
std::string response_builder;
diff --git a/net/test/embedded_test_server/http_response.h b/net/test/embedded_test_server/http_response.h
index b597cce..141c8cb 100644
--- a/net/test/embedded_test_server/http_response.h
+++ b/net/test/embedded_test_server/http_response.h
@@ -9,6 +9,7 @@
#include <string>
#include "base/basictypes.h"
+#include "base/compiler_specific.h"
namespace net {
namespace test_server {
@@ -24,12 +25,23 @@ enum ResponseCode {
ACCESS_DENIED = 500,
};
-// Respresents a HTTP response. Since it can be big, it may be better to use
-// scoped_ptr to pass it instead of copying.
-class HttpResponse {
+// Interface for HTTP response implementations.
+class HttpResponse{
public:
- HttpResponse();
- ~HttpResponse();
+ virtual ~HttpResponse();
+
+ // Returns raw contents to be written to the network socket
+ // in response. If you intend to make this a valid HTTP response,
+ // it should start with "HTTP/x.x" line, followed by response headers.
+ virtual std::string ToResponseString() const = 0;
+};
+
+// This class is used to handle basic HTTP responses with commonly used
+// response headers such as "Content-Type".
+class BasicHttpResponse : public HttpResponse {
+ public:
+ BasicHttpResponse();
+ virtual ~BasicHttpResponse();
// The response code.
ResponseCode code() const { return code_; }
@@ -56,13 +68,15 @@ class HttpResponse {
}
// Generates and returns a http response string.
- std::string ToResponseString() const;
+ virtual std::string ToResponseString() const OVERRIDE;
private:
ResponseCode code_;
std::string content_;
std::string content_type_;
std::map<std::string, std::string> custom_headers_;
+
+ DISALLOW_COPY_AND_ASSIGN(BasicHttpResponse);
};
} // namespace test_server
diff --git a/net/test/embedded_test_server/http_response_unittest.cc b/net/test/embedded_test_server/http_response_unittest.cc
index a56feee..82f5112 100644
--- a/net/test/embedded_test_server/http_response_unittest.cc
+++ b/net/test/embedded_test_server/http_response_unittest.cc
@@ -10,7 +10,7 @@ namespace net {
namespace test_server {
TEST(HttpResponseTest, GenerateResponse) {
- HttpResponse response;
+ BasicHttpResponse response;
response.set_code(SUCCESS);
response.set_content("Sample content - Hello world!");
response.set_content_type("text/plain");