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); |
+} |