Chromium Code Reviews| Index: chrome/browser/browsing_data/browsing_data_remover.cc |
| diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc |
| index ed3f118627089cbf80251f2415b93add01d68fd6..bde44a12a3120ca847db9b244e24a13653f9e6a9 100644 |
| --- a/chrome/browser/browsing_data/browsing_data_remover.cc |
| +++ b/chrome/browser/browsing_data/browsing_data_remover.cc |
| @@ -214,6 +214,7 @@ BrowsingDataRemover::BrowsingDataRemover(Profile* profile, |
| waiting_for_clear_nacl_cache_(false), |
| waiting_for_clear_network_predictor_(false), |
| waiting_for_clear_networking_history_(false), |
| + waiting_for_clear_passwords_(false), |
| waiting_for_clear_platform_keys_(false), |
| waiting_for_clear_plugin_data_(false), |
| waiting_for_clear_pnacl_cache_(false), |
| @@ -562,8 +563,18 @@ void BrowsingDataRemover::RemoveImpl(int remove_mask, |
| PasswordStoreFactory::GetForProfile( |
| profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); |
| - if (password_store) |
| - password_store->RemoveLoginsCreatedBetween(delete_begin_, delete_end_); |
| + if (password_store) { |
| + // TrimAffiliationCache() will be called in OnClearedPasswords(), so that |
| + // affiliation data corresponding to just deleted passwords can also be |
| + // removed. |
| + waiting_for_clear_passwords_ = true; |
| + password_store->RemoveLoginsCreatedBetween( |
| + delete_begin_, delete_end_, |
| + base::Bind(&BrowsingDataRemover::OnClearedPasswords, |
| + base::Unretained(this))); |
| + } |
| + } else if (remove_mask & REMOVE_CACHE) { |
| + TrimAffiliationCache(); |
| } |
| if (remove_mask & REMOVE_FORM_DATA) { |
| @@ -804,6 +815,7 @@ bool BrowsingDataRemover::AllDone() { |
| !waiting_for_clear_nacl_cache_ && |
| !waiting_for_clear_network_predictor_ && |
| !waiting_for_clear_networking_history_ && |
| + !waiting_for_clear_passwords_ && |
| !waiting_for_clear_platform_keys_ && |
| !waiting_for_clear_plugin_data_ && |
| !waiting_for_clear_pnacl_cache_ && |
| @@ -1003,6 +1015,19 @@ void BrowsingDataRemover::OnClearPlatformKeys( |
| } |
| #endif |
| + |
| +void BrowsingDataRemover::OnClearedPasswords() { |
| + DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| + waiting_for_clear_passwords_ = false; |
| + TrimAffiliationCache(); |
|
Mike West
2015/05/13 15:20:06
Ideally, we'd wait on this as well.
|
| + NotifyAndDeleteIfDone(); |
| +} |
| + |
| +void BrowsingDataRemover::TrimAffiliationCache() { |
| + DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| + PasswordStoreFactory::TrimOrDeleteAffiliationCache(profile_); |
|
Mike West
2015/05/13 15:20:06
Ideally, we'd have tests showing that this method
|
| +} |
| + |
| void BrowsingDataRemover::OnClearedCookies(int num_deleted) { |
| if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| BrowserThread::PostTask( |