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

Side by Side Diff: chrome/browser/ui/webui/options/clear_browser_data_handler.cc

Issue 1813023002: Add a notice about other forms of history to the CBD dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add_component
Patch Set: Created 4 years, 9 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 (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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698