Chromium Code Reviews| Index: components/cronet/android/java/src/org/chromium/net/UrlRequestContextConfig.java |
| diff --git a/components/cronet/android/java/src/org/chromium/net/UrlRequestContextConfig.java b/components/cronet/android/java/src/org/chromium/net/UrlRequestContextConfig.java |
| index e240c5d32efaddd66b1accda09763ad18745e9ea..ff0c7779d6b675e086184c87755fa47806c42bcc 100644 |
| --- a/components/cronet/android/java/src/org/chromium/net/UrlRequestContextConfig.java |
| +++ b/components/cronet/android/java/src/org/chromium/net/UrlRequestContextConfig.java |
| @@ -1,341 +1,26 @@ |
| -// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| package org.chromium.net; |
| -import org.json.JSONArray; |
| import org.json.JSONException; |
| -import org.json.JSONObject; |
| - |
| -import java.io.File; |
| /** |
| - * A config for UrlRequestContext, which allows runtime configuration of |
| - * UrlRequestContext. |
| + * A config for CronetEngine, which allows runtime configuration of |
| + * CronetEngine. |
| + * @deprecated use {@link CronetEngine.Builder} instead. |
| */ |
| -public class UrlRequestContextConfig { |
| - private final JSONObject mConfig; |
| - |
| - /** |
| - * Default config enables SPDY, disables QUIC, SDCH and http cache. |
| - */ |
| +public class UrlRequestContextConfig extends CronetEngine.Builder { |
|
mef
2015/10/05 16:41:52
I'm confused by Rietveld. Is UrlRequestContextConf
pauljensen
2015/10/05 16:59:40
Modified, or more accurately, deprecated, so as to
mef
2015/10/05 17:18:47
In this case, do we still need HttpUrl* changes?
|
| public UrlRequestContextConfig() { |
| - mConfig = new JSONObject(); |
| - enableLegacyMode(false); |
| - enableQUIC(false); |
| - enableHTTP2(true); |
| - enableSDCH(false); |
| - enableHttpCache(HTTP_CACHE_DISABLED, 0); |
| + // Context will be passed in later when the ChromiumUrlRequestFactory |
| + // or ChromiumUrlRequestContext is created. |
| + super(null); |
| } |
| - /** |
| - * Creates a config from a JSON string, which was serialized using |
| - * {@link #toString}. |
| - */ |
| public UrlRequestContextConfig(String json) throws JSONException { |
| - mConfig = new JSONObject(json); |
| - } |
| - |
| - /** |
| - * Overrides the user-agent header for all requests. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig setUserAgent(String userAgent) { |
| - return putString(UrlRequestContextConfigList.USER_AGENT, userAgent); |
| - } |
| - |
| - String userAgent() { |
| - return mConfig.optString(UrlRequestContextConfigList.USER_AGENT); |
| - } |
| - |
| - /** |
| - * Sets directory for HTTP Cache and Cookie Storage. The directory must |
| - * exist. |
| - * @param value path to existing directory. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig setStoragePath(String value) { |
| - if (!new File(value).isDirectory()) { |
| - throw new IllegalArgumentException( |
| - "Storage path must be set to existing directory"); |
| - } |
| - |
| - return putString(UrlRequestContextConfigList.STORAGE_PATH, value); |
| - } |
| - |
| - String storagePath() { |
| - return mConfig.optString(UrlRequestContextConfigList.STORAGE_PATH); |
| - } |
| - |
| - /** |
| - * Sets whether falling back to implementation based on system's |
| - * {@link java.net.HttpURLConnection} implementation is enabled. |
| - * Defaults to disabled. |
| - * @return the config to facilitate chaining. |
| - * @deprecated Not supported by the new API. |
| - */ |
| - @Deprecated |
| - public UrlRequestContextConfig enableLegacyMode(boolean value) { |
| - return putBoolean(UrlRequestContextConfigList.ENABLE_LEGACY_MODE, |
| - value); |
| - } |
| - |
| - boolean legacyMode() { |
| - return mConfig.optBoolean( |
| - UrlRequestContextConfigList.ENABLE_LEGACY_MODE); |
| - } |
| - |
| - /** |
| - * Overrides the name of the native library backing Cronet. |
| - * @return the config to facilitate chaining. |
| - */ |
| - UrlRequestContextConfig setLibraryName(String libName) { |
| - return putString(UrlRequestContextConfigList.NATIVE_LIBRARY_NAME, |
| - libName); |
| - } |
| - |
| - String libraryName() { |
| - return mConfig.optString( |
| - UrlRequestContextConfigList.NATIVE_LIBRARY_NAME, "cronet"); |
| - } |
| - |
| - /** |
| - * Sets whether <a href="https://www.chromium.org/quic">QUIC</a> protocol |
| - * is enabled. Defaults to disabled. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig enableQUIC(boolean value) { |
| - return putBoolean(UrlRequestContextConfigList.ENABLE_QUIC, value); |
| - } |
| - |
| - /** |
| - * Sets whether <a href="https://tools.ietf.org/html/rfc7540">HTTP/2</a> |
| - * protocol is enabled. Defaults to enabled. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig enableHTTP2(boolean value) { |
| - return putBoolean(UrlRequestContextConfigList.ENABLE_SPDY, value); |
| - } |
| - |
| - /** |
| - * Sets whether |
| - * <a |
| - * href="https://lists.w3.org/Archives/Public/ietf-http-wg/2008JulSep/att-0441/Shared_Dictionary_Compression_over_HTTP.pdf"> |
| - * SDCH</a> compression is enabled. Defaults to disabled. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig enableSDCH(boolean value) { |
| - return putBoolean(UrlRequestContextConfigList.ENABLE_SDCH, value); |
| - } |
| - |
| - /** |
| - * Enables |
| - * <a href="https://developer.chrome.com/multidevice/data-compression">Data |
| - * Reduction Proxy</a>. Defaults to disabled. |
| - * @param key key to use when authenticating with the proxy. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig enableDataReductionProxy(String key) { |
| - return (putString( |
| - UrlRequestContextConfigList.DATA_REDUCTION_PROXY_KEY, key)); |
| - } |
| - |
| - /** |
| - * Overrides |
| - * <a href="https://developer.chrome.com/multidevice/data-compression"> |
| - * Data Reduction Proxy</a> configuration parameters with a primary |
| - * proxy name, fallback proxy name, and a secure proxy check URL. Proxies |
| - * are specified as [scheme://]host[:port]. Used for testing. |
| - * @param primaryProxy the primary data reduction proxy to use. |
| - * @param fallbackProxy a fallback data reduction proxy to use. |
| - * @param secureProxyCheckUrl a URL to fetch to determine if using a secure |
| - * proxy is allowed. |
| - * @return the config to facilitate chaining. |
| - * @hide |
| - */ |
| - public UrlRequestContextConfig setDataReductionProxyOptions( |
| - String primaryProxy, |
| - String fallbackProxy, |
| - String secureProxyCheckUrl) { |
| - if (primaryProxy.isEmpty() || fallbackProxy.isEmpty() |
| - || secureProxyCheckUrl.isEmpty()) { |
| - throw new IllegalArgumentException( |
| - "Primary and fallback proxies and check url must be set"); |
| - } |
| - putString(UrlRequestContextConfigList.DATA_REDUCTION_PRIMARY_PROXY, |
| - primaryProxy); |
| - putString(UrlRequestContextConfigList.DATA_REDUCTION_FALLBACK_PROXY, |
| - fallbackProxy); |
| - putString(UrlRequestContextConfigList |
| - .DATA_REDUCTION_SECURE_PROXY_CHECK_URL, secureProxyCheckUrl); |
| - return this; |
| - } |
| - |
| - /** |
| - * Setting to disable HTTP cache. Some data may still be temporarily stored in memory. |
| - * Passed to {@link #enableHttpCache}. |
| - */ |
| - public static final int HTTP_CACHE_DISABLED = 0; |
| - |
| - /** |
| - * Setting to enable in-memory HTTP cache, including HTTP data. |
| - * Passed to {@link #enableHttpCache}. |
| - */ |
| - public static final int HTTP_CACHE_IN_MEMORY = 1; |
| - |
| - /** |
| - * Setting to enable on-disk cache, excluding HTTP data. |
| - * {@link #setStoragePath} must be called prior to passing this constant to |
| - * {@link #enableHttpCache}. |
| - */ |
| - public static final int HTTP_CACHE_DISK_NO_HTTP = 2; |
| - |
| - /** |
| - * Setting to enable on-disk cache, including HTTP data. |
| - * {@link #setStoragePath} must be called prior to passing this constant to |
| - * {@link #enableHttpCache}. |
| - */ |
| - public static final int HTTP_CACHE_DISK = 3; |
| - |
| - /** |
| - * Enables or disables caching of HTTP data and other information like QUIC |
| - * server information. |
| - * @param cacheMode control location and type of cached data. |
| - * @param maxSize maximum size used to cache data (advisory and maybe |
| - * exceeded at times). |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig enableHttpCache(int cacheMode, long maxSize) { |
| - if (cacheMode == HTTP_CACHE_DISK || cacheMode == HTTP_CACHE_DISK_NO_HTTP) { |
| - if (storagePath().isEmpty()) { |
| - throw new IllegalArgumentException("Storage path must be set"); |
| - } |
| - } else { |
| - if (!storagePath().isEmpty()) { |
| - throw new IllegalArgumentException( |
| - "Storage path must be empty"); |
| - } |
| - } |
| - putBoolean(UrlRequestContextConfigList.LOAD_DISABLE_CACHE, |
| - cacheMode == HTTP_CACHE_DISABLED || cacheMode == HTTP_CACHE_DISK_NO_HTTP); |
| - putLong(UrlRequestContextConfigList.HTTP_CACHE_MAX_SIZE, maxSize); |
| - |
| - switch (cacheMode) { |
| - case HTTP_CACHE_DISABLED: |
| - return putString(UrlRequestContextConfigList.HTTP_CACHE, |
| - UrlRequestContextConfigList.HTTP_CACHE_DISABLED); |
| - case HTTP_CACHE_DISK_NO_HTTP: |
| - case HTTP_CACHE_DISK: |
| - return putString(UrlRequestContextConfigList.HTTP_CACHE, |
| - UrlRequestContextConfigList.HTTP_CACHE_DISK); |
| - |
| - case HTTP_CACHE_IN_MEMORY: |
| - return putString(UrlRequestContextConfigList.HTTP_CACHE, |
| - UrlRequestContextConfigList.HTTP_CACHE_MEMORY); |
| - } |
| - return this; |
| - } |
| - |
| - /** |
| - * Adds hint that {@code host} supports QUIC. |
| - * Note that {@link #enableHttpCache enableHttpCache} |
| - * ({@link HttpCache#DISK DISK}) is needed to take advantage of 0-RTT |
| - * connection establishment between sessions. |
| - * |
| - * @param host hostname of the server that supports QUIC. |
| - * @param port host of the server that supports QUIC. |
| - * @param alternatePort alternate port to use for QUIC. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig addQuicHint(String host, |
| - int port, |
| - int alternatePort) { |
| - if (host.contains("/")) { |
| - throw new IllegalArgumentException("Illegal QUIC Hint Host: " |
| - + host); |
| - } |
| - try { |
| - JSONArray quicHints = mConfig.optJSONArray( |
| - UrlRequestContextConfigList.QUIC_HINTS); |
| - if (quicHints == null) { |
| - quicHints = new JSONArray(); |
| - mConfig.put(UrlRequestContextConfigList.QUIC_HINTS, quicHints); |
| - } |
| - |
| - JSONObject hint = new JSONObject(); |
| - hint.put(UrlRequestContextConfigList.QUIC_HINT_HOST, host); |
| - hint.put(UrlRequestContextConfigList.QUIC_HINT_PORT, port); |
| - hint.put(UrlRequestContextConfigList.QUIC_HINT_ALT_PORT, |
| - alternatePort); |
| - quicHints.put(hint); |
| - } catch (JSONException e) { |
| - // Intentionally do nothing. |
| - } |
| - return this; |
| - } |
| - |
| - /** |
| - * Sets experimental QUIC connection options, overwriting any pre-existing |
| - * options. List of options is subject to change. |
| - * |
| - * @param quicConnectionOptions comma-separated QUIC options (for example |
| - * "PACE,IW10") to use if QUIC is enabled. |
| - * @return the config to facilitate chaining. |
| - */ |
| - public UrlRequestContextConfig setExperimentalQuicConnectionOptions( |
| - String quicConnectionOptions) { |
| - return putString(UrlRequestContextConfigList.QUIC_OPTIONS, |
| - quicConnectionOptions); |
| - } |
| - |
| - /** |
| - * Get JSON string representation of the config. |
| - */ |
| - @Override |
| - public String toString() { |
| - return mConfig.toString(); |
| - } |
| - |
| - /** |
| - * Sets a boolean value in the config. Returns a reference to the same |
| - * config object, so you can chain put calls together. |
| - * @return the config to facilitate chaining. |
| - */ |
| - private UrlRequestContextConfig putBoolean(String key, boolean value) { |
| - try { |
| - mConfig.put(key, value); |
| - } catch (JSONException e) { |
| - // Intentionally do nothing. |
| - } |
| - return this; |
| - } |
| - |
| - /** |
| - * Sets a long value in the config. Returns a reference to the same |
| - * config object, so you can chain put calls together. |
| - * @return the config to facilitate chaining. |
| - */ |
| - private UrlRequestContextConfig putLong(String key, long value) { |
| - try { |
| - mConfig.put(key, value); |
| - } catch (JSONException e) { |
| - // Intentionally do nothing. |
| - } |
| - return this; |
| - } |
| - |
| - /** |
| - * Sets a string value in the config. Returns a reference to the same |
| - * config object, so you can chain put calls together. |
| - * @return the config to facilitate chaining. |
| - */ |
| - private UrlRequestContextConfig putString(String key, String value) { |
| - try { |
| - mConfig.put(key, value); |
| - } catch (JSONException e) { |
| - // Intentionally do nothing. |
| - } |
| - return this; |
| + // Context will be passed in later when the ChromiumUrlRequestFactory |
| + // or ChromiumUrlRequestContext is created. |
| + super(null, json); |
| } |
| } |