Chromium Code Reviews| 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 112 private boolean mSdchEnabled; | 112 private boolean mSdchEnabled; |
| 113 private String mDataReductionProxyKey; | 113 private String mDataReductionProxyKey; |
| 114 private String mDataReductionProxyPrimaryProxy; | 114 private String mDataReductionProxyPrimaryProxy; |
| 115 private String mDataReductionProxyFallbackProxy; | 115 private String mDataReductionProxyFallbackProxy; |
| 116 private String mDataReductionProxySecureProxyCheckUrl; | 116 private String mDataReductionProxySecureProxyCheckUrl; |
| 117 private boolean mDisableCache; | 117 private boolean mDisableCache; |
| 118 private int mHttpCacheMode; | 118 private int mHttpCacheMode; |
| 119 private long mHttpCacheMaxSize; | 119 private long mHttpCacheMaxSize; |
| 120 private String mExperimentalOptions; | 120 private String mExperimentalOptions; |
| 121 private long mMockCertVerifier; | 121 private long mMockCertVerifier; |
| 122 private boolean mNetworkQualityEstimatorEnabled; | |
| 123 private Executor mNetworkQualityExecutor; | |
| 122 | 124 |
| 123 /** | 125 /** |
| 124 * Default config enables SPDY, disables QUIC, SDCH and HTTP cache. | 126 * Default config enables SPDY, disables QUIC, SDCH and HTTP cache. |
| 125 * @param context Android {@link Context} for engine to use. | 127 * @param context Android {@link Context} for engine to use. |
| 126 */ | 128 */ |
| 127 public Builder(Context context) { | 129 public Builder(Context context) { |
| 128 mContext = context; | 130 mContext = context; |
| 129 setLibraryName("cronet"); | 131 setLibraryName("cronet"); |
| 130 enableLegacyMode(false); | 132 enableLegacyMode(false); |
| 131 enableQUIC(false); | 133 enableQUIC(false); |
| 132 enableHTTP2(true); | 134 enableHTTP2(true); |
| 133 enableSDCH(false); | 135 enableSDCH(false); |
| 134 enableHttpCache(HTTP_CACHE_DISABLED, 0); | 136 enableHttpCache(HTTP_CACHE_DISABLED, 0); |
| 137 enableNetworkQualityEstimator(false, null); | |
| 135 } | 138 } |
| 136 | 139 |
| 137 /** | 140 /** |
| 138 * Constructs a User-Agent string including application name and version , | 141 * Constructs a User-Agent string including application name and version , |
| 139 * system build version, model and id, and Cronet version. | 142 * system build version, model and id, and Cronet version. |
| 140 * | 143 * |
| 141 * @return User-Agent string. | 144 * @return User-Agent string. |
| 142 */ | 145 */ |
| 143 public String getDefaultUserAgent() { | 146 public String getDefaultUserAgent() { |
| 144 return UserAgent.from(mContext); | 147 return UserAgent.from(mContext); |
| (...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 594 Builder setMockCertVerifierForTesting(long mockCertVerifier) { | 597 Builder setMockCertVerifierForTesting(long mockCertVerifier) { |
| 595 mMockCertVerifier = mockCertVerifier; | 598 mMockCertVerifier = mockCertVerifier; |
| 596 return this; | 599 return this; |
| 597 } | 600 } |
| 598 | 601 |
| 599 long mockCertVerifier() { | 602 long mockCertVerifier() { |
| 600 return mMockCertVerifier; | 603 return mMockCertVerifier; |
| 601 } | 604 } |
| 602 | 605 |
| 603 /** | 606 /** |
| 607 * Enables the network quality estimator, which collects and reports | |
| 608 * measurements of round trip time (RTT) and downstream throughput at | |
| 609 * various layers of the network stack. After enabling the estimator, | |
| 610 * listeners of RTT and throughput can be added with | |
| 611 * {@link #addRttListener} and {@link #addThroughputListener} and | |
| 612 * removed with {@link #removeRttListener} and | |
| 613 * {@link #removeThroughputListener}. The estimator uses memory and CPU | |
| 614 * only when enabled. | |
| 615 * @param value {@code true} to enable network quality estimator, | |
| 616 * {@code false} to disable. | |
| 617 * @param executor an executor that will be used to notified all | |
|
bengr
2016/06/07 20:53:16
nit: notified -> notify
tbansal1
2016/06/07 21:37:16
Done.
| |
| 618 * added RTT and throughput listeners. | |
| 619 * @hide as it's a prototype. | |
| 620 * @return the builder to facilitate chaining. | |
| 621 */ | |
| 622 public Builder enableNetworkQualityEstimator(boolean value, Executor exe cutor) { | |
|
bengr
2016/06/07 20:53:16
Why do consumers need to call this when they don't
tbansal1
2016/06/07 21:37:16
I kept it consistent with other CronetEngine.Build
bengr
2016/06/07 22:55:12
This seems like a really bad way to do things. Ple
tbansal1
2016/06/08 01:10:33
Sure, but I think this is sensible. e.g., in futur
| |
| 623 mNetworkQualityEstimatorEnabled = value; | |
| 624 mNetworkQualityExecutor = executor; | |
| 625 if (mNetworkQualityEstimatorEnabled && mNetworkQualityExecutor == nu ll) { | |
|
bengr
2016/06/07 20:53:16
With the new prototype, the first condition here s
tbansal1
2016/06/07 21:37:16
I did not switch to the new prototype, so this is
| |
| 626 throw new IllegalStateException("Network quality executor must n ot be NULL"); | |
| 627 } | |
| 628 return this; | |
| 629 } | |
| 630 | |
| 631 /** | |
| 632 * Returns if network quality estimator has been enabled for this builde r. | |
|
bengr
2016/06/07 20:53:16
Returns if -> Returns true if the
tbansal1
2016/06/07 21:37:16
Done.
| |
| 633 * @hide as it's a prototype. | |
| 634 */ | |
| 635 boolean networkQualityEstimatorEnabled() { | |
| 636 return mNetworkQualityEstimatorEnabled; | |
| 637 } | |
| 638 | |
| 639 /** | |
| 640 * Returns the executor for the network quality estimator for this build er. | |
| 641 * @hide as it's a prototype. | |
| 642 */ | |
| 643 Executor networkQualityEstimatorExecutor() { | |
| 644 return mNetworkQualityExecutor; | |
| 645 } | |
| 646 | |
| 647 /** | |
| 604 * Returns {@link Context} for builder. | 648 * Returns {@link Context} for builder. |
| 605 * | 649 * |
| 606 * @return {@link Context} for builder. | 650 * @return {@link Context} for builder. |
| 607 */ | 651 */ |
| 608 Context getContext() { | 652 Context getContext() { |
| 609 return mContext; | 653 return mContext; |
| 610 } | 654 } |
| 611 | 655 |
| 612 /** | 656 /** |
| 613 * Build a {@link CronetEngine} using this builder's configuration. | 657 * Build a {@link CronetEngine} using this builder's configuration. |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 785 * @return differences in metrics collected by Cronet, since the last call | 829 * @return differences in metrics collected by Cronet, since the last call |
| 786 * to {@code getGlobalMetricsDeltas()}, serialized as a | 830 * to {@code getGlobalMetricsDeltas()}, serialized as a |
| 787 * <a href=https://developers.google.com/protocol-buffers>protobuf | 831 * <a href=https://developers.google.com/protocol-buffers>protobuf |
| 788 * </a>. | 832 * </a>. |
| 789 */ | 833 */ |
| 790 public abstract byte[] getGlobalMetricsDeltas(); | 834 public abstract byte[] getGlobalMetricsDeltas(); |
| 791 | 835 |
| 792 /** | 836 /** |
| 793 * Enables the network quality estimator, which collects and reports | 837 * Enables the network quality estimator, which collects and reports |
| 794 * measurements of round trip time (RTT) and downstream throughput at | 838 * measurements of round trip time (RTT) and downstream throughput at |
| 795 * various layers of the network stack. After enabling the estimator, | 839 * various layers of the network stack. This API has been deprecated in |
| 796 * listeners of RTT and throughput can be added with | 840 * favor of CronetEngineBuilder.enableNetworkQualityEstimator. |
| 841 * After enabling the estimator, listeners of RTT and throughput can be | |
| 842 * added with | |
| 797 * {@link #addRttListener} and {@link #addThroughputListener} and | 843 * {@link #addRttListener} and {@link #addThroughputListener} and |
| 798 * removed with {@link #removeRttListener} and | 844 * removed with {@link #removeRttListener} and |
| 799 * {@link #removeThroughputListener}. The estimator uses memory and CPU | 845 * {@link #removeThroughputListener}. The estimator uses memory and CPU |
| 800 * only when enabled. | 846 * only when enabled. |
| 801 * @param executor an executor that will be used to notified all | 847 * @param executor an executor that will be used to notified all |
| 802 * added RTT and throughput listeners. | 848 * added RTT and throughput listeners. |
| 803 * @hide as it's a prototype. | 849 * @hide as it's a prototype. |
| 850 * @hide TODO(tbansal): http://crbug.com/618034 Remove this API once all | |
| 851 * consumers have switched to using | |
| 852 * CronetEngineBuilder.enableNetworkQualityEstimator. | |
| 804 */ | 853 */ |
| 805 public abstract void enableNetworkQualityEstimator(Executor executor); | 854 public abstract void enableNetworkQualityEstimator(Executor executor); |
| 806 | 855 |
| 807 /** | 856 /** |
| 808 * Enables the network quality estimator for testing. This must be called | 857 * Configures the network quality estimator for testing. This must be called |
| 809 * before round trip time and throughput listeners are added. Set both | 858 * before round trip time and throughput listeners are added, and after the |
| 810 * boolean parameters to false for default behavior. | 859 * network quality estimator has been enabled. |
| 811 * @param useLocalHostRequests include requests to localhost in estimates. | 860 * @param useLocalHostRequests include requests to localhost in estimates. |
| 812 * @param useSmallerResponses include small responses in throughput estimate s. | 861 * @param useSmallerResponses include small responses in throughput |
| 813 * @param executor an {@link java.util.concurrent.Executor} on which all | 862 * estimates. |
| 814 * listeners will be called. | |
| 815 * @hide as it's a prototype. | 863 * @hide as it's a prototype. |
| 816 */ | 864 */ |
| 817 abstract void enableNetworkQualityEstimatorForTesting( | 865 abstract void configureNetworkQualityEstimatorForTesting( |
| 818 boolean useLocalHostRequests, boolean useSmallerResponses, Executor executor); | 866 boolean useLocalHostRequests, boolean useSmallerResponses); |
| 819 | 867 |
| 820 /** | 868 /** |
| 821 * Registers a listener that gets called whenever the network quality | 869 * Registers a listener that gets called whenever the network quality |
| 822 * estimator witnesses a sample round trip time. This must be called | 870 * estimator witnesses a sample round trip time. This must be called |
| 823 * after {@link #enableNetworkQualityEstimator}, and with throw an | 871 * after {@link #enableNetworkQualityEstimator}, and with throw an |
| 824 * exception otherwise. Round trip times may be recorded at various layers | 872 * exception otherwise. Round trip times may be recorded at various layers |
| 825 * of the network stack, including TCP, QUIC, and at the URL request layer. | 873 * of the network stack, including TCP, QUIC, and at the URL request layer. |
| 826 * The listener is called on the {@link java.util.concurrent.Executor} that | 874 * The listener is called on the {@link java.util.concurrent.Executor} that |
| 827 * is passed to {@link #enableNetworkQualityEstimator}. | 875 * is passed to {@link #enableNetworkQualityEstimator}. |
| 828 * @param listener the listener of round trip times. | 876 * @param listener the listener of round trip times. |
| 829 * @hide as it's a prototype. | 877 * @hide as it's a prototype. |
| 830 */ | 878 */ |
| 831 public abstract void addRttListener(NetworkQualityRttListener listener); | 879 public abstract void addRttListener(NetworkQualityRttListener listener); |
| 832 | 880 |
| 833 /** | 881 /** |
| 834 * Removes a listener of round trip times if previously registered with | 882 * Removes a listener of round trip times if previously registered with |
| 835 * {@link #addRttListener}. This should be called after a | 883 * {@link #addRttListener}. This should be called after a |
| 836 * {@link NetworkQualityRttListener} is added in order to stop receiving | 884 * {@link NetworkQualityRttListener} is added in order to stop receiving |
| 837 * observations. | 885 * observations. |
| 838 * @param listener the listener of round trip times. | 886 * @param listener the listener of round trip times. |
| 839 * @hide as it's a prototype. | 887 * @hide as it's a prototype. |
| 840 */ | 888 */ |
| 841 public abstract void removeRttListener(NetworkQualityRttListener listener); | 889 public abstract void removeRttListener(NetworkQualityRttListener listener); |
| 842 | 890 |
| 843 /** | 891 /** |
| 844 * Registers a listener that gets called whenever the network quality | 892 * Registers a listener that gets called whenever the network quality |
| 845 * estimator witnesses a sample throughput measurement. This must be called | 893 * estimator witnesses a sample throughput measurement. This must be called |
| 846 * after {@link #enableNetworkQualityEstimator}. Throughput observations | 894 * after network quality estimator has been enabled. Throughput observations |
|
bengr
2016/06/07 20:53:16
network -> the network
tbansal1
2016/06/07 21:37:16
Done.
| |
| 847 * are computed by measuring bytes read over the active network interface | 895 * are computed by measuring bytes read over the active network interface |
| 848 * at times when at least one URL response is being received. The listener | 896 * at times when at least one URL response is being received. The listener |
| 849 * is called on the {@link java.util.concurrent.Executor} that is passed to | 897 * is called on the {@link java.util.concurrent.Executor} that is passed to |
| 850 * {@link #enableNetworkQualityEstimator}. | 898 * {@link #enableNetworkQualityEstimator}. |
| 851 * @param listener the listener of throughput. | 899 * @param listener the listener of throughput. |
| 852 * @hide as it's a prototype. | 900 * @hide as it's a prototype. |
| 853 */ | 901 */ |
| 854 public abstract void addThroughputListener(NetworkQualityThroughputListener listener); | 902 public abstract void addThroughputListener(NetworkQualityThroughputListener listener); |
| 855 | 903 |
| 856 /** | 904 /** |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 963 // Leave as null. | 1011 // Leave as null. |
| 964 } catch (Exception e) { | 1012 } catch (Exception e) { |
| 965 throw new IllegalStateException("Cannot instantiate: " + CRONET_URL_ REQUEST_CONTEXT, e); | 1013 throw new IllegalStateException("Cannot instantiate: " + CRONET_URL_ REQUEST_CONTEXT, e); |
| 966 } | 1014 } |
| 967 return cronetEngine; | 1015 return cronetEngine; |
| 968 } | 1016 } |
| 969 | 1017 |
| 970 /** | 1018 /** |
| 971 * Registers a listener that gets called after the end of each request with the request info. | 1019 * Registers a listener that gets called after the end of each request with the request info. |
| 972 * | 1020 * |
| 973 * <p>This must be called after {@link #enableNetworkQualityEstimator} and w ill throw an | 1021 * <p>This must be called after network quality estimator has been enabled. |
|
bengr
2016/06/07 20:53:16
after -> after the
tbansal1
2016/06/07 21:37:16
Done.
| |
| 974 * exception otherwise. | |
| 975 * | 1022 * |
| 976 * <p>The listener is called on the {@link java.util.concurrent.Executor} th at | 1023 * <p>The listener is called on the {@link java.util.concurrent.Executor} th at |
| 977 * is passed to {@link #enableNetworkQualityEstimator}. | 1024 * is passed to {@link #enableNetworkQualityEstimator}. |
| 978 * | 1025 * |
| 979 * @param listener the listener for finished requests. | 1026 * @param listener the listener for finished requests. |
| 980 * | 1027 * |
| 981 * @hide as it's a prototype. | 1028 * @hide as it's a prototype. |
| 982 */ | 1029 */ |
| 983 public abstract void addRequestFinishedListener(RequestFinishedListener list ener); | 1030 public abstract void addRequestFinishedListener(RequestFinishedListener list ener); |
|
bengr
2016/06/07 20:53:16
This should throw an exception if nqe is not enabl
tbansal1
2016/06/07 21:37:16
It does. Now, added the comment to make it clearer
| |
| 984 | 1031 |
| 985 /** | 1032 /** |
| 986 * Removes a finished request listener. | 1033 * Removes a finished request listener. |
| 987 * | 1034 * |
| 988 * @param listener the listener to remove. | 1035 * @param listener the listener to remove. |
| 989 * | 1036 * |
| 990 * @hide it's a prototype. | 1037 * @hide it's a prototype. |
| 991 */ | 1038 */ |
| 992 public abstract void removeRequestFinishedListener(RequestFinishedListener l istener); | 1039 public abstract void removeRequestFinishedListener(RequestFinishedListener l istener); |
| 993 | 1040 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1110 * @hide as it's a prototype. | 1157 * @hide as it's a prototype. |
| 1111 */ | 1158 */ |
| 1112 public interface RequestFinishedListener { // TODO(klm): Add a convenience a bstract class. | 1159 public interface RequestFinishedListener { // TODO(klm): Add a convenience a bstract class. |
| 1113 /** | 1160 /** |
| 1114 * Invoked with request info. | 1161 * Invoked with request info. |
| 1115 * @param requestInfo {@link UrlRequestInfo} for finished request. | 1162 * @param requestInfo {@link UrlRequestInfo} for finished request. |
| 1116 */ | 1163 */ |
| 1117 void onRequestFinished(UrlRequestInfo requestInfo); | 1164 void onRequestFinished(UrlRequestInfo requestInfo); |
| 1118 } | 1165 } |
| 1119 } | 1166 } |
| OLD | NEW |