| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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; | 5 package org.chromium.net; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.net.http.HttpResponseCache; | 9 import android.net.http.HttpResponseCache; |
| 10 import android.support.annotation.IntDef; | 10 import android.support.annotation.IntDef; |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 private boolean mSdchEnabled; | 113 private boolean mSdchEnabled; |
| 114 private String mDataReductionProxyKey; | 114 private String mDataReductionProxyKey; |
| 115 private String mDataReductionProxyPrimaryProxy; | 115 private String mDataReductionProxyPrimaryProxy; |
| 116 private String mDataReductionProxyFallbackProxy; | 116 private String mDataReductionProxyFallbackProxy; |
| 117 private String mDataReductionProxySecureProxyCheckUrl; | 117 private String mDataReductionProxySecureProxyCheckUrl; |
| 118 private boolean mDisableCache; | 118 private boolean mDisableCache; |
| 119 private int mHttpCacheMode; | 119 private int mHttpCacheMode; |
| 120 private long mHttpCacheMaxSize; | 120 private long mHttpCacheMaxSize; |
| 121 private String mExperimentalOptions; | 121 private String mExperimentalOptions; |
| 122 private long mMockCertVerifier; | 122 private long mMockCertVerifier; |
| 123 private boolean mNetworkQualityEstimatorEnabled; |
| 123 | 124 |
| 124 /** | 125 /** |
| 125 * Default config enables SPDY, disables QUIC, SDCH and HTTP cache. | 126 * Default config enables SPDY, disables QUIC, SDCH and HTTP cache. |
| 126 * @param context Android {@link Context} for engine to use. | 127 * @param context Android {@link Context} for engine to use. |
| 127 */ | 128 */ |
| 128 public Builder(Context context) { | 129 public Builder(Context context) { |
| 129 mContext = context; | 130 mContext = context; |
| 130 setLibraryName("cronet"); | 131 setLibraryName("cronet"); |
| 131 enableLegacyMode(false); | 132 enableLegacyMode(false); |
| 132 enableQUIC(false); | 133 enableQUIC(false); |
| 133 enableHTTP2(true); | 134 enableHTTP2(true); |
| 134 enableSDCH(false); | 135 enableSDCH(false); |
| 135 enableHttpCache(HTTP_CACHE_DISABLED, 0); | 136 enableHttpCache(HTTP_CACHE_DISABLED, 0); |
| 137 enableNetworkQualityEstimator(false); |
| 136 } | 138 } |
| 137 | 139 |
| 138 /** | 140 /** |
| 139 * Constructs a User-Agent string including application name and version
, | 141 * Constructs a User-Agent string including application name and version
, |
| 140 * system build version, model and id, and Cronet version. | 142 * system build version, model and id, and Cronet version. |
| 141 * | 143 * |
| 142 * @return User-Agent string. | 144 * @return User-Agent string. |
| 143 */ | 145 */ |
| 144 public String getDefaultUserAgent() { | 146 public String getDefaultUserAgent() { |
| 145 return UserAgent.from(mContext); | 147 return UserAgent.from(mContext); |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 public Builder setMockCertVerifierForTesting(long mockCertVerifier) { | 599 public Builder setMockCertVerifierForTesting(long mockCertVerifier) { |
| 598 mMockCertVerifier = mockCertVerifier; | 600 mMockCertVerifier = mockCertVerifier; |
| 599 return this; | 601 return this; |
| 600 } | 602 } |
| 601 | 603 |
| 602 long mockCertVerifier() { | 604 long mockCertVerifier() { |
| 603 return mMockCertVerifier; | 605 return mMockCertVerifier; |
| 604 } | 606 } |
| 605 | 607 |
| 606 /** | 608 /** |
| 609 * Enables the network quality estimator, which collects and reports |
| 610 * measurements of round trip time (RTT) and downstream throughput at |
| 611 * various layers of the network stack. After enabling the estimator, |
| 612 * listeners of RTT and throughput can be added with |
| 613 * {@link #addRttListener} and {@link #addThroughputListener} and |
| 614 * removed with {@link #removeRttListener} and |
| 615 * {@link #removeThroughputListener}. The estimator uses memory and CPU |
| 616 * only when enabled. |
| 617 * @param value {@code true} to enable network quality estimator, |
| 618 * {@code false} to disable. |
| 619 * @hide as it's a prototype. |
| 620 * @return the builder to facilitate chaining. |
| 621 */ |
| 622 public Builder enableNetworkQualityEstimator(boolean value) { |
| 623 mNetworkQualityEstimatorEnabled = value; |
| 624 return this; |
| 625 } |
| 626 |
| 627 /** |
| 628 * @return true if the network quality estimator has been enabled for |
| 629 * this builder. |
| 630 * @hide as it's a prototype. |
| 631 */ |
| 632 boolean networkQualityEstimatorEnabled() { |
| 633 return mNetworkQualityEstimatorEnabled; |
| 634 } |
| 635 |
| 636 /** |
| 607 * Returns {@link Context} for builder. | 637 * Returns {@link Context} for builder. |
| 608 * | 638 * |
| 609 * @return {@link Context} for builder. | 639 * @return {@link Context} for builder. |
| 610 */ | 640 */ |
| 611 Context getContext() { | 641 Context getContext() { |
| 612 return mContext; | 642 return mContext; |
| 613 } | 643 } |
| 614 | 644 |
| 615 /** | 645 /** |
| 616 * Build a {@link CronetEngine} using this builder's configuration. | 646 * Build a {@link CronetEngine} using this builder's configuration. |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 * useful data as no metrics have yet been collected. | 826 * useful data as no metrics have yet been collected. |
| 797 * | 827 * |
| 798 * @return differences in metrics collected by Cronet, since the last call | 828 * @return differences in metrics collected by Cronet, since the last call |
| 799 * to {@code getGlobalMetricsDeltas()}, serialized as a | 829 * to {@code getGlobalMetricsDeltas()}, serialized as a |
| 800 * <a href=https://developers.google.com/protocol-buffers>protobuf | 830 * <a href=https://developers.google.com/protocol-buffers>protobuf |
| 801 * </a>. | 831 * </a>. |
| 802 */ | 832 */ |
| 803 public abstract byte[] getGlobalMetricsDeltas(); | 833 public abstract byte[] getGlobalMetricsDeltas(); |
| 804 | 834 |
| 805 /** | 835 /** |
| 836 * Sets the executor which will be used to notify RequestFinished |
| 837 * listeners, and to notify network quality RTT listeners |
| 838 * that do not provide an executor. |
| 839 * TODO(tbansal): http://crbug.com/618034 Remove this API. In short term, |
| 840 * once all Cronet embedders supply a valid executor with |
| 841 * NetworkQualityRTTListener, update the above comment to reflect that |
| 842 * {@link executor} is only used to notify RequestFinishedListeners. |
| 843 * @hide as it's a prototype. |
| 844 */ |
| 845 public abstract void setRequestFinishedListenerExecutor(Executor executor); |
| 846 |
| 847 /** |
| 806 * Enables the network quality estimator, which collects and reports | 848 * Enables the network quality estimator, which collects and reports |
| 807 * measurements of round trip time (RTT) and downstream throughput at | 849 * measurements of round trip time (RTT) and downstream throughput at |
| 808 * various layers of the network stack. After enabling the estimator, | 850 * various layers of the network stack. After enabling the estimator, |
| 809 * listeners of RTT and throughput can be added with | 851 * listeners of RTT and throughput can be added with |
| 810 * {@link #addRttListener} and {@link #addThroughputListener} and | 852 * {@link #addRttListener} and {@link #addThroughputListener} and |
| 811 * removed with {@link #removeRttListener} and | 853 * removed with {@link #removeRttListener} and |
| 812 * {@link #removeThroughputListener}. The estimator uses memory and CPU | 854 * {@link #removeThroughputListener}. The estimator uses memory and CPU |
| 813 * only when enabled. | 855 * only when enabled. |
| 814 * @param executor an executor that will be used to notified all | 856 * @param executor an executor that will be used to notified all |
| 815 * added RTT and throughput listeners. | 857 * added RTT and throughput listeners. |
| 858 * TODO(tbansal): http://crbug.com/618034 Remove this API. |
| 816 * @hide as it's a prototype. | 859 * @hide as it's a prototype. |
| 817 */ | 860 */ |
| 818 public abstract void enableNetworkQualityEstimator(Executor executor); | 861 public abstract void enableNetworkQualityEstimator(Executor executor); |
| 819 | 862 |
| 820 /** | 863 /** |
| 821 * Enables the network quality estimator for testing. This must be called | 864 * Configures the network quality estimator for testing. This must be called |
| 822 * before round trip time and throughput listeners are added. Set both | 865 * before round trip time and throughput listeners are added, and after the |
| 823 * boolean parameters to false for default behavior. | 866 * network quality estimator has been enabled. |
| 824 * @param useLocalHostRequests include requests to localhost in estimates. | 867 * @param useLocalHostRequests include requests to localhost in estimates. |
| 825 * @param useSmallerResponses include small responses in throughput estimate
s. | 868 * @param useSmallerResponses include small responses in throughput |
| 826 * @param executor an {@link java.util.concurrent.Executor} on which all | 869 * estimates. |
| 827 * listeners will be called. | |
| 828 * @hide as it's a prototype. | 870 * @hide as it's a prototype. |
| 829 */ | 871 */ |
| 830 abstract void enableNetworkQualityEstimatorForTesting( | 872 abstract void configureNetworkQualityEstimatorForTesting( |
| 831 boolean useLocalHostRequests, boolean useSmallerResponses, Executor
executor); | 873 boolean useLocalHostRequests, boolean useSmallerResponses); |
| 832 | 874 |
| 833 /** | 875 /** |
| 834 * Registers a listener that gets called whenever the network quality | 876 * Registers a listener that gets called whenever the network quality |
| 835 * estimator witnesses a sample round trip time. This must be called | 877 * estimator witnesses a sample round trip time. This must be called |
| 836 * after {@link #enableNetworkQualityEstimator}, and with throw an | 878 * after {@link #enableNetworkQualityEstimator}, and with throw an |
| 837 * exception otherwise. Round trip times may be recorded at various layers | 879 * exception otherwise. Round trip times may be recorded at various layers |
| 838 * of the network stack, including TCP, QUIC, and at the URL request layer. | 880 * of the network stack, including TCP, QUIC, and at the URL request layer. |
| 839 * The listener is called on the {@link java.util.concurrent.Executor} that | 881 * The listener is called on the {@link java.util.concurrent.Executor} that |
| 840 * is passed to {@link #enableNetworkQualityEstimator}. | 882 * is passed to {@link #enableNetworkQualityEstimator}. |
| 841 * @param listener the listener of round trip times. | 883 * @param listener the listener of round trip times. |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 * Registers a listener that gets called after the end of each request with
the request info. | 1002 * Registers a listener that gets called after the end of each request with
the request info. |
| 961 * | 1003 * |
| 962 * <p>This must be called after {@link #enableNetworkQualityEstimator} and w
ill throw an | 1004 * <p>This must be called after {@link #enableNetworkQualityEstimator} and w
ill throw an |
| 963 * exception otherwise. | 1005 * exception otherwise. |
| 964 * | 1006 * |
| 965 * <p>The listener is called on the {@link java.util.concurrent.Executor} th
at | 1007 * <p>The listener is called on the {@link java.util.concurrent.Executor} th
at |
| 966 * is passed to {@link #enableNetworkQualityEstimator}. | 1008 * is passed to {@link #enableNetworkQualityEstimator}. |
| 967 * | 1009 * |
| 968 * @param listener the listener for finished requests. | 1010 * @param listener the listener for finished requests. |
| 969 * | 1011 * |
| 1012 * TODO(tbansal): http://crbug.com/618034 Remove this API, once all embedde
rs have switched to |
| 1013 * using a request finished listener that provides its own executor. |
| 970 * @hide as it's a prototype. | 1014 * @hide as it's a prototype. |
| 971 */ | 1015 */ |
| 972 public abstract void addRequestFinishedListener(RequestFinishedListener list
ener); | 1016 public abstract void addRequestFinishedListener(RequestFinishedListener list
ener); |
| 973 | 1017 |
| 974 /** | 1018 /** |
| 975 * Removes a finished request listener. | 1019 * Removes a finished request listener. |
| 976 * | 1020 * |
| 977 * @param listener the listener to remove. | 1021 * @param listener the listener to remove. |
| 978 * | 1022 * |
| 1023 * TODO(tbansal): http://crbug.com/618034 Remove this API, once all embedde
rs have switched to |
| 1024 * using a request finished listener that provides its own executor. |
| 979 * @hide it's a prototype. | 1025 * @hide it's a prototype. |
| 980 */ | 1026 */ |
| 981 public abstract void removeRequestFinishedListener(RequestFinishedListener l
istener); | 1027 public abstract void removeRequestFinishedListener(RequestFinishedListener l
istener); |
| 982 | 1028 |
| 983 /** | 1029 /** |
| 984 * Information about a finished request. Passed to {@link RequestFinishedLis
tener}. | 1030 * Information about a finished request. Passed to {@link RequestFinishedLis
tener}. |
| 985 * | 1031 * |
| 986 * @hide as it's a prototype. | 1032 * @hide as it's a prototype. |
| 987 */ | 1033 */ |
| 988 public static final class UrlRequestInfo { | 1034 public static final class UrlRequestInfo { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 */ | 1135 */ |
| 1090 @Nullable | 1136 @Nullable |
| 1091 public Long getReceivedBytesCount() { | 1137 public Long getReceivedBytesCount() { |
| 1092 return mReceivedBytesCount; | 1138 return mReceivedBytesCount; |
| 1093 } | 1139 } |
| 1094 } | 1140 } |
| 1095 | 1141 |
| 1096 /** | 1142 /** |
| 1097 * Interface to listen for finished requests that were created via this Cron
etEngine instance. | 1143 * Interface to listen for finished requests that were created via this Cron
etEngine instance. |
| 1098 * | 1144 * |
| 1145 * TODO(tbansal): http://crbug.com/618034 Remove this API, and replace it w
ith a listener |
| 1146 * whose executor is bound to the lifetime of the listener. |
| 1099 * @hide as it's a prototype. | 1147 * @hide as it's a prototype. |
| 1100 */ | 1148 */ |
| 1101 public interface RequestFinishedListener { // TODO(klm): Add a convenience a
bstract class. | 1149 public interface RequestFinishedListener { |
| 1102 /** | 1150 /** |
| 1103 * Invoked with request info. | 1151 * Invoked with request info. |
| 1104 * @param requestInfo {@link UrlRequestInfo} for finished request. | 1152 * @param requestInfo {@link UrlRequestInfo} for finished request. |
| 1105 */ | 1153 */ |
| 1106 void onRequestFinished(UrlRequestInfo requestInfo); | 1154 void onRequestFinished(UrlRequestInfo requestInfo); |
| 1107 } | 1155 } |
| 1108 } | 1156 } |
| OLD | NEW |