Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(652)

Side by Side Diff: chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc

Issue 1912483003: Expand the footer in the material design Clear Browsing Data dialog. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix the test. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler. h" 5 #include "chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler. h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
11 #include "base/metrics/sparse_histogram.h" 11 #include "base/metrics/sparse_histogram.h"
12 #include "chrome/browser/browsing_data/browsing_data_helper.h" 12 #include "chrome/browser/browsing_data/browsing_data_helper.h"
13 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" 13 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
14 #include "chrome/browser/history/web_history_service_factory.h"
15 #include "chrome/browser/sync/profile_sync_service_factory.h"
14 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
17 #include "components/browsing_data_ui/history_notice_utils.h"
15 #include "components/prefs/pref_service.h" 18 #include "components/prefs/pref_service.h"
16 #include "content/public/browser/web_ui.h" 19 #include "content/public/browser/web_ui.h"
17 20
18 namespace settings { 21 namespace settings {
19 22
20 ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui) 23 ClearBrowsingDataHandler::ClearBrowsingDataHandler(content::WebUI* webui)
21 : remover_(nullptr) { 24 : sync_service_(nullptr),
25 remover_(nullptr),
26 should_show_history_footer_(false),
27 weak_ptr_factory_(this) {
22 PrefService* prefs = Profile::FromWebUI(webui)->GetPrefs(); 28 PrefService* prefs = Profile::FromWebUI(webui)->GetPrefs();
23 clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled, prefs); 29 clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled, prefs);
24 pepper_flash_settings_enabled_.Init(prefs::kPepperFlashSettingsEnabled, 30 pepper_flash_settings_enabled_.Init(prefs::kPepperFlashSettingsEnabled,
25 prefs); 31 prefs);
26 allow_deleting_browser_history_.Init( 32 allow_deleting_browser_history_.Init(
27 prefs::kAllowDeletingBrowserHistory, prefs, 33 prefs::kAllowDeletingBrowserHistory, prefs,
28 base::Bind(&ClearBrowsingDataHandler::OnBrowsingHistoryPrefChanged, 34 base::Bind(&ClearBrowsingDataHandler::OnBrowsingHistoryPrefChanged,
29 base::Unretained(this))); 35 base::Unretained(this)));
36
37 sync_service_ =
38 ProfileSyncServiceFactory::GetForProfile(Profile::FromWebUI(webui));
39 if (sync_service_)
40 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
30 } 41 }
31 42
32 ClearBrowsingDataHandler::~ClearBrowsingDataHandler() { 43 ClearBrowsingDataHandler::~ClearBrowsingDataHandler() {
33 if (remover_) 44 if (remover_)
34 remover_->RemoveObserver(this); 45 remover_->RemoveObserver(this);
46 if (sync_service_)
47 sync_service_->RemoveObserver(this);
35 } 48 }
36 49
37 void ClearBrowsingDataHandler::RegisterMessages() { 50 void ClearBrowsingDataHandler::RegisterMessages() {
38 web_ui()->RegisterMessageCallback( 51 web_ui()->RegisterMessageCallback(
39 "clearBrowsingData", 52 "clearBrowsingData",
40 base::Bind(&ClearBrowsingDataHandler::HandleClearBrowsingData, 53 base::Bind(&ClearBrowsingDataHandler::HandleClearBrowsingData,
41 base::Unretained(this))); 54 base::Unretained(this)));
55
56 web_ui()->RegisterMessageCallback(
57 "initializeFooter",
58 base::Bind(&ClearBrowsingDataHandler::InitializeFooter,
59 base::Unretained(this)));
42 } 60 }
43 61
44 void ClearBrowsingDataHandler::HandleClearBrowsingData( 62 void ClearBrowsingDataHandler::HandleClearBrowsingData(
45 const base::ListValue* args) { 63 const base::ListValue* args) {
46 // We should never be called when the previous clearing has not yet finished. 64 // We should never be called when the previous clearing has not yet finished.
47 CHECK(!remover_); 65 CHECK(!remover_);
48 CHECK_EQ(1U, args->GetSize()); 66 CHECK_EQ(1U, args->GetSize());
49 CHECK(webui_callback_id_.empty()); 67 CHECK(webui_callback_id_.empty());
50 CHECK(args->GetString(0, &webui_callback_id_)); 68 CHECK(args->GetString(0, &webui_callback_id_));
51 69
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 webui_callback_id_.clear(); 162 webui_callback_id_.clear();
145 } 163 }
146 164
147 void ClearBrowsingDataHandler::OnBrowsingHistoryPrefChanged() { 165 void ClearBrowsingDataHandler::OnBrowsingHistoryPrefChanged() {
148 web_ui()->CallJavascriptFunction( 166 web_ui()->CallJavascriptFunction(
149 "cr.webUIListenerCallback", 167 "cr.webUIListenerCallback",
150 base::StringValue("browsing-history-pref-changed"), 168 base::StringValue("browsing-history-pref-changed"),
151 base::FundamentalValue(*allow_deleting_browser_history_)); 169 base::FundamentalValue(*allow_deleting_browser_history_));
152 } 170 }
153 171
172 void ClearBrowsingDataHandler::InitializeFooter(const base::ListValue* args) {
173 OnStateChanged();
174 RefreshHistoryNotice();
175 }
176
177 void ClearBrowsingDataHandler::OnStateChanged() {
178 web_ui()->CallJavascriptFunction(
179 "cr.webUIListenerCallback",
180 base::StringValue("update-footer"),
181 base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive()),
182 base::FundamentalValue(should_show_history_footer_));
183 }
184
185 void ClearBrowsingDataHandler::RefreshHistoryNotice() {
186 browsing_data_ui::ShouldShowNoticeAboutOtherFormsOfBrowsingHistory(
187 sync_service_,
188 WebHistoryServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())),
189 base::Bind(&ClearBrowsingDataHandler::UpdateHistoryNotice,
190 weak_ptr_factory_.GetWeakPtr()));
191 }
192
193 void ClearBrowsingDataHandler::UpdateHistoryNotice(bool show) {
194 should_show_history_footer_ = show;
195 OnStateChanged();
196 }
197
154 } // namespace settings 198 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698