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

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: Addressed comments. 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..6dae78a1d081098fdf323932c00b0312c6a05a01 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc
@@ -90,25 +90,29 @@
#include "components/precache/content/precache_manager.h"
#endif
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/profiles/profile_helper.h"
-#include "chromeos/attestation/attestation_constants.h"
-#include "chromeos/cryptohome/cryptohome_parameters.h"
-#include "chromeos/dbus/cryptohome_client.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "components/user_manager/user.h"
-#endif
-
#if defined(ENABLE_EXTENSIONS)
#include "chrome/browser/extensions/activity_log/activity_log.h"
#include "extensions/browser/extension_prefs.h"
#endif
+#if defined(ENABLE_PLUGINS)
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
+#endif
+
#if defined(ENABLE_SESSION_SERVICE)
#include "chrome/browser/sessions/session_service.h"
#include "chrome/browser/sessions/session_service_factory.h"
#endif
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
+#include "chromeos/attestation/attestation_constants.h"
+#include "chromeos/cryptohome/cryptohome_parameters.h"
+#include "chromeos/dbus/cryptohome_client.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "components/user_manager/user.h"
+#endif
+
#if defined(ENABLE_WEBRTC)
#include "chrome/browser/media/webrtc_log_list.h"
#include "chrome/browser/media/webrtc_log_util.h"
@@ -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;
+
+ DCHECK_EQ(1, waiting_for_clear_plugin_data_count_);
+ waiting_for_clear_plugin_data_count_ = 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) {
+ DCHECK_EQ(1, waiting_for_clear_plugin_data_count_);
+ waiting_for_clear_plugin_data_count_ = 0;
+
+ 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 */) {
« no previous file with comments | « chrome/browser/browsing_data/browsing_data_remover.h ('k') | chrome/browser/browsing_data/browsing_data_remover_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698