| Index: chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
|
| diff --git a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
|
| index 645157c3ea5d0966cbeff76730f685ed1abd0b64..32b23b13c3ff88582c3e1bf439643620c42ce925 100644
|
| --- a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
|
| +++ b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
|
| @@ -21,11 +21,18 @@
|
| #include "chrome/browser/browsing_data/passwords_counter.h"
|
| #include "chrome/browser/history/web_history_service_factory.h"
|
| #include "chrome/browser/sync/profile_sync_service_factory.h"
|
| +#include "chrome/common/channel_info.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "components/browsing_data_ui/history_notice_utils.h"
|
| #include "components/prefs/pref_service.h"
|
| #include "content/public/browser/web_ui.h"
|
|
|
| +namespace {
|
| +
|
| +const int kMaxTimesHistoryNoticeShown = 1;
|
| +
|
| +}
|
| +
|
| namespace settings {
|
|
|
| ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui)
|
| @@ -33,7 +40,8 @@ ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui)
|
| sync_service_(ProfileSyncServiceFactory::GetForProfile(profile_)),
|
| sync_service_observer_(this),
|
| remover_(nullptr),
|
| - should_show_history_footer_(false),
|
| + show_history_footer_(false),
|
| + show_history_deletion_dialog_(false),
|
| weak_ptr_factory_(this) {}
|
|
|
| ClearBrowsingDataHandler::~ClearBrowsingDataHandler() {
|
| @@ -166,9 +174,33 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData(
|
| void ClearBrowsingDataHandler::OnBrowsingDataRemoverDone() {
|
| remover_->RemoveObserver(this);
|
| remover_ = nullptr;
|
| +
|
| + PrefService* prefs = profile_->GetPrefs();
|
| + int notice_shown_times =
|
| + prefs->GetInteger(prefs::kClearBrowsingDataHistoryNoticeShownTimes);
|
| +
|
| + // When the deletion is complete, we might show an additional dialog with
|
| + // a notice about other forms of browsing history. This is the case if
|
| + const bool show_notice =
|
| + // 1. The dialog is relevant for the user.
|
| + show_history_deletion_dialog_ &&
|
| + // 2. The notice has been shown less than |kMaxTimesHistoryNoticeShown|.
|
| + notice_shown_times < kMaxTimesHistoryNoticeShown &&
|
| + // 3. The selected data types contained browsing history.
|
| + prefs->GetBoolean(prefs::kDeleteBrowsingHistory);
|
| +
|
| + if (show_notice) {
|
| + // Increment the preference.
|
| + prefs->SetInteger(prefs::kClearBrowsingDataHistoryNoticeShownTimes,
|
| + notice_shown_times + 1);
|
| + }
|
| +
|
| + UMA_HISTOGRAM_BOOLEAN(
|
| + "History.ClearBrowsingData.ShownHistoryNoticeAfterClearing", show_notice);
|
| +
|
| ResolveJavascriptCallback(
|
| base::StringValue(webui_callback_id_),
|
| - *base::Value::CreateNullValue());
|
| + base::FundamentalValue(show_notice));
|
| webui_callback_id_.clear();
|
| }
|
|
|
| @@ -201,7 +233,7 @@ void ClearBrowsingDataHandler::OnStateChanged() {
|
| "cr.webUIListenerCallback",
|
| base::StringValue("update-footer"),
|
| base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive()),
|
| - base::FundamentalValue(should_show_history_footer_));
|
| + base::FundamentalValue(show_history_footer_));
|
| }
|
|
|
| void ClearBrowsingDataHandler::RefreshHistoryNotice() {
|
| @@ -210,15 +242,35 @@ void ClearBrowsingDataHandler::RefreshHistoryNotice() {
|
| WebHistoryServiceFactory::GetForProfile(profile_),
|
| base::Bind(&ClearBrowsingDataHandler::UpdateHistoryNotice,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| +
|
| + // If the dialog with history notice has been shown less than
|
| + // |kMaxTimesHistoryNoticeShown| times, we might have to show it when the
|
| + // user deletes history. Find out if the conditions are met.
|
| + int notice_shown_times = profile_->GetPrefs()->
|
| + GetInteger(prefs::kClearBrowsingDataHistoryNoticeShownTimes);
|
| +
|
| + if (notice_shown_times < kMaxTimesHistoryNoticeShown) {
|
| + browsing_data_ui::ShouldPopupDialogAboutOtherFormsOfBrowsingHistory(
|
| + sync_service_,
|
| + WebHistoryServiceFactory::GetForProfile(profile_),
|
| + chrome::GetChannel(),
|
| + base::Bind(&ClearBrowsingDataHandler::UpdateHistoryDeletionDialog,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + }
|
| }
|
|
|
| void ClearBrowsingDataHandler::UpdateHistoryNotice(bool show) {
|
| - should_show_history_footer_ = show;
|
| + show_history_footer_ = show;
|
| OnStateChanged();
|
|
|
| UMA_HISTOGRAM_BOOLEAN(
|
| "History.ClearBrowsingData.HistoryNoticeShownInFooterWhenUpdated",
|
| - should_show_history_footer_);
|
| + show_history_footer_);
|
| +}
|
| +
|
| +void ClearBrowsingDataHandler::UpdateHistoryDeletionDialog(bool show) {
|
| + // This is used by OnBrowsingDataRemoverDone (when the deletion finishes).
|
| + show_history_deletion_dialog_ = show;
|
| }
|
|
|
| void ClearBrowsingDataHandler::AddCounter(
|
|
|