Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |