summaryrefslogtreecommitdiff
path: root/chromium/java/com/android/webview
diff options
context:
space:
mode:
authorHui Shu <hush@google.com>2014-09-03 11:17:31 -0700
committerSelim Gurun <sgurun@google.com>2014-10-22 00:03:15 +0000
commitf730607b461c2e789fda9bb9b05386a53ecb4338 (patch)
treeec4722ded96392eae3391dd6c99dcc016f3562a0 /chromium/java/com/android/webview
parent6aee10621665db8bb90ec476e9a09b608fbcabe5 (diff)
downloadwebview-f730607b461c2e789fda9bb9b05386a53ecb4338.tar.gz
Suport initializing DRP from cmd line switches.
If there is a command line switch to enable the data reduction proxy, we will try to initialize the DRP by reading the DRP key from command line. If the key from command line is empty, use the key embedded in WebView apk. BUG: 17211028 Change-Id: I496b0d8a9dcd1763d4bbf2065e2d9e996ba6e873 (cherry picked from commit e41c9c1d9c3bf72381f8e0acd62bd17346bf1d7e) (cherry picked from commit ca3ebe61951d92501599e3120c0fd30b0d7264de)
Diffstat (limited to 'chromium/java/com/android/webview')
-rw-r--r--chromium/java/com/android/webview/chromium/DataReductionProxyManager.java41
1 files changed, 36 insertions, 5 deletions
diff --git a/chromium/java/com/android/webview/chromium/DataReductionProxyManager.java b/chromium/java/com/android/webview/chromium/DataReductionProxyManager.java
index 7fe449c..32006bf 100644
--- a/chromium/java/com/android/webview/chromium/DataReductionProxyManager.java
+++ b/chromium/java/com/android/webview/chromium/DataReductionProxyManager.java
@@ -33,6 +33,7 @@ import android.util.Log;
import android.webkit.WebView;
import org.chromium.android_webview.AwContentsStatics;
+import org.chromium.base.CommandLine;
import java.lang.reflect.Field;
@@ -51,6 +52,11 @@ public final class DataReductionProxyManager {
private static final String DRP_CLASS = "com.android.webview.chromium.Drp";
private static final String TAG = "DataReductionProxySettingListener";
+ // This is the same as Chromium data_reduction_proxy::switches::kEnableDataReductionProxy.
+ private static final String ENABLE_DATA_REDUCTION_PROXY = "enable-spdy-proxy-auth";
+ // This is the same as Chromium data_reduction_proxy::switches::kDataReductionProxyKey.
+ private static final String DATA_REDUCTION_PROXY_KEY = "spdy-proxy-auth-value";
+
/*
* Listen for DataReductionProxySetting changes and take action.
* TODO: This is the old mechanism. Will be obsolete after L release.
@@ -77,20 +83,45 @@ public final class DataReductionProxyManager {
public DataReductionProxyManager() { }
public void start(final Context context) {
- final String key = readKey();
- if (key == null || key.isEmpty()) {
+ // This is the DRP key embedded in WebView apk.
+ final String embeddedKey = readKey();
+
+ // Developers could test DRP by passing ENABLE_DATA_REDUCTION_PROXY and (optionally)
+ // DATA_REDUCTION_PROXY_KEY to the commandline switches. In this case, we will try to
+ // initialize DRP from commandline. And ignore user's preference. If
+ // DATA_REDUCTION_PROXY_KEY is specified in commandline, use it. Otherwise, use the key
+ // embedded in WebView apk.
+ CommandLine cl = CommandLine.getInstance();
+ if (cl.hasSwitch(ENABLE_DATA_REDUCTION_PROXY)) {
+ String key = cl.getSwitchValue(DATA_REDUCTION_PROXY_KEY, embeddedKey);
+ if (key == null || key.isEmpty()) {
+ return;
+ }
+
+ // Now we will enable DRP because we've got a commandline switch to enable it.
+ // We won't listen to Google Settings preference change because commandline switches
+ // trump that.
+ AwContentsStatics.setDataReductionProxyKey(key);
+ AwContentsStatics.setDataReductionProxyEnabled(true);
return;
}
- applyDataReductionProxySettingsAsync(context, key);
+
+ // Now, there is no commandline switches to enable DRP, and reading the
+ // DRP key from WebView apk failed. Just return and leave DRP disabled.
+ if (embeddedKey == null || embeddedKey.isEmpty()) {
+ return;
+ }
+
+ applyDataReductionProxySettingsAsync(context, embeddedKey);
IntentFilter filter = new IntentFilter();
filter.addAction(WebView.DATA_REDUCTION_PROXY_SETTING_CHANGED);
- mProxySettingListener = new ProxySettingListener(key);
+ mProxySettingListener = new ProxySettingListener(embeddedKey);
context.registerReceiver(mProxySettingListener, filter);
ContentResolver resolver = context.getContentResolver();
mProxySettingObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange, Uri uri) {
- applyDataReductionProxySettingsAsync(context, key);
+ applyDataReductionProxySettingsAsync(context, embeddedKey);
}
};
resolver.registerContentObserver(