OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/options/clear_browser_data_handler.h" | 5 #include "chrome/browser/ui/webui/options/clear_browser_data_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "base/metrics/histogram_macros.h" | 13 #include "base/metrics/histogram_macros.h" |
14 #include "base/metrics/sparse_histogram.h" | 14 #include "base/metrics/sparse_histogram.h" |
15 #include "base/strings/string16.h" | 15 #include "base/strings/string16.h" |
16 #include "base/strings/string_number_conversions.h" | 16 #include "base/strings/string_number_conversions.h" |
17 #include "base/strings/utf_string_conversions.h" | |
17 #include "base/values.h" | 18 #include "base/values.h" |
18 #include "chrome/app/chrome_command_ids.h" | 19 #include "chrome/app/chrome_command_ids.h" |
19 #include "chrome/browser/browser_process.h" | 20 #include "chrome/browser/browser_process.h" |
20 #include "chrome/browser/browsing_data/autofill_counter.h" | 21 #include "chrome/browser/browsing_data/autofill_counter.h" |
21 #include "chrome/browser/browsing_data/browsing_data_counter.h" | 22 #include "chrome/browser/browsing_data/browsing_data_counter.h" |
22 #include "chrome/browser/browsing_data/browsing_data_counter_utils.h" | 23 #include "chrome/browser/browsing_data/browsing_data_counter_utils.h" |
23 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 24 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
24 #include "chrome/browser/browsing_data/browsing_data_remover.h" | 25 #include "chrome/browser/browsing_data/browsing_data_remover.h" |
25 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" | 26 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" |
26 #include "chrome/browser/browsing_data/cache_counter.h" | 27 #include "chrome/browser/browsing_data/cache_counter.h" |
27 #include "chrome/browser/browsing_data/history_counter.h" | 28 #include "chrome/browser/browsing_data/history_counter.h" |
28 #include "chrome/browser/browsing_data/passwords_counter.h" | 29 #include "chrome/browser/browsing_data/passwords_counter.h" |
30 #include "chrome/browser/history/web_history_service_factory.h" | |
29 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 31 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
30 #include "chrome/browser/profiles/profile.h" | 32 #include "chrome/browser/profiles/profile.h" |
31 #include "chrome/browser/sync/profile_sync_service_factory.h" | 33 #include "chrome/browser/sync/profile_sync_service_factory.h" |
32 #include "chrome/browser/ui/accelerator_utils.h" | 34 #include "chrome/browser/ui/accelerator_utils.h" |
33 #include "chrome/common/pref_names.h" | 35 #include "chrome/common/pref_names.h" |
34 #include "chrome/grit/generated_resources.h" | 36 #include "chrome/grit/generated_resources.h" |
35 #include "chrome/grit/locale_settings.h" | 37 #include "chrome/grit/locale_settings.h" |
38 #include "components/browsing_data_ui/history_notice_utils.h" | |
36 #include "components/google/core/browser/google_util.h" | 39 #include "components/google/core/browser/google_util.h" |
37 #include "components/prefs/pref_service.h" | 40 #include "components/prefs/pref_service.h" |
38 #include "content/public/browser/notification_details.h" | 41 #include "content/public/browser/notification_details.h" |
39 #include "content/public/browser/web_ui.h" | 42 #include "content/public/browser/web_ui.h" |
40 #include "ui/base/accelerators/accelerator.h" | 43 #include "ui/base/accelerators/accelerator.h" |
41 #include "ui/base/l10n/l10n_util.h" | 44 #include "ui/base/l10n/l10n_util.h" |
42 #include "ui/events/keycodes/keyboard_codes.h" | 45 #include "ui/events/keycodes/keyboard_codes.h" |
43 | 46 |
44 namespace { | 47 namespace { |
45 | 48 |
46 const char kClearBrowsingDataLearnMoreUrl[] = | 49 const char kClearBrowsingDataLearnMoreUrl[] = |
47 "https://support.google.com/chrome/?p=settings_clear_browsing_data"; | 50 "https://support.google.com/chrome/?p=settings_clear_browsing_data"; |
48 | 51 |
52 const char kMyActivityUrl[] = "https://history.google.com"; | |
53 | |
54 const int kMaxTimesHistoryNoticeShown = 1; | |
55 | |
49 } // namespace | 56 } // namespace |
50 | 57 |
51 namespace options { | 58 namespace options { |
52 | 59 |
53 ClearBrowserDataHandler::ClearBrowserDataHandler() | 60 ClearBrowserDataHandler::ClearBrowserDataHandler() |
54 : remover_(nullptr), | 61 : remover_(nullptr), |
55 sync_service_(nullptr) { | 62 sync_service_(nullptr) { |
56 } | 63 } |
57 | 64 |
58 ClearBrowserDataHandler::~ClearBrowserDataHandler() { | 65 ClearBrowserDataHandler::~ClearBrowserDataHandler() { |
(...skipping 24 matching lines...) Expand all Loading... | |
83 ProfileSyncServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())); | 90 ProfileSyncServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())); |
84 if (sync_service_) | 91 if (sync_service_) |
85 sync_service_->AddObserver(this); | 92 sync_service_->AddObserver(this); |
86 } | 93 } |
87 } | 94 } |
88 | 95 |
89 void ClearBrowserDataHandler::InitializePage() { | 96 void ClearBrowserDataHandler::InitializePage() { |
90 web_ui()->CallJavascriptFunction( | 97 web_ui()->CallJavascriptFunction( |
91 "ClearBrowserDataOverlay.createFooter", | 98 "ClearBrowserDataOverlay.createFooter", |
92 base::FundamentalValue(AreCountersEnabled()), | 99 base::FundamentalValue(AreCountersEnabled()), |
93 base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive())); | 100 base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive()), |
101 base::FundamentalValue(ShouldShowHistoryFooter())); | |
94 UpdateInfoBannerVisibility(); | 102 UpdateInfoBannerVisibility(); |
95 OnBrowsingHistoryPrefChanged(); | 103 OnBrowsingHistoryPrefChanged(); |
96 bool removal_in_progress = !!remover_; | 104 bool removal_in_progress = !!remover_; |
97 web_ui()->CallJavascriptFunction("ClearBrowserDataOverlay.setClearing", | 105 web_ui()->CallJavascriptFunction("ClearBrowserDataOverlay.setClearing", |
98 base::FundamentalValue(removal_in_progress)); | 106 base::FundamentalValue(removal_in_progress)); |
99 | 107 |
100 web_ui()->CallJavascriptFunction( | 108 web_ui()->CallJavascriptFunction( |
101 "ClearBrowserDataOverlay.markInitializationComplete"); | 109 "ClearBrowserDataOverlay.markInitializationComplete"); |
102 } | 110 } |
103 | 111 |
(...skipping 30 matching lines...) Expand all Loading... | |
134 void ClearBrowserDataHandler::GetLocalizedValues( | 142 void ClearBrowserDataHandler::GetLocalizedValues( |
135 base::DictionaryValue* localized_strings) { | 143 base::DictionaryValue* localized_strings) { |
136 DCHECK(localized_strings); | 144 DCHECK(localized_strings); |
137 | 145 |
138 static OptionsStringResource resources[] = { | 146 static OptionsStringResource resources[] = { |
139 { "clearBrowserDataLabel", IDS_CLEAR_BROWSING_DATA_LABEL }, | 147 { "clearBrowserDataLabel", IDS_CLEAR_BROWSING_DATA_LABEL }, |
140 { "clearBrowserDataSyncWarning", IDS_CLEAR_BROWSING_DATA_SYNCED_DELETION }, | 148 { "clearBrowserDataSyncWarning", IDS_CLEAR_BROWSING_DATA_SYNCED_DELETION }, |
141 { "clearBrowserDataSupportString", AreCountersEnabled() | 149 { "clearBrowserDataSupportString", AreCountersEnabled() |
142 ? IDS_CLEAR_BROWSING_DATA_SOME_STUFF_REMAINS_SIMPLE | 150 ? IDS_CLEAR_BROWSING_DATA_SOME_STUFF_REMAINS_SIMPLE |
143 : IDS_CLEAR_BROWSING_DATA_SOME_STUFF_REMAINS }, | 151 : IDS_CLEAR_BROWSING_DATA_SOME_STUFF_REMAINS }, |
152 { "clearBrowserDataHistoryNoticeTitle", | |
153 IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_TITLE }, | |
144 { "deleteBrowsingHistoryCheckbox", IDS_DEL_BROWSING_HISTORY_CHKBOX }, | 154 { "deleteBrowsingHistoryCheckbox", IDS_DEL_BROWSING_HISTORY_CHKBOX }, |
145 { "deleteDownloadHistoryCheckbox", IDS_DEL_DOWNLOAD_HISTORY_CHKBOX }, | 155 { "deleteDownloadHistoryCheckbox", IDS_DEL_DOWNLOAD_HISTORY_CHKBOX }, |
146 { "deleteCacheCheckbox", IDS_DEL_CACHE_CHKBOX }, | 156 { "deleteCacheCheckbox", IDS_DEL_CACHE_CHKBOX }, |
147 { "deleteCookiesCheckbox", IDS_DEL_COOKIES_CHKBOX }, | 157 { "deleteCookiesCheckbox", IDS_DEL_COOKIES_CHKBOX }, |
148 { "deleteCookiesFlashCheckbox", IDS_DEL_COOKIES_FLASH_CHKBOX }, | 158 { "deleteCookiesFlashCheckbox", IDS_DEL_COOKIES_FLASH_CHKBOX }, |
149 { "deletePasswordsCheckbox", IDS_DEL_PASSWORDS_CHKBOX }, | 159 { "deletePasswordsCheckbox", IDS_DEL_PASSWORDS_CHKBOX }, |
150 { "deleteFormDataCheckbox", IDS_DEL_FORM_DATA_CHKBOX }, | 160 { "deleteFormDataCheckbox", IDS_DEL_FORM_DATA_CHKBOX }, |
151 { "deleteHostedAppsDataCheckbox", IDS_DEL_HOSTED_APPS_DATA_CHKBOX }, | 161 { "deleteHostedAppsDataCheckbox", IDS_DEL_HOSTED_APPS_DATA_CHKBOX }, |
152 { "deauthorizeContentLicensesCheckbox", | 162 { "deauthorizeContentLicensesCheckbox", |
153 IDS_DEAUTHORIZE_CONTENT_LICENSES_CHKBOX }, | 163 IDS_DEAUTHORIZE_CONTENT_LICENSES_CHKBOX }, |
154 { "clearBrowserDataCommit", IDS_CLEAR_BROWSING_DATA_COMMIT }, | 164 { "clearBrowserDataCommit", IDS_CLEAR_BROWSING_DATA_COMMIT }, |
155 { "flashStorageUrl", IDS_FLASH_STORAGE_URL }, | 165 { "flashStorageUrl", IDS_FLASH_STORAGE_URL }, |
156 }; | 166 }; |
157 | 167 |
158 RegisterStrings(localized_strings, resources, arraysize(resources)); | 168 RegisterStrings(localized_strings, resources, arraysize(resources)); |
159 RegisterTitle(localized_strings, "clearBrowserDataOverlay", | 169 RegisterTitle(localized_strings, "clearBrowserDataOverlay", |
160 IDS_CLEAR_BROWSING_DATA_TITLE); | 170 IDS_CLEAR_BROWSING_DATA_TITLE); |
161 localized_strings->SetString("clearBrowsingDataLearnMoreUrl", | 171 localized_strings->SetString("clearBrowsingDataLearnMoreUrl", |
162 kClearBrowsingDataLearnMoreUrl); | 172 kClearBrowsingDataLearnMoreUrl); |
173 localized_strings->SetString( | |
174 "clearBrowserDataHistoryFooter", | |
175 l10n_util::GetStringFUTF16( | |
176 IDS_CLEAR_BROWSING_DATA_HISTORY_FOOTER, | |
177 base::ASCIIToUTF16(kMyActivityUrl))); | |
178 localized_strings->SetString( | |
179 "clearBrowserDataHistoryNotice", | |
180 l10n_util::GetStringFUTF16( | |
181 IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE, | |
182 base::ASCIIToUTF16(kMyActivityUrl))); | |
163 | 183 |
164 base::ListValue* time_list = new base::ListValue; | 184 base::ListValue* time_list = new base::ListValue; |
165 for (int i = 0; i < 5; i++) { | 185 for (int i = 0; i < 5; i++) { |
166 base::string16 label_string; | 186 base::string16 label_string; |
167 switch (i) { | 187 switch (i) { |
168 case 0: | 188 case 0: |
169 label_string = l10n_util::GetStringUTF16(IDS_CLEAR_DATA_HOUR); | 189 label_string = l10n_util::GetStringUTF16(IDS_CLEAR_DATA_HOUR); |
170 break; | 190 break; |
171 case 1: | 191 case 1: |
172 label_string = l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DAY); | 192 label_string = l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DAY); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
290 // Store the clear browsing data time. Next time the clear browsing data | 310 // Store the clear browsing data time. Next time the clear browsing data |
291 // dialog is open, this time is used to decide whether to display an info | 311 // dialog is open, this time is used to decide whether to display an info |
292 // banner or not. | 312 // banner or not. |
293 prefs->SetInt64(prefs::kLastClearBrowsingDataTime, | 313 prefs->SetInt64(prefs::kLastClearBrowsingDataTime, |
294 base::Time::Now().ToInternalValue()); | 314 base::Time::Now().ToInternalValue()); |
295 } | 315 } |
296 | 316 |
297 void ClearBrowserDataHandler::OnBrowsingDataRemoverDone() { | 317 void ClearBrowserDataHandler::OnBrowsingDataRemoverDone() { |
298 remover_->RemoveObserver(this); | 318 remover_->RemoveObserver(this); |
299 remover_ = nullptr; | 319 remover_ = nullptr; |
300 web_ui()->CallJavascriptFunction("ClearBrowserDataOverlay.doneClearing"); | 320 |
321 Profile* profile = Profile::FromWebUI(web_ui()); | |
322 PrefService* prefs = profile->GetPrefs(); | |
Dan Beam
2016/03/18 22:48:39
nit: PrefService* prefs = Profile::FromWebUI(web_u
msramek
2016/03/21 16:30:25
Done.
| |
323 | |
324 #ifndef NDEBUG | |
325 // For manual testing, pretend that the notice is has not been shown yet. | |
326 prefs->SetInteger(prefs::kClearBrowsingDataHistoryNoticeShownTimes, 0); | |
327 #endif | |
Dan Beam
2016/03/18 22:48:39
I would not commit this
msramek
2016/03/21 16:30:25
Hmm, OK. Given that it's just one line of code, I
| |
328 | |
329 int notice_shown_times = | |
330 prefs->GetInteger(prefs::kClearBrowsingDataHistoryNoticeShownTimes); | |
331 | |
332 // When the deletion is complete, we might show an additional dialog with | |
333 // a notice about other forms of browsing history. This is the case if | |
334 bool show_notice = | |
335 // 1. The selected data types contained browsing history. | |
336 prefs->GetBoolean(prefs::kDeleteBrowsingHistory) && | |
337 // 2. The footer about other forms of browsing history is also shown. | |
338 ShouldShowHistoryFooter() && | |
339 // 3. The notice has been shown less than |kMaxTimesHistoryNoticeShown|. | |
340 notice_shown_times < kMaxTimesHistoryNoticeShown; | |
341 | |
342 if (show_notice) { | |
343 // Increment the preference. | |
344 prefs->SetInteger(prefs::kClearBrowsingDataHistoryNoticeShownTimes, | |
345 notice_shown_times + 1); | |
346 } | |
347 | |
348 web_ui()->CallJavascriptFunction( | |
349 "ClearBrowserDataOverlay.doneClearing", | |
350 base::FundamentalValue(show_notice)); | |
301 } | 351 } |
302 | 352 |
303 void ClearBrowserDataHandler::OnBrowsingHistoryPrefChanged() { | 353 void ClearBrowserDataHandler::OnBrowsingHistoryPrefChanged() { |
304 web_ui()->CallJavascriptFunction( | 354 web_ui()->CallJavascriptFunction( |
305 "ClearBrowserDataOverlay.setAllowDeletingHistory", | 355 "ClearBrowserDataOverlay.setAllowDeletingHistory", |
306 base::FundamentalValue(*allow_deleting_browser_history_)); | 356 base::FundamentalValue(*allow_deleting_browser_history_)); |
307 } | 357 } |
308 | 358 |
309 void ClearBrowserDataHandler::AddCounter( | 359 void ClearBrowserDataHandler::AddCounter( |
310 scoped_ptr<BrowsingDataCounter> counter) { | 360 scoped_ptr<BrowsingDataCounter> counter) { |
(...skipping 10 matching lines...) Expand all Loading... | |
321 scoped_ptr<BrowsingDataCounter::Result> result) { | 371 scoped_ptr<BrowsingDataCounter::Result> result) { |
322 DCHECK(AreCountersEnabled()); | 372 DCHECK(AreCountersEnabled()); |
323 web_ui()->CallJavascriptFunction( | 373 web_ui()->CallJavascriptFunction( |
324 "ClearBrowserDataOverlay.updateCounter", | 374 "ClearBrowserDataOverlay.updateCounter", |
325 base::StringValue(result->source()->GetPrefName()), | 375 base::StringValue(result->source()->GetPrefName()), |
326 base::StringValue(GetCounterTextFromResult(result.get()))); | 376 base::StringValue(GetCounterTextFromResult(result.get()))); |
327 } | 377 } |
328 | 378 |
329 void ClearBrowserDataHandler::OnStateChanged() { | 379 void ClearBrowserDataHandler::OnStateChanged() { |
330 web_ui()->CallJavascriptFunction( | 380 web_ui()->CallJavascriptFunction( |
331 "ClearBrowserDataOverlay.updateSyncWarning", | 381 "ClearBrowserDataOverlay.updateSyncWarningAndHistoryFooter", |
332 base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive())); | 382 base::FundamentalValue(sync_service_ && sync_service_->IsSyncActive()), |
383 base::FundamentalValue(ShouldShowHistoryFooter())); | |
384 } | |
385 | |
386 bool ClearBrowserDataHandler::ShouldShowHistoryFooter() { | |
387 return browsing_data_ui::ShouldShowNoticeAboutOtherFormsOfBrowsingHistory( | |
388 sync_service_, | |
389 WebHistoryServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))); | |
333 } | 390 } |
334 | 391 |
335 } // namespace options | 392 } // namespace options |
OLD | NEW |