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

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

Issue 10790150: Show Flash LSOs for Pepper Flash in cookie dialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 8 years, 5 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_flash_lso_helper.cc
diff --git a/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc b/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bb5e9b9535265ed33eb22762e532a89e439df3cc
--- /dev/null
+++ b/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc
@@ -0,0 +1,103 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
+
+#include <limits>
+#include <map>
+
+#include "base/callback.h"
+#include "base/logging.h"
+#include "chrome/browser/pepper_flash_settings_manager.h"
+
+namespace {
+
+class BrowsingDataFlashLSOHelperImpl
+ : public BrowsingDataFlashLSOHelper,
+ public PepperFlashSettingsManager::Client {
+ public:
+ explicit BrowsingDataFlashLSOHelperImpl(
+ content::BrowserContext* browser_context);
+
+ // BrowsingDataFlashLSOHelper implementation:
+ virtual void StartFetching(
+ const GetSitesWithFlashDataCallback& callback) OVERRIDE;
+ virtual void DeleteFlashLSOsForSite(const std::string& site) OVERRIDE;
+
+ // PepperFlashSettingsManager::Client overrides:
+ virtual void OnGetSitesWithDataCompleted(
+ uint32 request_id,
+ const std::vector<std::string>& sites) OVERRIDE;
markusheintz_ 2012/07/31 15:09:13 Question: By sites we mean origins, right?
Bernhard Bauer 2012/07/31 19:16:59 No. Flash stores LSOs based on domain, not on orig
+ virtual void OnClearSiteDataCompleted(
+ uint32 request_id,
+ bool success) OVERRIDE;
+
+ private:
+ virtual ~BrowsingDataFlashLSOHelperImpl();
+
+ // Asynchronously fetches and deletes data and calls us back.
+ PepperFlashSettingsManager settings_manager_;
+
+ // Identifies the request to fetch site data.
+ uint32 get_sites_with_data_request_id_;
+
+ // Contains the pending requests to clear site data. The key is the request
+ // ID, the value the site for which to clear data.
+ std::map<uint32, std::string> clear_site_data_ids_;
+
+ // Called when we have fetched the list of sites.
+ GetSitesWithFlashDataCallback callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(BrowsingDataFlashLSOHelperImpl);
+};
+
+BrowsingDataFlashLSOHelperImpl::BrowsingDataFlashLSOHelperImpl(
+ content::BrowserContext* browser_context)
+ : ALLOW_THIS_IN_INITIALIZER_LIST(settings_manager_(this, browser_context)),
+ get_sites_with_data_request_id_(0u) {
+}
+
+BrowsingDataFlashLSOHelperImpl::~BrowsingDataFlashLSOHelperImpl() {
+}
+
+void BrowsingDataFlashLSOHelperImpl::StartFetching(
+ const GetSitesWithFlashDataCallback& callback) {
+ DCHECK(callback_.is_null());
+ callback_ = callback;
+ get_sites_with_data_request_id_ = settings_manager_.GetSitesWithData();
+}
+
+void BrowsingDataFlashLSOHelperImpl::DeleteFlashLSOsForSite(
+ const std::string& site) {
+ const uint64 kClearAllData = 0;
+ uint32 id = settings_manager_.ClearSiteData(
+ site, kClearAllData, std::numeric_limits<uint64>::max());
+ clear_site_data_ids_[id] = site;
+}
+
+void BrowsingDataFlashLSOHelperImpl::OnGetSitesWithDataCompleted(
+ uint32 request_id,
+ const std::vector<std::string>& sites) {
+ DCHECK_EQ(get_sites_with_data_request_id_, request_id);
+ callback_.Run(sites);
+ callback_ = GetSitesWithFlashDataCallback();
+}
+
+void BrowsingDataFlashLSOHelperImpl::OnClearSiteDataCompleted(uint32 request_id,
+ bool success) {
+ std::map<uint32, std::string>::iterator entry =
+ clear_site_data_ids_.find(request_id);
+ DCHECK(entry != clear_site_data_ids_.end());
+ LOG_IF(ERROR, !success) << "Couldn't clear Flash LSO data for "
+ << entry->second;
+ clear_site_data_ids_.erase(entry);
+}
+
+} // namespace
+
+// static
+BrowsingDataFlashLSOHelper* BrowsingDataFlashLSOHelper::Create(
+ content::BrowserContext* browser_context) {
+ return new BrowsingDataFlashLSOHelperImpl(browser_context);
+}

Powered by Google App Engine
This is Rietveld 408576698