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 // Install host resolver rules to map fake domains to |destination|, usually an |
| 172 net::URLRequestContext* url_request_context) { | 172 // IP address. |
| 173 void RegisterHostResolverProcHelper(net::URLRequestContext* url_request_context, | |
| 174 const std::string& destination) { | |
| 173 net::HostResolverImpl* resolver = | 175 net::HostResolverImpl* resolver = |
| 174 static_cast<net::HostResolverImpl*>(url_request_context->host_resolver()); | 176 static_cast<net::HostResolverImpl*>(url_request_context->host_resolver()); |
| 175 scoped_refptr<net::RuleBasedHostResolverProc> proc = | 177 scoped_refptr<net::RuleBasedHostResolverProc> proc = |
| 176 new net::RuleBasedHostResolverProc(NULL); | 178 new net::RuleBasedHostResolverProc(NULL); |
| 177 proc->AddRule(kFakeSdchDomain, "127.0.0.1"); | 179 proc->AddRule(kFakeSdchDomain, destination); |
| 178 proc->AddRule(kFakeQuicDomain, "127.0.0.1"); | 180 proc->AddRule(kFakeQuicDomain, destination); |
| 179 resolver->set_proc_params_for_test( | 181 resolver->set_proc_params_for_test( |
| 180 net::HostResolverImpl::ProcTaskParams(proc.get(), 1u)); | 182 net::HostResolverImpl::ProcTaskParams(proc.get(), 1u)); |
| 181 JNIEnv* env = base::android::AttachCurrentThread(); | 183 JNIEnv* env = base::android::AttachCurrentThread(); |
| 182 Java_NativeTestServer_onHostResolverProcRegistered(env); | 184 Java_NativeTestServer_onHostResolverProcRegistered(env); |
| 183 } | 185 } |
| 184 | 186 |
| 185 void RegisterHostResolverProcOnNetworkThread( | 187 void RegisterHostResolverProcOnNetworkThread( |
| 186 CronetURLRequestContextAdapter* context_adapter) { | 188 CronetURLRequestContextAdapter* context_adapter, |
| 187 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext()); | 189 const std::string& destination) { |
| 190 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext(), | |
| 191 destination); | |
| 188 } | 192 } |
| 189 | 193 |
| 190 // TODO(xunjieli): Delete this once legacy API is removed. | 194 // TODO(xunjieli): Delete this once legacy API is removed. |
| 191 void RegisterHostResolverProcOnNetworkThreadLegacyAPI( | 195 void RegisterHostResolverProcOnNetworkThreadLegacyAPI( |
| 192 URLRequestContextAdapter* context_adapter) { | 196 URLRequestContextAdapter* context_adapter, |
| 193 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext()); | 197 const std::string& destination) { |
| 198 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext(), | |
| 199 destination); | |
| 194 } | 200 } |
| 195 | 201 |
| 196 } // namespace | 202 } // namespace |
| 197 | 203 |
| 198 jboolean StartNativeTestServer(JNIEnv* env, | 204 jboolean StartNativeTestServer(JNIEnv* env, |
| 199 const JavaParamRef<jclass>& jcaller, | 205 const JavaParamRef<jclass>& jcaller, |
| 200 const JavaParamRef<jstring>& jtest_files_root) { | 206 const JavaParamRef<jstring>& jtest_files_root) { |
| 201 // Shouldn't happen. | 207 // Shouldn't happen. |
| 202 if (g_test_server) | 208 if (g_test_server) |
| 203 return false; | 209 return false; |
| 204 g_test_server = new net::EmbeddedTestServer(); | 210 g_test_server = new net::EmbeddedTestServer(); |
| 205 g_test_server->RegisterRequestHandler( | 211 g_test_server->RegisterRequestHandler( |
| 206 base::Bind(&NativeTestServerRequestHandler)); | 212 base::Bind(&NativeTestServerRequestHandler)); |
| 207 g_test_server->RegisterRequestHandler(base::Bind(&SdchRequestHandler)); | 213 g_test_server->RegisterRequestHandler(base::Bind(&SdchRequestHandler)); |
| 208 base::FilePath test_files_root( | 214 base::FilePath test_files_root( |
| 209 base::android::ConvertJavaStringToUTF8(env, jtest_files_root)); | 215 base::android::ConvertJavaStringToUTF8(env, jtest_files_root)); |
| 210 | 216 |
| 211 // Add a third handler for paths that NativeTestServerRequestHandler does not | 217 // Add a third handler for paths that NativeTestServerRequestHandler does not |
| 212 // handle. | 218 // handle. |
| 213 g_test_server->ServeFilesFromDirectory(test_files_root); | 219 g_test_server->ServeFilesFromDirectory(test_files_root); |
| 214 return g_test_server->Start(); | 220 return g_test_server->Start(); |
| 215 } | 221 } |
| 216 | 222 |
| 217 void RegisterHostResolverProc(JNIEnv* env, | 223 void RegisterHostResolverProc(JNIEnv* env, |
| 218 const JavaParamRef<jclass>& jcaller, | 224 const JavaParamRef<jclass>& jcaller, |
| 219 jlong jadapter, | 225 jlong jadapter, |
| 220 jboolean jlegacy_api) { | 226 jboolean jlegacy_api, |
| 227 const JavaParamRef<jstring>& jdestination) { | |
| 228 std::string destination( | |
| 229 base::android::ConvertJavaStringToUTF8(env, jdestination)); | |
| 221 if (jlegacy_api == JNI_TRUE) { | 230 if (jlegacy_api == JNI_TRUE) { |
| 222 URLRequestContextAdapter* context_adapter = | 231 URLRequestContextAdapter* context_adapter = |
|
mef
2015/12/29 17:27:45
Does it make sense to call context_adapter->GetURL
pauljensen
2016/01/21 03:51:50
GetURLRequestContext() can only be called from net
| |
| 223 reinterpret_cast<URLRequestContextAdapter*>(jadapter); | 232 reinterpret_cast<URLRequestContextAdapter*>(jadapter); |
| 224 context_adapter->PostTaskToNetworkThread( | 233 context_adapter->PostTaskToNetworkThread( |
| 225 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI, | 234 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI, |
| 226 base::Unretained(context_adapter))); | 235 base::Unretained(context_adapter), destination)); |
| 227 } else { | 236 } else { |
| 228 CronetURLRequestContextAdapter* context_adapter = | 237 CronetURLRequestContextAdapter* context_adapter = |
| 229 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter); | 238 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter); |
| 230 context_adapter->PostTaskToNetworkThread( | 239 context_adapter->PostTaskToNetworkThread( |
| 231 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread, | 240 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread, |
| 232 base::Unretained(context_adapter))); | 241 base::Unretained(context_adapter), destination)); |
| 233 } | 242 } |
| 234 } | 243 } |
| 235 | 244 |
| 236 void ShutdownNativeTestServer(JNIEnv* env, | 245 void ShutdownNativeTestServer(JNIEnv* env, |
| 237 const JavaParamRef<jclass>& jcaller) { | 246 const JavaParamRef<jclass>& jcaller) { |
| 238 if (!g_test_server) | 247 if (!g_test_server) |
| 239 return; | 248 return; |
| 240 delete g_test_server; | 249 delete g_test_server; |
| 241 g_test_server = NULL; | 250 g_test_server = NULL; |
| 242 } | 251 } |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 #else | 328 #else |
| 320 return JNI_FALSE; | 329 return JNI_FALSE; |
| 321 #endif | 330 #endif |
| 322 } | 331 } |
| 323 | 332 |
| 324 bool RegisterNativeTestServer(JNIEnv* env) { | 333 bool RegisterNativeTestServer(JNIEnv* env) { |
| 325 return RegisterNativesImpl(env); | 334 return RegisterNativesImpl(env); |
| 326 } | 335 } |
| 327 | 336 |
| 328 } // namespace cronet | 337 } // namespace cronet |
| OLD | NEW |