Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(309)

Unified Diff: ios/web/public/test/response_providers/html_response_provider.h

Issue 1890333002: Web shell test to go back and forward. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/web/public/test/response_providers/html_response_provider.h
diff --git a/ios/web/public/test/response_providers/html_response_provider.h b/ios/web/public/test/response_providers/html_response_provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..7fc90156525e43b058479948e1ba711271d4aaa2
--- /dev/null
+++ b/ios/web/public/test/response_providers/html_response_provider.h
@@ -0,0 +1,102 @@
+// 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.
+
+#ifndef IOS_WEB_PUBLIC_TEST_RESPONSE_PROVIDERS_HTML_RESPONSE_PROVIDER_H_
+#define IOS_WEB_PUBLIC_TEST_RESPONSE_PROVIDERS_HTML_RESPONSE_PROVIDER_H_
baxley 2016/04/15 23:57:48 This file is being moved upstream so it can be use
+
+#include <map>
+#include <string>
+
+#include "base/memory/ref_counted.h"
+#include "ios/web/public/test/response_providers/data_response_provider.h"
+#include "ios/web/public/test/response_providers/response_provider.h"
+#include "net/http/http_request_headers.h"
+#include "net/http/http_response_headers.h"
+#include "net/http/http_status_code.h"
+#include "url/gurl.h"
+
+namespace net {
+class HttpResponseHeaders;
+}
+
+// This class encapsulates the logic needed to map a request URL to a response.
+// The mapping -- between URL to response -- is maintained internally, use
+// |CanHandleRequest| to check if a request can be handled and use
+// |GetResponseHeadersAndBody| to actually handle the request.
+class HtmlResponseProviderImpl {
+ public:
+ // Encapsulates the body and headers that make up a response.
+ struct Response {
+ Response(const std::string& body,
+ const scoped_refptr<net::HttpResponseHeaders>& headers);
+ Response();
+ ~Response();
+
+ std::string body;
+ scoped_refptr<net::HttpResponseHeaders> headers;
+ };
+ // Constructs an HtmlResponseProviderImpl that does not respond to any
+ // request.
+ HtmlResponseProviderImpl();
+ // Constructs an HtmlResponseProviderImpl that generates a simple string
+ // response to a URL based on the mapping present in |responses|.
+ explicit HtmlResponseProviderImpl(
+ const std::map<GURL, std::string>& responses);
+ // Constructs an HtmlResponseProviderImpl that generates a response to a URL
+ // based on the mapping present in |responses|.
+ explicit HtmlResponseProviderImpl(const std::map<GURL, Response>& responses);
+
+ virtual ~HtmlResponseProviderImpl();
+
+ // Creates a reponse based on a redirect to |destination_url|.
+ static HtmlResponseProviderImpl::Response GetRedirectResponse(
+ const GURL& destination_url,
+ const net::HttpStatusCode& http_status);
+
+ // Creates a response with |net::HTTP_OK|.
+ static HtmlResponseProviderImpl::Response GetSimpleResponse(
+ const std::string& body);
+
+ // Returns true if the request can be handled.
+ bool CanHandleRequest(const web::ResponseProvider::Request& request);
+ // Returns the headers and the response body.
+ void GetResponseHeadersAndBody(
+ const web::ResponseProvider::Request& request,
+ scoped_refptr<net::HttpResponseHeaders>* headers,
+ std::string* response_body);
+
+ private:
+ const std::map<GURL, Response> responses_;
+};
+
+// A web::DataResponseProvider that maps URLs to requests.
+// Note: This works with the web::test::HttpServer and hence works on UIWebView
+// and WKWebView.
+class HtmlResponseProvider : public web::DataResponseProvider {
+ public:
+ // Constructs an HtmlResponseProvider that does not respond to any request.
+ HtmlResponseProvider();
+ // Constructs an HtmlResponseProvider that generates a simple string response
+ // to a URL based on the mapping present in |responses|.
+ explicit HtmlResponseProvider(const std::map<GURL, std::string>& responses);
+ // Constructs an HtmlResponseProvider that generates a response to a URL based
+ // on the mapping present in |responses|.
+ explicit HtmlResponseProvider(
+ const std::map<GURL, HtmlResponseProviderImpl::Response>& responses);
+
+ ~HtmlResponseProvider() override;
+
+ // web::ResponseProvider implementation.
+ bool CanHandleRequest(const Request& request) override;
+ // web::DataResponseProvider implementation.
+ void GetResponseHeadersAndBody(
+ const Request& request,
+ scoped_refptr<net::HttpResponseHeaders>* headers,
+ std::string* response_body) override;
+
+ private:
+ std::unique_ptr<HtmlResponseProviderImpl> response_provider_impl_;
+};
+
+#endif // IOS_WEB_PUBLIC_TEST_RESPONSE_PROVIDERS_HTML_RESPONSE_PROVIDER_H_

Powered by Google App Engine
This is Rietveld 408576698