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 "components/cronet/android/cronet_url_request_context_adapter.h" | 5 #include "components/cronet/android/cronet_url_request_context_adapter.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
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 10 matching lines...) Expand all Loading... |
21 #include "base/single_thread_task_runner.h" | 21 #include "base/single_thread_task_runner.h" |
22 #include "base/time/time.h" | 22 #include "base/time/time.h" |
23 #include "base/values.h" | 23 #include "base/values.h" |
24 #include "components/cronet/url_request_context_config.h" | 24 #include "components/cronet/url_request_context_config.h" |
25 #include "jni/CronetUrlRequestContext_jni.h" | 25 #include "jni/CronetUrlRequestContext_jni.h" |
26 #include "net/base/external_estimate_provider.h" | 26 #include "net/base/external_estimate_provider.h" |
27 #include "net/base/load_flags.h" | 27 #include "net/base/load_flags.h" |
28 #include "net/base/net_errors.h" | 28 #include "net/base/net_errors.h" |
29 #include "net/base/net_util.h" | 29 #include "net/base/net_util.h" |
30 #include "net/base/network_delegate_impl.h" | 30 #include "net/base/network_delegate_impl.h" |
| 31 #include "net/cert/cert_verifier.h" |
31 #include "net/http/http_auth_handler_factory.h" | 32 #include "net/http/http_auth_handler_factory.h" |
32 #include "net/http/http_server_properties_manager.h" | 33 #include "net/http/http_server_properties_manager.h" |
33 #include "net/log/write_to_file_net_log_observer.h" | 34 #include "net/log/write_to_file_net_log_observer.h" |
34 #include "net/proxy/proxy_config_service_android.h" | 35 #include "net/proxy/proxy_config_service_android.h" |
35 #include "net/proxy/proxy_service.h" | 36 #include "net/proxy/proxy_service.h" |
36 #include "net/sdch/sdch_owner.h" | 37 #include "net/sdch/sdch_owner.h" |
37 #include "net/url_request/url_request_context.h" | 38 #include "net/url_request/url_request_context.h" |
38 #include "net/url_request/url_request_context_builder.h" | 39 #include "net/url_request/url_request_context_builder.h" |
39 #include "net/url_request/url_request_interceptor.h" | 40 #include "net/url_request/url_request_interceptor.h" |
40 | 41 |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 void CronetURLRequestContextAdapter::OnThroughputObservation( | 506 void CronetURLRequestContextAdapter::OnThroughputObservation( |
506 int32_t throughput_kbps, | 507 int32_t throughput_kbps, |
507 const base::TimeTicks& timestamp, | 508 const base::TimeTicks& timestamp, |
508 net::NetworkQualityEstimator::ObservationSource source) { | 509 net::NetworkQualityEstimator::ObservationSource source) { |
509 Java_CronetUrlRequestContext_onThroughputObservation( | 510 Java_CronetUrlRequestContext_onThroughputObservation( |
510 base::android::AttachCurrentThread(), jcronet_url_request_context_.obj(), | 511 base::android::AttachCurrentThread(), jcronet_url_request_context_.obj(), |
511 throughput_kbps, | 512 throughput_kbps, |
512 (timestamp - base::TimeTicks::UnixEpoch()).InMilliseconds(), source); | 513 (timestamp - base::TimeTicks::UnixEpoch()).InMilliseconds(), source); |
513 } | 514 } |
514 | 515 |
| 516 // Create a URLRequestContextConfig from the given parameters. |
| 517 static jlong CreateRequestContextConfig( |
| 518 JNIEnv* env, |
| 519 const JavaParamRef<jclass>& jcaller, |
| 520 const JavaParamRef<jstring>& juser_agent, |
| 521 const JavaParamRef<jstring>& jstorage_path, |
| 522 jboolean jquic_enabled, |
| 523 jboolean jhttp2_enabled, |
| 524 jboolean jsdch_enabled, |
| 525 const JavaParamRef<jstring>& jdata_reduction_proxy_key, |
| 526 const JavaParamRef<jstring>& jdata_reduction_proxy_primary_proxy, |
| 527 const JavaParamRef<jstring>& jdata_reduction_proxy_fallback_proxy, |
| 528 const JavaParamRef<jstring>& jdata_reduction_proxy_secure_proxy_check_url, |
| 529 jboolean jdisable_cache, |
| 530 jint jhttp_cache_mode, |
| 531 jlong jhttp_cache_max_size, |
| 532 const JavaParamRef<jstring>& jexperimental_quic_connection_options, |
| 533 jlong jmock_cert_verifier) { |
| 534 return reinterpret_cast<jlong>(new URLRequestContextConfig( |
| 535 jquic_enabled, jhttp2_enabled, jsdch_enabled, |
| 536 static_cast<URLRequestContextConfig::HttpCacheType>(jhttp_cache_mode), |
| 537 jhttp_cache_max_size, jdisable_cache, |
| 538 base::android::ConvertJavaStringToUTF8(env, jstorage_path), |
| 539 base::android::ConvertJavaStringToUTF8(env, juser_agent), |
| 540 base::android::ConvertJavaStringToUTF8( |
| 541 env, jexperimental_quic_connection_options), |
| 542 base::android::ConvertJavaStringToUTF8(env, jdata_reduction_proxy_key), |
| 543 base::android::ConvertJavaStringToUTF8( |
| 544 env, jdata_reduction_proxy_primary_proxy), |
| 545 base::android::ConvertJavaStringToUTF8( |
| 546 env, jdata_reduction_proxy_fallback_proxy), |
| 547 base::android::ConvertJavaStringToUTF8( |
| 548 env, jdata_reduction_proxy_secure_proxy_check_url), |
| 549 make_scoped_ptr( |
| 550 reinterpret_cast<net::CertVerifier*>(jmock_cert_verifier)))); |
| 551 } |
| 552 |
| 553 // Add a QUIC hint to a URLRequestContextConfig. |
| 554 static void AddQuicHint(JNIEnv* env, |
| 555 const JavaParamRef<jclass>& jcaller, |
| 556 jlong jurl_request_context_config, |
| 557 const JavaParamRef<jstring>& jhost, |
| 558 jint jport, |
| 559 jint jalternate_port) { |
| 560 URLRequestContextConfig* config = |
| 561 reinterpret_cast<URLRequestContextConfig*>(jurl_request_context_config); |
| 562 config->quic_hints.push_back( |
| 563 make_scoped_ptr(new URLRequestContextConfig::QuicHint( |
| 564 base::android::ConvertJavaStringToUTF8(env, jhost), jport, |
| 565 jalternate_port))); |
| 566 } |
| 567 |
515 // Creates RequestContextAdater if config is valid URLRequestContextConfig, | 568 // Creates RequestContextAdater if config is valid URLRequestContextConfig, |
516 // returns 0 otherwise. | 569 // returns 0 otherwise. |
517 static jlong CreateRequestContextAdapter(JNIEnv* env, | 570 static jlong CreateRequestContextAdapter(JNIEnv* env, |
518 const JavaParamRef<jclass>& jcaller, | 571 const JavaParamRef<jclass>& jcaller, |
519 const JavaParamRef<jstring>& jconfig) { | 572 jlong jconfig) { |
520 std::string config_string = | |
521 base::android::ConvertJavaStringToUTF8(env, jconfig); | |
522 scoped_ptr<URLRequestContextConfig> context_config( | 573 scoped_ptr<URLRequestContextConfig> context_config( |
523 new URLRequestContextConfig()); | 574 reinterpret_cast<URLRequestContextConfig*>(jconfig)); |
524 if (!context_config->LoadFromJSON(config_string)) | |
525 return 0; | |
526 | 575 |
527 CronetURLRequestContextAdapter* context_adapter = | 576 CronetURLRequestContextAdapter* context_adapter = |
528 new CronetURLRequestContextAdapter(context_config.Pass()); | 577 new CronetURLRequestContextAdapter(context_config.Pass()); |
529 return reinterpret_cast<jlong>(context_adapter); | 578 return reinterpret_cast<jlong>(context_adapter); |
530 } | 579 } |
531 | 580 |
532 static jint SetMinLogLevel(JNIEnv* env, | 581 static jint SetMinLogLevel(JNIEnv* env, |
533 const JavaParamRef<jclass>& jcaller, | 582 const JavaParamRef<jclass>& jcaller, |
534 jint jlog_level) { | 583 jint jlog_level) { |
535 jint old_log_level = static_cast<jint>(logging::GetMinLogLevel()); | 584 jint old_log_level = static_cast<jint>(logging::GetMinLogLevel()); |
536 // MinLogLevel is global, shared by all URLRequestContexts. | 585 // MinLogLevel is global, shared by all URLRequestContexts. |
537 logging::SetMinLogLevel(static_cast<int>(jlog_level)); | 586 logging::SetMinLogLevel(static_cast<int>(jlog_level)); |
538 return old_log_level; | 587 return old_log_level; |
539 } | 588 } |
540 | 589 |
541 } // namespace cronet | 590 } // namespace cronet |
OLD | NEW |