summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/DevelopmentSettings.java
diff options
context:
space:
mode:
authorSelim Gurun <sgurun@google.com>2014-10-21 16:31:15 -0700
committerSelim Gurun <sgurun@google.com>2014-10-21 16:56:46 -0700
commit7818de107afc62eda1c53177aa46dfc69ba79576 (patch)
tree99da0c4c79f0febd3d16ce4751b817df84a11588 /src/com/android/settings/DevelopmentSettings.java
parent709e32447a496f8b02220ca065ebd5ebc4f2c2ab (diff)
downloadpackages_apps_Settings-7818de107afc62eda1c53177aa46dfc69ba79576.zip
packages_apps_Settings-7818de107afc62eda1c53177aa46dfc69ba79576.tar.gz
packages_apps_Settings-7818de107afc62eda1c53177aa46dfc69ba79576.tar.bz2
Revert "Remove WebView DRP Setting from Developer Settings"
This reverts commit 90886b8284698698c09f8d272308597989fba92c. Conflicts: src/com/android/settings/DevelopmentSettings.java Change-Id: Ib41061bfbd74294ad643173c0caaf5f66bba410e
Diffstat (limited to 'src/com/android/settings/DevelopmentSettings.java')
-rw-r--r--src/com/android/settings/DevelopmentSettings.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 8c13f9c..2f8a9e4 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -33,8 +33,10 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
+import android.database.Cursor;
import android.hardware.usb.IUsbManager;
import android.hardware.usb.UsbManager;
+import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
import android.os.BatteryManager;
@@ -62,6 +64,7 @@ import android.view.HardwareRenderer;
import android.view.IWindowManager;
import android.view.View;
import android.view.accessibility.AccessibilityManager;
+import android.webkit.WebView;
import android.widget.Switch;
import android.widget.TextView;
@@ -155,6 +158,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private static final String SHOW_ALL_ANRS_KEY = "show_all_anrs";
+ private static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY = "webview_data_reduction_proxy";
+ // GoogleSetting name for the data reduction proxy setting.
+ // Setting type: int ( 0 = disallow, 1 = allow )
+ private static final String WEBVIEW_DATA_REDUCTION_PROXY = "use_webview_data_reduction_proxy";
+
private static final String PROCESS_STATS = "proc_stats";
private static final String TAG_CONFIRM_ENFORCE = "confirm_enforce";
@@ -167,6 +175,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
+ // The setting Uri. Used when querying GoogleSettings.
+ private static final Uri GOOGLE_SETTINGS_CONTENT_URI = Uri.parse("content://com.google.settings/partner");
+ private static final String GOOGLE_SETTINGS_COMPONENT = "com.google.android.gms";
+ private static final String GOOGLE_SETTINGS_ACTIVITY = ".app.settings.GoogleSettingsActivity";
+
private static String DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = "262144"; // 256K
private IWindowManager mWindowManager;
@@ -234,6 +247,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private SwitchPreference mShowAllANRs;
+ private SwitchPreference mWebViewDataReductionProxy;
+
private PreferenceScreen mProcessStats;
private final ArrayList<Preference> mAllPrefs = new ArrayList<Preference>();
@@ -371,6 +386,15 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
mProcessStats = (PreferenceScreen) findPreference(PROCESS_STATS);
mAllPrefs.add(mProcessStats);
+
+ mWebViewDataReductionProxy = findAndInitSwitchPref(WEBVIEW_DATA_REDUCTION_PROXY_KEY);
+ mWebViewDataReductionProxy.setOnPreferenceChangeListener(
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ return handleDataReductionProxyPreferenceChange();
+ }
+ });
}
private ListPreference addListPreference(String prefKey) {
@@ -540,6 +564,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
updateImmediatelyDestroyActivitiesOptions();
updateAppProcessLimitOptions();
updateShowAllANRsOptions();
+ updateWebViewDataReductionProxyOptions();
updateVerifyAppsOverUsbOptions();
updateBugreportOptions();
updateForceRtlOptions();
@@ -1320,6 +1345,73 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0);
}
+ // Reads the googlesetting and converts to an int. Throws an exception if GoogleSettings
+ // provider does not exist or if the setting name cannot be found.
+ private int getGoogleSettingValue(String name) throws Exception {
+ String value = null;
+ Cursor c = null;
+ try {
+ ContentResolver resolver = getActivity().getContentResolver();
+ c = resolver.query(GOOGLE_SETTINGS_CONTENT_URI, new String[] { "value" },
+ "name=?", new String[]{ name }, null);
+ if (c != null && c.moveToNext()) value = c.getString(0);
+ } finally {
+ if (c != null) c.close();
+ }
+ // Throw an exception if value is null. This will indicate that setting is not found.
+ return Integer.parseInt(value);
+ }
+
+ private boolean handleDataReductionProxyPreferenceChange() {
+ int val;
+ try {
+ val = getGoogleSettingValue(WEBVIEW_DATA_REDUCTION_PROXY);
+ } catch (Exception e) {
+ // Accessing GoogleSettings failed. Use the developer setting.
+ return true;
+ }
+
+ Intent i = new Intent();
+ i.setClassName(GOOGLE_SETTINGS_COMPONENT,
+ GOOGLE_SETTINGS_COMPONENT + GOOGLE_SETTINGS_ACTIVITY);
+ try {
+ startActivity(i);
+ } catch (android.content.ActivityNotFoundException ex) {
+ // We found the GoogleSetting but for some reason activity not found.
+ // Do our best and put an alert dialog
+ new AlertDialog.Builder(getActivity()).setMessage(
+ getActivity().getResources().getString(
+ R.string.dev_settings_use_google_settings))
+ .setPositiveButton(android.R.string.ok, this)
+ .show();
+ }
+ // Use GoogleSettings to set.
+ return false;
+ }
+
+ private void writeWebViewDataReductionProxyOptions() {
+ Settings.Secure.putInt(getActivity().getContentResolver(),
+ Settings.Secure.WEBVIEW_DATA_REDUCTION_PROXY,
+ mWebViewDataReductionProxy.isChecked() ? 1 : 0);
+ Intent intent = new Intent(WebView.DATA_REDUCTION_PROXY_SETTING_CHANGED);
+ // Broadcast to all apps running as current user.
+ getActivity().sendBroadcastAsUser(intent, UserHandle.CURRENT);
+ }
+
+ private void updateWebViewDataReductionProxyOptions() {
+ int val = -1;
+ try {
+ val = getGoogleSettingValue(WEBVIEW_DATA_REDUCTION_PROXY);
+ } catch (Exception e) {
+ // Accessing GoogleSettings failed. Use the developer setting
+ }
+ if (val == -1) {
+ val = Settings.Secure.getInt(getActivity().getContentResolver(),
+ Settings.Secure.WEBVIEW_DATA_REDUCTION_PROXY, 0);
+ }
+ updateSwitchPreference(mWebViewDataReductionProxy, val != 0);
+ }
+
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (switchView != mSwitchBar.getSwitch()) {
@@ -1439,6 +1531,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
writeImmediatelyDestroyActivitiesOptions();
} else if (preference == mShowAllANRs) {
writeShowAllANRsOptions();
+ } else if (preference == mWebViewDataReductionProxy) {
+ writeWebViewDataReductionProxyOptions();
} else if (preference == mForceHardwareUi) {
writeHardwareUiOptions();
} else if (preference == mForceMsaa) {