| 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 ae0ad9c391d31a3321fad1a0a5dab00048ca8ebd..2c3f7eef3955ac445b9f0b8b73d28f4d7756e27d 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
|
| @@ -15,6 +15,7 @@ import android.widget.ListView;
|
|
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| +import org.chromium.base.metrics.RecordUserAction;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.BrowsingDataType;
|
| import org.chromium.chrome.browser.ChromeFeatureList;
|
| @@ -146,6 +147,8 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment
|
| */
|
| private static final int IMPORTANT_SITES_DIALOG_CODE = 1;
|
|
|
| + private static final int IMPORTANT_SITES_PERCENTAGE_BUCKET_COUNT = 20;
|
| +
|
| /**
|
| * The various data types that can be cleared via this screen.
|
| */
|
| @@ -213,6 +216,8 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment
|
| private ProgressDialog mProgressDialog;
|
| private Item[] mItems;
|
|
|
| + // This is a constant on the C++ side.
|
| + private int mMaxImportantSites;
|
| // This is the sorted list of important registerable domains. If null, then we haven't finished
|
| // fetching them yet.
|
| private String[] mSortedImportantDomains;
|
| @@ -344,11 +349,17 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment
|
| * </ol>
|
| */
|
| private boolean shouldShowImportantSitesDialog() {
|
| - if (mSortedImportantDomains == null || mSortedImportantDomains.length == 0) return false;
|
| + if (!ChromeFeatureList.isEnabled(ChromeFeatureList.IMPORTANT_SITES_IN_CBD)) return false;
|
| EnumSet<DialogOption> selectedOptions = getSelectedOptions();
|
| - return ChromeFeatureList.isEnabled(ChromeFeatureList.IMPORTANT_SITES_IN_CBD)
|
| - && (selectedOptions.contains(DialogOption.CLEAR_CACHE)
|
| - || selectedOptions.contains(DialogOption.CLEAR_COOKIES_AND_SITE_DATA));
|
| + if (!selectedOptions.contains(DialogOption.CLEAR_CACHE)
|
| + && !selectedOptions.contains(DialogOption.CLEAR_COOKIES_AND_SITE_DATA)) {
|
| + return false;
|
| + }
|
| + boolean haveImportantSites =
|
| + mSortedImportantDomains != null && mSortedImportantDomains.length != 0;
|
| + RecordHistogram.recordBooleanHistogram(
|
| + "History.ClearBrowsingData.ImportantDialogShown", haveImportantSites);
|
| + return haveImportantSites;
|
| }
|
|
|
| @Override
|
| @@ -395,6 +406,8 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment
|
| @Override
|
| public void onCreate(Bundle savedInstanceState) {
|
| super.onCreate(savedInstanceState);
|
| + RecordUserAction.record("ClearBrowsingData_DialogCreated");
|
| + mMaxImportantSites = PrefServiceBridge.getMaxImportantSites();
|
| PrefServiceBridge.getInstance().requestInfoAboutOtherFormsOfBrowsingHistory(this);
|
| getActivity().setTitle(R.string.clear_browsing_data_title);
|
| addPreferencesFromResource(R.xml.clear_browsing_data_preferences);
|
| @@ -565,6 +578,10 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment
|
|
|
| @Override
|
| public void onImportantRegisterableDomainsReady(String[] domains, String[] exampleOrigins) {
|
| + if (domains == null) return;
|
| + // mMaxImportantSites is a constant on the C++ side.
|
| + RecordHistogram.recordCustomCountHistogram("History.ClearBrowsingData.NumImportant",
|
| + domains.length, 0, mMaxImportantSites + 1, mMaxImportantSites + 1);
|
| mSortedImportantDomains = Arrays.copyOf(domains, domains.length);
|
| mSortedExampleOrigins = Arrays.copyOf(exampleOrigins, exampleOrigins.length);
|
| }
|
| @@ -579,6 +596,20 @@ public class ClearBrowsingDataPreferences extends PreferenceFragment
|
| // Deselected means that the user is excluding the domain from being cleared.
|
| String[] deselectedDomains = data.getStringArrayExtra(
|
| ConfirmImportantSitesDialogFragment.DESELECTED_DOMAINS_TAG);
|
| + if (deselectedDomains != null && mSortedImportantDomains != null) {
|
| + // mMaxImportantSites is a constant on the C++ side.
|
| + RecordHistogram.recordCustomCountHistogram(
|
| + "History.ClearBrowsingData.ImportantDeselectedNum",
|
| + deselectedDomains.length, 0, mMaxImportantSites + 1,
|
| + mMaxImportantSites + 1);
|
| + // We put our max at 20 instead of 100 to reduce the number of empty buckets (as
|
| + // our maximum denominator is 5).
|
| + RecordHistogram.recordEnumeratedHistogram(
|
| + "History.ClearBrowsingData.ImportantDeselectedPercent",
|
| + deselectedDomains.length * IMPORTANT_SITES_PERCENTAGE_BUCKET_COUNT
|
| + / mSortedImportantDomains.length,
|
| + IMPORTANT_SITES_PERCENTAGE_BUCKET_COUNT + 1);
|
| + }
|
| clearBrowsingData(getSelectedOptions(), deselectedDomains);
|
| }
|
| }
|
|
|