| 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 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 | 203 |
| 204 // TODO(xunjieli): Delete this once legacy API is removed. | 204 // TODO(xunjieli): Delete this once legacy API is removed. |
| 205 void RegisterHostResolverProcOnNetworkThreadLegacyAPI( | 205 void RegisterHostResolverProcOnNetworkThreadLegacyAPI( |
| 206 URLRequestContextAdapter* context_adapter) { | 206 URLRequestContextAdapter* context_adapter) { |
| 207 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext()); | 207 RegisterHostResolverProcHelper(context_adapter->GetURLRequestContext()); |
| 208 } | 208 } |
| 209 | 209 |
| 210 } // namespace | 210 } // namespace |
| 211 | 211 |
| 212 jboolean StartNativeTestServer(JNIEnv* env, | 212 jboolean StartNativeTestServer(JNIEnv* env, |
| 213 jclass jcaller, | 213 const JavaParamRef<jclass>& jcaller, |
| 214 jstring jtest_files_root) { | 214 const JavaParamRef<jstring>& jtest_files_root) { |
| 215 // Shouldn't happen. | 215 // Shouldn't happen. |
| 216 if (g_test_server) | 216 if (g_test_server) |
| 217 return false; | 217 return false; |
| 218 g_test_server = new net::test_server::EmbeddedTestServer(); | 218 g_test_server = new net::test_server::EmbeddedTestServer(); |
| 219 g_test_server->RegisterRequestHandler( | 219 g_test_server->RegisterRequestHandler( |
| 220 base::Bind(&NativeTestServerRequestHandler)); | 220 base::Bind(&NativeTestServerRequestHandler)); |
| 221 g_test_server->RegisterRequestHandler(base::Bind(&SdchRequestHandler)); | 221 g_test_server->RegisterRequestHandler(base::Bind(&SdchRequestHandler)); |
| 222 base::FilePath test_files_root( | 222 base::FilePath test_files_root( |
| 223 base::android::ConvertJavaStringToUTF8(env, jtest_files_root)); | 223 base::android::ConvertJavaStringToUTF8(env, jtest_files_root)); |
| 224 | 224 |
| 225 // Add a third handler for paths that NativeTestServerRequestHandler does not | 225 // Add a third handler for paths that NativeTestServerRequestHandler does not |
| 226 // handle. | 226 // handle. |
| 227 g_test_server->ServeFilesFromDirectory(test_files_root); | 227 g_test_server->ServeFilesFromDirectory(test_files_root); |
| 228 return g_test_server->InitializeAndWaitUntilReady(); | 228 return g_test_server->InitializeAndWaitUntilReady(); |
| 229 } | 229 } |
| 230 | 230 |
| 231 void RegisterHostResolverProc(JNIEnv* env, | 231 void RegisterHostResolverProc(JNIEnv* env, |
| 232 jclass jcaller, | 232 const JavaParamRef<jclass>& jcaller, |
| 233 jlong jadapter, | 233 jlong jadapter, |
| 234 jboolean jlegacy_api) { | 234 jboolean jlegacy_api) { |
| 235 if (jlegacy_api == JNI_TRUE) { | 235 if (jlegacy_api == JNI_TRUE) { |
| 236 URLRequestContextAdapter* context_adapter = | 236 URLRequestContextAdapter* context_adapter = |
| 237 reinterpret_cast<URLRequestContextAdapter*>(jadapter); | 237 reinterpret_cast<URLRequestContextAdapter*>(jadapter); |
| 238 context_adapter->PostTaskToNetworkThread( | 238 context_adapter->PostTaskToNetworkThread( |
| 239 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI, | 239 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThreadLegacyAPI, |
| 240 base::Unretained(context_adapter))); | 240 base::Unretained(context_adapter))); |
| 241 } else { | 241 } else { |
| 242 CronetURLRequestContextAdapter* context_adapter = | 242 CronetURLRequestContextAdapter* context_adapter = |
| 243 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter); | 243 reinterpret_cast<CronetURLRequestContextAdapter*>(jadapter); |
| 244 context_adapter->PostTaskToNetworkThread( | 244 context_adapter->PostTaskToNetworkThread( |
| 245 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread, | 245 FROM_HERE, base::Bind(&RegisterHostResolverProcOnNetworkThread, |
| 246 base::Unretained(context_adapter))); | 246 base::Unretained(context_adapter))); |
| 247 } | 247 } |
| 248 } | 248 } |
| 249 | 249 |
| 250 void ShutdownNativeTestServer(JNIEnv* env, jclass jcaller) { | 250 void ShutdownNativeTestServer(JNIEnv* env, |
| 251 const JavaParamRef<jclass>& jcaller) { |
| 251 if (!g_test_server) | 252 if (!g_test_server) |
| 252 return; | 253 return; |
| 253 delete g_test_server; | 254 delete g_test_server; |
| 254 g_test_server = NULL; | 255 g_test_server = NULL; |
| 255 } | 256 } |
| 256 | 257 |
| 257 ScopedJavaLocalRef<jstring> GetEchoBodyURL(JNIEnv* env, jclass jcaller) { | 258 ScopedJavaLocalRef<jstring> GetEchoBodyURL( |
| 259 JNIEnv* env, |
| 260 const JavaParamRef<jclass>& jcaller) { |
| 258 DCHECK(g_test_server); | 261 DCHECK(g_test_server); |
| 259 GURL url = g_test_server->GetURL(kEchoBodyPath); | 262 GURL url = g_test_server->GetURL(kEchoBodyPath); |
| 260 return base::android::ConvertUTF8ToJavaString(env, url.spec()); | 263 return base::android::ConvertUTF8ToJavaString(env, url.spec()); |
| 261 } | 264 } |
| 262 | 265 |
| 263 ScopedJavaLocalRef<jstring> GetEchoHeaderURL(JNIEnv* env, | 266 ScopedJavaLocalRef<jstring> GetEchoHeaderURL( |
| 264 jclass jcaller, | 267 JNIEnv* env, |
| 265 jstring jheader) { | 268 const JavaParamRef<jclass>& jcaller, |
| 269 const JavaParamRef<jstring>& jheader) { |
| 266 DCHECK(g_test_server); | 270 DCHECK(g_test_server); |
| 267 GURL url = g_test_server->GetURL(kEchoHeaderPath); | 271 GURL url = g_test_server->GetURL(kEchoHeaderPath); |
| 268 GURL::Replacements replacements; | 272 GURL::Replacements replacements; |
| 269 std::string header = base::android::ConvertJavaStringToUTF8(env, jheader); | 273 std::string header = base::android::ConvertJavaStringToUTF8(env, jheader); |
| 270 replacements.SetQueryStr(header.c_str()); | 274 replacements.SetQueryStr(header.c_str()); |
| 271 url = url.ReplaceComponents(replacements); | 275 url = url.ReplaceComponents(replacements); |
| 272 return base::android::ConvertUTF8ToJavaString(env, url.spec()); | 276 return base::android::ConvertUTF8ToJavaString(env, url.spec()); |
| 273 } | 277 } |
| 274 | 278 |
| 275 ScopedJavaLocalRef<jstring> GetEchoAllHeadersURL(JNIEnv* env, jclass jcaller) { | 279 ScopedJavaLocalRef<jstring> GetEchoAllHeadersURL( |
| 280 JNIEnv* env, |
| 281 const JavaParamRef<jclass>& jcaller) { |
| 276 DCHECK(g_test_server); | 282 DCHECK(g_test_server); |
| 277 GURL url = g_test_server->GetURL(kEchoAllHeadersPath); | 283 GURL url = g_test_server->GetURL(kEchoAllHeadersPath); |
| 278 return base::android::ConvertUTF8ToJavaString(env, url.spec()); | 284 return base::android::ConvertUTF8ToJavaString(env, url.spec()); |
| 279 } | 285 } |
| 280 | 286 |
| 281 ScopedJavaLocalRef<jstring> GetEchoMethodURL(JNIEnv* env, jclass jcaller) { | 287 ScopedJavaLocalRef<jstring> GetEchoMethodURL( |
| 288 JNIEnv* env, |
| 289 const JavaParamRef<jclass>& jcaller) { |
| 282 DCHECK(g_test_server); | 290 DCHECK(g_test_server); |
| 283 GURL url = g_test_server->GetURL(kEchoMethodPath); | 291 GURL url = g_test_server->GetURL(kEchoMethodPath); |
| 284 return base::android::ConvertUTF8ToJavaString(env, url.spec()); | 292 return base::android::ConvertUTF8ToJavaString(env, url.spec()); |
| 285 } | 293 } |
| 286 | 294 |
| 287 ScopedJavaLocalRef<jstring> GetRedirectToEchoBody(JNIEnv* env, jclass jcaller) { | 295 ScopedJavaLocalRef<jstring> GetRedirectToEchoBody( |
| 296 JNIEnv* env, |
| 297 const JavaParamRef<jclass>& jcaller) { |
| 288 DCHECK(g_test_server); | 298 DCHECK(g_test_server); |
| 289 GURL url = g_test_server->GetURL(kRedirectToEchoBodyPath); | 299 GURL url = g_test_server->GetURL(kRedirectToEchoBodyPath); |
| 290 return base::android::ConvertUTF8ToJavaString(env, url.spec()); | 300 return base::android::ConvertUTF8ToJavaString(env, url.spec()); |
| 291 } | 301 } |
| 292 | 302 |
| 293 ScopedJavaLocalRef<jstring> GetFileURL(JNIEnv* env, | 303 ScopedJavaLocalRef<jstring> GetFileURL( |
| 294 jclass jcaller, | 304 JNIEnv* env, |
| 295 jstring jfile_path) { | 305 const JavaParamRef<jclass>& jcaller, |
| 306 const JavaParamRef<jstring>& jfile_path) { |
| 296 DCHECK(g_test_server); | 307 DCHECK(g_test_server); |
| 297 std::string file = base::android::ConvertJavaStringToUTF8(env, jfile_path); | 308 std::string file = base::android::ConvertJavaStringToUTF8(env, jfile_path); |
| 298 GURL url = g_test_server->GetURL(file); | 309 GURL url = g_test_server->GetURL(file); |
| 299 return base::android::ConvertUTF8ToJavaString(env, url.spec()); | 310 return base::android::ConvertUTF8ToJavaString(env, url.spec()); |
| 300 } | 311 } |
| 301 | 312 |
| 302 ScopedJavaLocalRef<jstring> GetSdchURL(JNIEnv* env, jclass jcaller) { | 313 ScopedJavaLocalRef<jstring> GetSdchURL(JNIEnv* env, |
| 314 const JavaParamRef<jclass>& jcaller) { |
| 303 DCHECK(g_test_server); | 315 DCHECK(g_test_server); |
| 304 std::string url(base::StringPrintf("http://%s:%d", kFakeSdchDomain, | 316 std::string url(base::StringPrintf("http://%s:%d", kFakeSdchDomain, |
| 305 g_test_server->port())); | 317 g_test_server->port())); |
| 306 return base::android::ConvertUTF8ToJavaString(env, url); | 318 return base::android::ConvertUTF8ToJavaString(env, url); |
| 307 } | 319 } |
| 308 | 320 |
| 309 ScopedJavaLocalRef<jstring> GetHostPort(JNIEnv* env, jclass jcaller) { | 321 ScopedJavaLocalRef<jstring> GetHostPort(JNIEnv* env, |
| 322 const JavaParamRef<jclass>& jcaller) { |
| 310 DCHECK(g_test_server); | 323 DCHECK(g_test_server); |
| 311 std::string host_port = | 324 std::string host_port = |
| 312 net::HostPortPair::FromURL(g_test_server->base_url()).ToString(); | 325 net::HostPortPair::FromURL(g_test_server->base_url()).ToString(); |
| 313 return base::android::ConvertUTF8ToJavaString(env, host_port); | 326 return base::android::ConvertUTF8ToJavaString(env, host_port); |
| 314 } | 327 } |
| 315 | 328 |
| 316 jboolean IsDataReductionProxySupported(JNIEnv* env, jclass jcaller) { | 329 jboolean IsDataReductionProxySupported(JNIEnv* env, |
| 330 const JavaParamRef<jclass>& jcaller) { |
| 317 #if defined(DATA_REDUCTION_PROXY_SUPPORT) | 331 #if defined(DATA_REDUCTION_PROXY_SUPPORT) |
| 318 return JNI_TRUE; | 332 return JNI_TRUE; |
| 319 #else | 333 #else |
| 320 return JNI_FALSE; | 334 return JNI_FALSE; |
| 321 #endif | 335 #endif |
| 322 } | 336 } |
| 323 | 337 |
| 324 bool RegisterNativeTestServer(JNIEnv* env) { | 338 bool RegisterNativeTestServer(JNIEnv* env) { |
| 325 return RegisterNativesImpl(env); | 339 return RegisterNativesImpl(env); |
| 326 } | 340 } |
| 327 | 341 |
| 328 } // namespace cronet | 342 } // namespace cronet |
| OLD | NEW |