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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 * useful data as no metrics have yet been collected. | 816 * useful data as no metrics have yet been collected. |
787 * | 817 * |
788 * @return differences in metrics collected by Cronet, since the last call | 818 * @return differences in metrics collected by Cronet, since the last call |
789 * to {@code getGlobalMetricsDeltas()}, serialized as a | 819 * to {@code getGlobalMetricsDeltas()}, serialized as a |
790 * <a href=https://developers.google.com/protocol-buffers>protobuf | 820 * <a href=https://developers.google.com/protocol-buffers>protobuf |
791 * </a>. | 821 * </a>. |
792 */ | 822 */ |
793 public abstract byte[] getGlobalMetricsDeltas(); | 823 public abstract byte[] getGlobalMetricsDeltas(); |
794 | 824 |
795 /** | 825 /** |
| 826 * Sets the executor which will be used to notify RequestFinished |
| 827 * listeners, and to notify network quality RTT listeners |
| 828 * that do not provide an executor. |
| 829 * TODO(tbansal): http://crbug.com/618034 Remove this API. In short term, |
| 830 * once all Cronet embedders supply a valid executor with |
| 831 * NetworkQualityRTTListener, update the above comment to reflect that |
| 832 * {@link executor} is only used to notify RequestFinishedListeners. |
| 833 * @hide as it's a prototype. |
| 834 */ |
| 835 public abstract void setRequestFinishedListenerExecutor(Executor executor); |
| 836 |
| 837 /** |
796 * Enables the network quality estimator, which collects and reports | 838 * Enables the network quality estimator, which collects and reports |
797 * measurements of round trip time (RTT) and downstream throughput at | 839 * measurements of round trip time (RTT) and downstream throughput at |
798 * various layers of the network stack. After enabling the estimator, | 840 * various layers of the network stack. After enabling the estimator, |
799 * listeners of RTT and throughput can be added with | 841 * listeners of RTT and throughput can be added with |
800 * {@link #addRttListener} and {@link #addThroughputListener} and | 842 * {@link #addRttListener} and {@link #addThroughputListener} and |
801 * removed with {@link #removeRttListener} and | 843 * removed with {@link #removeRttListener} and |
802 * {@link #removeThroughputListener}. The estimator uses memory and CPU | 844 * {@link #removeThroughputListener}. The estimator uses memory and CPU |
803 * only when enabled. | 845 * only when enabled. |
804 * @param executor an executor that will be used to notified all | 846 * @param executor an executor that will be used to notified all |
805 * added RTT and throughput listeners. | 847 * added RTT and throughput listeners. |
| 848 * TODO(tbansal): http://crbug.com/618034 Remove this API. |
806 * @hide as it's a prototype. | 849 * @hide as it's a prototype. |
807 */ | 850 */ |
808 public abstract void enableNetworkQualityEstimator(Executor executor); | 851 public abstract void enableNetworkQualityEstimator(Executor executor); |
809 | 852 |
810 /** | 853 /** |
811 * Enables the network quality estimator for testing. This must be called | 854 * Configures the network quality estimator for testing. This must be called |
812 * before round trip time and throughput listeners are added. Set both | 855 * before round trip time and throughput listeners are added, and after the |
813 * boolean parameters to false for default behavior. | 856 * network quality estimator has been enabled. |
814 * @param useLocalHostRequests include requests to localhost in estimates. | 857 * @param useLocalHostRequests include requests to localhost in estimates. |
815 * @param useSmallerResponses include small responses in throughput estimate
s. | 858 * @param useSmallerResponses include small responses in throughput |
816 * @param executor an {@link java.util.concurrent.Executor} on which all | 859 * estimates. |
817 * listeners will be called. | |
818 * @hide as it's a prototype. | 860 * @hide as it's a prototype. |
819 */ | 861 */ |
820 abstract void enableNetworkQualityEstimatorForTesting( | 862 abstract void configureNetworkQualityEstimatorForTesting( |
821 boolean useLocalHostRequests, boolean useSmallerResponses, Executor
executor); | 863 boolean useLocalHostRequests, boolean useSmallerResponses); |
822 | 864 |
823 /** | 865 /** |
824 * Registers a listener that gets called whenever the network quality | 866 * Registers a listener that gets called whenever the network quality |
825 * estimator witnesses a sample round trip time. This must be called | 867 * estimator witnesses a sample round trip time. This must be called |
826 * after {@link #enableNetworkQualityEstimator}, and with throw an | 868 * after {@link #enableNetworkQualityEstimator}, and with throw an |
827 * exception otherwise. Round trip times may be recorded at various layers | 869 * exception otherwise. Round trip times may be recorded at various layers |
828 * of the network stack, including TCP, QUIC, and at the URL request layer. | 870 * of the network stack, including TCP, QUIC, and at the URL request layer. |
829 * The listener is called on the {@link java.util.concurrent.Executor} that | 871 * The listener is called on the {@link java.util.concurrent.Executor} that |
830 * is passed to {@link #enableNetworkQualityEstimator}. | 872 * is passed to {@link #enableNetworkQualityEstimator}. |
831 * @param listener the listener of round trip times. | 873 * @param listener the listener of round trip times. |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
974 * Registers a listener that gets called after the end of each request with
the request info. | 1016 * Registers a listener that gets called after the end of each request with
the request info. |
975 * | 1017 * |
976 * <p>This must be called after {@link #enableNetworkQualityEstimator} and w
ill throw an | 1018 * <p>This must be called after {@link #enableNetworkQualityEstimator} and w
ill throw an |
977 * exception otherwise. | 1019 * exception otherwise. |
978 * | 1020 * |
979 * <p>The listener is called on the {@link java.util.concurrent.Executor} th
at | 1021 * <p>The listener is called on the {@link java.util.concurrent.Executor} th
at |
980 * is passed to {@link #enableNetworkQualityEstimator}. | 1022 * is passed to {@link #enableNetworkQualityEstimator}. |
981 * | 1023 * |
982 * @param listener the listener for finished requests. | 1024 * @param listener the listener for finished requests. |
983 * | 1025 * |
| 1026 * TODO(tbansal): http://crbug.com/618034 Remove this API, once all embedde
rs have switched to |
| 1027 * using a request finished listener that provides its own executor. |
984 * @hide as it's a prototype. | 1028 * @hide as it's a prototype. |
985 */ | 1029 */ |
986 public abstract void addRequestFinishedListener(RequestFinishedListener list
ener); | 1030 public abstract void addRequestFinishedListener(RequestFinishedListener list
ener); |
987 | 1031 |
988 /** | 1032 /** |
989 * Removes a finished request listener. | 1033 * Removes a finished request listener. |
990 * | 1034 * |
991 * @param listener the listener to remove. | 1035 * @param listener the listener to remove. |
992 * | 1036 * |
| 1037 * TODO(tbansal): http://crbug.com/618034 Remove this API, once all embedde
rs have switched to |
| 1038 * using a request finished listener that provides its own executor. |
993 * @hide it's a prototype. | 1039 * @hide it's a prototype. |
994 */ | 1040 */ |
995 public abstract void removeRequestFinishedListener(RequestFinishedListener l
istener); | 1041 public abstract void removeRequestFinishedListener(RequestFinishedListener l
istener); |
996 | 1042 |
997 /** | 1043 /** |
998 * Information about a finished request. Passed to {@link RequestFinishedLis
tener}. | 1044 * Information about a finished request. Passed to {@link RequestFinishedLis
tener}. |
999 * | 1045 * |
1000 * @hide as it's a prototype. | 1046 * @hide as it's a prototype. |
1001 */ | 1047 */ |
1002 public static final class UrlRequestInfo { | 1048 public static final class UrlRequestInfo { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1103 */ | 1149 */ |
1104 @Nullable | 1150 @Nullable |
1105 public Long getReceivedBytesCount() { | 1151 public Long getReceivedBytesCount() { |
1106 return mReceivedBytesCount; | 1152 return mReceivedBytesCount; |
1107 } | 1153 } |
1108 } | 1154 } |
1109 | 1155 |
1110 /** | 1156 /** |
1111 * Interface to listen for finished requests that were created via this Cron
etEngine instance. | 1157 * Interface to listen for finished requests that were created via this Cron
etEngine instance. |
1112 * | 1158 * |
| 1159 * TODO(tbansal): http://crbug.com/618034 Remove this API, and replace it w
ith a listener |
| 1160 * whose executor is bound to the lifetime of the listener. |
1113 * @hide as it's a prototype. | 1161 * @hide as it's a prototype. |
1114 */ | 1162 */ |
1115 public interface RequestFinishedListener { // TODO(klm): Add a convenience a
bstract class. | 1163 public interface RequestFinishedListener { |
1116 /** | 1164 /** |
1117 * Invoked with request info. | 1165 * Invoked with request info. |
1118 * @param requestInfo {@link UrlRequestInfo} for finished request. | 1166 * @param requestInfo {@link UrlRequestInfo} for finished request. |
1119 */ | 1167 */ |
1120 void onRequestFinished(UrlRequestInfo requestInfo); | 1168 void onRequestFinished(UrlRequestInfo requestInfo); |
1121 } | 1169 } |
1122 } | 1170 } |
OLD | NEW |