| Index: ios/web/public/test/response_providers/html_response_provider_impl.mm
|
| diff --git a/ios/web/public/test/response_providers/html_response_provider_impl.mm b/ios/web/public/test/response_providers/html_response_provider_impl.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..578e95eed5bd03f50962bafc20e30efa4155e07b
|
| --- /dev/null
|
| +++ b/ios/web/public/test/response_providers/html_response_provider_impl.mm
|
| @@ -0,0 +1,81 @@
|
| +// 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.
|
| +
|
| +#include "ios/web/public/test/response_providers/html_response_provider_impl.h"
|
| +
|
| +#include "ios/web/public/test/response_providers/response_provider.h"
|
| +#include "net/http/http_response_headers.h"
|
| +#include "net/http/http_status_code.h"
|
| +#include "url/gurl.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(const Response& response)
|
| + : body(response.body), headers(response.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;
|
| +}
|
|
|