#include "components/browsing_data/core/pref_names.h"
#include "base/metrics/histogram_macros.h"
#include "base/values.h"
#include "components/browsing_data/core/browsing_data_utils.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_service.h"
#if BUILDFLAG(IS_IOS)
namespace {
bool AreAllSelectionPrefsDefaultValue(PrefService* pref_service) {
const std::string_view selection_pref_names[] = {
browsing_data::prefs::kDeleteTimePeriod,
browsing_data::prefs::kDeleteBrowsingHistory,
browsing_data::prefs::kDeleteCache,
browsing_data::prefs::kDeleteCookies,
browsing_data::prefs::kDeletePasswords,
browsing_data::prefs::kDeleteFormData};
for (std::string_view pref_name : selection_pref_names) {
if (!pref_service->FindPreference(pref_name)->IsDefaultValue()) {
return false;
}
}
return true;
}
}
#endif
namespace browsing_data::prefs {
void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterListPref(kBrowsingDataLifetime);
registry->RegisterBooleanPref(kClearBrowsingDataOnExitDeletionPending, false);
registry->RegisterListPref(kClearBrowsingDataOnExitList);
registry->RegisterIntegerPref(
kDeleteTimePeriod,
static_cast<int>(browsing_data::TimePeriod::LAST_HOUR));
registry->RegisterIntegerPref(
kDeleteTimePeriodBasic,
static_cast<int>(browsing_data::TimePeriod::LAST_HOUR));
registry->RegisterBooleanPref(kDeleteBrowsingHistory, true);
registry->RegisterBooleanPref(kDeleteBrowsingHistoryBasic, true);
registry->RegisterBooleanPref(kDeleteCache, true);
registry->RegisterBooleanPref(kDeleteCacheBasic, true);
registry->RegisterBooleanPref(kDeleteCookies, true);
registry->RegisterBooleanPref(kDeleteCookiesBasic, true);
registry->RegisterBooleanPref(kDeletePasswords, false);
registry->RegisterBooleanPref(kDeleteFormData, false);
registry->RegisterIntegerPref(
kClearBrowsingDataHistoryNoticeShownTimes, 0);
#if !BUILDFLAG(IS_IOS)
registry->RegisterBooleanPref(kDeleteDownloadHistory, true);
registry->RegisterBooleanPref(kDeleteHostedAppsData, false);
registry->RegisterBooleanPref(kDeleteSiteSettings, false);
#else
registry->RegisterInt64Pref(prefs::kLastClearBrowsingDataTime, 0);
#endif
#if BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(kCloseTabs, false);
#endif
#if BUILDFLAG(IS_IOS)
registry->RegisterBooleanPref(kCloseTabs, true);
registry->RegisterBooleanPref(kMigratedToQuickDeletePrefValues, false);
#endif
registry->RegisterIntegerPref(kLastClearBrowsingDataTab, 0);
registry->RegisterBooleanPref(kQuickDeleteEverUsed, false);
}
#if BUILDFLAG(IS_IOS)
void MaybeMigrateToQuickDeletePrefValues(PrefService* pref_service) {
bool migratedToQuickDeletePrefValues =
pref_service->GetBoolean(kMigratedToQuickDeletePrefValues);
if (migratedToQuickDeletePrefValues) {
return;
}
bool migrateToNewDefaults = AreAllSelectionPrefsDefaultValue(pref_service);
if (migrateToNewDefaults) {
pref_service->SetInteger(
kDeleteTimePeriod,
static_cast<int>(browsing_data::TimePeriod::LAST_15_MINUTES));
pref_service->SetBoolean(kCloseTabs, true);
} else {
pref_service->SetBoolean(kCloseTabs, false);
}
UMA_HISTOGRAM_BOOLEAN("Privacy.DeleteBrowsingData.MigratedToNewDefaults",
migrateToNewDefaults);
pref_service->SetBoolean(kMigratedToQuickDeletePrefValues, true);
}
#endif
}