Chromium Code Reviews| 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 0cde828327e79eb157e0b82fafc8513e1a78eb58..8d69209238bc19365c80b1777b02e3f987716a33 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 |
| @@ -11,14 +11,20 @@ |
| #include "base/metrics/sparse_histogram.h" |
| #include "chrome/browser/browsing_data/browsing_data_helper.h" |
| #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" |
| +#include "chrome/browser/history/web_history_service_factory.h" |
| +#include "chrome/browser/sync/profile_sync_service_factory.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 settings { |
| ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui) |
| - : remover_(nullptr) { |
| + : sync_service_(nullptr), |
| + remover_(nullptr), |
| + should_show_history_footer_(false), |
| + weak_ptr_factory_(this) { |
| PrefService* prefs = Profile::FromWebUI(webui)->GetPrefs(); |
| clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled, prefs); |
| pepper_flash_settings_enabled_.Init(prefs::kPepperFlashSettingsEnabled, |
| @@ -27,11 +33,18 @@ ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui) |
| prefs::kAllowDeletingBrowserHistory, prefs, |
| base::Bind(&ClearBrowsingDataHandler::OnBrowsingHistoryPrefChanged, |
| base::Unretained(this))); |
| + |
| + sync_service_ = |
| + ProfileSyncServiceFactory::GetForProfile(Profile::FromWebUI(webui)); |
| + if (sync_service_) |
| + sync_service_->AddObserver(this); |
|
dschuyler
2016/04/26 18:47:03
Rather than adding an observer in the constructor,
msramek
2016/04/27 18:10:29
Done. We're ready for JavaScript callbacks updatin
|
| } |
| ClearBrowsingDataHandler::~ClearBrowsingDataHandler() { |
| if (remover_) |
| remover_->RemoveObserver(this); |
| + if (sync_service_) |
| + sync_service_->RemoveObserver(this); |
| } |
| void ClearBrowsingDataHandler::RegisterMessages() { |
| @@ -39,6 +52,11 @@ void ClearBrowsingDataHandler::RegisterMessages() { |
| "clearBrowsingData", |
| base::Bind(&ClearBrowsingDataHandler::HandleClearBrowsingData, |
| base::Unretained(this))); |
| + |
| + web_ui()->RegisterMessageCallback( |
| + "initializeFooter", |
| + base::Bind(&ClearBrowsingDataHandler::InitializeFooter, |
| + base::Unretained(this))); |
| } |
| void ClearBrowsingDataHandler::HandleClearBrowsingData( |
| @@ -151,4 +169,30 @@ void ClearBrowsingDataHandler::OnBrowsingHistoryPrefChanged() { |
| base::FundamentalValue(*allow_deleting_browser_history_)); |
| } |
| +void ClearBrowsingDataHandler::InitializeFooter(const base::ListValue* args) { |
| + OnStateChanged(); |
| + RefreshHistoryNotice(); |
| +} |
| + |
| +void ClearBrowsingDataHandler::OnStateChanged() { |
| + web_ui()->CallJavascriptFunction( |
| + "cr.webUIListenerCallback", |
| + base::StringValue("update-footer"), |
| + base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive()), |
| + base::FundamentalValue(should_show_history_footer_)); |
| +} |
| + |
| +void ClearBrowsingDataHandler::RefreshHistoryNotice() { |
| + browsing_data_ui::ShouldShowNoticeAboutOtherFormsOfBrowsingHistory( |
| + sync_service_, |
| + WebHistoryServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())), |
| + base::Bind(&ClearBrowsingDataHandler::UpdateHistoryNotice, |
| + weak_ptr_factory_.GetWeakPtr())); |
| +} |
| + |
| +void ClearBrowsingDataHandler::UpdateHistoryNotice(bool show) { |
| + should_show_history_footer_ = show; |
| + OnStateChanged(); |
| +} |
| + |
| } // namespace settings |