Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java |
index 0faf79963d76e57df8844eae9a48543f4f7395b7..20a14ddb5f8f7a144781867f824d8c3126494659 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferences.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.preferences.privacy; |
+import android.app.Activity; |
import android.app.ProgressDialog; |
import android.os.Bundle; |
import android.preference.CheckBoxPreference; |
@@ -15,6 +16,7 @@ import org.chromium.chrome.R; |
import org.chromium.chrome.browser.BrowsingDataType; |
import org.chromium.chrome.browser.preferences.ButtonPreference; |
import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
+import org.chromium.chrome.browser.preferences.SpinnerPreference; |
import org.chromium.chrome.browser.preferences.privacy.BrowsingDataCounterBridge.BrowsingDataCounterCallback; |
import org.chromium.sync.signin.ChromeSigninController; |
@@ -27,7 +29,8 @@ import java.util.EnumSet; |
*/ |
public class ClearBrowsingDataPreferences extends PreferenceFragment |
implements PrefServiceBridge.OnClearBrowsingDataListener, |
- Preference.OnPreferenceClickListener { |
+ Preference.OnPreferenceClickListener, |
+ Preference.OnPreferenceChangeListener{ |
/** |
* Represents a single item in the dialog. |
*/ |
@@ -91,6 +94,7 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment |
private static final String PREF_BOOKMARKS = "clear_bookmarks_checkbox"; |
private static final String PREF_SUMMARY = "summary"; |
+ private static final String PREF_TIME_RANGE = "time_period_spinner"; |
/** The "Clear" button preference. Referenced in tests. */ |
public static final String PREF_CLEAR_BUTTON = "clear_button"; |
@@ -130,6 +134,38 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment |
} |
} |
+ /** |
+ * An option to be shown in the time period spiner. |
+ */ |
+ private static class TimePeriodSpinnerOption { |
+ private int mTimePeriod; |
+ private String mTitle; |
+ |
+ /** |
+ * Constructs this time period spinner option. |
+ * @param timePeriod The time period represented as an int from the shared enum |
+ * {@link org.chromium.chrome.browser.TimePeriod}. |
+ * @param title The text that will be used to represent this item in the spinner. |
+ */ |
+ public TimePeriodSpinnerOption(int timePeriod, String title) { |
+ mTimePeriod = timePeriod; |
+ mTitle = title; |
+ } |
+ |
+ /** |
+ * @return The time period represented as an int from the shared enum |
+ * {@link org.chromium.chrome.browser.TimePeriod} |
+ */ |
+ public int getTimePeriod() { |
+ return mTimePeriod; |
+ } |
+ |
+ @Override |
+ public String toString() { |
+ return mTitle; |
+ } |
+ } |
+ |
private ProgressDialog mProgressDialog; |
private boolean mCanDeleteBrowsingHistory; |
private Item[] mItems; |
@@ -178,6 +214,28 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment |
} |
/** |
+ * Returns the Array of time periods. Options are displayed in the same order as they appear |
+ * in the array. |
+ */ |
+ private TimePeriodSpinnerOption[] getTimePeriodSpinnerOptions() { |
+ Activity activity = getActivity(); |
+ |
+ TimePeriodSpinnerOption[] options = new TimePeriodSpinnerOption[] { |
+ new TimePeriodSpinnerOption(org.chromium.chrome.browser.TimePeriod.LAST_HOUR, |
+ activity.getString(R.string.clear_browsing_data_period_hour)), |
+ new TimePeriodSpinnerOption(org.chromium.chrome.browser.TimePeriod.LAST_DAY, |
+ activity.getString(R.string.clear_browsing_data_period_day)), |
+ new TimePeriodSpinnerOption(org.chromium.chrome.browser.TimePeriod.LAST_WEEK, |
+ activity.getString(R.string.clear_browsing_data_period_week)), |
+ new TimePeriodSpinnerOption(org.chromium.chrome.browser.TimePeriod.FOUR_WEEKS, |
+ activity.getString(R.string.clear_browsing_data_period_four_weeks)), |
+ new TimePeriodSpinnerOption(org.chromium.chrome.browser.TimePeriod.EVERYTHING, |
+ activity.getString(R.string.clear_browsing_data_period_everything))}; |
+ |
+ return options; |
+ } |
+ |
+ /** |
* Decides whether a given dialog option should be selected when the dialog is initialized. |
* @param option The option in question. |
* @return boolean Whether the given option should be preselected. |
@@ -205,6 +263,16 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment |
return false; |
} |
+ @Override |
+ public boolean onPreferenceChange(Preference preference, Object value) { |
+ if (preference.getKey().equals(PREF_TIME_RANGE)) { |
+ PrefServiceBridge.getInstance().setBrowsingDataDeletionTimePeriod( |
+ ((TimePeriodSpinnerOption) value).getTimePeriod()); |
+ return true; |
+ } |
+ return false; |
+ } |
+ |
/** |
* Disable the "Clear" button if none of the options are selected. Otherwise, enable it. |
*/ |
@@ -249,6 +317,22 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment |
getPreferenceScreen().removePreference(findPreference(option.getPreferenceKey())); |
} |
+ // The time range selection spinner. |
+ SpinnerPreference spinner = (SpinnerPreference) findPreference(PREF_TIME_RANGE); |
+ spinner.setOnPreferenceChangeListener(this); |
+ TimePeriodSpinnerOption[] spinnerOptions = getTimePeriodSpinnerOptions(); |
+ int selectedTimePeriod = |
+ PrefServiceBridge.getInstance().getBrowsingDataDeletionTimePeriod(); |
+ int spinnerOptionIndex = -1; |
+ for (int i = 0; i < spinnerOptions.length; ++i) { |
+ if (spinnerOptions[i].getTimePeriod() == selectedTimePeriod) { |
+ spinnerOptionIndex = i; |
+ break; |
+ } |
+ } |
+ assert spinnerOptionIndex != -1; |
+ spinner.setOptions(spinnerOptions, spinnerOptionIndex); |
+ |
// The "Clear" button. |
ButtonPreference clearButton = (ButtonPreference) findPreference(PREF_CLEAR_BUTTON); |
clearButton.setOnPreferenceClickListener(this); |