diff options
Diffstat (limited to 'chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc')
-rw-r--r-- | chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc | 129 |
1 files changed, 112 insertions, 17 deletions
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc index 598f32482fa..da98085fd22 100644 --- a/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc +++ b/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc @@ -21,18 +21,28 @@ #include "chrome/browser/engagement/important_sites_usage_counter.h" #include "chrome/browser/engagement/important_sites_util.h" #include "chrome/browser/history/web_history_service_factory.h" +#include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/common/channel_info.h" #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "components/browsing_data/core/history_notice_utils.h" #include "components/browsing_data/core/pref_names.h" +#include "components/feature_engagement/features.h" +#include "components/prefs/pref_member.h" #include "components/prefs/pref_service.h" +#include "components/signin/core/browser/signin_manager.h" #include "content/public/browser/browsing_data_filter_builder.h" #include "content/public/browser/storage_partition.h" +#include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "ui/base/text/bytes_formatting.h" +#if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) +#include "chrome/browser/feature_engagement/incognito_window/incognito_window_tracker.h" +#include "chrome/browser/feature_engagement/incognito_window/incognito_window_tracker_factory.h" +#endif + using ImportantReason = ImportantSitesUtil::ImportantReason; using BrowsingDataType = browsing_data::BrowsingDataType; @@ -42,13 +52,23 @@ const int kMaxTimesHistoryNoticeShown = 1; // TODO(msramek): Get the list of deletion preferences from the JS side. const char* kCounterPrefs[] = { - browsing_data::prefs::kDeleteBrowsingHistory, - browsing_data::prefs::kDeleteCache, - browsing_data::prefs::kDeleteDownloadHistory, - browsing_data::prefs::kDeleteFormData, - browsing_data::prefs::kDeleteHostedAppsData, - browsing_data::prefs::kDeleteMediaLicenses, - browsing_data::prefs::kDeletePasswords, + browsing_data::prefs::kDeleteBrowsingHistory, + browsing_data::prefs::kDeleteCache, + browsing_data::prefs::kDeleteDownloadHistory, + browsing_data::prefs::kDeleteFormData, + browsing_data::prefs::kDeleteHostedAppsData, + browsing_data::prefs::kDeleteMediaLicenses, + browsing_data::prefs::kDeletePasswords, +}; + +// Additional counters for the tabbed ui. +const char* kCounterPrefsBasic[] = { + browsing_data::prefs::kDeleteCacheBasic, +}; + +const char* kCounterPrefsAdvanced[] = { + browsing_data::prefs::kDeleteCookies, + browsing_data::prefs::kDeleteSiteSettings, }; const char kRegisterableDomainField[] = "registerableDomain"; @@ -70,7 +90,11 @@ ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui) sync_service_observer_(this), show_history_footer_(false), show_history_deletion_dialog_(false), - weak_ptr_factory_(this) {} + weak_ptr_factory_(this) { + if (base::FeatureList::IsEnabled(features::kTabsInCbd)) { + browsing_data::MigratePreferencesToBasic(profile_->GetPrefs()); + } +} ClearBrowsingDataHandler::~ClearBrowsingDataHandler() { } @@ -98,8 +122,30 @@ void ClearBrowsingDataHandler::OnJavascriptAllowed() { DCHECK(counters_.empty()); for (const std::string& pref : kCounterPrefs) { - AddCounter( - BrowsingDataCounterFactory::GetForProfileAndPref(profile_, pref)); + AddCounter(BrowsingDataCounterFactory::GetForProfileAndPref(profile_, pref), + browsing_data::ClearBrowsingDataTab::ADVANCED); + } + if (base::FeatureList::IsEnabled(features::kTabsInCbd)) { + for (const std::string& pref : kCounterPrefsBasic) { + AddCounter( + BrowsingDataCounterFactory::GetForProfileAndPref(profile_, pref), + browsing_data::ClearBrowsingDataTab::BASIC); + } + for (const std::string& pref : kCounterPrefsAdvanced) { + AddCounter( + BrowsingDataCounterFactory::GetForProfileAndPref(profile_, pref), + browsing_data::ClearBrowsingDataTab::ADVANCED); + } + PrefService* prefs = profile_->GetPrefs(); + period_ = std::make_unique<IntegerPrefMember>(); + period_->Init(browsing_data::prefs::kDeleteTimePeriod, prefs, + base::Bind(&ClearBrowsingDataHandler::HandleTimePeriodChanged, + base::Unretained(this))); + periodBasic_ = std::make_unique<IntegerPrefMember>(); + periodBasic_->Init( + browsing_data::prefs::kDeleteTimePeriodBasic, prefs, + base::Bind(&ClearBrowsingDataHandler::HandleTimePeriodChanged, + base::Unretained(this))); } } @@ -107,6 +153,29 @@ void ClearBrowsingDataHandler::OnJavascriptDisallowed() { sync_service_observer_.RemoveAll(); weak_ptr_factory_.InvalidateWeakPtrs(); counters_.clear(); + period_.reset(); + periodBasic_.reset(); +} + +void ClearBrowsingDataHandler::HandleClearBrowsingDataForTest() { + // HandleClearBrowsingData takes in a ListValue as its only parameter. The + // ListValue must contain four values: web_ui callback ID, a list of data + // types that the user cleared from the clear browsing data UI, time period of + // the data to be cleared, and important sites to remove. + + std::unique_ptr<base::ListValue> data_types = + std::make_unique<base::ListValue>(); + data_types->AppendString("browser.clear_data.browsing_history"); + + std::unique_ptr<base::ListValue> important_sites = + std::make_unique<base::ListValue>(); + + base::ListValue list_args; + list_args.AppendString("webui_callback_id"); + list_args.Append(std::move(data_types)); + list_args.AppendInteger(1u); + list_args.Append(std::move(important_sites)); + HandleClearBrowsingData(&list_args); } void ClearBrowsingDataHandler::HandleClearBrowsingData( @@ -127,7 +196,7 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData( std::vector<BrowsingDataType> data_type_vector; const base::ListValue* data_type_list = nullptr; CHECK(args->GetList(1, &data_type_list)); - for (const auto& type : *data_type_list) { + for (const base::Value& type : *data_type_list) { std::string pref_name; CHECK(type.GetAsString(&pref_name)); BrowsingDataType data_type = @@ -157,6 +226,10 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData( case BrowsingDataType::FORM_DATA: remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA; break; + case BrowsingDataType::SITE_SETTINGS: + remove_mask |= + ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS; + break; case BrowsingDataType::MEDIA_LICENSES: remove_mask |= content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES; break; @@ -165,7 +238,6 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData( origin_mask |= content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB; break; case BrowsingDataType::BOOKMARKS: - case BrowsingDataType::SITE_SETTINGS: // Only implemented on Android. NOTREACHED(); case BrowsingDataType::NUM_TYPES: @@ -229,6 +301,11 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData( browsing_data_important_sites_util::Remove( remove_mask, origin_mask, time_period, std::move(filter_builder), remover, std::move(callback)); +#if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) + feature_engagement::IncognitoWindowTrackerFactory::GetInstance() + ->GetForProfile(profile_) + ->OnBrowsingDataCleared(); +#endif } std::unique_ptr<content::BrowsingDataFilterBuilder> @@ -378,9 +455,16 @@ void ClearBrowsingDataHandler::OnStateChanged(syncer::SyncService* sync) { } void ClearBrowsingDataHandler::UpdateSyncState() { + auto* signin_manager = SigninManagerFactory::GetForProfile(profile_); + // TODO(dullweber): Remove "show_history_footer" attribute when the new UI + // is launched as it doesn't have this footer anymore. Instead the + // myactivity.google.com link is shown when a user is signed in or syncing. CallJavascriptFunction( - "cr.webUIListenerCallback", base::Value("update-footer"), - base::Value(sync_service_ && sync_service_->IsSyncActive()), + "cr.webUIListenerCallback", base::Value("update-sync-state"), + base::Value(signin_manager && signin_manager->IsAuthenticated()), + base::Value(sync_service_ && sync_service_->IsSyncActive() && + sync_service_->GetActiveDataTypes().Has( + syncer::HISTORY_DELETE_DIRECTIVES)), base::Value(show_history_footer_)); } @@ -422,9 +506,10 @@ void ClearBrowsingDataHandler::UpdateHistoryDeletionDialog(bool show) { } void ClearBrowsingDataHandler::AddCounter( - std::unique_ptr<browsing_data::BrowsingDataCounter> counter) { - counter->Init(profile_->GetPrefs(), - browsing_data::ClearBrowsingDataTab::ADVANCED, + std::unique_ptr<browsing_data::BrowsingDataCounter> counter, + browsing_data::ClearBrowsingDataTab tab) { + DCHECK(counter); + counter->Init(profile_->GetPrefs(), tab, base::Bind(&ClearBrowsingDataHandler::UpdateCounterText, base::Unretained(this))); counters_.push_back(std::move(counter)); @@ -438,4 +523,14 @@ void ClearBrowsingDataHandler::UpdateCounterText( base::Value(GetChromeCounterTextFromResult(result.get()))); } +void ClearBrowsingDataHandler::HandleTimePeriodChanged( + const std::string& pref_name) { + PrefService* prefs = profile_->GetPrefs(); + int period = prefs->GetInteger(pref_name); + + browsing_data::TimePeriod time_period = + static_cast<browsing_data::TimePeriod>(period); + browsing_data::RecordTimePeriodChange(time_period); +} + } // namespace settings |