summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHui Shu <hush@google.com>2014-09-03 11:17:31 -0700
committerHui Shu <hush@google.com>2014-09-25 10:29:28 -0700
commite41c9c1d9c3bf72381f8e0acd62bd17346bf1d7e (patch)
treee406795ebbbe346a3e8a63fca030481464bbb27b
parent80bf8d5e3d799c7680d45ef214c8b91097794ccf (diff)
downloadwebview-e41c9c1d9c3bf72381f8e0acd62bd17346bf1d7e.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: I028159656eb55270afb7ff7e793aba6e82794d99
-rw-r--r--chromium/java/com/android/webview/chromium/DataReductionProxyManager.java39
1 files changed, 34 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..5c433a9 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,43 @@ 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);
+
+ 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(