Index: chrome/browser/browsing_data_remover.cc |
diff --git a/chrome/browser/browsing_data_remover.cc b/chrome/browser/browsing_data_remover.cc |
index b532f30ce9e8d84e758589d6eaa8588aa29d2826..039ace141a6c17fef6ef51ffdcb0927b71e7693f 100644 |
--- a/chrome/browser/browsing_data_remover.cc |
+++ b/chrome/browser/browsing_data_remover.cc |
@@ -14,6 +14,7 @@ |
#include "chrome/browser/extensions/extensions_service.h" |
#include "chrome/browser/history/history.h" |
#include "chrome/browser/in_process_webkit/webkit_context.h" |
+#include "chrome/browser/plugin_data_remover.h" |
#include "chrome/browser/profile.h" |
#include "chrome/browser/metrics/user_metrics.h" |
#include "chrome/browser/net/chrome_url_request_context.h" |
@@ -87,7 +88,8 @@ BrowsingDataRemover::BrowsingDataRemover(Profile* profile, |
waiting_for_clear_databases_(false), |
waiting_for_clear_history_(false), |
waiting_for_clear_cache_(false), |
- waiting_for_clear_appcache_(false) { |
+ waiting_for_clear_appcache_(false), |
+ waiting_for_clear_lso_data_(false) { |
DCHECK(profile); |
} |
@@ -252,6 +254,17 @@ void BrowsingDataRemover::Remove(int remove_mask) { |
NewRunnableMethod(this, &BrowsingDataRemover::ClearCacheOnIOThread)); |
} |
+ if (remove_mask & REMOVE_LSO_DATA) { |
+ UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData")); |
+ |
+ waiting_for_clear_lso_data_ = true; |
+ if (!plugin_data_remover_.get()) |
+ plugin_data_remover_.reset(new PluginDataRemover()); |
+ plugin_data_remover_->StartRemoving( |
+ delete_begin_, |
+ NewRunnableMethod(this, &BrowsingDataRemover::OnClearedPluginData)); |
+ } |
+ |
NotifyAndDeleteIfDone(); |
} |
@@ -496,3 +509,8 @@ ChromeAppCacheService* BrowsingDataRemover::GetAppCacheService() { |
return request_context ? request_context->appcache_service() |
: NULL; |
} |
+ |
+void BrowsingDataRemover::OnClearedPluginData() { |
+ waiting_for_clear_lso_data_ = false; |
+ NotifyAndDeleteIfDone(); |
+} |