diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-01 17:33:51 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-01 17:33:51 +0000 |
commit | 3ff0ff79db2034f42d39d599776edf1c782ca8af (patch) | |
tree | 8b0b10c7618cdd2beb82bdda001318f758b23931 | |
parent | 28faf93116f4d227ceec62a8ff89ab4885494771 (diff) | |
download | chromium_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
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, ¬ifier, string16()); } +void CookiesTreeModel::PopulateFlashLSOInfo( + LocalDataContainer* container) { + ScopedBatchUpdateNotifier notifier(this, GetRoot()); + PopulateFlashLSOInfoWithFilter(container, ¬ifier, 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', |