summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
diff options
context:
space:
mode:
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.cc129
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