Index: components/cronet/android/cronet_url_request_context_adapter.cc |
diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc |
index cfb590b463ccf59a0a6fc8df726d02ad01f7d5ce..1bc86c3ba53f066865bc8ad31f610655a10df004 100644 |
--- a/components/cronet/android/cronet_url_request_context_adapter.cc |
+++ b/components/cronet/android/cronet_url_request_context_adapter.cc |
@@ -24,6 +24,7 @@ |
#include "net/base/load_flags.h" |
#include "net/base/net_errors.h" |
#include "net/base/network_delegate_impl.h" |
+#include "net/base/network_quality_estimator.h" |
#include "net/http/http_auth_handler_factory.h" |
#include "net/http/http_server_properties_manager.h" |
#include "net/log/write_to_file_net_log_observer.h" |
@@ -159,6 +160,29 @@ void CronetURLRequestContextAdapter::InitRequestContextOnMainThread( |
jcaller_ref)); |
} |
+void CronetURLRequestContextAdapter::ConfigureNetworkQualityEstimator( |
+ JNIEnv* env, jobject jcaller, jboolean use_local_host_requests, |
+ jboolean use_smaller_responses) { |
+ network_quality_estimator_->Configure(use_local_host_requests, |
+ use_smaller_responses); |
+} |
+ |
+void CronetURLRequestContextAdapter::ProvideRTTObservations( |
+ JNIEnv* env, jobject jcaller, bool should) { |
+ if (should) |
+ network_quality_estimator_->AddRTTObserver(this); |
+ else |
+ network_quality_estimator_->RemoveRTTObserver(this); |
+} |
+ |
+void CronetURLRequestContextAdapter::ProvideBandwidthObservations( |
+ JNIEnv* env, jobject jcaller, bool should) { |
+ if (should) |
+ network_quality_estimator_->AddBandwidthObserver(this); |
+ else |
+ network_quality_estimator_->RemoveBandwidthObserver(this); |
+} |
+ |
void CronetURLRequestContextAdapter::InitializeOnNetworkThread( |
scoped_ptr<URLRequestContextConfig> config, |
const base::android::ScopedJavaGlobalRef<jobject>& |
@@ -224,6 +248,10 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread( |
} |
context_.reset(context_builder.Build()); |
+ std::map<std::string, std::string> network_quality_estimator_params; |
mef
2015/08/11 17:16:26
Should this happen only if ConfigureNetworkQuality
bengr
2015/08/25 23:43:34
Done.
|
+ network_quality_estimator_.reset(new net::NetworkQualityEstimator( |
+ network_quality_estimator_params)); |
+ context_->set_network_quality_estimator(network_quality_estimator_.get()); |
default_load_flags_ = net::LOAD_DO_NOT_SAVE_COOKIES | |
net::LOAD_DO_NOT_SEND_COOKIES; |
@@ -284,6 +312,7 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread( |
} |
JNIEnv* env = base::android::AttachCurrentThread(); |
+ jcronet_url_request_context_.Reset(env, jcronet_url_request_context.obj()); |
mef
2015/08/11 17:16:26
Does this add a reference to jcronet_url_request_c
bengr
2015/08/25 23:43:34
We didn't store the reference before. Is there a b
mef
2015/08/26 16:58:59
It seems that we do the same in CronetUrlRequestAd
|
Java_CronetUrlRequestContext_initNetworkThread( |
env, jcronet_url_request_context.obj()); |
@@ -402,6 +431,27 @@ base::Thread* CronetURLRequestContextAdapter::GetFileThread() { |
return file_thread_.get(); |
} |
+void CronetURLRequestContextAdapter::OnRTTObservation( |
+ int32_t value, const base::TimeTicks& timestamp, |
+ net::NetworkQualityEstimator::ObservationSource source) { |
+ |
+ Java_CronetUrlRequestContext_onRTTObservation( |
+ base::android::AttachCurrentThread(), jcronet_url_request_context_.obj(), |
+ value, |
+ (timestamp - base::TimeTicks::UnixEpoch()).InMilliseconds(), |
+ static_cast<jint>(source)); |
+} |
+ |
+void CronetURLRequestContextAdapter::OnBandwidthObservation( |
+ int32_t value, const base::TimeTicks& timestamp, |
+ net::NetworkQualityEstimator::ObservationSource source) { |
+ Java_CronetUrlRequestContext_onBandwidthObservation( |
+ base::android::AttachCurrentThread(), jcronet_url_request_context_.obj(), |
+ value, |
+ (timestamp - base::TimeTicks::UnixEpoch()).InMilliseconds(), |
+ static_cast<jint>(source)); |
+} |
+ |
// Creates RequestContextAdater if config is valid URLRequestContextConfig, |
// returns 0 otherwise. |
static jlong CreateRequestContextAdapter(JNIEnv* env, |