summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-01 17:33:51 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-01 17:33:51 +0000
commit3ff0ff79db2034f42d39d599776edf1c782ca8af (patch)
tree8b0b10c7618cdd2beb82bdda001318f758b23931
parent28faf93116f4d227ceec62a8ff89ab4885494771 (diff)
downloadchromium_src-3ff0ff79db2034f42d39d599776edf1c782ca8af.zip
chromium_src-3ff0ff79db2034f42d39d599776edf1c782ca8af.tar.gz
chromium_src-3ff0ff79db2034f42d39d599776edf1c782ca8af.tar.bz2
Show Flash LSOs for Pepper Flash in cookie dialog.
It won't show anything until the Flash side has been updated. BUG=132409 Review URL: https://chromiumcodereview.appspot.com/10790150 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149439 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/generated_resources.grd3
-rw-r--r--chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc103
-rw-r--r--chrome/browser/browsing_data/browsing_data_flash_lso_helper.h37
-rw-r--r--chrome/browser/browsing_data/local_data_container.cc19
-rw-r--r--chrome/browser/browsing_data/local_data_container.h16
-rw-r--r--chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.cc42
-rw-r--r--chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h40
-rw-r--r--chrome/browser/content_settings/local_shared_objects_container.cc20
-rw-r--r--chrome/browser/content_settings/local_shared_objects_container.h6
-rw-r--r--chrome/browser/cookies_tree_model.cc73
-rw-r--r--chrome/browser/cookies_tree_model.h26
-rw-r--r--chrome/browser/cookies_tree_model_unittest.cc97
-rw-r--r--chrome/browser/resources/options2/cookies_list.js5
-rw-r--r--chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm38
-rw-r--r--chrome/browser/ui/gtk/collected_cookies_gtk.cc34
-rw-r--r--chrome/browser/ui/views/collected_cookies_views.cc35
-rw-r--r--chrome/browser/ui/webui/cookies_tree_model_util.cc6
-rw-r--r--chrome/browser/ui/webui/options2/cookies_view_handler.cc7
-rw-r--r--chrome/chrome_browser.gypi2
-rw-r--r--chrome/chrome_tests.gypi2
20 files changed, 490 insertions, 121 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 2de50a3..e00d558 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -9836,6 +9836,9 @@ experiment id: "<ph name="EXPERIMENT_ID">$5<ex>ar1</ex></ph>"
<message name="IDS_COOKIES_APPLICATION_CACHE" desc="The text shown when there is an Application Cache (name of an HTML standard) in the Cookies table">
Application cache
</message>
+ <message name="IDS_COOKIES_FLASH_LSO" desc="The text shown when Flash has Local Shared Objects (informally known as 'Flash cookies') stored">
+ Flash data
+ </message>
<message name="IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL" desc="The Manifest label (manifest is a URL specified by the application cache)">
Manifest:
</message>
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 0000000..bb5e9b9
--- /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;
+ 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);
+}
diff --git a/chrome/browser/browsing_data/browsing_data_flash_lso_helper.h b/chrome/browser/browsing_data/browsing_data_flash_lso_helper.h
new file mode 100644
index 0000000..22ef3cc
--- /dev/null
+++ b/chrome/browser/browsing_data/browsing_data_flash_lso_helper.h
@@ -0,0 +1,37 @@
+// 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.
+
+#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_FLASH_LSO_HELPER_H_
+#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_FLASH_LSO_HELPER_H_
+
+#include <string>
+#include <vector>
+
+#include "base/callback_forward.h"
+#include "base/memory/ref_counted.h"
+
+namespace content {
+class BrowserContext;
+}
+
+// This class asynchronously fetches information about Flash LSOs and can delete
+// them.
+class BrowsingDataFlashLSOHelper
+ : public base::RefCounted<BrowsingDataFlashLSOHelper> {
+ public:
+ typedef base::Callback<void(const std::vector<std::string>&)>
+ GetSitesWithFlashDataCallback;
+
+ static BrowsingDataFlashLSOHelper* Create(
+ content::BrowserContext* browser_context);
+
+ virtual void StartFetching(const GetSitesWithFlashDataCallback& callback) = 0;
+ virtual void DeleteFlashLSOsForSite(const std::string& site) = 0;
+
+ protected:
+ friend class base::RefCounted<BrowsingDataFlashLSOHelper>;
+ virtual ~BrowsingDataFlashLSOHelper() {}
+};
+
+#endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_FLASH_LSO_HELPER_H_
diff --git a/chrome/browser/browsing_data/local_data_container.cc b/chrome/browser/browsing_data/local_data_container.cc
index d3d76a9..593aa5e 100644
--- a/chrome/browser/browsing_data/local_data_container.cc
+++ b/chrome/browser/browsing_data/local_data_container.cc
@@ -6,7 +6,7 @@
#include "base/bind.h"
#include "base/memory/linked_ptr.h"
-#include "chrome/browser/browsing_data/browsing_data_cookie_helper.h"
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
#include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h"
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/cookies_tree_model.h"
@@ -26,7 +26,8 @@ LocalDataContainer::LocalDataContainer(
BrowsingDataIndexedDBHelper* indexed_db_helper,
BrowsingDataFileSystemHelper* file_system_helper,
BrowsingDataQuotaHelper* quota_helper,
- BrowsingDataServerBoundCertHelper* server_bound_cert_helper)
+ BrowsingDataServerBoundCertHelper* server_bound_cert_helper,
+ BrowsingDataFlashLSOHelper* flash_lso_helper)
: app_name_(app_name),
app_id_(app_id),
appcache_helper_(appcache_helper),
@@ -38,6 +39,7 @@ LocalDataContainer::LocalDataContainer(
file_system_helper_(file_system_helper),
quota_helper_(quota_helper),
server_bound_cert_helper_(server_bound_cert_helper),
+ flash_lso_helper_(flash_lso_helper),
model_(NULL),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {}
@@ -101,6 +103,12 @@ void LocalDataContainer::Init(CookiesTreeModel* model) {
base::Bind(&LocalDataContainer::OnServerBoundCertModelInfoLoaded,
weak_ptr_factory_.GetWeakPtr()));
}
+
+ if (flash_lso_helper_) {
+ flash_lso_helper_->StartFetching(
+ base::Bind(&LocalDataContainer::OnFlashLSOInfoLoaded,
+ weak_ptr_factory_.GetWeakPtr()));
+ }
}
void LocalDataContainer::OnAppCacheModelInfoLoaded() {
@@ -182,3 +190,10 @@ void LocalDataContainer::OnServerBoundCertModelInfoLoaded(
DCHECK(model_);
model_->PopulateServerBoundCertInfo(this);
}
+
+void LocalDataContainer::OnFlashLSOInfoLoaded(
+ const FlashLSODomainList& domains) {
+ flash_lso_domain_list_ = domains;
+ DCHECK(model_);
+ model_->PopulateFlashLSOInfo(this);
+}
diff --git a/chrome/browser/browsing_data/local_data_container.h b/chrome/browser/browsing_data/local_data_container.h
index 67edf7c..b0b2fd7 100644
--- a/chrome/browser/browsing_data/local_data_container.h
+++ b/chrome/browser/browsing_data/local_data_container.h
@@ -5,6 +5,11 @@
#ifndef CHROME_BROWSER_BROWSING_DATA_LOCAL_DATA_CONTAINER_H_
#define CHROME_BROWSER_BROWSING_DATA_LOCAL_DATA_CONTAINER_H_
+#include <list>
+#include <map>
+#include <string>
+#include <vector>
+
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/string16.h"
@@ -18,8 +23,9 @@
#include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h"
#include "net/base/server_bound_cert_store.h"
-class LocalDataContainer;
+class BrowsingDataFlashLSOHelper;
class CookiesTreeModel;
+class LocalDataContainer;
namespace net {
class CanonicalCookie;
@@ -42,6 +48,7 @@ typedef std::list<BrowsingDataFileSystemHelper::FileSystemInfo>
typedef std::list<BrowsingDataQuotaHelper::QuotaInfo> QuotaInfoList;
typedef net::ServerBoundCertStore::ServerBoundCertList ServerBoundCertList;
typedef std::map<GURL, std::list<appcache::AppCacheInfo> > AppCacheInfoMap;
+typedef std::vector<std::string> FlashLSODomainList;
} // namespace
@@ -64,7 +71,8 @@ class LocalDataContainer {
BrowsingDataIndexedDBHelper* indexed_db_helper,
BrowsingDataFileSystemHelper* file_system_helper,
BrowsingDataQuotaHelper* quota_helper,
- BrowsingDataServerBoundCertHelper* server_bound_cert_helper);
+ BrowsingDataServerBoundCertHelper* server_bound_cert_helper,
+ BrowsingDataFlashLSOHelper* flash_data_helper);
virtual ~LocalDataContainer();
// This method must be called to start the process of fetching the resources.
@@ -85,6 +93,7 @@ class LocalDataContainer {
friend class CookieTreeFileSystemNode;
friend class CookieTreeQuotaNode;
friend class CookieTreeServerBoundCertNode;
+ friend class CookieTreeFlashLSONode;
// Callback methods to be invoked when fetching the data is complete.
void OnAppCacheModelInfoLoaded();
@@ -100,6 +109,7 @@ class LocalDataContainer {
const FileSystemInfoList& file_system_info);
void OnQuotaModelInfoLoaded(const QuotaInfoList& quota_info);
void OnServerBoundCertModelInfoLoaded(const ServerBoundCertList& cert_list);
+ void OnFlashLSOInfoLoaded(const FlashLSODomainList& domains);
// The app name and id, to which this container object is for.
std::string app_name_;
@@ -116,6 +126,7 @@ class LocalDataContainer {
scoped_refptr<BrowsingDataFileSystemHelper> file_system_helper_;
scoped_refptr<BrowsingDataQuotaHelper> quota_helper_;
scoped_refptr<BrowsingDataServerBoundCertHelper> server_bound_cert_helper_;
+ scoped_refptr<BrowsingDataFlashLSOHelper> flash_lso_helper_;
// Storage for all the data that was retrieved through the helper objects.
// The collected data is used for (re)creating the CookiesTreeModel.
@@ -128,6 +139,7 @@ class LocalDataContainer {
FileSystemInfoList file_system_info_list_;
QuotaInfoList quota_info_list_;
ServerBoundCertList server_bound_cert_list_;
+ FlashLSODomainList flash_lso_domain_list_;
// A delegate, which must outlive this object. The update callbacks use the
// delegate to deliver the updated data to the CookieTreeModel.
diff --git a/chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.cc b/chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.cc
new file mode 100644
index 0000000..b44e130
--- /dev/null
+++ b/chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.cc
@@ -0,0 +1,42 @@
+// 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/mock_browsing_data_flash_lso_helper.h"
+
+#include <algorithm>
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+MockBrowsingDataFlashLSOHelper::MockBrowsingDataFlashLSOHelper(
+ content::BrowserContext* browser_context) {
+}
+void MockBrowsingDataFlashLSOHelper::StartFetching(
+ const GetSitesWithFlashDataCallback& callback) {
+ callback_ = callback;
+}
+
+void MockBrowsingDataFlashLSOHelper::DeleteFlashLSOsForSite(
+ const std::string& site) {
+ std::vector<std::string>::iterator entry =
+ std::find(domains_.begin(), domains_.end(), site);
+ ASSERT_TRUE(entry != domains_.end());
+ domains_.erase(entry);
+}
+
+void MockBrowsingDataFlashLSOHelper::AddFlashLSODomain(
+ const std::string& domain) {
+ domains_.push_back(domain);
+}
+
+void MockBrowsingDataFlashLSOHelper::Notify() {
+ callback_.Run(domains_);
+ callback_ = GetSitesWithFlashDataCallback();
+}
+
+bool MockBrowsingDataFlashLSOHelper::AllDeleted() {
+ return domains_.empty();
+}
+
+MockBrowsingDataFlashLSOHelper::~MockBrowsingDataFlashLSOHelper() {
+}
diff --git a/chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h b/chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h
new file mode 100644
index 0000000..ad17c40
--- /dev/null
+++ b/chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h
@@ -0,0 +1,40 @@
+// 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.
+
+#ifndef CHROME_BROWSER_BROWSING_DATA_MOCK_BROWSING_DATA_FLASH_LSO_HELPER_H_
+#define CHROME_BROWSER_BROWSING_DATA_MOCK_BROWSING_DATA_FLASH_LSO_HELPER_H_
+
+#include <vector>
+
+#include "base/callback.h"
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
+
+class MockBrowsingDataFlashLSOHelper : public BrowsingDataFlashLSOHelper {
+ public:
+ explicit MockBrowsingDataFlashLSOHelper(
+ content::BrowserContext* browser_context);
+
+ // BrowsingDataFlashLSOHelper implementation:
+ virtual void StartFetching(
+ const GetSitesWithFlashDataCallback& callback) OVERRIDE;
+ virtual void DeleteFlashLSOsForSite(const std::string& site) OVERRIDE;
+
+ // Adds a domain sample.
+ void AddFlashLSODomain(const std::string& domain);
+
+ // Notifies the callback.
+ void Notify();
+
+ // Returns true if the domain list is empty.
+ bool AllDeleted();
+
+ private:
+ virtual ~MockBrowsingDataFlashLSOHelper();
+
+ GetSitesWithFlashDataCallback callback_;
+
+ std::vector<std::string> domains_;
+};
+
+#endif // CHROME_BROWSER_BROWSING_DATA_MOCK_BROWSING_DATA_FLASH_LSO_HELPER_H_
diff --git a/chrome/browser/content_settings/local_shared_objects_container.cc b/chrome/browser/content_settings/local_shared_objects_container.cc
index 8b63d09..d92b5c4 100644
--- a/chrome/browser/content_settings/local_shared_objects_container.cc
+++ b/chrome/browser/content_settings/local_shared_objects_container.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/browsing_data/browsing_data_indexed_db_helper.h"
#include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h"
#include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h"
+#include "chrome/browser/cookies_tree_model.h"
#include "chrome/browser/profiles/profile.h"
#include "content/public/common/url_constants.h"
#include "googleurl/src/gurl.h"
@@ -179,3 +180,22 @@ size_t LocalSharedObjectsContainer::GetObjectCountForDomain(
return count;
}
+
+scoped_ptr<CookiesTreeModel>
+LocalSharedObjectsContainer::CreateCookiesTreeModel() const {
+ ContainerMap apps_map;
+ apps_map[std::string()] = new LocalDataContainer(
+ std::string(), std::string(),
+ cookies()->Clone(),
+ databases()->Clone(),
+ local_storages()->Clone(),
+ session_storages()->Clone(),
+ appcaches()->Clone(),
+ indexed_dbs()->Clone(),
+ file_systems()->Clone(),
+ NULL,
+ server_bound_certs()->Clone(),
+ NULL);
+
+ return make_scoped_ptr(new CookiesTreeModel(apps_map, NULL, true));
+}
diff --git a/chrome/browser/content_settings/local_shared_objects_container.h b/chrome/browser/content_settings/local_shared_objects_container.h
index 78173d3..0bdd9a9 100644
--- a/chrome/browser/content_settings/local_shared_objects_container.h
+++ b/chrome/browser/content_settings/local_shared_objects_container.h
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_CONTENT_SETTINGS_LOCAL_SHARED_OBJECTS_CONTAINER_H_
#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
class CannedBrowsingDataAppCacheHelper;
class CannedBrowsingDataCookieHelper;
@@ -14,6 +15,7 @@ class CannedBrowsingDataFileSystemHelper;
class CannedBrowsingDataIndexedDBHelper;
class CannedBrowsingDataLocalStorageHelper;
class CannedBrowsingDataServerBoundCertHelper;
+class CookiesTreeModel;
class GURL;
class Profile;
@@ -31,6 +33,10 @@ class LocalSharedObjectsContainer {
// Returns the number of objects for the given |origin|.
size_t GetObjectCountForDomain(const GURL& url) const;
+ // Creates a new CookiesTreeModel for all objects in the container,
+ // copying each of them.
+ scoped_ptr<CookiesTreeModel> CreateCookiesTreeModel() const;
+
CannedBrowsingDataAppCacheHelper* appcaches() const {
return appcaches_;
}
diff --git a/chrome/browser/cookies_tree_model.cc b/chrome/browser/cookies_tree_model.cc
index e3687e4..eec89ee 100644
--- a/chrome/browser/cookies_tree_model.cc
+++ b/chrome/browser/cookies_tree_model.cc
@@ -13,6 +13,7 @@
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browsing_data/browsing_data_cookie_helper.h"
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
#include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h"
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -253,6 +254,13 @@ CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitServerBoundCert(
return *this;
}
+CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitFlashLSO(
+ const std::string& flash_lso_domain) {
+ Init(TYPE_FLASH_LSO);
+ this->flash_lso_domain = flash_lso_domain;
+ return *this;
+}
+
///////////////////////////////////////////////////////////////////////////////
// CookieTreeNode, public:
@@ -580,6 +588,7 @@ CookieTreeHostNode::CookieTreeHostNode(const GURL& url,
file_systems_child_(NULL),
quota_child_(NULL),
server_bound_certs_child_(NULL),
+ flash_lso_child_(NULL),
app_id_(app_id),
app_name_(name),
url_(url),
@@ -673,6 +682,16 @@ CookieTreeHostNode::GetOrCreateServerBoundCertsNode() {
return server_bound_certs_child_;
}
+CookieTreeFlashLSONode* CookieTreeHostNode::GetOrCreateFlashLSONode(
+ const std::string& domain) {
+ DCHECK_EQ(GetHost(), domain);
+ if (flash_lso_child_)
+ return flash_lso_child_;
+ flash_lso_child_ = new CookieTreeFlashLSONode(domain);
+ AddChildSortedByTitle(flash_lso_child_);
+ return flash_lso_child_;
+}
+
void CookieTreeHostNode::CreateContentException(
CookieSettings* cookie_settings, ContentSetting setting) const {
DCHECK(setting == CONTENT_SETTING_ALLOW ||
@@ -813,6 +832,29 @@ void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) {
}
///////////////////////////////////////////////////////////////////////////////
+// CookieTreeFlashLSONode
+CookieTreeFlashLSONode::CookieTreeFlashLSONode(
+ const std::string& domain)
+ : domain_(domain) {}
+CookieTreeFlashLSONode::~CookieTreeFlashLSONode() {}
+
+void CookieTreeFlashLSONode::DeleteStoredObjects() {
+ // We are one level below the host node.
+ CookieTreeHostNode* host = static_cast<CookieTreeHostNode*>(parent());
+ CHECK_EQ(host->GetDetailedInfo().node_type,
+ CookieTreeNode::DetailedInfo::TYPE_HOST);
+ LocalDataContainer* container =
+ GetModel()->GetLocalDataContainer(host->app_id());
+ CHECK(container);
+
+ container->flash_lso_helper_->DeleteFlashLSOsForSite(domain_);
+}
+
+CookieTreeNode::DetailedInfo CookieTreeFlashLSONode::GetDetailedInfo() const {
+ return DetailedInfo().InitFlashLSO(domain_);
+}
+
+///////////////////////////////////////////////////////////////////////////////
// ScopedBatchUpdateNotifier
CookiesTreeModel::ScopedBatchUpdateNotifier::ScopedBatchUpdateNotifier(
CookiesTreeModel* model, CookieTreeNode* node)
@@ -1020,6 +1062,12 @@ void CookiesTreeModel::PopulateServerBoundCertInfo(
PopulateServerBoundCertInfoWithFilter(container, &notifier, string16());
}
+void CookiesTreeModel::PopulateFlashLSOInfo(
+ LocalDataContainer* container) {
+ ScopedBatchUpdateNotifier notifier(this, GetRoot());
+ PopulateFlashLSOInfoWithFilter(container, &notifier, string16());
+}
+
void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
LocalDataContainer* container,
ScopedBatchUpdateNotifier* notifier,
@@ -1299,6 +1347,31 @@ void CookiesTreeModel::PopulateQuotaInfoWithFilter(
}
}
+void CookiesTreeModel::PopulateFlashLSOInfoWithFilter(
+ LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter) {
+ CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
+
+ if (container->flash_lso_domain_list_.empty())
+ return;
+
+ std::string filter_utf8 = UTF16ToUTF8(filter);
+ notifier->StartBatchUpdate();
+ for (std::vector<std::string>::iterator it =
+ container->flash_lso_domain_list_.begin();
+ it != container->flash_lso_domain_list_.end(); ++it) {
+ if (!filter_utf8.size() || it->find(filter_utf8) != std::string::npos) {
+ // Create a fake origin for GetOrCreateHostNode().
+ GURL origin("http://" + *it);
+ CookieTreeHostNode* host_node =
+ root->GetOrCreateHostNode(origin, container->app_id(),
+ container->app_name());
+ host_node->GetOrCreateFlashLSONode(*it);
+ }
+ }
+}
+
void CookiesTreeModel::NotifyObserverBeginBatch() {
// Only notify the model once if we're batching in a nested manner.
if (batch_update_++ == 0) {
diff --git a/chrome/browser/cookies_tree_model.h b/chrome/browser/cookies_tree_model.h
index 2140308..f724e97 100644
--- a/chrome/browser/cookies_tree_model.h
+++ b/chrome/browser/cookies_tree_model.h
@@ -41,6 +41,7 @@ class CookieTreeDatabaseNode;
class CookieTreeDatabasesNode;
class CookieTreeFileSystemNode;
class CookieTreeFileSystemsNode;
+class CookieTreeFlashLSONode;
class CookieTreeHostNode;
class CookieTreeIndexedDBNode;
class CookieTreeIndexedDBsNode;
@@ -89,6 +90,7 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
TYPE_QUOTA, // This is used for CookieTreeQuotaNode.
TYPE_SERVER_BOUND_CERTS, // Used for CookieTreeServerBoundCertsNode.
TYPE_SERVER_BOUND_CERT, // Used for CookieTreeServerBoundCertNode.
+ TYPE_FLASH_LSO, // This is used for CookieTreeFlashLSONode.
};
DetailedInfo();
@@ -116,6 +118,7 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
const BrowsingDataQuotaHelper::QuotaInfo* quota_info);
DetailedInfo& InitServerBoundCert(
const net::ServerBoundCertStore::ServerBoundCert* server_bound_cert);
+ DetailedInfo& InitFlashLSO(const std::string& flash_lso_domain);
std::string app_name;
std::string app_id;
@@ -131,6 +134,7 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
const BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info;
const BrowsingDataQuotaHelper::QuotaInfo* quota_info;
const net::ServerBoundCertStore::ServerBoundCert* server_bound_cert;
+ std::string flash_lso_domain;
};
CookieTreeNode() {}
@@ -204,6 +208,7 @@ class CookieTreeHostNode : public CookieTreeNode {
CookieTreeServerBoundCertsNode* GetOrCreateServerBoundCertsNode();
CookieTreeQuotaNode* UpdateOrCreateQuotaNode(
std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info);
+ CookieTreeFlashLSONode* GetOrCreateFlashLSONode(const std::string& domain);
std::string canonicalized_host() const { return canonicalized_host_; }
@@ -234,6 +239,7 @@ class CookieTreeHostNode : public CookieTreeNode {
CookieTreeFileSystemsNode* file_systems_child_;
CookieTreeQuotaNode* quota_child_;
CookieTreeServerBoundCertsNode* server_bound_certs_child_;
+ CookieTreeFlashLSONode* flash_lso_child_;
std::string app_id_;
std::string app_name_;
@@ -573,6 +579,22 @@ class CookieTreeServerBoundCertsNode : public CookieTreeNode {
DISALLOW_COPY_AND_ASSIGN(CookieTreeServerBoundCertsNode);
};
+// CookieTreeFlashLSONode ----------------------------------------------------
+class CookieTreeFlashLSONode : public CookieTreeNode {
+ public:
+ explicit CookieTreeFlashLSONode(const std::string& domain);
+ virtual ~CookieTreeFlashLSONode();
+
+ // CookieTreeNode methods:
+ virtual void DeleteStoredObjects() OVERRIDE;
+ virtual DetailedInfo GetDetailedInfo() const OVERRIDE;
+
+ private:
+ std::string domain_;
+
+ DISALLOW_COPY_AND_ASSIGN(CookieTreeFlashLSONode);
+};
+
// CookiesTreeModel -----------------------------------------------------------
class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
public:
@@ -654,6 +676,7 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
void PopulateFileSystemInfo(LocalDataContainer* container);
void PopulateQuotaInfo(LocalDataContainer* container);
void PopulateServerBoundCertInfo(LocalDataContainer* container);
+ void PopulateFlashLSOInfo(LocalDataContainer* container);
BrowsingDataCookieHelper* GetCookieHelper(const std::string& app_id);
LocalDataContainer* GetLocalDataContainer(const std::string& app_id);
@@ -696,6 +719,9 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
LocalDataContainer* container,
ScopedBatchUpdateNotifier* notifier,
const string16& filter);
+ void PopulateFlashLSOInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
// Map of app ids to LocalDataContainer objects to use when retrieving
// locally stored data.
diff --git a/chrome/browser/cookies_tree_model_unittest.cc b/chrome/browser/cookies_tree_model_unittest.cc
index 037692a..a217504 100644
--- a/chrome/browser/cookies_tree_model_unittest.cc
+++ b/chrome/browser/cookies_tree_model_unittest.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/browsing_data/mock_browsing_data_cookie_helper.h"
#include "chrome/browser/browsing_data/mock_browsing_data_database_helper.h"
#include "chrome/browser/browsing_data/mock_browsing_data_file_system_helper.h"
+#include "chrome/browser/browsing_data/mock_browsing_data_flash_lso_helper.h"
#include "chrome/browser/browsing_data/mock_browsing_data_indexed_db_helper.h"
#include "chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h"
#include "chrome/browser/browsing_data/mock_browsing_data_quota_helper.h"
@@ -70,6 +71,8 @@ class CookiesTreeModelTest : public testing::Test {
new MockBrowsingDataQuotaHelper(profile_.get());
mock_browsing_data_server_bound_cert_helper_ =
new MockBrowsingDataServerBoundCertHelper();
+ mock_browsing_data_flash_lso_helper_ =
+ new MockBrowsingDataFlashLSOHelper(profile_.get());
// It is fine to reuse the profile request context for the app, since
// the mock cookie helper maintains its own list internally and doesn't
@@ -93,6 +96,7 @@ class CookiesTreeModelTest : public testing::Test {
mock_browsing_data_session_storage_helper_ = NULL;
mock_browsing_data_local_storage_helper_ = NULL;
mock_browsing_data_database_helper_ = NULL;
+ mock_browsing_data_flash_lso_helper_ = NULL;
message_loop_.RunAllPending();
}
@@ -110,7 +114,8 @@ class CookiesTreeModelTest : public testing::Test {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
if (add_app) {
std::string app_id = "some-random-id";
@@ -118,7 +123,7 @@ class CookiesTreeModelTest : public testing::Test {
containers_map[app_id] = new LocalDataContainer(
"Isolated App", app_id,
mock_browsing_data_cookie_helper_app_,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
CookiesTreeModel* cookies_model =
@@ -149,6 +154,8 @@ class CookiesTreeModelTest : public testing::Test {
mock_browsing_data_server_bound_cert_helper_->AddServerBoundCertSample(
"sbc2");
mock_browsing_data_server_bound_cert_helper_->Notify();
+ mock_browsing_data_flash_lso_helper_->AddFlashLSODomain("xyz.com");
+ mock_browsing_data_flash_lso_helper_->Notify();
if (add_app) {
mock_browsing_data_cookie_helper_app_->
@@ -163,7 +170,7 @@ class CookiesTreeModelTest : public testing::Test {
{
SCOPED_TRACE("Initial State 3 cookies, 2 databases, 2 local storages, "
"2 session storages, 2 indexed DBs, 3 filesystems, "
- "2 quotas, 2 server bound certs");
+ "2 quotas, 2 server bound certs, 1 Flash LSO");
// 51 because there's the root, then
// foo1 -> cookies -> a,
// foo2 -> cookies -> b,
@@ -183,15 +190,16 @@ class CookiesTreeModelTest : public testing::Test {
// quotahost2 -> quotahost2,
// sbc1 -> sbcerts -> sbc1,
// sbc2 -> sbcerts -> sbc2.
+ // xyz.com -> flash_lsos
if (!add_app) {
- EXPECT_EQ(51, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(53, cookies_model->GetRoot()->GetTotalNodeCount());
EXPECT_EQ("A,B,C", GetDisplayedCookies(cookies_model));
} else {
// Once we add the app, we have 9 more nodes:
// app-origin1 -> cookies -> z,
// app-origin2 -> cookies -> y,
// app-origin3 -> cookies -> x,
- EXPECT_EQ(60, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(62, cookies_model->GetRoot()->GetTotalNodeCount());
EXPECT_EQ("A,B,C,Z,Y,X", GetDisplayedCookies(cookies_model));
}
EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model));
@@ -207,6 +215,8 @@ class CookiesTreeModelTest : public testing::Test {
GetDisplayedQuotas(cookies_model));
EXPECT_EQ("sbc1,sbc2",
GetDisplayedServerBoundCerts(cookies_model));
+ EXPECT_EQ("xyz.com",
+ GetDisplayedFlashLSOs(cookies_model));
}
return make_scoped_ptr(cookies_model);
}
@@ -250,6 +260,8 @@ class CookiesTreeModelTest : public testing::Test {
case CookieTreeNode::DetailedInfo::TYPE_SERVER_BOUND_CERT:
return node->GetDetailedInfo(
).server_bound_cert->server_identifier() + ",";
+ case CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO:
+ return node->GetDetailedInfo().flash_lso_domain + ",";
default:
return std::string();
}
@@ -289,6 +301,11 @@ class CookiesTreeModelTest : public testing::Test {
node, CookieTreeNode::DetailedInfo::TYPE_QUOTA);
}
+ std::string GetFlashLSOsOfChildren(const CookieTreeNode* node) {
+ return GetNodesOfChildren(
+ node, CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO);
+ }
+
// Get the nodes names displayed in the view (if we had one) in the order
// they are displayed, as a comma seperated string.
// Ex: EXPECT_STREQ("X,Y", GetDisplayedNodes(cookies_view, type).c_str());
@@ -347,6 +364,11 @@ class CookiesTreeModelTest : public testing::Test {
cookies_model, CookieTreeNode::DetailedInfo::TYPE_SERVER_BOUND_CERT);
}
+ std::string GetDisplayedFlashLSOs(CookiesTreeModel* cookies_model) {
+ return GetDisplayedNodes(
+ cookies_model, CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO);
+ }
+
// Do not call on the root.
void DeleteStoredObjects(CookieTreeNode* node) {
node->DeleteStoredObjects();
@@ -380,6 +402,8 @@ class CookiesTreeModelTest : public testing::Test {
mock_browsing_data_quota_helper_;
scoped_refptr<MockBrowsingDataServerBoundCertHelper>
mock_browsing_data_server_bound_cert_helper_;
+ scoped_refptr<MockBrowsingDataFlashLSOHelper>
+ mock_browsing_data_flash_lso_helper_;
// App helpers.
scoped_refptr<MockBrowsingDataCookieHelper>
@@ -411,6 +435,8 @@ TEST_F(CookiesTreeModelTest, RemoveAll) {
GetDisplayedQuotas(cookies_model.get()));
EXPECT_EQ("sbc1,sbc2",
GetDisplayedServerBoundCerts(cookies_model.get()));
+ EXPECT_EQ("xyz.com",
+ GetDisplayedFlashLSOs(cookies_model.get()));
}
mock_browsing_data_cookie_helper_->Reset();
@@ -439,6 +465,7 @@ TEST_F(CookiesTreeModelTest, RemoveAll) {
EXPECT_TRUE(mock_browsing_data_indexed_db_helper_->AllDeleted());
EXPECT_TRUE(mock_browsing_data_file_system_helper_->AllDeleted());
EXPECT_TRUE(mock_browsing_data_server_bound_cert_helper_->AllDeleted());
+ EXPECT_TRUE(mock_browsing_data_flash_lso_helper_->AllDeleted());
}
}
@@ -464,10 +491,30 @@ TEST_F(CookiesTreeModelTest, Remove) {
// 13. `quotahost2`
// 14. `sbc1`
// 15. `sbc2`
+ // 16. `xyz.com`
//
// Here, we'll remove them one by one, starting from the end, and
// check that the state makes sense.
+ DeleteStoredObjects(cookies_model->GetRoot()->GetChild(16));
+ {
+ SCOPED_TRACE("`xyz.com` removed.");
+ EXPECT_STREQ("A,B,C", GetDisplayedCookies(cookies_model.get()).c_str());
+ EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
+ EXPECT_EQ("http://host1:1/,http://host2:2/",
+ GetDisplayedLocalStorages(cookies_model.get()));
+ EXPECT_EQ("http://host1:1/,http://host2:2/",
+ GetDisplayedSessionStorages(cookies_model.get()));
+ EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
+ GetDisplayedFileSystems(cookies_model.get()));
+ EXPECT_EQ("http://idbhost1:1/,http://idbhost2:2/",
+ GetDisplayedIndexedDBs(cookies_model.get()));
+ EXPECT_EQ("quotahost1,quotahost2",
+ GetDisplayedQuotas(cookies_model.get()));
+ EXPECT_EQ("sbc1,sbc2",
+ GetDisplayedServerBoundCerts(cookies_model.get()));
+ EXPECT_EQ(51, cookies_model->GetRoot()->GetTotalNodeCount());
+ }
DeleteStoredObjects(cookies_model->GetRoot()->GetChild(15));
{
SCOPED_TRACE("`sbc2` removed.");
@@ -694,9 +741,9 @@ TEST_F(CookiesTreeModelTest, RemoveCookiesNode) {
{
SCOPED_TRACE("First origin removed");
EXPECT_STREQ("B,C", GetDisplayedCookies(cookies_model.get()).c_str());
- // 49 because in this case, the origin remains, although the COOKIES
+ // 51 because in this case, the origin remains, although the COOKIES
// node beneath it has been deleted.
- EXPECT_EQ(49, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(51, cookies_model->GetRoot()->GetTotalNodeCount());
EXPECT_EQ("db1,db2", GetDisplayedDatabases(cookies_model.get()));
EXPECT_EQ("http://host1:1/,http://host2:2/",
GetDisplayedLocalStorages(cookies_model.get()));
@@ -726,7 +773,7 @@ TEST_F(CookiesTreeModelTest, RemoveCookiesNode) {
GetDisplayedFileSystems(cookies_model.get()));
EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model.get()));
- EXPECT_EQ(47, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(49, cookies_model->GetRoot()->GetTotalNodeCount());
}
DeleteStoredObjects(
@@ -745,7 +792,7 @@ TEST_F(CookiesTreeModelTest, RemoveCookiesNode) {
GetDisplayedFileSystems(cookies_model.get()));
EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model.get()));
- EXPECT_EQ(45, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(47, cookies_model->GetRoot()->GetTotalNodeCount());
}
}
@@ -769,9 +816,9 @@ TEST_F(CookiesTreeModelTest, RemoveCookieNode) {
GetDisplayedFileSystems(cookies_model.get()));
EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model.get()));
- // 49 because in this case, the origin remains, although the COOKIES
+ // 51 because in this case, the origin remains, although the COOKIES
// node beneath it has been deleted.
- EXPECT_EQ(49, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(51, cookies_model->GetRoot()->GetTotalNodeCount());
}
DeleteStoredObjects(
@@ -790,7 +837,7 @@ TEST_F(CookiesTreeModelTest, RemoveCookieNode) {
GetDisplayedFileSystems(cookies_model.get()));
EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model.get()));
- EXPECT_EQ(47, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(49, cookies_model->GetRoot()->GetTotalNodeCount());
}
DeleteStoredObjects(
@@ -809,7 +856,7 @@ TEST_F(CookiesTreeModelTest, RemoveCookieNode) {
GetDisplayedFileSystems(cookies_model.get()));
EXPECT_EQ("quotahost1,quotahost2", GetDisplayedQuotas(cookies_model.get()));
EXPECT_EQ("sbc1,sbc2", GetDisplayedServerBoundCerts(cookies_model.get()));
- EXPECT_EQ(45, cookies_model->GetRoot()->GetTotalNodeCount());
+ EXPECT_EQ(47, cookies_model->GetRoot()->GetTotalNodeCount());
}
}
@@ -826,7 +873,8 @@ TEST_F(CookiesTreeModelTest, RemoveSingleCookieNode) {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
CookiesTreeModel cookies_model(container_map, special_storage_policy_, false);
mock_browsing_data_cookie_helper_->
@@ -916,7 +964,8 @@ TEST_F(CookiesTreeModelTest, RemoveSingleCookieNodeOf3) {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
CookiesTreeModel cookies_model(container_map, special_storage_policy_,false);
mock_browsing_data_cookie_helper_->
@@ -1009,7 +1058,8 @@ TEST_F(CookiesTreeModelTest, RemoveSecondOrigin) {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
CookiesTreeModel cookies_model(container_map, special_storage_policy_,false);
mock_browsing_data_cookie_helper_->
@@ -1053,7 +1103,8 @@ TEST_F(CookiesTreeModelTest, OriginOrdering) {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
CookiesTreeModel cookies_model(container_map, special_storage_policy_, false);
mock_browsing_data_cookie_helper_->
@@ -1089,7 +1140,7 @@ TEST_F(CookiesTreeModelTest, OriginOrdering) {
}
TEST_F(CookiesTreeModelTest, ContentSettings) {
- GURL host("http://example.com/");
+ GURL host("http://xyz.com/");
std::string name = "Drive-By-Web";
std::string browser_id;
ContainerMap container_map;
@@ -1104,7 +1155,8 @@ TEST_F(CookiesTreeModelTest, ContentSettings) {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
CookiesTreeModel cookies_model(container_map, special_storage_policy_, false);
mock_browsing_data_cookie_helper_->AddCookieSamples(host, "A=1");
@@ -1150,9 +1202,9 @@ TEST_F(CookiesTreeModelTest, AppOriginTitle) {
CreateCookiesTreeModelWithInitialSample(true));
EXPECT_EQ(ASCIIToUTF16("Isolated App, app-origin1"),
- cookies_model->GetRoot()->GetChild(16)->GetTitle());
- EXPECT_EQ(ASCIIToUTF16("Isolated App, app-origin2"),
cookies_model->GetRoot()->GetChild(17)->GetTitle());
+ EXPECT_EQ(ASCIIToUTF16("Isolated App, app-origin2"),
+ cookies_model->GetRoot()->GetChild(18)->GetTitle());
}
TEST_F(CookiesTreeModelTest, FileSystemFilter) {
@@ -1189,7 +1241,8 @@ TEST_F(CookiesTreeModelTest, CookiesFilter) {
mock_browsing_data_indexed_db_helper_,
mock_browsing_data_file_system_helper_,
mock_browsing_data_quota_helper_,
- mock_browsing_data_server_bound_cert_helper_);
+ mock_browsing_data_server_bound_cert_helper_,
+ mock_browsing_data_flash_lso_helper_);
CookiesTreeModel cookies_model(container_map, special_storage_policy_, false);
mock_browsing_data_cookie_helper_->
diff --git a/chrome/browser/resources/options2/cookies_list.js b/chrome/browser/resources/options2/cookies_list.js
index 6ba971d..0968f3c 100644
--- a/chrome/browser/resources/options2/cookies_list.js
+++ b/chrome/browser/resources/options2/cookies_list.js
@@ -41,6 +41,7 @@ cr.define('options', function() {
['certType', 'label_server_bound_cert_type'],
['created', 'label_server_bound_cert_created'],
['expires', 'label_server_bound_cert_expires']],
+ 'flash_lso': [['domain', 'label_cookie_domain']],
};
/**
@@ -271,6 +272,8 @@ cr.define('options', function() {
list.push(loadTimeData.getString('cookie_file_system'));
if (info.serverBoundCerts)
list.push(loadTimeData.getString('cookie_server_bound_cert'));
+ if (info.flashLSO)
+ list.push(loadTimeData.getString('cookie_flash_lso'));
var text = '';
for (var i = 0; i < list.length; ++i) {
@@ -484,6 +487,8 @@ cr.define('options', function() {
info.quota = this.data;
} else if (this.data.type == 'server_bound_cert') {
info.serverBoundCerts++;
+ } else if (this.data.type == 'flash_lso') {
+ info.flashLSO = true;
}
var apps = this.data.appsProtectingThis;
diff --git a/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm b/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm
index 3df5a83..c046f0a 100644
--- a/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm
+++ b/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm
@@ -384,43 +384,13 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) {
TabSpecificContentSettings* content_settings =
tab_contents_->content_settings();
- const LocalSharedObjectsContainer& allowed_lsos =
+ const LocalSharedObjectsContainer& allowed_data =
content_settings->allowed_local_shared_objects();
- {
- ContainerMap apps_map;
- apps_map[std::string()] = new LocalDataContainer(
- std::string(), std::string(),
- allowed_lsos.cookies()->Clone(),
- allowed_lsos.databases()->Clone(),
- allowed_lsos.local_storages()->Clone(),
- allowed_lsos.session_storages()->Clone(),
- allowed_lsos.appcaches()->Clone(),
- allowed_lsos.indexed_dbs()->Clone(),
- allowed_lsos.file_systems()->Clone(),
- NULL,
- allowed_lsos.server_bound_certs()->Clone());
-
- allowedTreeModel_.reset(new CookiesTreeModel(apps_map, NULL, true));
- }
+ allowedTreeModel_ = allowed_data.CreateCookiesTreeModel();
- const LocalSharedObjectsContainer& blocked_lsos =
+ const LocalSharedObjectsContainer& blocked_data =
content_settings->blocked_local_shared_objects();
- {
- ContainerMap apps_map;
- apps_map[std::string()] = new LocalDataContainer(
- std::string(), std::string(),
- blocked_lsos.cookies()->Clone(),
- blocked_lsos.databases()->Clone(),
- blocked_lsos.local_storages()->Clone(),
- blocked_lsos.session_storages()->Clone(),
- blocked_lsos.appcaches()->Clone(),
- blocked_lsos.indexed_dbs()->Clone(),
- blocked_lsos.file_systems()->Clone(),
- NULL,
- blocked_lsos.server_bound_certs()->Clone());
-
- blockedTreeModel_.reset(new CookiesTreeModel(apps_map, NULL, true));
- }
+ blockedTreeModel_ = blocked_data.CreateCookiesTreeModel();
// Convert the model's icons from Skia to Cocoa.
std::vector<gfx::ImageSkia> skiaIcons;
diff --git a/chrome/browser/ui/gtk/collected_cookies_gtk.cc b/chrome/browser/ui/gtk/collected_cookies_gtk.cc
index 9199b0c..6113223 100644
--- a/chrome/browser/ui/gtk/collected_cookies_gtk.cc
+++ b/chrome/browser/ui/gtk/collected_cookies_gtk.cc
@@ -213,21 +213,10 @@ GtkWidget* CollectedCookiesGtk::CreateAllowedPane() {
TabSpecificContentSettings* content_settings =
tab_contents_->content_settings();
- const LocalSharedObjectsContainer& allowed_lsos =
+ const LocalSharedObjectsContainer& allowed_data =
content_settings->allowed_local_shared_objects();
- ContainerMap apps_map;
- apps_map[std::string()] = new LocalDataContainer(
- std::string(), std::string(),
- allowed_lsos.cookies()->Clone(),
- allowed_lsos.databases()->Clone(),
- allowed_lsos.local_storages()->Clone(),
- allowed_lsos.session_storages()->Clone(),
- allowed_lsos.appcaches()->Clone(),
- allowed_lsos.indexed_dbs()->Clone(),
- allowed_lsos.file_systems()->Clone(),
- NULL,
- allowed_lsos.server_bound_certs()->Clone());
- allowed_cookies_tree_model_.reset(new CookiesTreeModel(apps_map, NULL, true));
+ allowed_cookies_tree_model_ = allowed_data.CreateCookiesTreeModel();
+
allowed_cookies_tree_adapter_.reset(
new gtk_tree::TreeAdapter(this, allowed_cookies_tree_model_.get()));
allowed_tree_ = gtk_tree_view_new_with_model(
@@ -304,21 +293,10 @@ GtkWidget* CollectedCookiesGtk::CreateBlockedPane() {
TabSpecificContentSettings* content_settings =
tab_contents_->content_settings();
- const LocalSharedObjectsContainer& blocked_lsos =
+ const LocalSharedObjectsContainer& blocked_data =
content_settings->blocked_local_shared_objects();
- ContainerMap apps_map;
- apps_map[std::string()] = new LocalDataContainer(
- std::string(), std::string(),
- blocked_lsos.cookies()->Clone(),
- blocked_lsos.databases()->Clone(),
- blocked_lsos.local_storages()->Clone(),
- blocked_lsos.session_storages()->Clone(),
- blocked_lsos.appcaches()->Clone(),
- blocked_lsos.indexed_dbs()->Clone(),
- blocked_lsos.file_systems()->Clone(),
- NULL,
- blocked_lsos.server_bound_certs()->Clone());
- blocked_cookies_tree_model_.reset(new CookiesTreeModel(apps_map, NULL, true));
+ blocked_cookies_tree_model_ = blocked_data.CreateCookiesTreeModel();
+
blocked_cookies_tree_adapter_.reset(
new gtk_tree::TreeAdapter(this, blocked_cookies_tree_model_.get()));
blocked_tree_ = gtk_tree_view_new_with_model(
diff --git a/chrome/browser/ui/views/collected_cookies_views.cc b/chrome/browser/ui/views/collected_cookies_views.cc
index efc3fd1..a7c4480 100644
--- a/chrome/browser/ui/views/collected_cookies_views.cc
+++ b/chrome/browser/ui/views/collected_cookies_views.cc
@@ -341,22 +341,9 @@ views::View* CollectedCookiesViews::CreateAllowedPane() {
allowed_label_ = new views::Label(l10n_util::GetStringUTF16(
IDS_COLLECTED_COOKIES_ALLOWED_COOKIES_LABEL));
- const LocalSharedObjectsContainer& allowed_lsos =
+ const LocalSharedObjectsContainer& allowed_data =
content_settings->allowed_local_shared_objects();
- ContainerMap apps_map;
- apps_map[std::string()] = new LocalDataContainer(
- std::string(), std::string(),
- allowed_lsos.cookies()->Clone(),
- allowed_lsos.databases()->Clone(),
- allowed_lsos.local_storages()->Clone(),
- allowed_lsos.session_storages()->Clone(),
- allowed_lsos.appcaches()->Clone(),
- allowed_lsos.indexed_dbs()->Clone(),
- allowed_lsos.file_systems()->Clone(),
- NULL,
- allowed_lsos.server_bound_certs()->Clone());
-
- allowed_cookies_tree_model_.reset(new CookiesTreeModel(apps_map, NULL, true));
+ allowed_cookies_tree_model_ = allowed_data.CreateCookiesTreeModel();
allowed_cookies_tree_ = new views::TreeView();
allowed_cookies_tree_->SetModel(allowed_cookies_tree_model_.get());
allowed_cookies_tree_->SetRootShown(false);
@@ -412,23 +399,9 @@ views::View* CollectedCookiesViews::CreateBlockedPane() {
IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL));
blocked_label_->SetMultiLine(true);
blocked_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- const LocalSharedObjectsContainer& blocked_lsos =
+ const LocalSharedObjectsContainer& blocked_data =
content_settings->blocked_local_shared_objects();
- string16 name = ASCIIToUTF16("Site Data");
- ContainerMap apps_map;
- apps_map[std::string()] = new LocalDataContainer(
- std::string(), std::string(),
- blocked_lsos.cookies()->Clone(),
- blocked_lsos.databases()->Clone(),
- blocked_lsos.local_storages()->Clone(),
- blocked_lsos.session_storages()->Clone(),
- blocked_lsos.appcaches()->Clone(),
- blocked_lsos.indexed_dbs()->Clone(),
- blocked_lsos.file_systems()->Clone(),
- NULL,
- blocked_lsos.server_bound_certs()->Clone());
-
- blocked_cookies_tree_model_.reset(new CookiesTreeModel(apps_map, NULL, true));
+ blocked_cookies_tree_model_ = blocked_data.CreateCookiesTreeModel();
blocked_cookies_tree_ = new views::TreeView();
blocked_cookies_tree_->SetModel(blocked_cookies_tree_model_.get());
blocked_cookies_tree_->SetRootShown(false);
diff --git a/chrome/browser/ui/webui/cookies_tree_model_util.cc b/chrome/browser/ui/webui/cookies_tree_model_util.cc
index b257b39..e5d3eeb 100644
--- a/chrome/browser/ui/webui/cookies_tree_model_util.cc
+++ b/chrome/browser/ui/webui/cookies_tree_model_util.cc
@@ -254,6 +254,12 @@ bool CookiesTreeModelUtil::GetCookieTreeNodeDictionary(
server_bound_cert.expiration_time())));
break;
}
+ case CookieTreeNode::DetailedInfo::TYPE_FLASH_LSO: {
+ dict->SetString(kKeyType, "flash_lso");
+ dict->SetString(kKeyIcon, "chrome://theme/IDR_COOKIE_ICON");
+
+ dict->SetString(kKeyDomain, node.GetDetailedInfo().flash_lso_domain);
+ }
default:
#if defined(OS_MACOSX)
dict->SetString(kKeyIcon, "chrome://theme/IDR_BOOKMARK_BAR_FOLDER");
diff --git a/chrome/browser/ui/webui/options2/cookies_view_handler.cc b/chrome/browser/ui/webui/options2/cookies_view_handler.cc
index 1817de1..2a7c3c2 100644
--- a/chrome/browser/ui/webui/options2/cookies_view_handler.cc
+++ b/chrome/browser/ui/webui/options2/cookies_view_handler.cc
@@ -16,6 +16,7 @@
#include "chrome/browser/browsing_data/browsing_data_cookie_helper.h"
#include "chrome/browser/browsing_data/browsing_data_database_helper.h"
#include "chrome/browser/browsing_data/browsing_data_file_system_helper.h"
+#include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
#include "chrome/browser/browsing_data/browsing_data_indexed_db_helper.h"
#include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h"
#include "chrome/browser/browsing_data/browsing_data_quota_helper.h"
@@ -73,6 +74,7 @@ void CookiesViewHandler::GetLocalizedValues(
{ "cookie_indexed_db", IDS_COOKIES_INDEXED_DB },
{ "cookie_local_storage", IDS_COOKIES_LOCAL_STORAGE },
{ "cookie_app_cache", IDS_COOKIES_APPLICATION_CACHE },
+ { "cookie_flash_lso", IDS_COOKIES_FLASH_LSO },
{ "search_cookies", IDS_COOKIES_SEARCH_COOKIES },
{ "remove_cookie", IDS_COOKIES_REMOVE_LABEL },
{ "remove_all_cookie", IDS_COOKIES_REMOVE_ALL_LABEL },
@@ -193,7 +195,8 @@ void CookiesViewHandler::EnsureCookiesTreeModelCreated() {
BrowsingDataIndexedDBHelper::Create(profile),
BrowsingDataFileSystemHelper::Create(profile),
BrowsingDataQuotaHelper::Create(profile),
- BrowsingDataServerBoundCertHelper::Create(profile));
+ BrowsingDataServerBoundCertHelper::Create(profile),
+ BrowsingDataFlashLSOHelper::Create(profile));
cookies_tree_model_.reset(
new CookiesTreeModel(apps_map,
profile->GetExtensionSpecialStoragePolicy(),
@@ -218,7 +221,7 @@ void CookiesViewHandler::EnsureCookiesTreeModelCreated() {
apps_map[(*it)->id()] = new LocalDataContainer(
(*it)->name(), (*it)->id(),
new BrowsingDataCookieHelper(context_getter),
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
}
app_cookies_tree_model_.reset(
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index a5c68a6..b5a0882 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -353,6 +353,8 @@
'browser/browsing_data/browsing_data_database_helper.h',
'browser/browsing_data/browsing_data_file_system_helper.cc',
'browser/browsing_data/browsing_data_file_system_helper.h',
+ 'browser/browsing_data/browsing_data_flash_lso_helper.cc',
+ 'browser/browsing_data/browsing_data_flash_lso_helper.h',
'browser/browsing_data/browsing_data_helper.cc',
'browser/browsing_data/browsing_data_helper.h',
'browser/browsing_data/browsing_data_indexed_db_helper.cc',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 67dd252..f78023f 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -132,6 +132,8 @@
'browser/browsing_data/mock_browsing_data_database_helper.h',
'browser/browsing_data/mock_browsing_data_file_system_helper.cc',
'browser/browsing_data/mock_browsing_data_file_system_helper.h',
+ 'browser/browsing_data/mock_browsing_data_flash_lso_helper.cc',
+ 'browser/browsing_data/mock_browsing_data_flash_lso_helper.h',
'browser/browsing_data/mock_browsing_data_indexed_db_helper.cc',
'browser/browsing_data/mock_browsing_data_indexed_db_helper.h',
'browser/browsing_data/mock_browsing_data_local_storage_helper.cc',