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

Side by Side Diff: ios/web_view/test/test_server.cc

Issue 2892193002: Add unittest to test CWVWebView. (Closed)
Patch Set: Created 3 years, 7 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
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 #include "ios/web_view/test/test_server.h"
6
7 #include "base/base64.h"
8 #include "base/logging.h"
9 #include "base/memory/ptr_util.h"
10 #include "base/strings/string_util.h"
11 #include "net/test/embedded_test_server/embedded_test_server.h"
12 #include "net/test/embedded_test_server/http_request.h"
13 #include "net/test/embedded_test_server/http_response.h"
14
15 namespace {
16
17 const char kPageTitlePath[] = "/PageTitle?";
18 const char kPageHTMLBodyPath[] = "/PageHTMLBody?";
19
20 std::unique_ptr<net::EmbeddedTestServer> g_test_server;
mmenke 2017/05/19 18:57:15 Per style guide, non-POD globals are forbidden.
michaeldo 2017/05/23 16:20:52 You're right, thank you. I've removed this class a
21
22 std::unique_ptr<net::test_server::HttpResponse> EchoPageTitleInResponse(
23 const net::test_server::HttpRequest& request) {
24 DCHECK(base::StartsWith(request.relative_url, kPageTitlePath,
25 base::CompareCase::INSENSITIVE_ASCII));
26
27 std::string html;
28 html += "<html><head><title>";
29 html += request.relative_url.substr(strlen(kPageTitlePath));
30 html += "</title></head></html>";
31
32 auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
33 http_response->set_content(html);
34 return std::move(http_response);
35 }
36
37 std::unique_ptr<net::test_server::HttpResponse> EchoPageHTMLBodyInResponse(
mmenke 2017/05/19 18:57:15 I guess EmbeddedTestServer::AddDefaultHandlers() +
michaeldo 2017/05/23 16:20:52 Thanks for pointing that out, echotitle will work,
38 const net::test_server::HttpRequest& request) {
39 DCHECK(base::StartsWith(request.relative_url, kPageHTMLBodyPath,
40 base::CompareCase::INSENSITIVE_ASCII));
41
42 std::string body = request.relative_url.substr(strlen(kPageHTMLBodyPath));
43
44 std::string unescaped_body;
45 base::Base64Decode(body, &unescaped_body);
46 std::string html = "<html><body>" + unescaped_body + "</body></html>";
47
48 auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
49 http_response->set_content(html);
50 return std::move(http_response);
51 }
52
53 std::unique_ptr<net::test_server::HttpResponse> TestRequestHandler(
54 const net::test_server::HttpRequest& request) {
55 if (base::StartsWith(request.relative_url, kPageTitlePath,
56 base::CompareCase::INSENSITIVE_ASCII)) {
57 return EchoPageTitleInResponse(request);
58 }
59 if (base::StartsWith(request.relative_url, kPageHTMLBodyPath,
60 base::CompareCase::INSENSITIVE_ASCII)) {
61 return EchoPageHTMLBodyInResponse(request);
62 }
63 return base::MakeUnique<net::test_server::BasicHttpResponse>();
64 }
65
66 } // namespace
67
68 namespace ios_web_view {
69
70 bool TestServer::Start() {
71 DCHECK(!g_test_server.get());
72 g_test_server = base::MakeUnique<net::EmbeddedTestServer>(
73 net::EmbeddedTestServer::TYPE_HTTP);
74 g_test_server->RegisterRequestHandler(base::Bind(&TestRequestHandler));
75 CHECK(g_test_server->Start());
76 return true;
77 }
78
79 void TestServer::Shutdown() {
80 DCHECK(g_test_server.get());
81 g_test_server.reset();
82 }
83
84 std::string TestServer::GetPageTitleURL(const std::string& title) {
85 DCHECK(g_test_server);
86 return g_test_server->GetURL(kPageTitlePath + title).spec();
87 }
88
89 std::string TestServer::GetPageWithHTMLBody(const std::string& html) {
90 DCHECK(g_test_server);
91
92 std::string base64_html;
93 base::Base64Encode(html, &base64_html);
94 return g_test_server->GetURL(kPageHTMLBodyPath + base64_html).spec();
95 }
96 }
mmenke 2017/05/19 18:57:15 Blank line before ending namespace (For consistenc
mmenke 2017/05/19 18:57:15 } // namespace ios_web_view
michaeldo 2017/05/23 16:20:52 Ack. File removed.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698