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

Unified Diff: chrome/browser/cookies_tree_model.h

Issue 10709006: Show apps protecting local data in chrome://settings/cookies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: argh 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 | « no previous file | 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 476df1d70f413a20f0d911e8d213430e320f39ac..b690bf9b02ef32e6c772cd49d4836c7030983133 100644
--- a/chrome/browser/cookies_tree_model.h
+++ b/chrome/browser/cookies_tree_model.h
@@ -25,6 +25,7 @@
#include "chrome/browser/browsing_data_quota_helper.h"
#include "chrome/browser/local_data_container.h"
#include "chrome/common/content_settings.h"
+#include "chrome/common/extensions/extension_set.h"
#include "net/base/server_bound_cert_store.h"
#include "net/cookies/cookie_monster.h"
#include "ui/base/models/tree_node_model.h"
@@ -41,17 +42,17 @@ class CookieTreeDatabaseNode;
class CookieTreeDatabasesNode;
class CookieTreeFileSystemNode;
class CookieTreeFileSystemsNode;
+class CookieTreeHostNode;
class CookieTreeIndexedDBNode;
class CookieTreeIndexedDBsNode;
class CookieTreeLocalStorageNode;
class CookieTreeLocalStoragesNode;
-class CookieTreeOriginNode;
class CookieTreeQuotaNode;
class CookieTreeServerBoundCertNode;
class CookieTreeServerBoundCertsNode;
class CookieTreeSessionStorageNode;
class CookieTreeSessionStoragesNode;
-
+class ExtensionSpecialStoragePolicy;
// CookieTreeNode -------------------------------------------------------------
// The base node type in the Cookies, Databases, and Local Storage options
@@ -67,7 +68,7 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
enum NodeType {
TYPE_NONE,
TYPE_ROOT, // This is used for CookieTreeRootNode nodes.
- TYPE_ORIGIN, // This is used for CookieTreeOriginNode nodes.
+ TYPE_HOST, // This is used for CookieTreeHostNode nodes.
TYPE_COOKIES, // This is used for CookieTreeCookiesNode nodes.
TYPE_COOKIE, // This is used for CookieTreeCookieNode nodes.
TYPE_DATABASES, // This is used for CookieTreeDatabasesNode.
@@ -87,103 +88,37 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
TYPE_SERVER_BOUND_CERT, // Used for CookieTreeServerBoundCertNode.
};
- // TODO(viettrungluu): Figure out whether we want to store |origin| as a
- // |string16| or a (UTF-8) |std::string|, and convert.
- explicit DetailedInfo(const string16& origin)
- : origin(origin),
- node_type(TYPE_NONE),
- cookie(NULL),
- database_info(NULL),
- local_storage_info(NULL),
- session_storage_info(NULL),
- appcache_info(NULL),
- indexed_db_info(NULL),
- file_system_info(NULL),
- quota_info(NULL),
- server_bound_cert(NULL) {}
-
- DetailedInfo& Init(NodeType type) {
- DCHECK_EQ(TYPE_NONE, node_type);
- node_type = type;
- 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();
+ ~DetailedInfo();
+ DetailedInfo& Init(NodeType type);
+ DetailedInfo& InitHost(const std::string& app_id,
+ const std::string& app_name);
DetailedInfo& InitCookie(
- const net::CookieMonster::CanonicalCookie* cookie) {
- Init(TYPE_COOKIE);
- this->cookie = cookie;
- return *this;
- }
-
+ const net::CookieMonster::CanonicalCookie* cookie);
DetailedInfo& InitDatabase(
- const BrowsingDataDatabaseHelper::DatabaseInfo* database_info) {
- Init(TYPE_DATABASE);
- this->database_info = database_info;
- return *this;
- }
-
+ const BrowsingDataDatabaseHelper::DatabaseInfo* database_info);
DetailedInfo& InitLocalStorage(
const BrowsingDataLocalStorageHelper::LocalStorageInfo*
- local_storage_info) {
- Init(TYPE_LOCAL_STORAGE);
- this->local_storage_info = local_storage_info;
- return *this;
- }
-
+ local_storage_info);
DetailedInfo& InitSessionStorage(
const BrowsingDataLocalStorageHelper::LocalStorageInfo*
- session_storage_info) {
- Init(TYPE_SESSION_STORAGE);
- this->session_storage_info = session_storage_info;
- return *this;
- }
-
- DetailedInfo& InitAppCache(const appcache::AppCacheInfo* appcache_info) {
- Init(TYPE_APPCACHE);
- this->appcache_info = appcache_info;
- return *this;
- }
-
+ session_storage_info);
+ DetailedInfo& InitAppCache(const GURL& origin,
+ const appcache::AppCacheInfo* appcache_info);
DetailedInfo& InitIndexedDB(
- const BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) {
- Init(TYPE_INDEXED_DB);
- this->indexed_db_info = indexed_db_info;
- return *this;
- }
-
+ const BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info);
DetailedInfo& InitFileSystem(
- const BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info) {
- Init(TYPE_FILE_SYSTEM);
- this->file_system_info = file_system_info;
- return *this;
- }
-
+ const BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info);
DetailedInfo& InitQuota(
- const BrowsingDataQuotaHelper::QuotaInfo* quota_info) {
- Init(TYPE_QUOTA);
- this->quota_info = quota_info;
- return *this;
- }
-
+ const BrowsingDataQuotaHelper::QuotaInfo* quota_info);
DetailedInfo& InitServerBoundCert(
- const net::ServerBoundCertStore::ServerBoundCert* server_bound_cert) {
- Init(TYPE_SERVER_BOUND_CERT);
- this->server_bound_cert = server_bound_cert;
- return *this;
- }
+ const net::ServerBoundCertStore::ServerBoundCert* server_bound_cert);
std::string app_name;
std::string app_id;
- string16 origin;
NodeType node_type;
+ GURL origin;
const net::CookieMonster::CanonicalCookie* cookie;
const BrowsingDataDatabaseHelper::DatabaseInfo* database_info;
const BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info;
@@ -216,7 +151,6 @@ class CookieTreeNode : public ui::TreeNode<CookieTreeNode> {
void AddChildSortedByTitle(CookieTreeNode* new_child);
private:
-
DISALLOW_COPY_AND_ASSIGN(CookieTreeNode);
};
@@ -227,9 +161,9 @@ class CookieTreeRootNode : public CookieTreeNode {
explicit CookieTreeRootNode(CookiesTreeModel* model);
virtual ~CookieTreeRootNode();
- CookieTreeOriginNode* GetOrCreateOriginNode(const GURL& url,
- const std::string& app_id,
- const std::string& app_name);
+ CookieTreeHostNode* GetOrCreateHostNode(const GURL& url,
+ const std::string& app_id,
+ const std::string& app_name);
// CookieTreeNode methods:
virtual CookiesTreeModel* GetModel() const OVERRIDE;
@@ -241,23 +175,23 @@ class CookieTreeRootNode : public CookieTreeNode {
DISALLOW_COPY_AND_ASSIGN(CookieTreeRootNode);
};
-// CookieTreeOriginNode -------------------------------------------------------
-class CookieTreeOriginNode : public CookieTreeNode {
+// CookieTreeHostNode -------------------------------------------------------
+class CookieTreeHostNode : public CookieTreeNode {
public:
- // Returns the origin node's title to use for a given URL.
+ // Returns the host node's title to use for a given URL.
static string16 TitleForUrl(const GURL& url,
const std::string& app_id,
const std::string& app_name);
- explicit CookieTreeOriginNode(const GURL& url,
- const std::string& app_id,
- const std::string& app_name);
- virtual ~CookieTreeOriginNode();
+ explicit CookieTreeHostNode(const GURL& url,
+ const std::string& app_id,
+ const std::string& app_name);
+ virtual ~CookieTreeHostNode();
// CookieTreeNode methods:
virtual DetailedInfo GetDetailedInfo() const OVERRIDE;
- // CookieTreeOriginNode methods:
+ // CookieTreeHostNode methods:
CookieTreeCookiesNode* GetOrCreateCookiesNode();
CookieTreeDatabasesNode* GetOrCreateDatabasesNode();
CookieTreeLocalStoragesNode* GetOrCreateLocalStoragesNode();
@@ -269,6 +203,8 @@ class CookieTreeOriginNode : public CookieTreeNode {
CookieTreeQuotaNode* UpdateOrCreateQuotaNode(
std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info);
+ std::string canonicalized_host() const { return canonicalized_host_; }
+
// Creates an content exception for this origin of type
// CONTENT_SETTINGS_TYPE_COOKIES.
void CreateContentException(CookieSettings* cookie_settings,
@@ -303,7 +239,9 @@ class CookieTreeOriginNode : public CookieTreeNode {
// The URL for which this node was initially created.
GURL url_;
- DISALLOW_COPY_AND_ASSIGN(CookieTreeOriginNode);
+ std::string canonicalized_host_;
+
+ DISALLOW_COPY_AND_ASSIGN(CookieTreeHostNode);
};
// CookieTreeCookieNode ------------------------------------------------------
@@ -636,7 +574,9 @@ class CookieTreeServerBoundCertsNode : public CookieTreeNode {
// CookiesTreeModel -----------------------------------------------------------
class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
public:
- CookiesTreeModel(const ContainerMap& apps_map, bool group_by_cookie_source);
+ CookiesTreeModel(const ContainerMap& apps_map,
+ ExtensionSpecialStoragePolicy* special_storage_policy,
+ bool group_by_cookie_source);
virtual ~CookiesTreeModel();
// Because non-cookie nodes are fetched in a background thread, they are not
@@ -687,6 +627,13 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
// Filter the origins to only display matched results.
void UpdateSearchResults(const string16& filter);
+ // Returns the set of extensions which protect the data item represented by
+ // this node from deletion.
+ // Returns NULL if the node doesn't represent a protected data item or the
+ // special storage policy is NULL.
+ const ExtensionSet* ExtensionsProtectingNode(
+ const CookieTreeNode& cookie_node);
+
// Manages CookiesTreeModel::Observers. This will also call
// TreeNodeModel::AddObserver so that it gets all the proper notifications.
// Note that the converse is not true: simply adding a TreeModelObserver will
@@ -752,6 +699,9 @@ class CookiesTreeModel : public ui::TreeNodeModel<CookieTreeNode> {
// locally stored data.
ContainerMap app_data_map_;
+ // The extension special storage policy; see ExtensionsProtectingNode() above.
+ scoped_refptr<ExtensionSpecialStoragePolicy> special_storage_policy_;
+
// The CookiesTreeModel maintains a separate list of observers that are
// specifically of the type CookiesTreeModel::Observer.
ObserverList<Observer> cookies_observer_list_;
« no previous file with comments | « no previous file | chrome/browser/cookies_tree_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698