Chromium Code Reviews| Index: chrome/browser/browsing_data/browsing_data_remover.cc |
| =================================================================== |
| --- chrome/browser/browsing_data/browsing_data_remover.cc (revision 194439) |
| +++ chrome/browser/browsing_data/browsing_data_remover.cc (working copy) |
| @@ -30,6 +30,9 @@ |
| #include "chrome/browser/net/predictor.h" |
| #include "chrome/browser/password_manager/password_store.h" |
| #include "chrome/browser/password_manager/password_store_factory.h" |
| +#include "chrome/browser/predictors/logged_in_predictor_table.h" |
| +#include "chrome/browser/predictors/predictor_database.h" |
| +#include "chrome/browser/predictors/predictor_database_factory.h" |
| #include "chrome/browser/prerender/prerender_manager.h" |
| #include "chrome/browser/prerender/prerender_manager_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| @@ -140,6 +143,7 @@ |
| waiting_for_clear_history_(false), |
| waiting_for_clear_hostname_resolution_cache_(false), |
| waiting_for_clear_local_storage_(false), |
| + waiting_for_clear_logged_in_predictor_(false), |
| waiting_for_clear_nacl_cache_(false), |
| waiting_for_clear_network_predictor_(false), |
| waiting_for_clear_networking_history_(false), |
| @@ -339,6 +343,9 @@ |
| base::Bind(&BrowsingDataRemover::ClearCookiesOnIOThread, |
| base::Unretained(this), base::Unretained(rq_context))); |
| } |
| + // Also delete the LoggedIn Predictor, which tries to keep track of which |
| + // sites a user is logged into. |
| + ClearLoggedInPredictor(); |
| #if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING) |
| // Clear the safebrowsing cookies only if time period is for "all time". It |
| @@ -574,6 +581,7 @@ |
| !waiting_for_clear_cookies_count_&& |
| !waiting_for_clear_history_ && |
| !waiting_for_clear_local_storage_ && |
| + !waiting_for_clear_logged_in_predictor_ && |
| !waiting_for_clear_session_storage_ && |
| !waiting_for_clear_networking_history_ && |
| !waiting_for_clear_server_bound_certs_ && |
| @@ -643,6 +651,37 @@ |
| base::Unretained(this))); |
| } |
| +void BrowsingDataRemover::OnClearedLoggedInPredictor() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + DCHECK(waiting_for_clear_logged_in_predictor_); |
| + waiting_for_clear_logged_in_predictor_ = false; |
| + NotifyAndDeleteIfDone(); |
| +} |
| + |
| +void BrowsingDataRemover::ClearLoggedInPredictor() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + DCHECK(!waiting_for_clear_logged_in_predictor_); |
| + |
| + predictors::LoggedInPredictorTable* logged_in_table = |
| + predictors::PredictorDatabaseFactory::GetForProfile(profile_)-> |
|
Shishir
2013/04/16 22:25:14
You want to check that the database exists here to
tburkard
2013/04/16 22:45:33
Done.
|
| + logged_in_table(); |
| + |
| + if (!logged_in_table) |
| + return; |
| + |
| + waiting_for_clear_logged_in_predictor_ = true; |
| + |
| + BrowserThread::PostTaskAndReply( |
| + BrowserThread::DB, |
| + FROM_HERE, |
| + base::Bind(&predictors::LoggedInPredictorTable::DeleteAllCreatedBetween, |
| + logged_in_table, |
| + delete_begin_, |
| + delete_end_), |
| + base::Bind(&BrowsingDataRemover::OnClearedLoggedInPredictor, |
| + base::Unretained(this))); |
| +} |
| + |
| void BrowsingDataRemover::OnClearedNetworkPredictor() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| waiting_for_clear_network_predictor_ = false; |