1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#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 {
// Returns true if all prefs (except tabs) used for the delete browsing data
// selection still use their default value and have not been modified. These are
// the prefs used for the advanced mode, or, in case of iOS, the only prefs
// used.
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;
}
} // namespace
#endif // BUILDFLAG(IS_IOS)
namespace browsing_data::prefs {
void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterListPref(kBrowsingDataLifetime);
registry->RegisterBooleanPref(kClearBrowsingDataOnExitDeletionPending, false);
registry->RegisterListPref(kClearBrowsingDataOnExitList);
// TODO(crbug.com/335387869): When MaybeMigrateToQuickDeletePrefValues is
// removed, set default value in iOS for the `kDeleteTimePeriod` pref to 15
// minutes.
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 // !BUILDFLAG(IS_IOS)
#if BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(kCloseTabs, false);
#endif // BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(IS_IOS)
registry->RegisterBooleanPref(kCloseTabs, true);
registry->RegisterBooleanPref(kMigratedToQuickDeletePrefValues, false);
#endif // BUILDFLAG(IS_IOS)
registry->RegisterIntegerPref(kLastClearBrowsingDataTab, 0);
}
#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 // BUILDFLAG(IS_IOS)
} // namespace browsing_data::prefs
|