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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: ios/web_view/test/test_server.cc
diff --git a/ios/web_view/test/test_server.cc b/ios/web_view/test/test_server.cc
new file mode 100644
index 0000000000000000000000000000000000000000..57a15824a6cea8f7d98493f4b6219c812dd1dc6f
--- /dev/null
+++ b/ios/web_view/test/test_server.cc
@@ -0,0 +1,96 @@
+// Copyright 2017 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_view/test/test_server.h"
+
+#include "base/base64.h"
+#include "base/logging.h"
+#include "base/memory/ptr_util.h"
+#include "base/strings/string_util.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/http_request.h"
+#include "net/test/embedded_test_server/http_response.h"
+
+namespace {
+
+const char kPageTitlePath[] = "/PageTitle?";
+const char kPageHTMLBodyPath[] = "/PageHTMLBody?";
+
+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
+
+std::unique_ptr<net::test_server::HttpResponse> EchoPageTitleInResponse(
+ const net::test_server::HttpRequest& request) {
+ DCHECK(base::StartsWith(request.relative_url, kPageTitlePath,
+ base::CompareCase::INSENSITIVE_ASCII));
+
+ std::string html;
+ html += "<html><head><title>";
+ html += request.relative_url.substr(strlen(kPageTitlePath));
+ html += "</title></head></html>";
+
+ auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
+ http_response->set_content(html);
+ return std::move(http_response);
+}
+
+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,
+ const net::test_server::HttpRequest& request) {
+ DCHECK(base::StartsWith(request.relative_url, kPageHTMLBodyPath,
+ base::CompareCase::INSENSITIVE_ASCII));
+
+ std::string body = request.relative_url.substr(strlen(kPageHTMLBodyPath));
+
+ std::string unescaped_body;
+ base::Base64Decode(body, &unescaped_body);
+ std::string html = "<html><body>" + unescaped_body + "</body></html>";
+
+ auto http_response = base::MakeUnique<net::test_server::BasicHttpResponse>();
+ http_response->set_content(html);
+ return std::move(http_response);
+}
+
+std::unique_ptr<net::test_server::HttpResponse> TestRequestHandler(
+ const net::test_server::HttpRequest& request) {
+ if (base::StartsWith(request.relative_url, kPageTitlePath,
+ base::CompareCase::INSENSITIVE_ASCII)) {
+ return EchoPageTitleInResponse(request);
+ }
+ if (base::StartsWith(request.relative_url, kPageHTMLBodyPath,
+ base::CompareCase::INSENSITIVE_ASCII)) {
+ return EchoPageHTMLBodyInResponse(request);
+ }
+ return base::MakeUnique<net::test_server::BasicHttpResponse>();
+}
+
+} // namespace
+
+namespace ios_web_view {
+
+bool TestServer::Start() {
+ DCHECK(!g_test_server.get());
+ g_test_server = base::MakeUnique<net::EmbeddedTestServer>(
+ net::EmbeddedTestServer::TYPE_HTTP);
+ g_test_server->RegisterRequestHandler(base::Bind(&TestRequestHandler));
+ CHECK(g_test_server->Start());
+ return true;
+}
+
+void TestServer::Shutdown() {
+ DCHECK(g_test_server.get());
+ g_test_server.reset();
+}
+
+std::string TestServer::GetPageTitleURL(const std::string& title) {
+ DCHECK(g_test_server);
+ return g_test_server->GetURL(kPageTitlePath + title).spec();
+}
+
+std::string TestServer::GetPageWithHTMLBody(const std::string& html) {
+ DCHECK(g_test_server);
+
+ std::string base64_html;
+ base::Base64Encode(html, &base64_html);
+ return g_test_server->GetURL(kPageHTMLBodyPath + base64_html).spec();
+}
+}
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.

Powered by Google App Engine
This is Rietveld 408576698