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

Side by Side Diff: ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.mm

Issue 2270063005: Add support for time based deletion of browsing data on iOS (Closed)
Patch Set: Addressed comments Created 4 years, 3 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 "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h" 5 #include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 IOSChromeBrowsingDataRemover::NotificationDetails::NotificationDetails( 83 IOSChromeBrowsingDataRemover::NotificationDetails::NotificationDetails(
84 base::Time removal_begin, 84 base::Time removal_begin,
85 int removal_mask) 85 int removal_mask)
86 : removal_begin(removal_begin), removal_mask(removal_mask) {} 86 : removal_begin(removal_begin), removal_mask(removal_mask) {}
87 87
88 IOSChromeBrowsingDataRemover::NotificationDetails::~NotificationDetails() {} 88 IOSChromeBrowsingDataRemover::NotificationDetails::~NotificationDetails() {}
89 89
90 // Static. 90 // Static.
91 IOSChromeBrowsingDataRemover* IOSChromeBrowsingDataRemover::CreateForPeriod( 91 IOSChromeBrowsingDataRemover* IOSChromeBrowsingDataRemover::CreateForPeriod(
92 ios::ChromeBrowserState* browser_state, 92 ios::ChromeBrowserState* browser_state,
93 TimePeriod period) { 93 browsing_data::TimePeriod period) {
94 switch (period) { 94 switch (period) {
95 case EVERYTHING: 95 case browsing_data::LAST_HOUR:
96 base::RecordAction(UserMetricsAction("ClearBrowsingData_LastHour"));
97 break;
98 case browsing_data::LAST_DAY:
99 base::RecordAction(UserMetricsAction("ClearBrowsingData_LastDay"));
100 break;
101 case browsing_data::LAST_WEEK:
102 base::RecordAction(UserMetricsAction("ClearBrowsingData_LastWeek"));
103 break;
104 case browsing_data::FOUR_WEEKS:
105 base::RecordAction(UserMetricsAction("ClearBrowsingData_LastMonth"));
106 break;
107 case browsing_data::ALL_TIME:
96 base::RecordAction(UserMetricsAction("ClearBrowsingData_Everything")); 108 base::RecordAction(UserMetricsAction("ClearBrowsingData_Everything"));
97 break; 109 break;
98 } 110 }
99 return new IOSChromeBrowsingDataRemover( 111 return new IOSChromeBrowsingDataRemover(
100 browser_state, 112 browser_state, browsing_data::CalculateBeginDeleteTime(period),
101 IOSChromeBrowsingDataRemover::CalculateBeginDeleteTime(period),
102 base::Time::Max()); 113 base::Time::Max());
103 } 114 }
104 115
105 IOSChromeBrowsingDataRemover::IOSChromeBrowsingDataRemover( 116 IOSChromeBrowsingDataRemover::IOSChromeBrowsingDataRemover(
106 ios::ChromeBrowserState* browser_state, 117 ios::ChromeBrowserState* browser_state,
107 base::Time delete_begin, 118 base::Time delete_begin,
108 base::Time delete_end) 119 base::Time delete_end)
109 : browser_state_(browser_state), 120 : browser_state_(browser_state),
110 delete_begin_(delete_begin), 121 delete_begin_(delete_begin),
111 delete_end_(delete_end), 122 delete_end_(delete_end),
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 waiting_for_clear_keyword_data_ = true; 203 waiting_for_clear_keyword_data_ = true;
193 } else if (keywords_model) { 204 } else if (keywords_model) {
194 keywords_model->RemoveAutoGeneratedForOriginBetween( 205 keywords_model->RemoveAutoGeneratedForOriginBetween(
195 GURL(), delete_begin_, delete_end_); 206 GURL(), delete_begin_, delete_end_);
196 } 207 }
197 } 208 }
198 209
199 // If the caller is removing history for all hosts, then clear ancillary 210 // If the caller is removing history for all hosts, then clear ancillary
200 // historical information. 211 // historical information.
201 // We also delete the list of recently closed tabs. Since these expire, 212 // We also delete the list of recently closed tabs. Since these expire,
202 // they can't be more than a day old, so we can simply clear them all. 213 // they can't be more than a day old, so we can simply clear them all.
droger 2016/08/30 13:00:48 Should this be changed to avoid deleting everythin
msramek 2016/08/30 14:14:35 This implementation is consistent with Desktop and
203 sessions::TabRestoreService* tab_service = 214 sessions::TabRestoreService* tab_service =
204 IOSChromeTabRestoreServiceFactory::GetForBrowserState(browser_state_); 215 IOSChromeTabRestoreServiceFactory::GetForBrowserState(browser_state_);
205 if (tab_service) { 216 if (tab_service) {
206 tab_service->ClearEntries(); 217 tab_service->ClearEntries();
207 tab_service->DeleteLastSession(); 218 tab_service->DeleteLastSession();
208 } 219 }
209 220
210 // The saved Autofill profiles and credit cards can include the origin from 221 // The saved Autofill profiles and credit cards can include the origin from
211 // which these profiles and credit cards were learned. These are a form of 222 // which these profiles and credit cards were learned. These are a form of
212 // history, so clear them as well. 223 // history, so clear them as well.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 browser_state_); 308 browser_state_);
298 if (data_manager) 309 if (data_manager)
299 data_manager->Refresh(); 310 data_manager->Refresh();
300 } 311 }
301 } 312 }
302 313
303 if (remove_mask & REMOVE_CACHE) { 314 if (remove_mask & REMOVE_CACHE) {
304 base::RecordAction(UserMetricsAction("ClearBrowsingData_Cache")); 315 base::RecordAction(UserMetricsAction("ClearBrowsingData_Cache"));
305 316
306 waiting_for_clear_cache_ = true; 317 waiting_for_clear_cache_ = true;
307 DCHECK(delete_begin_.is_null()) << "Partial clearing not supported";
308 ClearHttpCache(browser_state_->GetRequestContext(), 318 ClearHttpCache(browser_state_->GetRequestContext(),
309 WebThread::GetTaskRunnerForThread(WebThread::IO), 319 WebThread::GetTaskRunnerForThread(WebThread::IO),
320 delete_begin_, delete_end_,
310 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCache, 321 base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCache,
311 base::Unretained(this))); 322 base::Unretained(this)));
312 } 323 }
313 324
314 // Remove omnibox zero-suggest cache results. 325 // Remove omnibox zero-suggest cache results.
315 if ((remove_mask & (REMOVE_CACHE | REMOVE_COOKIES))) { 326 if ((remove_mask & (REMOVE_CACHE | REMOVE_COOKIES))) {
316 browser_state_->GetPrefs()->SetString(omnibox::kZeroSuggestCachedResults, 327 browser_state_->GetPrefs()->SetString(omnibox::kZeroSuggestCachedResults,
317 std::string()); 328 std::string());
318 } 329 }
319 330
(...skipping 24 matching lines...) Expand all
344 355
345 void IOSChromeBrowsingDataRemover::RemoveObserver(Observer* observer) { 356 void IOSChromeBrowsingDataRemover::RemoveObserver(Observer* observer) {
346 observer_list_.RemoveObserver(observer); 357 observer_list_.RemoveObserver(observer);
347 } 358 }
348 359
349 void IOSChromeBrowsingDataRemover::OnHistoryDeletionDone() { 360 void IOSChromeBrowsingDataRemover::OnHistoryDeletionDone() {
350 waiting_for_clear_history_ = false; 361 waiting_for_clear_history_ = false;
351 NotifyAndDeleteIfDone(); 362 NotifyAndDeleteIfDone();
352 } 363 }
353 364
354 base::Time IOSChromeBrowsingDataRemover::CalculateBeginDeleteTime(
355 TimePeriod time_period) {
356 base::TimeDelta diff;
357 base::Time delete_begin_time = base::Time::Now();
358 switch (time_period) {
359 case EVERYTHING:
360 delete_begin_time = base::Time();
361 break;
362 default:
363 NOTREACHED() << L"Missing item";
364 break;
365 }
366 return delete_begin_time - diff;
367 }
368
369 bool IOSChromeBrowsingDataRemover::AllDone() { 365 bool IOSChromeBrowsingDataRemover::AllDone() {
370 return !waiting_for_clear_autofill_origin_urls_ && 366 return !waiting_for_clear_autofill_origin_urls_ &&
371 !waiting_for_clear_cache_ && !waiting_for_clear_channel_ids_ && 367 !waiting_for_clear_cache_ && !waiting_for_clear_channel_ids_ &&
372 !waiting_for_clear_cookies_count_ && !waiting_for_clear_form_ && 368 !waiting_for_clear_cookies_count_ && !waiting_for_clear_form_ &&
373 !waiting_for_clear_history_ && 369 !waiting_for_clear_history_ &&
374 !waiting_for_clear_hostname_resolution_cache_ && 370 !waiting_for_clear_hostname_resolution_cache_ &&
375 !waiting_for_clear_keyword_data_ && 371 !waiting_for_clear_keyword_data_ &&
376 !waiting_for_clear_networking_history_ && 372 !waiting_for_clear_networking_history_ &&
377 !waiting_for_clear_passwords_; 373 !waiting_for_clear_passwords_;
378 } 374 }
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 waiting_for_clear_autofill_origin_urls_ = false; 504 waiting_for_clear_autofill_origin_urls_ = false;
509 NotifyAndDeleteIfDone(); 505 NotifyAndDeleteIfDone();
510 } 506 }
511 507
512 // static 508 // static
513 IOSChromeBrowsingDataRemover::CallbackSubscription 509 IOSChromeBrowsingDataRemover::CallbackSubscription
514 IOSChromeBrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback( 510 IOSChromeBrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback(
515 const IOSChromeBrowsingDataRemover::Callback& callback) { 511 const IOSChromeBrowsingDataRemover::Callback& callback) {
516 return GetOnBrowsingDataRemovedCallbacks()->Add(callback); 512 return GetOnBrowsingDataRemovedCallbacks()->Add(callback);
517 } 513 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698