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/browsing_data/browsing_data_remover.h" | 5 #include "chrome/browser/browsing_data/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 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 | 336 |
337 // crbug.com/140910: Many places were calling this with base::Time() as | 337 // crbug.com/140910: Many places were calling this with base::Time() as |
338 // delete_end, even though they should've used base::Time::Max(). | 338 // delete_end, even though they should've used base::Time::Max(). |
339 DCHECK_NE(base::Time(), time_range.end); | 339 DCHECK_NE(base::Time(), time_range.end); |
340 | 340 |
341 SetRemoving(true); | 341 SetRemoving(true); |
342 delete_begin_ = time_range.begin; | 342 delete_begin_ = time_range.begin; |
343 delete_end_ = time_range.end; | 343 delete_end_ = time_range.end; |
344 remove_mask_ = remove_mask; | 344 remove_mask_ = remove_mask; |
345 origin_type_mask_ = origin_type_mask; | 345 origin_type_mask_ = origin_type_mask; |
346 url::Origin remove_origin(remove_url); | 346 const url::Origin remove_origin(remove_url); |
347 | 347 |
348 PrefService* prefs = profile_->GetPrefs(); | 348 PrefService* prefs = profile_->GetPrefs(); |
349 bool may_delete_history = prefs->GetBoolean( | 349 bool may_delete_history = prefs->GetBoolean( |
350 prefs::kAllowDeletingBrowserHistory); | 350 prefs::kAllowDeletingBrowserHistory); |
351 | 351 |
352 // All the UI entry points into the BrowsingDataRemover should be disabled, | 352 // All the UI entry points into the BrowsingDataRemover should be disabled, |
353 // but this will fire if something was missed or added. | 353 // but this will fire if something was missed or added. |
354 DCHECK(may_delete_history || (remove_mask & REMOVE_NOCHECKS) || | 354 DCHECK(may_delete_history || (remove_mask & REMOVE_NOCHECKS) || |
355 (!(remove_mask & REMOVE_HISTORY) && !(remove_mask & REMOVE_DOWNLOADS))); | 355 (!(remove_mask & REMOVE_HISTORY) && !(remove_mask & REMOVE_DOWNLOADS))); |
356 | 356 |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 data_reduction_proxy_service->compression_stats() | 552 data_reduction_proxy_service->compression_stats() |
553 ->DeleteBrowsingHistory(delete_begin_, delete_end_); | 553 ->DeleteBrowsingHistory(delete_begin_, delete_end_); |
554 } | 554 } |
555 } | 555 } |
556 } | 556 } |
557 | 557 |
558 if ((remove_mask & REMOVE_DOWNLOADS) && may_delete_history) { | 558 if ((remove_mask & REMOVE_DOWNLOADS) && may_delete_history) { |
559 content::RecordAction(UserMetricsAction("ClearBrowsingData_Downloads")); | 559 content::RecordAction(UserMetricsAction("ClearBrowsingData_Downloads")); |
560 content::DownloadManager* download_manager = | 560 content::DownloadManager* download_manager = |
561 BrowserContext::GetDownloadManager(profile_); | 561 BrowserContext::GetDownloadManager(profile_); |
562 if (remove_origin.unique()) | 562 if (remove_url.is_empty()) { |
563 download_manager->RemoveDownloadsBetween(delete_begin_, delete_end_); | 563 download_manager->RemoveDownloadsBetween(delete_begin_, delete_end_); |
564 else | 564 } else { |
565 download_manager->RemoveDownloadsByOriginAndTime( | 565 download_manager->RemoveDownloadsByOriginAndTime( |
566 remove_origin, delete_begin_, delete_end_); | 566 remove_origin, delete_begin_, delete_end_); |
| 567 } |
567 DownloadPrefs* download_prefs = DownloadPrefs::FromDownloadManager( | 568 DownloadPrefs* download_prefs = DownloadPrefs::FromDownloadManager( |
568 download_manager); | 569 download_manager); |
569 download_prefs->SetSaveFilePath(download_prefs->DownloadPath()); | 570 download_prefs->SetSaveFilePath(download_prefs->DownloadPath()); |
570 } | 571 } |
571 | 572 |
572 uint32_t storage_partition_remove_mask = 0; | 573 uint32_t storage_partition_remove_mask = 0; |
573 | 574 |
574 // We ignore the REMOVE_COOKIES request if UNPROTECTED_WEB is not set, | 575 // We ignore the REMOVE_COOKIES request if UNPROTECTED_WEB is not set, |
575 // so that callers who request REMOVE_SITE_DATA with PROTECTED_WEB | 576 // so that callers who request REMOVE_SITE_DATA with PROTECTED_WEB |
576 // don't accidentally remove the cookies that are associated with the | 577 // don't accidentally remove the cookies that are associated with the |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 } | 692 } |
692 | 693 |
693 if (remove_mask & REMOVE_PASSWORDS) { | 694 if (remove_mask & REMOVE_PASSWORDS) { |
694 content::RecordAction(UserMetricsAction("ClearBrowsingData_Passwords")); | 695 content::RecordAction(UserMetricsAction("ClearBrowsingData_Passwords")); |
695 password_manager::PasswordStore* password_store = | 696 password_manager::PasswordStore* password_store = |
696 PasswordStoreFactory::GetForProfile( | 697 PasswordStoreFactory::GetForProfile( |
697 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); | 698 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); |
698 | 699 |
699 if (password_store) { | 700 if (password_store) { |
700 waiting_for_clear_passwords_ = true; | 701 waiting_for_clear_passwords_ = true; |
701 password_store->RemoveLoginsCreatedBetween( | 702 auto on_cleared_passwords = |
702 delete_begin_, delete_end_, | |
703 base::Bind(&BrowsingDataRemover::OnClearedPasswords, | 703 base::Bind(&BrowsingDataRemover::OnClearedPasswords, |
704 weak_ptr_factory_.GetWeakPtr())); | 704 weak_ptr_factory_.GetWeakPtr()); |
| 705 if (remove_url.is_empty()) { |
| 706 password_store->RemoveLoginsCreatedBetween(delete_begin_, delete_end_, |
| 707 on_cleared_passwords); |
| 708 } else { |
| 709 password_store->RemoveLoginsByOriginAndTime( |
| 710 remove_origin, delete_begin_, delete_end_, on_cleared_passwords); |
| 711 } |
705 } | 712 } |
706 } | 713 } |
707 | 714 |
708 if (remove_mask & REMOVE_HISTORY) { | 715 if (remove_mask & REMOVE_HISTORY) { |
709 password_manager::PasswordStore* password_store = | 716 password_manager::PasswordStore* password_store = |
710 PasswordStoreFactory::GetForProfile( | 717 PasswordStoreFactory::GetForProfile( |
711 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); | 718 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); |
712 | 719 |
713 if (password_store) { | 720 if (password_store) { |
714 waiting_for_clear_passwords_stats_ = true; | 721 waiting_for_clear_passwords_stats_ = true; |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 waiting_for_clear_domain_reliability_monitor_ = false; | 1195 waiting_for_clear_domain_reliability_monitor_ = false; |
1189 NotifyIfDone(); | 1196 NotifyIfDone(); |
1190 } | 1197 } |
1191 | 1198 |
1192 // static | 1199 // static |
1193 BrowsingDataRemover::CallbackSubscription | 1200 BrowsingDataRemover::CallbackSubscription |
1194 BrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback( | 1201 BrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback( |
1195 const BrowsingDataRemover::Callback& callback) { | 1202 const BrowsingDataRemover::Callback& callback) { |
1196 return GetOnBrowsingDataRemovedCallbacks()->Add(callback); | 1203 return GetOnBrowsingDataRemovedCallbacks()->Add(callback); |
1197 } | 1204 } |
OLD | NEW |