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

Unified Diff: chrome/browser/cookies_tree_model.h

Issue 10636019: Adding Application Data dialog for isolated apps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed merge conflicts Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/cookies_tree_model.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cookies_tree_model.h
diff --git a/chrome/browser/cookies_tree_model.h b/chrome/browser/cookies_tree_model.h
index adda762acb1995ee4cdc2e823bf03953b3fcf043..bd3505a2996dea5208f4aeca476404d0dabeb011 100644
--- a/chrome/browser/cookies_tree_model.h
+++ b/chrome/browser/cookies_tree_model.h
@@ -24,6 +24,7 @@
#include "chrome/browser/browsing_data_indexed_db_helper.h"
#include "chrome/browser/browsing_data_local_storage_helper.h"
#include "chrome/browser/browsing_data_quota_helper.h"
+#include "chrome/browser/local_data_container.h"
#include "chrome/common/content_settings.h"
#include "net/base/server_bound_cert_store.h"
#include "net/cookies/cookie_monster.h"
@@ -39,18 +40,19 @@ class CookieTreeCookieNode;
class CookieTreeCookiesNode;
class CookieTreeDatabaseNode;
class CookieTreeDatabasesNode;
-class CookieTreeFileSystemsNode;
class CookieTreeFileSystemNode;
+class CookieTreeFileSystemsNode;
+class CookieTreeIndexedDBNode;
+class CookieTreeIndexedDBsNode;
class CookieTreeLocalStorageNode;
class CookieTreeLocalStoragesNode;
+class CookieTreeOriginNode;
+class CookieTreeQuotaNode;
class CookieTreeServerBoundCertNode;
class CookieTreeServerBoundCertsNode;
-class CookieTreeQuotaNode;
class CookieTreeSessionStorageNode;
class CookieTreeSessionStoragesNode;
-class CookieTreeIndexedDBNode;
-class CookieTreeIndexedDBsNode;
-class CookieTreeOriginNode;
+
// CookieTreeNode -------------------------------------------------------------
// The base node type in the Cookies, Databases, and Local Storage options
@@ -107,6 +109,14 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
return *this;
}
+ DetailedInfo& InitOrigin(const std::string& app_id,
+ const std::string& app_name) {
+ Init(TYPE_ORIGIN);
+ this->app_name = app_name;
+ this->app_id = app_id;
+ return *this;
+ }
+
DetailedInfo& InitCookie(
const net::CookieMonster::CanonicalCookie* cookie) {
Init(TYPE_COOKIE);
@@ -171,6 +181,8 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
return *this;
}
+ std::string app_name;
+ std::string app_id;
string16 origin;
NodeType node_type;
const net::CookieMonster::CanonicalCookie* cookie;
@@ -216,7 +228,9 @@ class CookieTreeRootNode : public CookieTreeNode {
explicit CookieTreeRootNode(CookiesTreeModel* model);
virtual ~CookieTreeRootNode();
- CookieTreeOriginNode* GetOrCreateOriginNode(const GURL& url);
+ CookieTreeOriginNode* GetOrCreateOriginNode(const GURL& url,
+ const std::string& app_id,
+ const std::string& app_name);
// CookieTreeNode methods:
virtual CookiesTreeModel* GetModel() const OVERRIDE;
@@ -232,9 +246,13 @@ class CookieTreeRootNode : public CookieTreeNode {
class CookieTreeOriginNode : public CookieTreeNode {
public:
// Returns the origin node's title to use for a given URL.
- static std::wstring TitleForUrl(const GURL& url);
+ static string16 TitleForUrl(const GURL& url,
+ const std::string& app_id,
+ const std::string& app_name);
- explicit CookieTreeOriginNode(const GURL& url);
+ explicit CookieTreeOriginNode(const GURL& url,
+ const std::string& app_id,
+ const std::string& app_name);
virtual ~CookieTreeOriginNode();
// CookieTreeNode methods:
@@ -260,6 +278,10 @@ class CookieTreeOriginNode : public CookieTreeNode {
// True if a content exception can be created for this origin.
bool CanCreateContentException() const;
+ const std::string& app_id() const { return app_id_; }
+ const std::string& app_name() const { return app_name_; }
+ const std::string GetHost() const;
+
private:
// Pointers to the cookies, databases, local and session storage and appcache
// nodes. When we build up the tree we need to quickly get a reference to
@@ -276,6 +298,9 @@ class CookieTreeOriginNode : public CookieTreeNode {
CookieTreeQuotaNode* quota_child_;
CookieTreeServerBoundCertsNode* server_bound_certs_child_;
+ std::string app_id_;
+ std::string app_name_;
+
// The URL for which this node was initially created.
GURL url_;
@@ -612,6 +637,9 @@ class CookieTreeServerBoundCertsNode : public CookieTreeNode {
// CookiesTreeModel -----------------------------------------------------------
class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
public:
+ CookiesTreeModel(const ContainerMap& apps_map, bool group_by_cookie_source);
+ virtual ~CookiesTreeModel();
+
// Because non-cookie nodes are fetched in a background thread, they are not
// present at the time the Model is created. The Model then notifies its
// observers for every item added from databases, local storage, and
@@ -623,18 +651,22 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
virtual void TreeModelEndBatch(CookiesTreeModel* model) {}
};
- CookiesTreeModel(
- BrowsingDataCookieHelper* cookie_helper,
- BrowsingDataDatabaseHelper* database_helper,
- BrowsingDataLocalStorageHelper* local_storage_helper,
- BrowsingDataLocalStorageHelper* session_storage_helper,
- BrowsingDataAppCacheHelper* appcache_helper,
- BrowsingDataIndexedDBHelper* indexed_db_helper,
- BrowsingDataFileSystemHelper* file_system_helper,
- BrowsingDataQuotaHelper* quota_helper,
- BrowsingDataServerBoundCertHelper* server_bound_cert_helper,
- bool use_cookie_source);
- virtual ~CookiesTreeModel();
+ // This class defines the scope for batch updates. It can be created as a
+ // local variable and the destructor will terminate the batch update, if one
+ // has been started.
+ class ScopedBatchUpdateNotifier {
+ public:
+ ScopedBatchUpdateNotifier(CookiesTreeModel* model,
+ CookieTreeNode* node);
+ ~ScopedBatchUpdateNotifier();
+
+ void StartBatchUpdate();
+
+ private:
+ CookiesTreeModel* model_;
+ CookieTreeNode* node_;
+ bool batch_in_progress_;
+ };
// ui::TreeModel methods:
// Returns the set of icons for the nodes in the tree. You only need override
@@ -648,10 +680,13 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
// CookiesTreeModel methods:
void DeleteAllStoredObjects();
+
+ // Deletes a specific node in the tree, identified by |cookie_node|, and its
+ // subtree.
void DeleteCookieNode(CookieTreeNode* cookie_node);
// Filter the origins to only display matched results.
- void UpdateSearchResults(const std::wstring& filter);
+ void UpdateSearchResults(const string16& filter);
// Manages CookiesTreeModel::Observers. This will also call
// TreeNodeModel::AddObserver so that it gets all the proper notifications.
@@ -660,99 +695,76 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
virtual void AddCookiesTreeObserver(Observer* observer);
virtual void RemoveCookiesTreeObserver(Observer* observer);
+ // Methods that update the model based on the data retrieved by the browsing
+ // data helpers.
+ void PopulateAppCacheInfo(LocalDataContainer* container);
+ void PopulateCookieInfo(LocalDataContainer* container);
+ void PopulateDatabaseInfo(LocalDataContainer* container);
+ void PopulateLocalStorageInfo(LocalDataContainer* container);
+ void PopulateSessionStorageInfo(LocalDataContainer* container);
+ void PopulateIndexedDBInfo(LocalDataContainer* container);
+ void PopulateFileSystemInfo(LocalDataContainer* container);
+ void PopulateQuotaInfo(LocalDataContainer* container);
+ void PopulateServerBoundCertInfo(LocalDataContainer* container);
+
+ BrowsingDataCookieHelper* GetCookieHelper(const std::string& app_id);
+ LocalDataContainer* GetLocalDataContainer(const std::string& app_id);
+
private:
enum CookieIconIndex {
ORIGIN = 0,
COOKIE = 1,
DATABASE = 2
};
- typedef std::list<net::CookieMonster::CanonicalCookie> CookieList;
- typedef std::list<BrowsingDataDatabaseHelper::DatabaseInfo>
- DatabaseInfoList;
- typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>
- LocalStorageInfoList;
- typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>
- SessionStorageInfoList;
- typedef std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>
- IndexedDBInfoList;
- typedef std::list<BrowsingDataFileSystemHelper::FileSystemInfo>
- FileSystemInfoList;
- typedef std::list<BrowsingDataQuotaHelper::QuotaInfo> QuotaInfoArray;
- typedef net::ServerBoundCertStore::ServerBoundCertList ServerBoundCertList;
-
- void OnAppCacheModelInfoLoaded();
- void OnCookiesModelInfoLoaded(const net::CookieList& cookie_list);
- void OnDatabaseModelInfoLoaded(const DatabaseInfoList& database_info);
- void OnLocalStorageModelInfoLoaded(
- const LocalStorageInfoList& local_storage_info);
- void OnSessionStorageModelInfoLoaded(
- const LocalStorageInfoList& local_storage_info);
- void OnIndexedDBModelInfoLoaded(
- const IndexedDBInfoList& indexed_db_info);
- void OnFileSystemModelInfoLoaded(
- const FileSystemInfoList& file_system_info);
- void OnQuotaModelInfoLoaded(const QuotaInfoArray& quota_info);
- void OnServerBoundCertModelInfoLoaded(const ServerBoundCertList& cert_list);
-
- void PopulateAppCacheInfoWithFilter(const std::wstring& filter);
- void PopulateCookieInfoWithFilter(const std::wstring& filter);
- void PopulateDatabaseInfoWithFilter(const std::wstring& filter);
- void PopulateLocalStorageInfoWithFilter(const std::wstring& filter);
- void PopulateSessionStorageInfoWithFilter(const std::wstring& filter);
- void PopulateIndexedDBInfoWithFilter(const std::wstring& filter);
- void PopulateFileSystemInfoWithFilter(const std::wstring& filter);
- void PopulateQuotaInfoWithFilter(const std::wstring& filter);
- void PopulateServerBoundCertInfoWithFilter(const std::wstring& filter);
void NotifyObserverBeginBatch();
void NotifyObserverEndBatch();
- scoped_refptr<BrowsingDataAppCacheHelper> appcache_helper_;
- scoped_refptr<BrowsingDataCookieHelper> cookie_helper_;
- scoped_refptr<BrowsingDataDatabaseHelper> database_helper_;
- scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper_;
- scoped_refptr<BrowsingDataLocalStorageHelper> session_storage_helper_;
- scoped_refptr<BrowsingDataIndexedDBHelper> indexed_db_helper_;
- scoped_refptr<BrowsingDataFileSystemHelper> file_system_helper_;
- scoped_refptr<BrowsingDataQuotaHelper> quota_helper_;
- scoped_refptr<BrowsingDataServerBoundCertHelper> server_bound_cert_helper_;
-
- std::map<GURL, std::list<appcache::AppCacheInfo> > appcache_info_;
- CookieList cookie_list_;
- DatabaseInfoList database_info_list_;
- LocalStorageInfoList local_storage_info_list_;
- LocalStorageInfoList session_storage_info_list_;
- IndexedDBInfoList indexed_db_info_list_;
- FileSystemInfoList file_system_info_list_;
- QuotaInfoArray quota_info_list_;
- ServerBoundCertList server_bound_cert_list_;
+ void PopulateAppCacheInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateCookieInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateDatabaseInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateLocalStorageInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateSessionStorageInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateIndexedDBInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateFileSystemInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateQuotaInfoWithFilter(LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+ void PopulateServerBoundCertInfoWithFilter(
+ LocalDataContainer* container,
+ ScopedBatchUpdateNotifier* notifier,
+ const string16& filter);
+
+ // Map of app ids to LocalDataContainer objects to use when retrieving
+ // locally stored data.
+ ContainerMap app_data_map_;
// The CookiesTreeModel maintains a separate list of observers that are
// specifically of the type CookiesTreeModel::Observer.
ObserverList<Observer> cookies_observer_list_;
+ // If true, use the CanonicalCookie::Source attribute to group cookies.
+ // Otherwise, use the CanonicalCookie::Domain attribute.
+ bool group_by_cookie_source_;
+
// If this is non-zero, then this model is batching updates (there's a lot of
// notifications coming down the pipe). This is an integer is used to balance
// calls to Begin/EndBatch() if they're called in a nested manner.
int batch_update_;
-
- // If true, use the CanonicalCookie::Source attribute to group cookies.
- // Otherwise, use the CanonicalCookie::Domain attribute.
- bool use_cookie_source_;
-
- base::WeakPtrFactory<CookiesTreeModel> weak_ptr_factory_;
-
- friend class CookieTreeAppCacheNode;
- friend class CookieTreeCookieNode;
- friend class CookieTreeDatabaseNode;
- friend class CookieTreeLocalStorageNode;
- friend class CookieTreeSessionStorageNode;
- friend class CookieTreeIndexedDBNode;
- friend class CookieTreeFileSystemNode;
- friend class CookieTreeQuotaNode;
- friend class CookieTreeServerBoundCertNode;
-
- DISALLOW_COPY_AND_ASSIGN(CookiesTreeModel);
};
#endif // CHROME_BROWSER_COOKIES_TREE_MODEL_H_
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/cookies_tree_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698