| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef CHROME_BROWSER_COOKIES_TREE_MODEL_H_ | 5 #ifndef CHROME_BROWSER_COOKIES_TREE_MODEL_H_ | 
| 6 #define CHROME_BROWSER_COOKIES_TREE_MODEL_H_ | 6 #define CHROME_BROWSER_COOKIES_TREE_MODEL_H_ | 
| 7 | 7 | 
| 8 #include <string> | 8 #include <string> | 
| 9 #include <vector> | 9 #include <vector> | 
| 10 | 10 | 
| 11 #include "app/tree_node_model.h" | 11 #include "app/tree_node_model.h" | 
| 12 #include "base/scoped_ptr.h" | 12 #include "base/scoped_ptr.h" | 
|  | 13 #include "chrome/browser/browsing_data_appcache_helper.h" | 
| 13 #include "chrome/browser/browsing_data_database_helper.h" | 14 #include "chrome/browser/browsing_data_database_helper.h" | 
| 14 #include "chrome/browser/browsing_data_local_storage_helper.h" | 15 #include "chrome/browser/browsing_data_local_storage_helper.h" | 
| 15 #include "net/base/cookie_monster.h" | 16 #include "net/base/cookie_monster.h" | 
| 16 | 17 | 
| 17 class CookiesTreeModel; | 18 class CookiesTreeModel; | 
|  | 19 class CookieTreeAppCacheNode; | 
|  | 20 class CookieTreeAppCachesNode; | 
|  | 21 class CookieTreeCookieNode; | 
|  | 22 class CookieTreeCookiesNode; | 
|  | 23 class CookieTreeDatabaseNode; | 
|  | 24 class CookieTreeDatabasesNode; | 
| 18 class CookieTreeLocalStorageNode; | 25 class CookieTreeLocalStorageNode; | 
| 19 class CookieTreeLocalStoragesNode; | 26 class CookieTreeLocalStoragesNode; | 
| 20 class CookieTreeDatabaseNode; |  | 
| 21 class CookieTreeDatabasesNode; |  | 
| 22 class CookieTreeCookieNode; |  | 
| 23 class CookieTreeCookiesNode; |  | 
| 24 class CookieTreeOriginNode; | 27 class CookieTreeOriginNode; | 
| 25 class Profile; | 28 class Profile; | 
| 26 | 29 | 
| 27 // CookieTreeNode ------------------------------------------------------------- | 30 // CookieTreeNode ------------------------------------------------------------- | 
| 28 // The base node type in the Cookies, Databases, and Local Storage options | 31 // The base node type in the Cookies, Databases, and Local Storage options | 
| 29 // view, from which all other types are derived. Specialized from TreeNode in | 32 // view, from which all other types are derived. Specialized from TreeNode in | 
| 30 // that it has a notion of deleting objects stored in the profile, and being | 33 // that it has a notion of deleting objects stored in the profile, and being | 
| 31 // able to have its children do the same. | 34 // able to have its children do the same. | 
| 32 class CookieTreeNode : public TreeNode<CookieTreeNode> { | 35 class CookieTreeNode : public TreeNode<CookieTreeNode> { | 
| 33  public: | 36  public: | 
| 34   // Used to pull out information for the InfoView (the details display below | 37   // Used to pull out information for the InfoView (the details display below | 
| 35   // the tree control.) | 38   // the tree control.) | 
| 36   struct DetailedInfo { | 39   struct DetailedInfo { | 
| 37     // NodeType corresponds to the various CookieTreeNode types. | 40     // NodeType corresponds to the various CookieTreeNode types. | 
| 38     enum NodeType { | 41     enum NodeType { | 
| 39       TYPE_ROOT,  // This is used for CookieTreeRootNode nodes. | 42       TYPE_ROOT,  // This is used for CookieTreeRootNode nodes. | 
| 40       TYPE_ORIGIN,  // This is used for CookieTreeOriginNode nodes. | 43       TYPE_ORIGIN,  // This is used for CookieTreeOriginNode nodes. | 
| 41       TYPE_COOKIES,  // This is used for CookieTreeCookiesNode nodes. | 44       TYPE_COOKIES,  // This is used for CookieTreeCookiesNode nodes. | 
| 42       TYPE_COOKIE,  // This is used for CookieTreeCookieNode nodes. | 45       TYPE_COOKIE,  // This is used for CookieTreeCookieNode nodes. | 
| 43       TYPE_DATABASES,  // This is used for CookieTreeDatabasesNode. | 46       TYPE_DATABASES,  // This is used for CookieTreeDatabasesNode. | 
| 44       TYPE_DATABASE,  // This is used for CookieTreeDatabaseNode. | 47       TYPE_DATABASE,  // This is used for CookieTreeDatabaseNode. | 
| 45       TYPE_LOCAL_STORAGES,  // This is used for CookieTreeLocalStoragesNode. | 48       TYPE_LOCAL_STORAGES,  // This is used for CookieTreeLocalStoragesNode. | 
| 46       TYPE_LOCAL_STORAGE,  // This is used for CookieTreeLocalStorageNode. | 49       TYPE_LOCAL_STORAGE,  // This is used for CookieTreeLocalStorageNode. | 
|  | 50       TYPE_APPCACHES,  // This is used for CookieTreeAppCachesNode. | 
|  | 51       TYPE_APPCACHE,  // This is used for CookieTreeAppCacheNode. | 
| 47     }; | 52     }; | 
| 48 | 53 | 
| 49     DetailedInfo(const std::wstring& origin, NodeType node_type, | 54     DetailedInfo(const std::wstring& origin, NodeType node_type, | 
| 50         const net::CookieMonster::CookieListPair* cookie, | 55         const net::CookieMonster::CookieListPair* cookie, | 
| 51         const BrowsingDataDatabaseHelper::DatabaseInfo* database_info, | 56         const BrowsingDataDatabaseHelper::DatabaseInfo* database_info, | 
| 52         const BrowsingDataLocalStorageHelper::LocalStorageInfo* | 57         const BrowsingDataLocalStorageHelper::LocalStorageInfo* | 
| 53             local_storage_info) | 58             local_storage_info, | 
|  | 59         const BrowsingDataAppCacheHelper::AppCacheInfo* appcache_info) | 
| 54         : origin(origin), | 60         : origin(origin), | 
| 55           node_type(node_type), | 61           node_type(node_type), | 
| 56           cookie(cookie), | 62           cookie(cookie), | 
| 57           database_info(database_info), | 63           database_info(database_info), | 
| 58           local_storage_info(local_storage_info) { | 64           local_storage_info(local_storage_info), | 
| 59       if (node_type == TYPE_DATABASE) | 65           appcache_info(appcache_info) { | 
| 60         DCHECK(database_info); | 66       DCHECK((node_type != TYPE_DATABASE) || database_info); | 
| 61       if (node_type == TYPE_LOCAL_STORAGE) | 67       DCHECK((node_type != TYPE_LOCAL_STORAGE) || local_storage_info); | 
| 62         DCHECK(local_storage_info); | 68       DCHECK((node_type != TYPE_APPCACHE) || appcache_info); | 
| 63     } | 69     } | 
| 64 | 70 | 
| 65     std::wstring origin; | 71     std::wstring origin; | 
| 66     NodeType node_type; | 72     NodeType node_type; | 
| 67     const net::CookieMonster::CookieListPair* cookie; | 73     const net::CookieMonster::CookieListPair* cookie; | 
| 68     const BrowsingDataDatabaseHelper::DatabaseInfo* database_info; | 74     const BrowsingDataDatabaseHelper::DatabaseInfo* database_info; | 
| 69     const BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info; | 75     const BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info; | 
|  | 76     const BrowsingDataAppCacheHelper::AppCacheInfo* appcache_info; | 
| 70   }; | 77   }; | 
| 71 | 78 | 
| 72   CookieTreeNode() {} | 79   CookieTreeNode() {} | 
| 73   explicit CookieTreeNode(const std::wstring& title) | 80   explicit CookieTreeNode(const std::wstring& title) | 
| 74       : TreeNode<CookieTreeNode>(title) {} | 81       : TreeNode<CookieTreeNode>(title) {} | 
|  | 82   virtual ~CookieTreeNode() {} | 
| 75 | 83 | 
| 76   // Delete backend storage for this node, and any children nodes. (E.g. delete | 84   // Delete backend storage for this node, and any children nodes. (E.g. delete | 
| 77   // the cookie from CookieMonster, clear the database, and so forth.) | 85   // the cookie from CookieMonster, clear the database, and so forth.) | 
| 78   virtual void DeleteStoredObjects(); | 86   virtual void DeleteStoredObjects(); | 
| 79 | 87 | 
| 80   // Gets a pointer back to the associated model for the tree we are in. | 88   // Gets a pointer back to the associated model for the tree we are in. | 
| 81   virtual CookiesTreeModel* GetModel() const; | 89   virtual CookiesTreeModel* GetModel() const; | 
| 82 | 90 | 
| 83   // Returns a struct with detailed information used to populate the details | 91   // Returns a struct with detailed information used to populate the details | 
| 84   // part of the view. | 92   // part of the view. | 
| 85   virtual DetailedInfo GetDetailedInfo() const = 0; | 93   virtual DetailedInfo GetDetailedInfo() const = 0; | 
| 86 | 94 | 
|  | 95  protected: | 
|  | 96   class NodeTitleComparator { | 
|  | 97    public: | 
|  | 98     bool operator() (const CookieTreeNode* lhs, const CookieTreeNode* rhs); | 
|  | 99   }; | 
|  | 100 | 
|  | 101   void AddChildSortedByTitle(CookieTreeNode* new_child); | 
|  | 102 | 
| 87  private: | 103  private: | 
| 88 | 104 | 
| 89   DISALLOW_COPY_AND_ASSIGN(CookieTreeNode); | 105   DISALLOW_COPY_AND_ASSIGN(CookieTreeNode); | 
| 90 }; | 106 }; | 
| 91 | 107 | 
| 92 // CookieTreeRootNode --------------------------------------------------------- | 108 // CookieTreeRootNode --------------------------------------------------------- | 
| 93 // The node at the root of the CookieTree that gets inserted into the view. | 109 // The node at the root of the CookieTree that gets inserted into the view. | 
| 94 class CookieTreeRootNode : public CookieTreeNode { | 110 class CookieTreeRootNode : public CookieTreeNode { | 
| 95  public: | 111  public: | 
| 96   explicit CookieTreeRootNode(CookiesTreeModel* model) : model_(model) {} | 112   explicit CookieTreeRootNode(CookiesTreeModel* model) : model_(model) {} | 
| 97   virtual ~CookieTreeRootNode() {} | 113   virtual ~CookieTreeRootNode() {} | 
| 98 | 114 | 
| 99   CookieTreeOriginNode* GetOrCreateOriginNode(const std::wstring& origin); | 115   CookieTreeOriginNode* GetOrCreateOriginNode(const std::wstring& origin); | 
| 100 | 116 | 
| 101   // CookieTreeNode methods: | 117   // CookieTreeNode methods: | 
| 102   virtual CookiesTreeModel* GetModel() const { return model_; } | 118   virtual CookiesTreeModel* GetModel() const { return model_; } | 
| 103   virtual DetailedInfo GetDetailedInfo() const { | 119   virtual DetailedInfo GetDetailedInfo() const { | 
| 104     return DetailedInfo(std::wstring(), DetailedInfo::TYPE_ROOT, NULL, NULL, | 120     return DetailedInfo(std::wstring(), DetailedInfo::TYPE_ROOT, NULL, NULL, | 
| 105                         NULL); | 121                         NULL, NULL); | 
| 106   } | 122   } | 
| 107  private: | 123  private: | 
| 108 | 124 | 
| 109   CookiesTreeModel* model_; | 125   CookiesTreeModel* model_; | 
| 110 | 126 | 
| 111   DISALLOW_COPY_AND_ASSIGN(CookieTreeRootNode); | 127   DISALLOW_COPY_AND_ASSIGN(CookieTreeRootNode); | 
| 112 }; | 128 }; | 
| 113 | 129 | 
| 114 // CookieTreeOriginNode ------------------------------------------------------- | 130 // CookieTreeOriginNode ------------------------------------------------------- | 
| 115 class CookieTreeOriginNode : public CookieTreeNode { | 131 class CookieTreeOriginNode : public CookieTreeNode { | 
| 116  public: | 132  public: | 
| 117   explicit CookieTreeOriginNode(const std::wstring& origin) | 133   explicit CookieTreeOriginNode(const std::wstring& origin) | 
| 118       : CookieTreeNode(origin), | 134       : CookieTreeNode(origin), | 
| 119         cookies_child_(NULL), | 135         cookies_child_(NULL), | 
| 120         databases_child_(NULL), | 136         databases_child_(NULL), | 
| 121         local_storages_child_(NULL) {} | 137         local_storages_child_(NULL), | 
|  | 138         appcaches_child_(NULL) {} | 
| 122   virtual ~CookieTreeOriginNode() {} | 139   virtual ~CookieTreeOriginNode() {} | 
| 123 | 140 | 
| 124   // CookieTreeNode methods: | 141   // CookieTreeNode methods: | 
| 125   virtual DetailedInfo GetDetailedInfo() const { | 142   virtual DetailedInfo GetDetailedInfo() const { | 
| 126     return DetailedInfo(GetTitle(), DetailedInfo::TYPE_ORIGIN, NULL, NULL, | 143     return DetailedInfo(GetTitle(), DetailedInfo::TYPE_ORIGIN, NULL, NULL, | 
| 127                         NULL); | 144                         NULL, NULL); | 
| 128   } | 145   } | 
| 129 | 146 | 
| 130   // CookieTreeOriginNode methods: | 147   // CookieTreeOriginNode methods: | 
| 131   CookieTreeCookiesNode* GetOrCreateCookiesNode(); | 148   CookieTreeCookiesNode* GetOrCreateCookiesNode(); | 
| 132   CookieTreeDatabasesNode* GetOrCreateDatabasesNode(); | 149   CookieTreeDatabasesNode* GetOrCreateDatabasesNode(); | 
| 133   CookieTreeLocalStoragesNode* GetOrCreateLocalStoragesNode(); | 150   CookieTreeLocalStoragesNode* GetOrCreateLocalStoragesNode(); | 
|  | 151   CookieTreeAppCachesNode* GetOrCreateAppCachesNode(); | 
| 134 | 152 | 
| 135  private: | 153  private: | 
| 136 |  | 
| 137   // A pointer to the COOKIES node. Eventually we will also have database, | 154   // A pointer to the COOKIES node. Eventually we will also have database, | 
| 138   // appcache, local storage, ..., and when we build up the tree we need to | 155   // appcache, local storage, ..., and when we build up the tree we need to | 
| 139   // quickly get a reference to the COOKIES node to add children. Checking each | 156   // quickly get a reference to the COOKIES node to add children. Checking each | 
| 140   // child and interrogating them to see if they are a COOKIES, APPCACHES, | 157   // child and interrogating them to see if they are a COOKIES, APPCACHES, | 
| 141   // DATABASES etc node seems less preferable than storing an extra pointer per | 158   // DATABASES etc node seems less preferable than storing an extra pointer per | 
| 142   // origin. | 159   // origin. | 
| 143   CookieTreeCookiesNode* cookies_child_; | 160   CookieTreeCookiesNode* cookies_child_; | 
| 144   CookieTreeDatabasesNode* databases_child_; | 161   CookieTreeDatabasesNode* databases_child_; | 
| 145   CookieTreeLocalStoragesNode* local_storages_child_; | 162   CookieTreeLocalStoragesNode* local_storages_child_; | 
|  | 163   CookieTreeAppCachesNode* appcaches_child_; | 
| 146 | 164 | 
| 147   DISALLOW_COPY_AND_ASSIGN(CookieTreeOriginNode); | 165   DISALLOW_COPY_AND_ASSIGN(CookieTreeOriginNode); | 
| 148 }; | 166 }; | 
| 149 | 167 | 
| 150 // CookieTreeCookiesNode ------------------------------------------------------ | 168 // CookieTreeCookieNode ------------------------------------------------------ | 
| 151 class CookieTreeCookiesNode : public CookieTreeNode { |  | 
| 152  public: |  | 
| 153   CookieTreeCookiesNode(); |  | 
| 154   virtual ~CookieTreeCookiesNode() {} |  | 
| 155 |  | 
| 156   // CookieTreeNode methods: |  | 
| 157   virtual DetailedInfo GetDetailedInfo() const { |  | 
| 158     return DetailedInfo(GetParent()->GetTitle(), DetailedInfo::TYPE_COOKIES, |  | 
| 159                         NULL, NULL, NULL); |  | 
| 160   } |  | 
| 161 |  | 
| 162   // CookieTreeCookiesNode methods: |  | 
| 163   void AddCookieNode(CookieTreeCookieNode* child); |  | 
| 164 |  | 
| 165  private: |  | 
| 166   DISALLOW_COPY_AND_ASSIGN(CookieTreeCookiesNode); |  | 
| 167 }; |  | 
| 168 |  | 
| 169 class CookieTreeCookieNode : public CookieTreeNode { | 169 class CookieTreeCookieNode : public CookieTreeNode { | 
| 170  public: | 170  public: | 
| 171   friend class CookieTreeCookiesNode; | 171   friend class CookieTreeCookiesNode; | 
| 172 | 172 | 
| 173   // Does not take ownership of cookie, and cookie should remain valid at least | 173   // Does not take ownership of cookie, and cookie should remain valid at least | 
| 174   // as long as the CookieTreeCookieNode is valid. | 174   // as long as the CookieTreeCookieNode is valid. | 
| 175   explicit CookieTreeCookieNode(net::CookieMonster::CookieListPair* cookie); | 175   explicit CookieTreeCookieNode(net::CookieMonster::CookieListPair* cookie); | 
| 176   virtual ~CookieTreeCookieNode() {} | 176   virtual ~CookieTreeCookieNode() {} | 
| 177 | 177 | 
| 178   // CookieTreeNode methods: | 178   // CookieTreeNode methods: | 
| 179   virtual void DeleteStoredObjects(); | 179   virtual void DeleteStoredObjects(); | 
| 180   virtual DetailedInfo GetDetailedInfo() const { | 180   virtual DetailedInfo GetDetailedInfo() const { | 
| 181     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 181     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 
| 182                         DetailedInfo::TYPE_COOKIE, cookie_, NULL, NULL); | 182                         DetailedInfo::TYPE_COOKIE, cookie_, NULL, NULL, NULL); | 
| 183   } | 183   } | 
| 184 | 184 | 
| 185  private: | 185  private: | 
| 186   // Comparator functor, takes CookieTreeNode so that we can use it in |  | 
| 187   // lower_bound using children()'s iterators, which are CookieTreeNode*. |  | 
| 188   class CookieNodeComparator { |  | 
| 189    public: |  | 
| 190     bool operator() (const CookieTreeNode* lhs, const CookieTreeNode* rhs); |  | 
| 191   }; |  | 
| 192 |  | 
| 193   // Cookie_ is not owned by the node, and is expected to remain valid as long | 186   // Cookie_ is not owned by the node, and is expected to remain valid as long | 
| 194   // as the CookieTreeCookieNode is valid. | 187   // as the CookieTreeCookieNode is valid. | 
| 195   net::CookieMonster::CookieListPair* cookie_; | 188   net::CookieMonster::CookieListPair* cookie_; | 
| 196 | 189 | 
| 197   DISALLOW_COPY_AND_ASSIGN(CookieTreeCookieNode); | 190   DISALLOW_COPY_AND_ASSIGN(CookieTreeCookieNode); | 
| 198 }; | 191 }; | 
| 199 | 192 | 
| 200 // CookieTreeDatabasesNode ----------------------------------------------------- | 193 class CookieTreeCookiesNode : public CookieTreeNode { | 
| 201 class CookieTreeDatabasesNode : public CookieTreeNode { |  | 
| 202  public: | 194  public: | 
| 203   CookieTreeDatabasesNode(); | 195   CookieTreeCookiesNode(); | 
| 204   virtual ~CookieTreeDatabasesNode() {} | 196   virtual ~CookieTreeCookiesNode() {} | 
| 205 | 197 | 
| 206   // CookieTreeNode methods: | 198   virtual DetailedInfo GetDetailedInfo() const { | 
|  | 199     return DetailedInfo(GetParent()->GetTitle(), DetailedInfo::TYPE_COOKIES, | 
|  | 200                         NULL, NULL, NULL, NULL); | 
|  | 201   } | 
|  | 202 | 
|  | 203   void AddCookieNode(CookieTreeCookieNode* child) { | 
|  | 204     AddChildSortedByTitle(child); | 
|  | 205   } | 
|  | 206 | 
|  | 207  private: | 
|  | 208   DISALLOW_COPY_AND_ASSIGN(CookieTreeCookiesNode); | 
|  | 209 }; | 
|  | 210 | 
|  | 211 // CookieTreeAppCacheNode ----------------------------------------------------- | 
|  | 212 class CookieTreeAppCacheNode : public CookieTreeNode { | 
|  | 213  public: | 
|  | 214   friend class CookieTreeAppCachesNode; | 
|  | 215 | 
|  | 216   // Does not take ownership of appcache_info, and appcache_info should remain | 
|  | 217   // valid at least as long as the CookieTreeAppCacheNode is valid. | 
|  | 218   explicit CookieTreeAppCacheNode( | 
|  | 219       const BrowsingDataAppCacheHelper::AppCacheInfo* appcache_info); | 
|  | 220   virtual ~CookieTreeAppCacheNode() {} | 
|  | 221 | 
|  | 222   virtual void DeleteStoredObjects(); | 
|  | 223   virtual DetailedInfo GetDetailedInfo() const { | 
|  | 224     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 
|  | 225                         DetailedInfo::TYPE_APPCACHE, | 
|  | 226                         NULL, NULL, NULL, appcache_info_); | 
|  | 227   } | 
|  | 228 | 
|  | 229  private: | 
|  | 230   const BrowsingDataAppCacheHelper::AppCacheInfo* appcache_info_; | 
|  | 231   DISALLOW_COPY_AND_ASSIGN(CookieTreeAppCacheNode); | 
|  | 232 }; | 
|  | 233 | 
|  | 234 class CookieTreeAppCachesNode : public CookieTreeNode { | 
|  | 235  public: | 
|  | 236   CookieTreeAppCachesNode(); | 
|  | 237   virtual ~CookieTreeAppCachesNode() {} | 
|  | 238 | 
| 207   virtual DetailedInfo GetDetailedInfo() const { | 239   virtual DetailedInfo GetDetailedInfo() const { | 
| 208     return DetailedInfo(GetParent()->GetTitle(), | 240     return DetailedInfo(GetParent()->GetTitle(), | 
| 209                         DetailedInfo::TYPE_DATABASES, | 241                         DetailedInfo::TYPE_APPCACHES, | 
| 210                         NULL, NULL, NULL); | 242                         NULL, NULL, NULL, NULL); | 
| 211   } | 243   } | 
| 212 | 244 | 
| 213   // CookieTreeDatabases methods: | 245   void AddAppCacheNode(CookieTreeAppCacheNode* child) { | 
| 214   void AddDatabaseNode(CookieTreeDatabaseNode* child); | 246     AddChildSortedByTitle(child); | 
|  | 247   } | 
| 215 | 248 | 
| 216  private: | 249  private: | 
| 217   DISALLOW_COPY_AND_ASSIGN(CookieTreeDatabasesNode); | 250   DISALLOW_COPY_AND_ASSIGN(CookieTreeAppCachesNode); | 
| 218 }; | 251 }; | 
| 219 | 252 | 
|  | 253 // CookieTreeDatabaseNode ----------------------------------------------------- | 
| 220 class CookieTreeDatabaseNode : public CookieTreeNode { | 254 class CookieTreeDatabaseNode : public CookieTreeNode { | 
| 221  public: | 255  public: | 
| 222   friend class CookieTreeDatabasesNode; | 256   friend class CookieTreeDatabasesNode; | 
| 223 | 257 | 
| 224   // Does not take ownership of database_info, and database_info should remain | 258   // Does not take ownership of database_info, and database_info should remain | 
| 225   // valid at least as long as the CookieTreeDatabaseNode is valid. | 259   // valid at least as long as the CookieTreeDatabaseNode is valid. | 
| 226   explicit CookieTreeDatabaseNode( | 260   explicit CookieTreeDatabaseNode( | 
| 227       BrowsingDataDatabaseHelper::DatabaseInfo* database_info); | 261       BrowsingDataDatabaseHelper::DatabaseInfo* database_info); | 
| 228   virtual ~CookieTreeDatabaseNode() {} | 262   virtual ~CookieTreeDatabaseNode() {} | 
| 229 | 263 | 
| 230   // CookieTreeStorageNode methods: |  | 
| 231   virtual void DeleteStoredObjects(); | 264   virtual void DeleteStoredObjects(); | 
| 232   virtual DetailedInfo GetDetailedInfo() const { | 265   virtual DetailedInfo GetDetailedInfo() const { | 
| 233     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 266     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 
| 234                         DetailedInfo::TYPE_DATABASE, NULL, database_info_, | 267                         DetailedInfo::TYPE_DATABASE, NULL, database_info_, | 
| 235                         NULL); | 268                         NULL, NULL); | 
| 236   } | 269   } | 
| 237 | 270 | 
| 238  private: | 271  private: | 
| 239   // Comparator functor, takes CookieTreeNode so that we can use it in |  | 
| 240   // lower_bound using children()'s iterators, which are CookieTreeNode*. |  | 
| 241   class CookieNodeComparator { |  | 
| 242    public: |  | 
| 243     bool operator() (const CookieTreeNode* lhs, const CookieTreeNode* rhs); |  | 
| 244   }; |  | 
| 245 |  | 
| 246   // database_info_ is not owned by the node, and is expected to remain | 272   // database_info_ is not owned by the node, and is expected to remain | 
| 247   // valid as long as the CookieTreeDatabaseNode is valid. | 273   // valid as long as the CookieTreeDatabaseNode is valid. | 
| 248   BrowsingDataDatabaseHelper::DatabaseInfo* database_info_; | 274   BrowsingDataDatabaseHelper::DatabaseInfo* database_info_; | 
| 249 | 275 | 
| 250   DISALLOW_COPY_AND_ASSIGN(CookieTreeDatabaseNode); | 276   DISALLOW_COPY_AND_ASSIGN(CookieTreeDatabaseNode); | 
| 251 }; | 277 }; | 
| 252 | 278 | 
| 253 // CookieTreeLocalStoragesNode ------------------------------------------------- | 279 class CookieTreeDatabasesNode : public CookieTreeNode { | 
| 254 class CookieTreeLocalStoragesNode : public CookieTreeNode { |  | 
| 255  public: | 280  public: | 
| 256   CookieTreeLocalStoragesNode(); | 281   CookieTreeDatabasesNode(); | 
| 257   virtual ~CookieTreeLocalStoragesNode() {} | 282   virtual ~CookieTreeDatabasesNode() {} | 
| 258 | 283 | 
| 259   // CookieTreeNode methods: |  | 
| 260   virtual DetailedInfo GetDetailedInfo() const { | 284   virtual DetailedInfo GetDetailedInfo() const { | 
| 261     return DetailedInfo(GetParent()->GetTitle(), | 285     return DetailedInfo(GetParent()->GetTitle(), | 
| 262                         DetailedInfo::TYPE_LOCAL_STORAGES, | 286                         DetailedInfo::TYPE_DATABASES, | 
| 263                         NULL, NULL, NULL); | 287                         NULL, NULL, NULL, NULL); | 
| 264   } | 288   } | 
| 265 | 289 | 
| 266   // CookieTreeStoragesNode methods: | 290   void AddDatabaseNode(CookieTreeDatabaseNode* child) { | 
| 267   void AddLocalStorageNode(CookieTreeLocalStorageNode* child); | 291     AddChildSortedByTitle(child); | 
|  | 292   } | 
| 268 | 293 | 
| 269  private: | 294  private: | 
| 270   DISALLOW_COPY_AND_ASSIGN(CookieTreeLocalStoragesNode); | 295   DISALLOW_COPY_AND_ASSIGN(CookieTreeDatabasesNode); | 
| 271 }; | 296 }; | 
| 272 | 297 | 
|  | 298 | 
|  | 299 // CookieTreeLocalStorageNode ------------------------------------------------- | 
| 273 class CookieTreeLocalStorageNode : public CookieTreeNode { | 300 class CookieTreeLocalStorageNode : public CookieTreeNode { | 
| 274  public: | 301  public: | 
| 275   friend class CookieTreeLocalStoragesNode; | 302   friend class CookieTreeLocalStoragesNode; | 
| 276 | 303 | 
| 277   // Does not take ownership of local_storage_info, and local_storage_info | 304   // Does not take ownership of local_storage_info, and local_storage_info | 
| 278   // should remain valid at least as long as the CookieTreeStorageNode is valid. | 305   // should remain valid at least as long as the CookieTreeStorageNode is valid. | 
| 279   explicit CookieTreeLocalStorageNode( | 306   explicit CookieTreeLocalStorageNode( | 
| 280       BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info); | 307       BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info); | 
| 281   virtual ~CookieTreeLocalStorageNode() {} | 308   virtual ~CookieTreeLocalStorageNode() {} | 
| 282 | 309 | 
| 283   // CookieTreeStorageNode methods: | 310   // CookieTreeStorageNode methods: | 
| 284   virtual void DeleteStoredObjects(); | 311   virtual void DeleteStoredObjects(); | 
| 285   virtual DetailedInfo GetDetailedInfo() const { | 312   virtual DetailedInfo GetDetailedInfo() const { | 
| 286     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 313     return DetailedInfo(GetParent()->GetParent()->GetTitle(), | 
| 287                         DetailedInfo::TYPE_LOCAL_STORAGE, NULL, NULL, | 314                         DetailedInfo::TYPE_LOCAL_STORAGE, NULL, NULL, | 
| 288                         local_storage_info_); | 315                         local_storage_info_, NULL); | 
| 289   } | 316   } | 
| 290 | 317 | 
| 291  private: | 318  private: | 
| 292   // Comparator functor, takes CookieTreeNode so that we can use it in |  | 
| 293   // lower_bound using children()'s iterators, which are CookieTreeNode*. |  | 
| 294   class CookieNodeComparator { |  | 
| 295    public: |  | 
| 296     bool operator() (const CookieTreeNode* lhs, const CookieTreeNode* rhs); |  | 
| 297   }; |  | 
| 298 |  | 
| 299   // local_storage_info_ is not owned by the node, and is expected to remain | 319   // local_storage_info_ is not owned by the node, and is expected to remain | 
| 300   // valid as long as the CookieTreeLocalStorageNode is valid. | 320   // valid as long as the CookieTreeLocalStorageNode is valid. | 
| 301   BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info_; | 321   BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info_; | 
| 302 | 322 | 
| 303   DISALLOW_COPY_AND_ASSIGN(CookieTreeLocalStorageNode); | 323   DISALLOW_COPY_AND_ASSIGN(CookieTreeLocalStorageNode); | 
| 304 }; | 324 }; | 
| 305 | 325 | 
|  | 326 class CookieTreeLocalStoragesNode : public CookieTreeNode { | 
|  | 327  public: | 
|  | 328   CookieTreeLocalStoragesNode(); | 
|  | 329   virtual ~CookieTreeLocalStoragesNode() {} | 
|  | 330 | 
|  | 331   virtual DetailedInfo GetDetailedInfo() const { | 
|  | 332     return DetailedInfo(GetParent()->GetTitle(), | 
|  | 333                         DetailedInfo::TYPE_LOCAL_STORAGES, | 
|  | 334                         NULL, NULL, NULL, NULL); | 
|  | 335   } | 
|  | 336 | 
|  | 337   void AddLocalStorageNode(CookieTreeLocalStorageNode* child) { | 
|  | 338     AddChildSortedByTitle(child); | 
|  | 339   } | 
|  | 340 | 
|  | 341  private: | 
|  | 342   DISALLOW_COPY_AND_ASSIGN(CookieTreeLocalStoragesNode); | 
|  | 343 }; | 
|  | 344 | 
| 306 class CookiesTreeModel : public TreeNodeModel<CookieTreeNode> { | 345 class CookiesTreeModel : public TreeNodeModel<CookieTreeNode> { | 
| 307  public: | 346  public: | 
| 308   CookiesTreeModel( | 347   CookiesTreeModel( | 
| 309       Profile* profile, | 348       Profile* profile, | 
| 310       BrowsingDataDatabaseHelper* browsing_data_database_helper, | 349       BrowsingDataDatabaseHelper* database_helper, | 
| 311       BrowsingDataLocalStorageHelper* browsing_data_local_storage_helper); | 350       BrowsingDataLocalStorageHelper* local_storage_helper, | 
|  | 351       BrowsingDataAppCacheHelper* appcache_helper); | 
| 312   virtual ~CookiesTreeModel(); | 352   virtual ~CookiesTreeModel(); | 
| 313 | 353 | 
| 314   // TreeModel methods: | 354   // TreeModel methods: | 
| 315   // Returns the set of icons for the nodes in the tree. You only need override | 355   // Returns the set of icons for the nodes in the tree. You only need override | 
| 316   // this if you don't want to use the default folder icons. | 356   // this if you don't want to use the default folder icons. | 
| 317   virtual void GetIcons(std::vector<SkBitmap>* icons); | 357   virtual void GetIcons(std::vector<SkBitmap>* icons); | 
| 318 | 358 | 
| 319   // Returns the index of the icon to use for |node|. Return -1 to use the | 359   // Returns the index of the icon to use for |node|. Return -1 to use the | 
| 320   // default icon. The index is relative to the list of icons returned from | 360   // default icon. The index is relative to the list of icons returned from | 
| 321   // GetIcons. | 361   // GetIcons. | 
| 322   virtual int GetIconIndex(TreeModelNode* node); | 362   virtual int GetIconIndex(TreeModelNode* node); | 
| 323 | 363 | 
| 324   // CookiesTreeModel methods: | 364   // CookiesTreeModel methods: | 
| 325   void DeleteAllStoredObjects(); | 365   void DeleteAllStoredObjects(); | 
| 326   void DeleteCookieNode(CookieTreeNode* cookie_node); | 366   void DeleteCookieNode(CookieTreeNode* cookie_node); | 
| 327 | 367 | 
| 328   // Filter the origins to only display matched results. | 368   // Filter the origins to only display matched results. | 
| 329   void UpdateSearchResults(const std::wstring& filter); | 369   void UpdateSearchResults(const std::wstring& filter); | 
| 330 | 370 | 
| 331  private: | 371  private: | 
| 332   enum CookieIconIndex { | 372   enum CookieIconIndex { | 
| 333     ORIGIN = 0, | 373     ORIGIN = 0, | 
| 334     COOKIE = 1, | 374     COOKIE = 1, | 
| 335     DATABASE = 2, | 375     DATABASE = 2 | 
| 336     LOCAL_STORAGE = 3, |  | 
| 337   }; | 376   }; | 
| 338   typedef net::CookieMonster::CookieList CookieList; | 377   typedef net::CookieMonster::CookieList CookieList; | 
| 339   typedef std::vector<net::CookieMonster::CookieListPair*> CookiePtrList; | 378   typedef std::vector<net::CookieMonster::CookieListPair*> CookiePtrList; | 
|  | 379   typedef std::vector<BrowsingDataAppCacheHelper::AppCacheInfo> | 
|  | 380       AppCacheInfoList; | 
| 340   typedef std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> | 381   typedef std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> | 
| 341       DatabaseInfoList; | 382       DatabaseInfoList; | 
| 342   typedef std::vector<BrowsingDataLocalStorageHelper::LocalStorageInfo> | 383   typedef std::vector<BrowsingDataLocalStorageHelper::LocalStorageInfo> | 
| 343       LocalStorageInfoList; | 384       LocalStorageInfoList; | 
| 344 | 385 | 
| 345   void LoadCookies(); | 386   void LoadCookies(); | 
| 346   void LoadCookiesWithFilter(const std::wstring& filter); | 387   void LoadCookiesWithFilter(const std::wstring& filter); | 
| 347 | 388 | 
|  | 389   void OnAppCacheModelInfoLoaded(); | 
| 348   void OnDatabaseModelInfoLoaded(const DatabaseInfoList& database_info); | 390   void OnDatabaseModelInfoLoaded(const DatabaseInfoList& database_info); | 
| 349 |  | 
| 350   void OnStorageModelInfoLoaded(const LocalStorageInfoList& local_storage_info); | 391   void OnStorageModelInfoLoaded(const LocalStorageInfoList& local_storage_info); | 
| 351 | 392 | 
|  | 393   void PopulateAppCacheInfoWithFilter(const std::wstring& filter); | 
| 352   void PopulateDatabaseInfoWithFilter(const std::wstring& filter); | 394   void PopulateDatabaseInfoWithFilter(const std::wstring& filter); | 
| 353 |  | 
| 354   void PopulateLocalStorageInfoWithFilter(const std::wstring& filter); | 395   void PopulateLocalStorageInfoWithFilter(const std::wstring& filter); | 
| 355 | 396 | 
| 356   // The profile from which this model sources cookies. | 397   // The profile from which this model sources cookies. | 
| 357   Profile* profile_; | 398   Profile* profile_; | 
| 358   CookieList all_cookies_; | 399   CookieList all_cookies_; | 
| 359 | 400 | 
|  | 401   scoped_refptr<BrowsingDataAppCacheHelper> appcache_helper_; | 
| 360   scoped_refptr<BrowsingDataDatabaseHelper> database_helper_; | 402   scoped_refptr<BrowsingDataDatabaseHelper> database_helper_; | 
| 361   DatabaseInfoList database_info_list_; | 403   DatabaseInfoList database_info_list_; | 
| 362 | 404 | 
| 363   scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper_; | 405   scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper_; | 
| 364   LocalStorageInfoList local_storage_info_list_; | 406   LocalStorageInfoList local_storage_info_list_; | 
| 365 | 407 | 
|  | 408   friend class CookieTreeAppCacheNode; | 
| 366   friend class CookieTreeCookieNode; | 409   friend class CookieTreeCookieNode; | 
| 367   friend class CookieTreeDatabaseNode; | 410   friend class CookieTreeDatabaseNode; | 
| 368   friend class CookieTreeLocalStorageNode; | 411   friend class CookieTreeLocalStorageNode; | 
| 369 | 412 | 
| 370   DISALLOW_COPY_AND_ASSIGN(CookiesTreeModel); | 413   DISALLOW_COPY_AND_ASSIGN(CookiesTreeModel); | 
| 371 }; | 414 }; | 
| 372 | 415 | 
| 373 #endif  // CHROME_BROWSER_COOKIES_TREE_MODEL_H_ | 416 #endif  // CHROME_BROWSER_COOKIES_TREE_MODEL_H_ | 
| OLD | NEW | 
|---|