Chromium Code Reviews| Index: ios/web/public/test/response_providers/html_response_provider.mm |
| diff --git a/ios/web/public/test/response_providers/html_response_provider.mm b/ios/web/public/test/response_providers/html_response_provider.mm |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..508713b49092b1729599ef504f99b8180c5b5c44 |
| --- /dev/null |
| +++ b/ios/web/public/test/response_providers/html_response_provider.mm |
| @@ -0,0 +1,99 @@ |
| +// Copyright 2016 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. |
|
baxley
2016/04/15 23:57:48
This file is being moved upstream so it can be use
|
| + |
| +#include "ios/web/public/test/response_providers/html_response_provider.h" |
| + |
| +namespace { |
| +std::map<GURL, HtmlResponseProviderImpl::Response> BuildResponseMap( |
| + const std::map<GURL, std::string>& responses_body, |
| + scoped_refptr<net::HttpResponseHeaders> headers) { |
| + std::map<GURL, HtmlResponseProviderImpl::Response> responses; |
| + for (const std::pair<const GURL, std::string>& pair : responses_body) { |
| + responses.insert(std::make_pair( |
| + pair.first, HtmlResponseProviderImpl::Response(pair.second, headers))); |
| + } |
| + return responses; |
| +} |
| +} // namespace |
| + |
| +HtmlResponseProviderImpl::Response::Response( |
| + const std::string& body, |
| + const scoped_refptr<net::HttpResponseHeaders>& headers) |
| + : body(body), headers(headers) {} |
| + |
| +HtmlResponseProviderImpl::Response::Response() : body(), headers() {} |
| + |
| +HtmlResponseProviderImpl::Response::~Response() {} |
| + |
| +HtmlResponseProviderImpl::HtmlResponseProviderImpl() : responses_() {} |
| + |
| +// static |
| +HtmlResponseProviderImpl::Response |
| +HtmlResponseProviderImpl::GetRedirectResponse( |
| + const GURL& destination_url, |
| + const net::HttpStatusCode& http_status) { |
| + auto response_headers = web::ResponseProvider::GetRedirectResponseHeaders( |
| + destination_url.spec(), http_status); |
| + return HtmlResponseProviderImpl::Response("", response_headers); |
| +} |
| + |
| +// static |
| +HtmlResponseProviderImpl::Response HtmlResponseProviderImpl::GetSimpleResponse( |
| + const std::string& body) { |
| + auto response_headers = |
| + web::ResponseProvider::GetResponseHeaders("text/html", net::HTTP_OK); |
| + return HtmlResponseProviderImpl::Response(body, response_headers); |
| +} |
| + |
| +HtmlResponseProviderImpl::HtmlResponseProviderImpl( |
| + const std::map<GURL, std::string>& responses) |
| + : responses_(BuildResponseMap( |
| + responses, |
| + web::ResponseProvider::GetDefaultResponseHeaders())) {} |
| + |
| +HtmlResponseProviderImpl::HtmlResponseProviderImpl( |
| + const std::map<GURL, HtmlResponseProviderImpl::Response>& responses) |
| + : responses_(responses) {} |
| + |
| +HtmlResponseProviderImpl::~HtmlResponseProviderImpl() {} |
| + |
| +bool HtmlResponseProviderImpl::CanHandleRequest( |
| + const web::ResponseProvider::Request& request) { |
| + return responses_.find(request.url) != responses_.end(); |
| +} |
| + |
| +void HtmlResponseProviderImpl::GetResponseHeadersAndBody( |
| + const web::ResponseProvider::Request& request, |
| + scoped_refptr<net::HttpResponseHeaders>* headers, |
| + std::string* response_body) { |
| + const Response& response = responses_.at(request.url); |
| + *headers = response.headers; |
| + *response_body = response.body; |
| +} |
| + |
| +HtmlResponseProvider::HtmlResponseProvider() |
| + : response_provider_impl_(new HtmlResponseProviderImpl()) {} |
| + |
| +HtmlResponseProvider::HtmlResponseProvider( |
| + const std::map<GURL, std::string>& responses) |
| + : response_provider_impl_(new HtmlResponseProviderImpl(responses)) {} |
| + |
| +HtmlResponseProvider::HtmlResponseProvider( |
| + const std::map<GURL, HtmlResponseProviderImpl::Response>& responses) |
| + : response_provider_impl_(new HtmlResponseProviderImpl(responses)) {} |
| + |
| +HtmlResponseProvider::~HtmlResponseProvider() {} |
| + |
| +bool HtmlResponseProvider::CanHandleRequest( |
| + const web::ResponseProvider::Request& request) { |
| + return response_provider_impl_->CanHandleRequest(request); |
| +} |
| + |
| +void HtmlResponseProvider::GetResponseHeadersAndBody( |
| + const Request& request, |
| + scoped_refptr<net::HttpResponseHeaders>* headers, |
| + std::string* response_body) { |
| + response_provider_impl_->GetResponseHeadersAndBody(request, headers, |
| + response_body); |
| +} |