Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2764)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataDialogFragment.java

Issue 974463002: Respect prefs::kAllowDeletingBrowserHistory in the Clear History UI on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataDialogFragment.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataDialogFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataDialogFragment.java
index fdaac2f632d31a8a3a548baf57b91763001faff6..cf9eb7e22a6328746dc53207134c4520c379db4d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataDialogFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataDialogFragment.java
@@ -17,7 +17,10 @@ import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.Button;
+import android.widget.CheckedTextView;
+import android.widget.ListView;
import android.widget.TextView;
+import android.widget.Toast;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
@@ -70,6 +73,7 @@ public class ClearBrowsingDataDialogFragment extends DialogFragment implements
private DialogOption[] mOptions;
private AlertDialog mDialog;
private ProgressDialog mProgressDialog;
+ private boolean mCanDeleteBrowsingHistory;
protected final void clearBrowsingData(EnumSet<DialogOption> selectedOptions) {
PrefServiceBridge.getInstance().clearBrowsingData(this,
@@ -107,8 +111,11 @@ public class ClearBrowsingDataDialogFragment extends DialogFragment implements
* @return EnumSet containing dialog options to be selected.
*/
protected EnumSet<DialogOption> getDefaultDialogOptionsSelections() {
- return EnumSet.of(DialogOption.CLEAR_HISTORY, DialogOption.CLEAR_CACHE,
- DialogOption.CLEAR_COOKIES_AND_SITE_DATA);
+ if (mCanDeleteBrowsingHistory) {
+ return EnumSet.of(DialogOption.CLEAR_HISTORY, DialogOption.CLEAR_CACHE,
+ DialogOption.CLEAR_COOKIES_AND_SITE_DATA);
+ }
+ return EnumSet.of(DialogOption.CLEAR_CACHE, DialogOption.CLEAR_COOKIES_AND_SITE_DATA);
Bernhard Bauer 2015/03/03 14:26:20 Maybe start with the base EnumSet, then add CLEAR_
knn 2015/03/03 15:03:43 Done.
}
// Called when "clear browsing data" completes.
@@ -136,16 +143,25 @@ public class ClearBrowsingDataDialogFragment extends DialogFragment implements
@Override
public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) {
- if (isChecked) {
- mSelectedOptions.add(mOptions[whichButton]);
+ DialogOption selectedOption = mOptions[whichButton];
+ if (!mCanDeleteBrowsingHistory && selectedOption == DialogOption.CLEAR_HISTORY) {
+ Toast.makeText(getActivity(),
+ R.string.can_not_clear_browsing_history_toast,
+ Toast.LENGTH_SHORT).show();
+ return;
+ }
+ ((CheckedTextView) mDialog.getListView().getChildAt(whichButton)).toggle();
Bernhard Bauer 2015/03/03 14:26:20 Why do you need to do this manually?
knn 2015/03/03 15:03:43 Yes. The ListView is forbidden from managing the C
+ if (mSelectedOptions.contains(selectedOption)) {
Bernhard Bauer 2015/03/03 14:26:21 I would be a bit more at ease if we would keep usi
knn 2015/03/03 15:03:43 isChecked is set by the ListView which does not al
Bernhard Bauer 2015/03/03 15:25:29 OK... But presumably we could still get the state
knn 2015/03/03 15:55:56 The ListView gets the isChecked value from its int
Bernhard Bauer 2015/03/03 16:00:45 Right. What I meant was this: * If we are not mana
knn 2015/03/03 16:22:31 Done.
+ mSelectedOptions.remove(selectedOption);
} else {
- mSelectedOptions.remove(mOptions[whichButton]);
+ mSelectedOptions.add(selectedOption);
}
updateButtonState();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ mCanDeleteBrowsingHistory = PrefServiceBridge.getInstance().canDeleteBrowsingHistory();
DialogOption[] options = getDialogOptions();
mOptions = Arrays.copyOf(options, options.length);
mSelectedOptions = getDefaultDialogOptionsSelections();
@@ -193,6 +209,17 @@ public class ClearBrowsingDataDialogFragment extends DialogFragment implements
}
mDialog = builder.create();
+ if (!mCanDeleteBrowsingHistory) {
+ mDialog.getListView().post(new Runnable() {
Bernhard Bauer 2015/03/03 14:26:20 Any particular reason you're doing this on the nex
knn 2015/03/03 15:03:43 The children of the list view are not created unti
+ @Override
+ public void run() {
+ int positionOfHistoryElement =
+ Arrays.asList(mOptions).indexOf(DialogOption.CLEAR_HISTORY);
+ mDialog.getListView().getChildAt(positionOfHistoryElement).setEnabled(false);
+ mDialog.getListView().setChoiceMode(ListView.CHOICE_MODE_NONE);
+ }
+ });
+ }
return mDialog;
}

Powered by Google App Engine
This is Rietveld 408576698