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

Side by Side Diff: ios/web_view/test/chrome_web_view_test.mm

Issue 2943063002: Removed Chrome prefix from ios_web_view_inttests test fixtures. (Closed)
Patch Set: Created 3 years, 6 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 unified diff | Download patch
« no previous file with comments | « ios/web_view/test/chrome_web_view_test.h ('k') | ios/web_view/test/web_view_kvo_inttest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/web_view/test/chrome_web_view_test.h"
6
7 #import <ChromeWebView/ChromeWebView.h>
8 #import <Foundation/Foundation.h>
9
10 #include "base/base64.h"
11 #import "base/memory/ptr_util.h"
12 #include "base/strings/stringprintf.h"
13 #import "ios/web_view/test/web_view_test_util.h"
14 #include "net/base/url_util.h"
15 #include "net/test/embedded_test_server/embedded_test_server.h"
16 #include "net/test/embedded_test_server/http_request.h"
17 #include "net/test/embedded_test_server/http_response.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19
20 #if !defined(__has_feature) || !__has_feature(objc_arc)
21 #error "This file requires ARC support."
22 #endif
23
24 namespace {
25
26 // Test server path which renders a basic html page.
27 const char kPageHtmlPath[] = "/PageHtml?";
28 // URL parameter for html body. Value must be base64 encoded.
29 const char kPageHtmlBodyParamName[] = "body";
30 // URL parameter for page title. Value must be base64 encoded.
31 const char kPageHtmlTitleParamName[] = "title";
32
33 // Generates an html response.
34 std::unique_ptr<net::test_server::HttpResponse> CreatePageHTMLResponse(
35 const std::string& title,
36 const std::string& body) {
37 std::string html = base::StringPrintf(
38 "<html><head><title>%s</title></head><body>%s</body></html>",
39 title.c_str(), body.c_str());
40
41 auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
42 http_response->set_content(html);
43 return std::move(http_response);
44 }
45
46 // Returns true if |string| starts with |prefix|. String comparison is case
47 // insensitive.
48 bool StartsWith(std::string string, std::string prefix) {
49 return base::StartsWith(string, prefix, base::CompareCase::SENSITIVE);
50 }
51
52 // Encodes the |string| for use as the value of a url parameter.
53 std::string EncodeQueryParamValue(std::string string) {
54 std::string encoded_string;
55 base::Base64Encode(string, &encoded_string);
56 return encoded_string;
57 }
58
59 // Decodes the |encoded_string|. Undoes the encoding performed by
60 // |EncodeQueryParamValue|.
61 std::string DecodeQueryParamValue(std::string encoded_string) {
62 std::string decoded_string;
63 base::Base64Decode(encoded_string, &decoded_string);
64 return decoded_string;
65 }
66
67 // Maps test server requests to responses.
68 std::unique_ptr<net::test_server::HttpResponse> TestRequestHandler(
69 const net::test_server::HttpRequest& request) {
70 if (StartsWith(request.relative_url, kPageHtmlPath)) {
71 std::string title;
72 std::string body;
73
74 GURL request_url = request.GetURL();
75
76 std::string encoded_title;
77 bool title_found = net::GetValueForKeyInQuery(
78 request_url, kPageHtmlTitleParamName, &encoded_title);
79 if (title_found) {
80 title = DecodeQueryParamValue(encoded_title);
81 }
82
83 std::string encoded_body;
84 bool body_found = net::GetValueForKeyInQuery(
85 request_url, kPageHtmlBodyParamName, &encoded_body);
86 if (body_found) {
87 body = DecodeQueryParamValue(encoded_body);
88 }
89
90 return CreatePageHTMLResponse(title, body);
91 }
92 return nullptr;
93 }
94
95 } // namespace
96
97 namespace ios_web_view {
98
99 ChromeWebViewTest::ChromeWebViewTest()
100 : web_view_(test::CreateWebView()),
101 test_server_(base::MakeUnique<net::EmbeddedTestServer>(
102 net::test_server::EmbeddedTestServer::TYPE_HTTP)) {
103 test_server_->RegisterRequestHandler(base::Bind(&TestRequestHandler));
104 }
105
106 ChromeWebViewTest::~ChromeWebViewTest() = default;
107
108 void ChromeWebViewTest::SetUp() {
109 PlatformTest::SetUp();
110 ASSERT_TRUE(test_server_->Start());
111 }
112
113 GURL ChromeWebViewTest::GetUrlForPageWithTitle(const std::string& title) {
114 return GetUrlForPageWithTitleAndBody(title, std::string());
115 }
116
117 GURL ChromeWebViewTest::GetUrlForPageWithHtmlBody(const std::string& html) {
118 return GetUrlForPageWithTitleAndBody(std::string(), html);
119 }
120
121 GURL ChromeWebViewTest::GetUrlForPageWithTitleAndBody(const std::string& title,
122 const std::string& body) {
123 GURL url = test_server_->GetURL(kPageHtmlPath);
124
125 // Encode |title| and |body| in url query in order to build the server
126 // response later in TestRequestHandler.
127 std::string encoded_title = EncodeQueryParamValue(title);
128 url = net::AppendQueryParameter(url, kPageHtmlTitleParamName, encoded_title);
129 std::string encoded_body = EncodeQueryParamValue(body);
130 url = net::AppendQueryParameter(url, kPageHtmlBodyParamName, encoded_body);
131
132 return url;
133 }
134
135 } // namespace ios_web_view
OLDNEW
« no previous file with comments | « ios/web_view/test/chrome_web_view_test.h ('k') | ios/web_view/test/web_view_kvo_inttest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698