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

Side by Side Diff: components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java

Issue 2433923005: Revert of Expose RTT and throughput estimates from Cronet (Closed)
Patch Set: Created 4 years, 2 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 unified diff | Download patch
OLDNEW
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 package org.chromium.net.impl; 5 package org.chromium.net.impl;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.os.Build; 8 import android.os.Build;
9 import android.os.ConditionVariable; 9 import android.os.ConditionVariable;
10 import android.os.Handler; 10 import android.os.Handler;
11 import android.os.Looper; 11 import android.os.Looper;
12 import android.os.Process; 12 import android.os.Process;
13 import android.util.Log; 13 import android.util.Log;
14 14
15 import org.chromium.base.ObserverList; 15 import org.chromium.base.ObserverList;
16 import org.chromium.base.VisibleForTesting; 16 import org.chromium.base.VisibleForTesting;
17 import org.chromium.base.annotations.CalledByNative; 17 import org.chromium.base.annotations.CalledByNative;
18 import org.chromium.base.annotations.JNINamespace; 18 import org.chromium.base.annotations.JNINamespace;
19 import org.chromium.base.annotations.NativeClassQualifiedName; 19 import org.chromium.base.annotations.NativeClassQualifiedName;
20 import org.chromium.base.annotations.UsedByReflection; 20 import org.chromium.base.annotations.UsedByReflection;
21 import org.chromium.net.BidirectionalStream; 21 import org.chromium.net.BidirectionalStream;
22 import org.chromium.net.CronetEngine; 22 import org.chromium.net.CronetEngine;
23 import org.chromium.net.EffectiveConnectionType; 23 import org.chromium.net.EffectiveConnectionType;
24 import org.chromium.net.NetworkQualityRttListener; 24 import org.chromium.net.NetworkQualityRttListener;
25 import org.chromium.net.NetworkQualityThroughputListener; 25 import org.chromium.net.NetworkQualityThroughputListener;
26 import org.chromium.net.RequestFinishedInfo; 26 import org.chromium.net.RequestFinishedInfo;
27 import org.chromium.net.RttThroughputValues;
28 import org.chromium.net.UrlRequest; 27 import org.chromium.net.UrlRequest;
29 import org.chromium.net.urlconnection.CronetHttpURLConnection; 28 import org.chromium.net.urlconnection.CronetHttpURLConnection;
30 import org.chromium.net.urlconnection.CronetURLStreamHandlerFactory; 29 import org.chromium.net.urlconnection.CronetURLStreamHandlerFactory;
31 30
32 import java.net.Proxy; 31 import java.net.Proxy;
33 import java.net.URL; 32 import java.net.URL;
34 import java.net.URLConnection; 33 import java.net.URLConnection;
35 import java.net.URLStreamHandlerFactory; 34 import java.net.URLStreamHandlerFactory;
36 import java.util.ArrayList; 35 import java.util.ArrayList;
37 import java.util.Collection; 36 import java.util.Collection;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 */ 87 */
89 private final Object mFinishedListenerLock = new Object(); 88 private final Object mFinishedListenerLock = new Object();
90 89
91 /** 90 /**
92 * Current effective connection type as computed by the network quality 91 * Current effective connection type as computed by the network quality
93 * estimator. 92 * estimator.
94 */ 93 */
95 @GuardedBy("mNetworkQualityLock") 94 @GuardedBy("mNetworkQualityLock")
96 private int mEffectiveConnectionType = EffectiveConnectionType.TYPE_UNKNOWN; 95 private int mEffectiveConnectionType = EffectiveConnectionType.TYPE_UNKNOWN;
97 96
98 /**
99 * Current estimate of the HTTP RTT (in milliseconds) computed by the
100 * network quality estimator.
101 */
102 @GuardedBy("mNetworkQualityLock")
103 private int mHttpRttMs = RttThroughputValues.INVALID_RTT_THROUGHPUT;
104
105 /**
106 * Current estimate of the transport RTT (in milliseconds) computed by the
107 * network quality estimator.
108 */
109 @GuardedBy("mNetworkQualityLock")
110 private int mTransportRttMs = RttThroughputValues.INVALID_RTT_THROUGHPUT;
111
112 /**
113 * Current estimate of the downstream throughput (in kilobits per second)
114 * computed by the network quality estimator.
115 */
116 @GuardedBy("mNetworkQualityLock")
117 private int mDownstreamThroughputKbps = RttThroughputValues.INVALID_RTT_THRO UGHPUT;
118
119 @GuardedBy("mNetworkQualityLock") 97 @GuardedBy("mNetworkQualityLock")
120 private final ObserverList<NetworkQualityRttListener> mRttListenerList = 98 private final ObserverList<NetworkQualityRttListener> mRttListenerList =
121 new ObserverList<NetworkQualityRttListener>(); 99 new ObserverList<NetworkQualityRttListener>();
122 100
123 @GuardedBy("mNetworkQualityLock") 101 @GuardedBy("mNetworkQualityLock")
124 private final ObserverList<NetworkQualityThroughputListener> mThroughputList enerList = 102 private final ObserverList<NetworkQualityThroughputListener> mThroughputList enerList =
125 new ObserverList<NetworkQualityThroughputListener>(); 103 new ObserverList<NetworkQualityThroughputListener>();
126 104
127 @GuardedBy("mFinishedListenerLock") 105 @GuardedBy("mFinishedListenerLock")
128 private final List<RequestFinishedInfo.Listener> mFinishedListenerList = 106 private final List<RequestFinishedInfo.Listener> mFinishedListenerList =
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 public byte[] getGlobalMetricsDeltas() { 320 public byte[] getGlobalMetricsDeltas() {
343 return nativeGetHistogramDeltas(); 321 return nativeGetHistogramDeltas();
344 } 322 }
345 323
346 @Override 324 @Override
347 public int getEffectiveConnectionType() { 325 public int getEffectiveConnectionType() {
348 if (!mNetworkQualityEstimatorEnabled) { 326 if (!mNetworkQualityEstimatorEnabled) {
349 throw new IllegalStateException("Network quality estimator must be e nabled"); 327 throw new IllegalStateException("Network quality estimator must be e nabled");
350 } 328 }
351 synchronized (mNetworkQualityLock) { 329 synchronized (mNetworkQualityLock) {
330 synchronized (mLock) {
331 checkHaveAdapter();
332 }
352 return mEffectiveConnectionType; 333 return mEffectiveConnectionType;
353 } 334 }
354 } 335 }
355 336
356 @Override
357 public int getHttpRttMs() {
358 if (!mNetworkQualityEstimatorEnabled) {
359 throw new IllegalStateException("Network quality estimator must be e nabled");
360 }
361 synchronized (mNetworkQualityLock) {
362 return mHttpRttMs;
363 }
364 }
365
366 @Override
367 public int getTransportRttMs() {
368 if (!mNetworkQualityEstimatorEnabled) {
369 throw new IllegalStateException("Network quality estimator must be e nabled");
370 }
371 synchronized (mNetworkQualityLock) {
372 return mTransportRttMs;
373 }
374 }
375
376 @Override
377 public int getDownstreamThroughputKbps() {
378 if (!mNetworkQualityEstimatorEnabled) {
379 throw new IllegalStateException("Network quality estimator must be e nabled");
380 }
381 synchronized (mNetworkQualityLock) {
382 return mDownstreamThroughputKbps;
383 }
384 }
385
386 @VisibleForTesting 337 @VisibleForTesting
387 @Override 338 @Override
388 public void configureNetworkQualityEstimatorForTesting( 339 public void configureNetworkQualityEstimatorForTesting(
389 boolean useLocalHostRequests, boolean useSmallerResponses) { 340 boolean useLocalHostRequests, boolean useSmallerResponses) {
390 if (!mNetworkQualityEstimatorEnabled) { 341 if (!mNetworkQualityEstimatorEnabled) {
391 throw new IllegalStateException("Network quality estimator must be e nabled"); 342 throw new IllegalStateException("Network quality estimator must be e nabled");
392 } 343 }
393 synchronized (mLock) { 344 synchronized (mLock) {
394 checkHaveAdapter(); 345 checkHaveAdapter();
395 nativeConfigureNetworkQualityEstimatorForTesting( 346 nativeConfigureNetworkQualityEstimatorForTesting(
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 @SuppressWarnings("unused") 518 @SuppressWarnings("unused")
568 @CalledByNative 519 @CalledByNative
569 private void onEffectiveConnectionTypeChanged(int effectiveConnectionType) { 520 private void onEffectiveConnectionTypeChanged(int effectiveConnectionType) {
570 synchronized (mNetworkQualityLock) { 521 synchronized (mNetworkQualityLock) {
571 // Convert the enum returned by the network quality estimator to an enum of type 522 // Convert the enum returned by the network quality estimator to an enum of type
572 // EffectiveConnectionType. 523 // EffectiveConnectionType.
573 mEffectiveConnectionType = effectiveConnectionType; 524 mEffectiveConnectionType = effectiveConnectionType;
574 } 525 }
575 } 526 }
576 527
577 @SuppressWarnings("unused")
578 @CalledByNative
579 private void onRTTOrThroughputEstimatesComputed(
580 final int httpRttMs, final int transportRttMs, final int downstreamT hroughputKbps) {
581 synchronized (mNetworkQualityLock) {
582 mHttpRttMs = httpRttMs;
583 mTransportRttMs = transportRttMs;
584 mDownstreamThroughputKbps = downstreamThroughputKbps;
585 }
586 }
587
588 @SuppressWarnings("unused") 528 @SuppressWarnings("unused")
589 @CalledByNative 529 @CalledByNative
590 private void onRttObservation(final int rttMs, final long whenMs, final int source) { 530 private void onRttObservation(final int rttMs, final long whenMs, final int source) {
591 synchronized (mNetworkQualityLock) { 531 synchronized (mNetworkQualityLock) {
592 for (final NetworkQualityRttListener listener : mRttListenerList) { 532 for (final NetworkQualityRttListener listener : mRttListenerList) {
593 Runnable task = new Runnable() { 533 Runnable task = new Runnable() {
594 @Override 534 @Override
595 public void run() { 535 public void run() {
596 listener.onRttObservation(rttMs, whenMs, source); 536 listener.onRttObservation(rttMs, whenMs, source);
597 } 537 }
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 638 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
699 private native void nativeProvideRTTObservations(long nativePtr, boolean sho uld); 639 private native void nativeProvideRTTObservations(long nativePtr, boolean sho uld);
700 640
701 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 641 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
702 private native void nativeProvideThroughputObservations(long nativePtr, bool ean should); 642 private native void nativeProvideThroughputObservations(long nativePtr, bool ean should);
703 643
704 public boolean isNetworkThread(Thread thread) { 644 public boolean isNetworkThread(Thread thread) {
705 return thread == mNetworkThread; 645 return thread == mNetworkThread;
706 } 646 }
707 } 647 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698