Chromium Code Reviews| Index: chrome/browser/browsing_data_remover.cc |
| =================================================================== |
| --- chrome/browser/browsing_data_remover.cc (revision 92558) |
| +++ chrome/browser/browsing_data_remover.cc (working copy) |
| @@ -7,6 +7,7 @@ |
| #include <map> |
| #include <set> |
| +#include "base/bind.h" |
| #include "base/callback.h" |
| #include "base/file_util.h" |
| #include "base/platform_file.h" |
| @@ -79,6 +80,7 @@ |
| waiting_for_clear_databases_(false), |
| waiting_for_clear_history_(false), |
| waiting_for_clear_networking_history_(false), |
| + waiting_for_clear_cookies_(false), |
| waiting_for_clear_cache_(false), |
| waiting_for_clear_appcache_(false), |
| waiting_for_clear_gears_data_(false), |
| @@ -109,6 +111,7 @@ |
| waiting_for_clear_databases_(false), |
| waiting_for_clear_history_(false), |
| waiting_for_clear_networking_history_(false), |
| + waiting_for_clear_cookies_(false), |
| waiting_for_clear_cache_(false), |
| waiting_for_clear_appcache_(false), |
| waiting_for_clear_lso_data_(false), |
| @@ -123,6 +126,7 @@ |
| void BrowsingDataRemover::Remove(int remove_mask) { |
| DCHECK(!removing_); |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| removing_ = true; |
| if (remove_mask & REMOVE_HISTORY) { |
| @@ -201,11 +205,16 @@ |
| net::CookieMonster* cookie_monster = NULL; |
| net::URLRequestContextGetter* rq_context = profile_->GetRequestContext(); |
| if (rq_context) { |
| - cookie_monster = rq_context->DONTUSEME_GetCookieStore()-> |
| + cookie_monster = rq_context->GetURLRequestContext()->cookie_store()-> |
| GetCookieMonster(); |
| } |
| - if (cookie_monster) |
| - cookie_monster->DeleteAllCreatedBetween(delete_begin_, delete_end_, true); |
| + if (cookie_monster) { |
| + waiting_for_clear_cookies_ = true; |
| + cookie_monster->DeleteAllCreatedBetweenAsync( |
| + delete_begin_, delete_end_, true, |
| + base::Bind(&BrowsingDataRemover::OnCookiesDeleted, |
| + base::Unretained(this))); |
| + } |
| // REMOVE_COOKIES is actually "cookies and other site data" so we make sure |
| // to remove other data such local databases, STS state, etc. These only can |
| @@ -633,3 +642,13 @@ |
| waiting_for_clear_lso_data_ = false; |
| NotifyAndDeleteIfDone(); |
| } |
| + |
| +void BrowsingDataRemover::OnCookiesDeleted(int num_deleted) { |
| + waiting_for_clear_cookies_ = false; |
| + // Posts a task here, since this callback may be invocked even before |
| + // finishing the execution of BrowsingDataRemover::remover. |
|
jochen (gone - plz use gerrit)
2011/07/20 12:24:12
uh, how can this happen?
The function you invoke
|
| + MessageLoop::current()->PostTask( |
| + FROM_HERE, |
| + base::Bind(&BrowsingDataRemover::NotifyAndDeleteIfDone, |
| + base::Unretained(this))); |
| +} |