summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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(