Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "native_test_server.h" | 5 #include "native_test_server.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 new net::test_server::BasicHttpResponse()); | 161 new net::test_server::BasicHttpResponse()); |
| 162 response->set_content_type("text/plain"); | 162 response->set_content_type("text/plain"); |
| 163 response->set_content("Sdch is not used.\n"); | 163 response->set_content("Sdch is not used.\n"); |
| 164 return response.Pass(); | 164 return response.Pass(); |
| 165 } | 165 } |
| 166 | 166 |
| 167 // Unhandled requests result in the Embedded test server sending a 404. | 167 // Unhandled requests result in the Embedded test server sending a 404. |
| 168 return scoped_ptr<net::test_server::BasicHttpResponse>(); | 168 return scoped_ptr<net::test_server::BasicHttpResponse>(); |
| 169 } | 169 } |
| 170 | 170 |
| 171 void RegisterHostResolverProcHelper( | 171 void RegisterHostResolverProcHelper(net::URLRequestContext* url_request_context, |
| 172 net::URLRequestContext* url_request_context) { | 172 const std::string& destination) { |
|
xunjieli
2015/12/17 21:42:23
nit: document what |destination| is.
pauljensen
2015/12/18 14:26:08
Done.
| |
| 173 net::HostResolverImpl* resolver = | 173 net::HostResolverImpl* resolver = |
| 174 static_cast<net::HostResolverImpl*>(url_request_context->host_resolver()); | 174 static_cast<net::HostResolverImpl*>(url_request_context->host_resolver()); |
| 175 scoped_refptr<net::RuleBasedHostResolverProc> proc = | 175 scoped_refptr<net::RuleBasedHostResolverProc> proc = |
| 176 new net::RuleBasedHostResolverProc(NULL); | 176 new net::RuleBasedHostResolverProc(NULL); |
| 177 proc->AddRule(kFakeSdchDomain, "127.0.0.1"); | 177 proc->AddRule(kFakeSdchDomain, destination); |
| 178 proc->AddRule(kFakeQuicDomain, "127.0.0.1"); | 178 proc->AddRule(kFakeQuicDomain, destination); |
| 179 resolver->set_proc_params_for_test( | 179 resolver->set_proc_params_for_test( |
| 180 net::HostResolverImpl::ProcTaskParams(proc.get(), 1u)); | 180 net::HostResolverImpl::ProcTaskParams(proc.get(), 1u)); |
| 181 JNIEnv* env = base::android::AttachCurrentThread(); | 181 JNIEnv* env = base::android::AttachCurrentThread(); |
| 182 Java_NativeTestServer_onHostResolverProcRegistered(env); | 182 Java_NativeTestServer_onHostResolverProcRegistered(env); |
| 183 } | 183 } |
| 184 | 184 |
| 185 void RegisterHostResolverProcOnNetworkThread( | 185 void RegisterHostResolverProcOnNetworkThread( |
| 186 CronetURLRequestContextAdapter* context_adapter) { | 186 CronetURLRequestContextAdapter* context_adapter, |
| 187 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext()); | 187 const std::string& destination) { |
| 188 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext(), | |
| 189 destination); | |
| 188 } | 190 } |
| 189 | 191 |
| 190 // TODO(xunjieli): Delete this once legacy API is removed. | 192 // TODO(xunjieli): Delete this once legacy API is removed. |
| 191 void RegisterHostResolverProcOnNetworkThreadLegacyAPI( | 193 void RegisterHostResolverProcOnNetworkThreadLegacyAPI( |
| 192 URLRequestContextAdapter* context_adapter) { | 194 URLRequestContextAdapter* context_adapter, |
| 193 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext()); | 195 const std::string& destination) { |
| 196 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext(), | |
| 197 destination); | |
| 194 } | 198 } |
| 195 | 199 |
| 196 } // namespace | 200 } // namespace |
| 197 | 201 |
| 198 jboolean StartNativeTestServer(JNIEnv* env, | 202 jboolean StartNativeTestServer(JNIEnv* env, |
| 199 const JavaParamRef<jclass>& jcaller, | 203 const JavaParamRef<jclass>& jcaller, |
| 200 const JavaParamRef<jstring>& jtest_files_root) { | 204 const JavaParamRef<jstring>& jtest_files_root) { |
| 201 // Shouldn't happen. | 205 // Shouldn't happen. |
| 202 if (g_test_server) | 206 if (g_test_server) |
| 203 return false; | 207 return false; |
| 204 g_test_server = new net::EmbeddedTestServer(); | 208 g_test_server = new net::EmbeddedTestServer(); |
| 205 g_test_server->RegisterRequestHandler( | 209 g_test_server->RegisterRequestHandler( |
| 206 base::Bind(&NativeTestServerRequestHandler)); | 210 base::Bind(&NativeTestServerRequestHandler)); |
| 207 g_test_server->RegisterRequestHandler(base::Bind(&SdchRequestHandler)); | 211 g_test_server->RegisterRequestHandler(base::Bind(&SdchRequestHandler)); |
| 208 base::FilePath test_files_root( | 212 base::FilePath test_files_root( |
| 209 base::android::ConvertJavaStringToUTF8(env, jtest_files_root)); | 213 base::android::ConvertJavaStringToUTF8(env, jtest_files_root)); |
| 210 | 214 |
| 211 // Add a third handler for paths that NativeTestServerRequestHandler does not | 215 // Add a third handler for paths that NativeTestServerRequestHandler does not |
| 212 // handle. | 216 // handle. |
| 213 g_test_server->ServeFilesFromDirectory(test_files_root); | 217 g_test_server->ServeFilesFromDirectory(test_files_root); |
| 214 return g_test_server->Start(); | 218 return g_test_server->Start(); |
| 215 } | 219 } |
| 216 | 220 |
| 217 void RegisterHostResolverProc(JNIEnv* env, | 221 void RegisterHostResolverProc(JNIEnv* env, |
| 218 const JavaParamRef<jclass>& jcaller, | 222 const JavaParamRef<jclass>& jcaller, |
| 219 jlong jadapter, | 223 jlong jadapter, |
| 220 jboolean jlegacy_api) { | 224 jboolean jlegacy_api, |
| 225 const JavaParamRef<jstring>& jdestination) { | |
| 226 std::string destination( | |
| 227 base::android::ConvertJavaStringToUTF8(env, jdestination)); | |
| 221 if (jlegacy_api == JNI_TRUE) { | 228 if (jlegacy_api == JNI_TRUE) { |
| 222 URLRequestContextAdapter* context_adapter = | 229 URLRequestContextAdapter* context_adapter = |
| 223 reinterpret_cast<URLRequestContextAdapter*>(jadapter); | 230 reinterpret_cast<URLRequestContextAdapter*>(jadapter); |
| 224 context_adapter->PostTaskToNetworkThread( | 231 context_adapter->PostTaskToNetworkThread( |
| 225 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI, | 232 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI, |
| 226 base::Unretained(context_adapter))); | 233 base::Unretained(context_adapter), destination)); |
| 227 } else { | 234 } else { |
| 228 CronetURLRequestContextAdapter* context_adapter = | 235 CronetURLRequestContextAdapter* context_adapter = |
| 229 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter); | 236 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter); |
| 230 context_adapter->PostTaskToNetworkThread( | 237 context_adapter->PostTaskToNetworkThread( |
| 231 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread, | 238 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread, |
| 232 base::Unretained(context_adapter))); | 239 base::Unretained(context_adapter), destination)); |
| 233 } | 240 } |
| 234 } | 241 } |
| 235 | 242 |
| 236 void ShutdownNativeTestServer(JNIEnv* env, | 243 void ShutdownNativeTestServer(JNIEnv* env, |
| 237 const JavaParamRef<jclass>& jcaller) { | 244 const JavaParamRef<jclass>& jcaller) { |
| 238 if (!g_test_server) | 245 if (!g_test_server) |
| 239 return; | 246 return; |
| 240 delete g_test_server; | 247 delete g_test_server; |
| 241 g_test_server = NULL; | 248 g_test_server = NULL; |
| 242 } | 249 } |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 #else | 326 #else |
| 320 return JNI_FALSE; | 327 return JNI_FALSE; |
| 321 #endif | 328 #endif |
| 322 } | 329 } |
| 323 | 330 |
| 324 bool RegisterNativeTestServer(JNIEnv* env) { | 331 bool RegisterNativeTestServer(JNIEnv* env) { |
| 325 return RegisterNativesImpl(env); | 332 return RegisterNativesImpl(env); |
| 326 } | 333 } |
| 327 | 334 |
| 328 } // namespace cronet | 335 } // namespace cronet |
| OLD | NEW |