summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPankaj Garg <pgarg@codeaurora.org>2015-07-28 09:37:48 -0700
committerjrizzoli <joey@cyanogenmoditalia.it>2015-08-28 13:15:46 +0200
commit8a9eba662e3437b3dd39ff09e4210b8eec53dd97 (patch)
treef20a6c2b6d6f48e5b8c61596a93859de31387e10
parent1f998aee3336c5cc684290f7049d2c382fd92fed (diff)
downloadandroid_packages_apps_Gello-8a9eba662e3437b3dd39ff09e4210b8eec53dd97.tar.gz
android_packages_apps_Gello-8a9eba662e3437b3dd39ff09e4210b8eec53dd97.tar.bz2
android_packages_apps_Gello-8a9eba662e3437b3dd39ff09e4210b8eec53dd97.zip
Mechanism to clear data through "Reset to default" setting
- Added hooks in BrowserYesNoPreference to support a third button. - Enabled the third button for "Reset to default" setting - If user clicks on this new button, it'll also clear the private data (history, cache, etc) Change-Id: I7b224805d2ab8ef440a13948821c871b0b4a791e
-rw-r--r--res/values/attrs.xml (renamed from res/values/attrs_tiles.xml)5
-rw-r--r--res/xml/general_preferences.xml5
-rw-r--r--src/com/android/browser/BrowserYesNoPreference.java55
-rw-r--r--src/com/android/browser/preferences/AdvancedPreferencesFragment.java5
-rw-r--r--src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java18
5 files changed, 75 insertions, 13 deletions
diff --git a/res/values/attrs_tiles.xml b/res/values/attrs.xml
index d6ec2927..3e622618 100644
--- a/res/values/attrs_tiles.xml
+++ b/res/values/attrs.xml
@@ -40,4 +40,9 @@
<attr name="android:label" />
</declare-styleable>
+ <declare-styleable name="BrowserYesNoPreference">
+ <attr name="positiveButtonText" format="string|reference" />
+ <attr name="negativeButtonText" format="string|reference" />
+ <attr name="neutralButtonText" format="string|reference" />
+ </declare-styleable>
</resources>
diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml
index 75b4600f..88d0e327 100644
--- a/res/xml/general_preferences.xml
+++ b/res/xml/general_preferences.xml
@@ -14,8 +14,8 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto" >
<PreferenceCategory
android:layout="@layout/swe_preference_category_first"
android:title="@string/pref_general_title">
@@ -107,6 +107,7 @@
android:key="reset_default_preferences"
android:title="@string/pref_extras_reset_default"
android:summary="@string/pref_extras_reset_default_summary"
+ app:neutralButtonText="@string/website_settings_clear_all"
android:dialogMessage="@string/pref_extras_reset_default_dlg"
android:dialogIcon="@android:drawable/ic_dialog_alert" />
diff --git a/src/com/android/browser/BrowserYesNoPreference.java b/src/com/android/browser/BrowserYesNoPreference.java
index f47ff3d8..289ddf3e 100644
--- a/src/com/android/browser/BrowserYesNoPreference.java
+++ b/src/com/android/browser/BrowserYesNoPreference.java
@@ -16,14 +16,14 @@
package com.android.browser;
-import android.app.Activity;
+import android.app.AlertDialog;
import android.content.Context;
-import android.content.Intent;
+import android.content.DialogInterface;
import android.content.SharedPreferences;
+import android.content.res.TypedArray;
import android.preference.DialogPreference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@@ -31,12 +31,21 @@ import android.widget.Button;
class BrowserYesNoPreference extends DialogPreference {
private SharedPreferences mPrefs;
private Context mContext;
+ private String mNeutralBtnTxt;
+ private String mPositiveBtnTxt;
+ private String mNegativeBtnTxt;
+ private boolean mNeutralBtnClicked = false;
// This is the constructor called by the inflater
public BrowserYesNoPreference(Context context, AttributeSet attrs) {
super(context, attrs);
mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
mContext = context;
+ final TypedArray a = mContext.obtainStyledAttributes(attrs,
+ R.styleable.BrowserYesNoPreference, 0, 0);
+ mNeutralBtnTxt = a.getString(R.styleable.BrowserYesNoPreference_neutralButtonText);
+ mPositiveBtnTxt = a.getString(R.styleable.BrowserYesNoPreference_positiveButtonText);
+ mNegativeBtnTxt = a.getString(R.styleable.BrowserYesNoPreference_negativeButtonText);
}
@Override
@@ -60,11 +69,33 @@ class BrowserYesNoPreference extends DialogPreference {
}
@Override
+ protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
+ super.onPrepareDialogBuilder(builder);
+ if (mNeutralBtnTxt != null) {
+ builder.setNeutralButton(mNeutralBtnTxt, this);
+ }
+
+ if (mPositiveBtnTxt != null) {
+ builder.setPositiveButton(mPositiveBtnTxt, this);
+ }
+
+ if (mNegativeBtnTxt != null) {
+ builder.setNegativeButton(mNegativeBtnTxt, this);
+ }
+ }
+
+ @Override
protected void onClick() {
super.onClick();
}
@Override
+ public void onClick(DialogInterface dialog, int which) {
+ super.onClick(dialog, which);
+ mNeutralBtnClicked = DialogInterface.BUTTON_NEUTRAL == which;
+ }
+
+ @Override
protected View onCreateDialogView() {
if (PreferenceKeys.PREF_CLEAR_SELECTED_DATA.equals(getKey())) {
String dialogMessage = mContext.getString(R.string.pref_privacy_clear_selected_dlg);
@@ -115,11 +146,13 @@ class BrowserYesNoPreference extends DialogPreference {
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
+ Integer result = (positiveResult) ? 1 : 0;
- if (!positiveResult)
- return;
+ if (mNeutralBtnTxt != null && mNeutralBtnClicked) {
+ result = 2;
+ }
- if (callChangeListener(positiveResult)) {
+ if (callChangeListener(result)) {
setEnabled(false);
BrowserSettings settings = BrowserSettings.getInstance();
if (PreferenceKeys.PREF_CLEAR_SELECTED_DATA.equals(getKey())) {
@@ -147,6 +180,16 @@ class BrowserYesNoPreference extends DialogPreference {
setEnabled(true);
} else if (PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES.equals(
getKey())) {
+ if (mNeutralBtnClicked) {
+ settings.clearCache();
+ settings.clearDatabases();
+ settings.clearCookies();
+ settings.clearHistory();
+ settings.clearFormData();
+ settings.clearPasswords();
+ settings.clearLocationAccess();
+ }
+
settings.resetDefaultPreferences();
setEnabled(true);
}
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 0a5fa64b..00977f64 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -156,13 +156,14 @@ public class AdvancedPreferencesFragment
}
else if (pref.getKey().equals(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES)) {
- Boolean value = (Boolean) objValue;
- if (value.booleanValue() == true) {
+ Integer value = (Integer) objValue;
+ if (value.intValue() != 0) {
PermissionsServiceFactory.resetDefaultPermissions();
mFragment.startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
mFragment.getActivity(), BrowserActivity.class));
return true;
}
+
} else if (pref.getKey().equals(PreferenceKeys.PREF_SEARCH_ENGINE)) {
ListPreference lp = (ListPreference) pref;
lp.setValue((String) objValue);
diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
index e586cb50..55f346ce 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -42,6 +42,8 @@ import org.codeaurora.swe.WebRefiner;
public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment
implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
+ private Preference mClearPref;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -52,8 +54,8 @@ public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment
websiteSettings.setFragment(WebsiteSettingsFragment.class.getName());
websiteSettings.setOnPreferenceClickListener(this);
- Preference e = findPreference(PreferenceKeys.PREF_CLEAR_SELECTED_DATA);
- e.setOnPreferenceChangeListener(this);
+ mClearPref = findPreference(PreferenceKeys.PREF_CLEAR_SELECTED_DATA);
+ mClearPref.setOnPreferenceChangeListener(this);
readAndShowPermission("enable_geolocation",
PermissionsServiceFactory.PermissionType.GEOLOCATION);
@@ -120,7 +122,17 @@ public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment
@Override
public boolean onPreferenceChange(Preference pref, Object objValue) {
- boolean flag = (boolean) objValue;
+ boolean flag = true;
+ if (pref == mClearPref) {
+ Integer value = (Integer) objValue;
+ if (value == 0) {
+ return false;
+ }
+ } else {
+ Boolean bFlag = (Boolean) objValue;
+ flag = bFlag.booleanValue();
+ }
+
if (pref.getKey().equals(PreferenceKeys.PREF_CLEAR_SELECTED_DATA)) {
if (pref.getPreferenceManager().getDefaultSharedPreferences(
(Context) getActivity()).getBoolean(