Index: android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java b/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java |
deleted file mode 100644 |
index d1c0aae36a5c641d5482ef9c031d275427fb9833..0000000000000000000000000000000000000000 |
--- a/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java |
+++ /dev/null |
@@ -1,160 +0,0 @@ |
-// 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.android_webview; |
- |
-import android.content.ContentResolver; |
-import android.content.Context; |
-import android.database.ContentObserver; |
-import android.database.Cursor; |
-import android.database.SQLException; |
-import android.net.Uri; |
-import android.os.AsyncTask; |
-import android.os.Handler; |
- |
-import org.chromium.base.CommandLine; |
-import org.chromium.base.Log; |
-import org.chromium.base.ThreadUtils; |
- |
-import java.lang.reflect.Field; |
- |
-/** |
- * Controls data reduction proxy. |
- */ |
-public final class AwDataReductionProxyManager { |
- // The setting Uri. Used when querying GoogleSettings. |
- // TODO: This GoogleSettings Uri does not exist yet! |
- private static final Uri CONTENT_URI = Uri.parse("content://com.google.settings/partner"); |
- |
- // Setting name for allowing data reduction proxy. Used when querying GoogleSettings. |
- // Setting type: int ( 0 = disallow, 1 = allow ) |
- private static final String WEBVIEW_DATA_REDUCTION_PROXY = "use_webview_data_reduction_proxy"; |
- |
- private static final String DRP_CLASS = "com.android.webview.chromium.Drp"; |
- private static final String TAG = "DRP"; |
- |
- // 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"; |
- |
- private ContentObserver mProxySettingObserver; |
- |
- public AwDataReductionProxyManager() {} |
- |
- public void start(final Context context) { |
- // 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; |
- } |
- |
- // 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); |
- ContentResolver resolver = context.getContentResolver(); |
- mProxySettingObserver = new ContentObserver(new Handler()) { |
- @Override |
- public void onChange(boolean selfChange, Uri uri) { |
- applyDataReductionProxySettingsAsync(context, embeddedKey); |
- } |
- }; |
- resolver.registerContentObserver( |
- Uri.withAppendedPath(CONTENT_URI, WEBVIEW_DATA_REDUCTION_PROXY), false, |
- mProxySettingObserver); |
- } |
- |
- private String readKey() { |
- try { |
- Class<?> cls = Class.forName(DRP_CLASS); |
- Field f = cls.getField("KEY"); |
- return (String) f.get(null); |
- } catch (ClassNotFoundException ex) { |
- // Class not found is a normal case, simply log. |
- Log.i(TAG, "No DRP key due to exception:" + ex); |
- } catch (NoSuchFieldException ex) { |
- Log.e(TAG, "No DRP key due to exception:" + ex); |
- } catch (SecurityException ex) { |
- Log.e(TAG, "No DRP key due to exception:" + ex); |
- } catch (IllegalArgumentException ex) { |
- Log.e(TAG, "No DRP key due to exception:" + ex); |
- } catch (IllegalAccessException ex) { |
- Log.e(TAG, "No DRP key due to exception:" + ex); |
- } catch (NullPointerException ex) { |
- Log.e(TAG, "No DRP key due to exception:" + ex); |
- } |
- return null; |
- } |
- |
- private static void applyDataReductionProxySettingsAsync( |
- final Context context, final String key) { |
- AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() { |
- @Override |
- public void run() { |
- final boolean enabled = isDataReductionProxyEnabled(context); |
- |
- ThreadUtils.runOnUiThread(new Runnable() { |
- @Override |
- public void run() { |
- if (enabled) { |
- // Set the data reduction proxy key. |
- AwContentsStatics.setDataReductionProxyKey(key); |
- } |
- AwContentsStatics.setDataReductionProxyEnabled(enabled); |
- } |
- }); |
- } |
- }); |
- } |
- |
- private static boolean isDataReductionProxyEnabled(Context context) { |
- return getProxySetting(context.getContentResolver(), WEBVIEW_DATA_REDUCTION_PROXY) != 0; |
- } |
- |
- // Read query setting from GoogleSettings. |
- private static int getProxySetting(ContentResolver resolver, String name) { |
- String value = null; |
- Cursor c = null; |
- try { |
- c = resolver.query( |
- CONTENT_URI, new String[] {"value"}, "name=?", new String[] {name}, null); |
- if (c != null && c.moveToNext()) value = c.getString(0); |
- } catch (SQLException e) { |
- // SQL error: return null, but don't cache it. |
- Log.e(TAG, "Can't get key " + name + " from " + CONTENT_URI, e); |
- } finally { |
- if (c != null) c.close(); |
- } |
- int enabled = 0; |
- try { |
- if (value != null) { |
- enabled = Integer.parseInt(value); |
- } |
- } catch (NumberFormatException e) { |
- Log.e(TAG, "cannot parse" + value, e); |
- } |
- return enabled; |
- } |
-} |