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