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

Side by Side Diff: components/cronet/android/test/upload_test_server.cc

Issue 886583005: [Cronet] rename upload_test_server.cc/h (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 | « components/cronet/android/test/upload_test_server.h ('k') | no next file » | 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 2014 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 "upload_test_server.h"
6
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h"
9 #include "base/bind.h"
10 #include "base/files/file_path.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/path_service.h"
13 #include "base/strings/string_util.h"
14 #include "jni/NativeTestServer_jni.h"
15 #include "net/http/http_status_code.h"
16 #include "net/test/embedded_test_server/embedded_test_server.h"
17 #include "net/test/embedded_test_server/http_request.h"
18 #include "net/test/embedded_test_server/http_response.h"
19 #include "url/gurl.h"
20
21 namespace cronet {
22
23 namespace {
24
25 const char echo_body_path[] = "/echo_body";
26 const char echo_header_path[] = "/echo_header";
27 const char echo_all_headers_path[] = "/echo_all_headers";
28 const char echo_method_path[] = "/echo_method";
29 const char redirect_to_echo_body_path[] = "/redirect_to_echo_body";
30
31 net::test_server::EmbeddedTestServer* g_test_server = nullptr;
32
33 scoped_ptr<net::test_server::HttpResponse> UploadServerRequestHandler(
34 const net::test_server::HttpRequest& request) {
35 DCHECK(g_test_server);
36 scoped_ptr<net::test_server::BasicHttpResponse> response(
37 new net::test_server::BasicHttpResponse());
38 response->set_content_type("text/plain");
39
40 if (request.relative_url == echo_body_path) {
41 if (request.has_content) {
42 response->set_content(request.content);
43 } else {
44 response->set_content("Request has no body. :(");
45 }
46 return response.Pass();
47 }
48
49 if (StartsWithASCII(request.relative_url, echo_header_path, true)) {
50 GURL url = g_test_server->GetURL(request.relative_url);
51 auto it = request.headers.find(url.query());
52 if (it != request.headers.end()) {
53 response->set_content(it->second);
54 } else {
55 response->set_content("Header not found. :(");
56 }
57 return response.Pass();
58 }
59
60 if (request.relative_url == echo_all_headers_path) {
61 response->set_content(request.all_headers);
62 return response.Pass();
63 }
64
65 if (request.relative_url == echo_method_path) {
66 response->set_content(request.method_string);
67 return response.Pass();
68 }
69
70 if (request.relative_url == redirect_to_echo_body_path) {
71 response->set_code(net::HTTP_TEMPORARY_REDIRECT);
72 response->AddCustomHeader("Location", echo_body_path);
73 return response.Pass();
74 }
75
76 // Unhandled requests result in the Embedded test server sending a 404.
77 return scoped_ptr<net::test_server::BasicHttpResponse>();
78 }
79
80 } // namespace
81
82 jboolean StartNativeTestServer(JNIEnv* env,
83 jclass jcaller,
84 jstring jtest_files_root) {
85 // Shouldn't happen.
86 if (g_test_server)
87 return false;
88 g_test_server = new net::test_server::EmbeddedTestServer();
89 g_test_server->RegisterRequestHandler(
90 base::Bind(&UploadServerRequestHandler));
91 // Add a second handler for paths that UploadServerRequestHandler does not
92 // handle.
93 base::FilePath test_files_root(
94 base::android::ConvertJavaStringToUTF8(env, jtest_files_root));
95 g_test_server->ServeFilesFromDirectory(test_files_root);
96 return g_test_server->InitializeAndWaitUntilReady();
97 }
98
99 void ShutdownNativeTestServer(JNIEnv* env, jclass jcaller) {
100 if (!g_test_server)
101 return;
102 delete g_test_server;
103 g_test_server = NULL;
104 }
105
106 jstring GetEchoBodyURL(JNIEnv* env, jclass jcaller) {
107 DCHECK(g_test_server);
108 GURL url = g_test_server->GetURL(echo_body_path);
109 return base::android::ConvertUTF8ToJavaString(env, url.spec()).Release();
110 }
111
112 jstring GetEchoHeaderURL(JNIEnv* env, jclass jcaller, jstring jheader) {
113 DCHECK(g_test_server);
114 GURL url = g_test_server->GetURL(echo_header_path);
115 GURL::Replacements replacements;
116 std::string header = base::android::ConvertJavaStringToUTF8(env, jheader);
117 replacements.SetQueryStr(header.c_str());
118 url = url.ReplaceComponents(replacements);
119 return base::android::ConvertUTF8ToJavaString(env, url.spec()).Release();
120 }
121
122 jstring GetEchoAllHeadersURL(JNIEnv* env, jclass jcaller) {
123 DCHECK(g_test_server);
124 GURL url = g_test_server->GetURL(echo_all_headers_path);
125 return base::android::ConvertUTF8ToJavaString(env, url.spec()).Release();
126 }
127
128 jstring GetEchoMethodURL(JNIEnv* env, jclass jcaller) {
129 DCHECK(g_test_server);
130 GURL url = g_test_server->GetURL(echo_method_path);
131 return base::android::ConvertUTF8ToJavaString(env, url.spec()).Release();
132 }
133
134 jstring GetRedirectToEchoBody(JNIEnv* env, jclass jcaller) {
135 DCHECK(g_test_server);
136 GURL url = g_test_server->GetURL(redirect_to_echo_body_path);
137 return base::android::ConvertUTF8ToJavaString(env, url.spec()).Release();
138 }
139
140 jstring GetFileURL(JNIEnv* env, jclass jcaller, jstring jfile_path) {
141 DCHECK(g_test_server);
142 std::string file = base::android::ConvertJavaStringToUTF8(env, jfile_path);
143 GURL url = g_test_server->GetURL(file);
144 return base::android::ConvertUTF8ToJavaString(env, url.spec()).Release();
145 }
146
147 bool RegisterNativeTestServer(JNIEnv* env) {
148 return RegisterNativesImpl(env);
149 }
150
151 } // namespace cronet
OLDNEW
« no previous file with comments | « components/cronet/android/test/upload_test_server.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698