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 { |
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); |
} |
} |