Index: chrome/browser/profile_resetter/profile_resetter.cc |
diff --git a/chrome/browser/profile_resetter/profile_resetter.cc b/chrome/browser/profile_resetter/profile_resetter.cc |
index ea601c0c21f1c00fbb9b2e978fd2619c5398bcf1..b2bc0ed80018e308e22a848c813e0e3da2da1ad8 100644 |
--- a/chrome/browser/profile_resetter/profile_resetter.cc |
+++ b/chrome/browser/profile_resetter/profile_resetter.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/profile_resetter/profile_resetter.h" |
#include "base/prefs/pref_service.h" |
+#include "chrome/browser/browsing_data/browsing_data_helper.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/browser/extensions/management_policy.h" |
@@ -24,14 +25,18 @@ |
ProfileResetter::ProfileResetter(Profile* profile) |
: profile_(profile), |
template_url_service_(TemplateURLServiceFactory::GetForProfile(profile_)), |
- pending_reset_flags_(0) { |
+ pending_reset_flags_(0), |
+ cookies_remover_(NULL) { |
DCHECK(CalledOnValidThread()); |
DCHECK(profile_); |
registrar_.Add(this, chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED, |
content::Source<TemplateURLService>(template_url_service_)); |
} |
-ProfileResetter::~ProfileResetter() {} |
+ProfileResetter::~ProfileResetter() { |
+ if (cookies_remover_) |
+ cookies_remover_->RemoveObserver(this); |
+} |
void ProfileResetter::Reset(ProfileResetter::ResettableFlags resettable_flags, |
const base::Closure& callback) { |
@@ -137,9 +142,18 @@ void ProfileResetter::ResetContentSettings() { |
void ProfileResetter::ResetCookiesAndSiteData() { |
DCHECK(CalledOnValidThread()); |
- NOTIMPLEMENTED(); |
- // TODO(battre/vabr): Implement |
- MarkAsDone(COOKIES_AND_SITE_DATA); |
+ DCHECK(!cookies_remover_); |
+ |
+ cookies_remover_ = BrowsingDataRemover::CreateForUnboundedRange(profile_); |
+ cookies_remover_->AddObserver(this); |
+ int remove_mask = BrowsingDataRemover::REMOVE_SITE_DATA | |
+ BrowsingDataRemover::REMOVE_CACHE; |
+ PrefService* prefs = profile_->GetPrefs(); |
+ DCHECK(prefs); |
+ // Don't try to clear LSO data if it's not supported. |
+ if (!prefs->GetBoolean(prefs::kClearPluginLSODataEnabled)) |
+ remove_mask &= ~BrowsingDataRemover::REMOVE_PLUGIN_DATA; |
+ cookies_remover_->Remove(remove_mask, BrowsingDataHelper::UNPROTECTED_WEB); |
} |
void ProfileResetter::ResetExtensions() { |
@@ -187,3 +201,8 @@ void ProfileResetter::Observe(int type, |
if (pending_reset_flags_ & DEFAULT_SEARCH_ENGINE) |
ResetDefaultSearchEngine(); |
} |
+ |
+void ProfileResetter::OnBrowsingDataRemoverDone() { |
+ cookies_remover_ = NULL; |
+ MarkAsDone(COOKIES_AND_SITE_DATA); |
+} |