Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5274)

Unified Diff: chrome/browser/browsing_data/browsing_data_remover.cc

Issue 2248403002: Implement origin-based deletion of plugin data (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Plugins done. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/browsing_data/browsing_data_remover.cc
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc
index cf73ad4c134a14fae4fa4b4093eef0c4b7799baa..241969842bb12a8aa9b11177be9a9348666395df 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc
@@ -114,6 +114,10 @@
#include "chrome/browser/media/webrtc_log_util.h"
#endif
+#if defined(ENABLE_PLUGINS)
Bernhard Bauer 2016/08/18 18:35:59 Move this between ENABLE_EXTENSIONS and ENABLE_SES
msramek 2016/08/19 11:16:46 Done. Also moved the "OS_CHROMEOS" section down. I
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
+#endif
+
using base::UserMetricsAction;
using content::BrowserContext;
using content::BrowserThread;
@@ -289,9 +293,12 @@ BrowsingDataRemover::TimeRange BrowsingDataRemover::Period(
BrowsingDataRemover::BrowsingDataRemover(
content::BrowserContext* browser_context)
: profile_(Profile::FromBrowserContext(browser_context)),
- is_removing_(false),
remove_mask_(-1),
origin_type_mask_(-1),
+ is_removing_(false),
+#if defined(ENABLE_PLUGINS)
+ flash_lso_helper_(BrowsingDataFlashLSOHelper::Create(profile_)),
+#endif
#if BUILDFLAG(ANDROID_JAVA_UI)
webapp_registry_(new WebappRegistry()),
#endif
@@ -773,17 +780,26 @@ void BrowsingDataRemover::RemoveImpl(
if (remove_mask & REMOVE_PLUGIN_DATA &&
origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
content::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData"));
+ waiting_for_clear_plugin_data_count_ = 1;
- waiting_for_clear_plugin_data_ = true;
- DCHECK(!plugin_data_remover_);
- plugin_data_remover_.reset(content::PluginDataRemover::Create(profile_));
- base::WaitableEvent* event =
- plugin_data_remover_->StartRemoving(delete_begin_);
+ if (filter_builder.IsEmptyBlacklist()) {
+ DCHECK(!plugin_data_remover_);
+ plugin_data_remover_.reset(content::PluginDataRemover::Create(profile_));
+ base::WaitableEvent* event =
+ plugin_data_remover_->StartRemoving(delete_begin_);
- base::WaitableEventWatcher::EventCallback watcher_callback =
- base::Bind(&BrowsingDataRemover::OnWaitableEventSignaled,
- weak_ptr_factory_.GetWeakPtr());
- watcher_.StartWatching(event, watcher_callback);
+ base::WaitableEventWatcher::EventCallback watcher_callback =
+ base::Bind(&BrowsingDataRemover::OnWaitableEventSignaled,
+ weak_ptr_factory_.GetWeakPtr());
+ watcher_.StartWatching(event, watcher_callback);
+ } else {
+ // TODO(msramek): Store filters from the currently executed task on the
+ // object to avoid having to copy them to callback methods.
+ flash_lso_helper_->StartFetching(base::Bind(
+ &BrowsingDataRemover::OnSitesWithFlashDataFetched,
+ weak_ptr_factory_.GetWeakPtr(),
+ filter_builder.BuildPluginFilter()));
+ }
}
#endif
@@ -1108,6 +1124,13 @@ void BrowsingDataRemover::OverrideWebappRegistryForTesting(
}
#endif
+#if defined(ENABLE_PLUGINS)
+void BrowsingDataRemover::OverrideFlashLSOHelperForTesting(
+ scoped_refptr<BrowsingDataFlashLSOHelper> flash_lso_helper) {
+ flash_lso_helper_ = flash_lso_helper;
+}
+#endif
+
const base::Time& BrowsingDataRemover::GetLastUsedBeginTime() {
return delete_begin_;
}
@@ -1169,7 +1192,8 @@ bool BrowsingDataRemover::AllDone() {
!waiting_for_clear_network_predictor_ &&
!waiting_for_clear_networking_history_ &&
!waiting_for_clear_passwords_ && !waiting_for_clear_passwords_stats_ &&
- !waiting_for_clear_platform_keys_ && !waiting_for_clear_plugin_data_ &&
+ !waiting_for_clear_platform_keys_ &&
+ !waiting_for_clear_plugin_data_count_ &&
!waiting_for_clear_pnacl_cache_ &&
#if BUILDFLAG(ANDROID_JAVA_UI)
!waiting_for_clear_precache_history_ &&
@@ -1298,12 +1322,44 @@ void BrowsingDataRemover::ClearedPnaclCache() {
void BrowsingDataRemover::OnWaitableEventSignaled(
base::WaitableEvent* waitable_event) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- waiting_for_clear_plugin_data_ = false;
+
+ --waiting_for_clear_plugin_data_count_;
Bernhard Bauer 2016/08/18 18:35:59 I would use post-increment – the compiler should b
msramek 2016/08/19 11:16:46 I replaced this part, but changed it in OnFlashDat
Bernhard Bauer 2016/08/19 16:29:39 Yeah, if you think about it, C++ means incremental
+ DCHECK(!waiting_for_clear_plugin_data_count_);
Bernhard Bauer 2016/08/18 18:35:59 So really, you are transitioning from 1 to 0? Why
msramek 2016/08/19 11:16:46 Changed to DCHECK that it's 1, then set it to 0.
+
plugin_data_remover_.reset();
watcher_.StopWatching();
NotifyIfDone();
}
+void BrowsingDataRemover::OnSitesWithFlashDataFetched(
+ base::Callback<bool(const std::string&)> plugin_filter,
+ const std::vector<std::string>& sites) {
+ --waiting_for_clear_plugin_data_count_;
+ DCHECK(!waiting_for_clear_plugin_data_count_);
+
+ std::vector<std::string> sites_to_delete;
+ for (const std::string& site : sites) {
+ if (plugin_filter.Run(site))
+ sites_to_delete.push_back(site);
+ }
+
+ waiting_for_clear_plugin_data_count_ = sites_to_delete.size();
+
+ for (const std::string& site : sites_to_delete) {
+ flash_lso_helper_->DeleteFlashLSOsForSite(
+ site,
+ base::Bind(&BrowsingDataRemover::OnFlashDataDeleted,
+ weak_ptr_factory_.GetWeakPtr()));
+ }
+
+ NotifyIfDone();
+}
+
+void BrowsingDataRemover::OnFlashDataDeleted() {
+ --waiting_for_clear_plugin_data_count_;
+ NotifyIfDone();
+}
+
void BrowsingDataRemover::OnDeauthorizeFlashContentLicensesCompleted(
uint32_t request_id,
bool /* success */) {

Powered by Google App Engine
This is Rietveld 408576698