summaryrefslogtreecommitdiffstats
path: root/src
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 /src
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
Diffstat (limited to 'src')
-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
3 files changed, 67 insertions, 11 deletions
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(