| Index: components/cronet/ios/test/test_server.cc
|
| diff --git a/components/cronet/ios/test/test_server.cc b/components/cronet/ios/test/test_server.cc
|
| index 460d18d82a9cbba2dda62c336f87f08170723868..1d549a079fb2768e82d1586ac6a53fe7891c3e5e 100644
|
| --- a/components/cronet/ios/test/test_server.cc
|
| +++ b/components/cronet/ios/test/test_server.cc
|
| @@ -16,6 +16,7 @@
|
| namespace {
|
|
|
| const char kEchoHeaderPath[] = "/EchoHeader?";
|
| +const char kSetCookiePath[] = "/SetCookie?";
|
|
|
| std::unique_ptr<net::EmbeddedTestServer> g_test_server;
|
|
|
| @@ -23,19 +24,43 @@ std::unique_ptr<net::test_server::HttpResponse> EchoHeaderInRequest(
|
| const net::test_server::HttpRequest& request) {
|
| std::string header_name;
|
| std::string header_value;
|
| - if (base::StartsWith(request.relative_url, kEchoHeaderPath,
|
| - base::CompareCase::INSENSITIVE_ASCII)) {
|
| - header_name = request.relative_url.substr(strlen(kEchoHeaderPath));
|
| - }
|
| + DCHECK(base::StartsWith(request.relative_url, kEchoHeaderPath,
|
| + base::CompareCase::INSENSITIVE_ASCII));
|
| +
|
| + header_name = request.relative_url.substr(strlen(kEchoHeaderPath));
|
| auto it = request.headers.find(header_name);
|
| if (it != request.headers.end())
|
| header_value = it->second;
|
| - std::unique_ptr<net::test_server::BasicHttpResponse> http_response(
|
| - new net::test_server::BasicHttpResponse());
|
| + auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
|
| http_response->set_content(header_value);
|
| return std::move(http_response);
|
| }
|
|
|
| +std::unique_ptr<net::test_server::HttpResponse> SetAndEchoCookieInResponse(
|
| + const net::test_server::HttpRequest& request) {
|
| + std::string cookie_line;
|
| + DCHECK(base::StartsWith(request.relative_url, kSetCookiePath,
|
| + base::CompareCase::INSENSITIVE_ASCII));
|
| + cookie_line = request.relative_url.substr(strlen(kSetCookiePath));
|
| + auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
|
| + http_response->set_content(cookie_line);
|
| + http_response->AddCustomHeader("Set-Cookie", cookie_line);
|
| + return std::move(http_response);
|
| +}
|
| +
|
| +std::unique_ptr<net::test_server::HttpResponse> CronetTestRequestHandler(
|
| + const net::test_server::HttpRequest& request) {
|
| + if (base::StartsWith(request.relative_url, kEchoHeaderPath,
|
| + base::CompareCase::INSENSITIVE_ASCII)) {
|
| + return EchoHeaderInRequest(request);
|
| + }
|
| + if (base::StartsWith(request.relative_url, kSetCookiePath,
|
| + base::CompareCase::INSENSITIVE_ASCII)) {
|
| + return SetAndEchoCookieInResponse(request);
|
| + }
|
| + return base::MakeUnique<net::test_server::BasicHttpResponse>();
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace cronet {
|
| @@ -45,7 +70,7 @@ bool TestServer::Start() {
|
| DCHECK(!g_test_server.get());
|
| g_test_server = base::MakeUnique<net::EmbeddedTestServer>(
|
| net::EmbeddedTestServer::TYPE_HTTP);
|
| - g_test_server->RegisterRequestHandler(base::Bind(&EchoHeaderInRequest));
|
| + g_test_server->RegisterRequestHandler(base::Bind(&CronetTestRequestHandler));
|
| CHECK(g_test_server->Start());
|
| return true;
|
| }
|
| @@ -60,4 +85,9 @@ std::string TestServer::GetEchoHeaderURL(const std::string& header_name) {
|
| return g_test_server->GetURL(kEchoHeaderPath + header_name).spec();
|
| }
|
|
|
| +std::string TestServer::GetSetCookieURL(const std::string& cookie_line) {
|
| + DCHECK(g_test_server);
|
| + return g_test_server->GetURL(kSetCookiePath + cookie_line).spec();
|
| +}
|
| +
|
| } // namespace cronet
|
|
|