| Index: chrome/browser/browsing_data_remover.cc
|
| diff --git a/chrome/browser/browsing_data_remover.cc b/chrome/browser/browsing_data_remover.cc
|
| index 7c8cfd31abe7f5f9781f12350dc468b2cc5d37c1..764f9de5eb86f63c07455e700e2fa2a3d726f9d2 100644
|
| --- a/chrome/browser/browsing_data_remover.cc
|
| +++ b/chrome/browser/browsing_data_remover.cc
|
| @@ -22,6 +22,7 @@
|
| #include "chrome/browser/net/chrome_url_request_context.h"
|
| #include "chrome/browser/password_manager/password_store.h"
|
| #include "chrome/browser/plugin_data_remover.h"
|
| +#include "chrome/browser/prefs/pref_member.h"
|
| #include "chrome/browser/prerender/prerender_manager.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/renderer_host/web_cache_manager.h"
|
| @@ -33,6 +34,7 @@
|
| #include "chrome/browser/sessions/tab_restore_service_factory.h"
|
| #include "chrome/browser/webdata/web_data_service.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| +#include "chrome/common/pref_names.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "content/browser/browser_thread.h"
|
| #include "content/browser/download/download_manager.h"
|
| @@ -76,6 +78,9 @@ BrowsingDataRemover::BrowsingDataRemover(Profile* profile,
|
| waiting_for_clear_cache_(false),
|
| waiting_for_clear_lso_data_(false) {
|
| DCHECK(profile);
|
| + clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled,
|
| + profile_->GetPrefs(),
|
| + NULL);
|
| }
|
|
|
| BrowsingDataRemover::BrowsingDataRemover(Profile* profile,
|
| @@ -99,6 +104,9 @@ BrowsingDataRemover::BrowsingDataRemover(Profile* profile,
|
| waiting_for_clear_cache_(false),
|
| waiting_for_clear_lso_data_(false) {
|
| DCHECK(profile);
|
| + clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled,
|
| + profile_->GetPrefs(),
|
| + NULL);
|
| }
|
|
|
| BrowsingDataRemover::~BrowsingDataRemover() {
|
| @@ -196,17 +204,22 @@ void BrowsingDataRemover::Remove(int remove_mask) {
|
| base::Bind(&BrowsingDataRemover::ClearCookiesOnIOThread,
|
| base::Unretained(this), base::Unretained(rq_context)));
|
| }
|
| + }
|
|
|
| - // 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
|
| + if (remove_mask & REMOVE_LOCAL_STORAGE) {
|
| + // Remove data such as local databases, STS state, etc. These only can
|
| // be removed if a WEBKIT thread exists, so check that first:
|
| if (BrowserThread::IsMessageLoopValid(BrowserThread::WEBKIT)) {
|
| // We assume the end time is now.
|
| profile_->GetWebKitContext()->DeleteDataModifiedSince(delete_begin_);
|
| }
|
| + }
|
|
|
| - // We'll start by using the quota system to clear out AppCaches, WebSQL DBs,
|
| - // and File Systems.
|
| + if (remove_mask & REMOVE_INDEXEDDB || remove_mask & REMOVE_WEBSQL ||
|
| + remove_mask & REMOVE_APPCACHE || remove_mask & REMOVE_FILE_SYSTEMS) {
|
| + // TODO(mkwst): At the moment, we don't have the ability to pass a mask into
|
| + // QuotaManager. Until then, we'll clear all quota-managed data types if any
|
| + // ought to be cleared.
|
| quota_manager_ = profile_->GetQuotaManager();
|
| if (quota_manager_) {
|
| waiting_for_clear_quota_managed_data_ = true;
|
| @@ -216,15 +229,17 @@ void BrowsingDataRemover::Remove(int remove_mask) {
|
| this,
|
| &BrowsingDataRemover::ClearQuotaManagedDataOnIOThread));
|
| }
|
| + }
|
|
|
| - if (profile_->GetTransportSecurityState()) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE,
|
| - NewRunnableMethod(
|
| - profile_->GetTransportSecurityState(),
|
| - &net::TransportSecurityState::DeleteSince,
|
| - delete_begin_));
|
| - }
|
| + if (remove_mask & REMOVE_LSO_DATA && *clear_plugin_lso_data_enabled_) {
|
| + UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData"));
|
| +
|
| + waiting_for_clear_lso_data_ = true;
|
| + if (!plugin_data_remover_.get())
|
| + plugin_data_remover_ = new PluginDataRemover(profile_);
|
| + base::WaitableEvent* event =
|
| + plugin_data_remover_->StartRemoving(delete_begin_);
|
| + watcher_.StartWatching(event, this);
|
| }
|
|
|
| if (remove_mask & REMOVE_PASSWORDS) {
|
| @@ -275,15 +290,14 @@ void BrowsingDataRemover::Remove(int remove_mask) {
|
| }
|
| }
|
|
|
| - 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_ = new PluginDataRemover(profile_);
|
| - base::WaitableEvent* event =
|
| - plugin_data_remover_->StartRemoving(delete_begin_);
|
| - watcher_.StartWatching(event, this);
|
| + // Also delete cached TransportSecurityState data.
|
| + if (profile_->GetTransportSecurityState()) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + NewRunnableMethod(
|
| + profile_->GetTransportSecurityState(),
|
| + &net::TransportSecurityState::DeleteSince,
|
| + delete_begin_));
|
| }
|
|
|
| NotifyAndDeleteIfDone();
|
|
|