Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(266)

Unified Diff: components/cronet/android/cronet_url_request_context_adapter.cc

Issue 1273173002: Added Network Quality Estimator Real-time interface to Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698