| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_BOOKMARKS_BOOKMARK_MODEL_H_ | 5 #ifndef CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_H_ |
| 6 #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_H_ | 6 #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 | 45 |
| 46 // BookmarkNode contains information about a starred entry: title, URL, favicon, | 46 // BookmarkNode contains information about a starred entry: title, URL, favicon, |
| 47 // id and type. BookmarkNodes are returned from BookmarkModel. | 47 // id and type. BookmarkNodes are returned from BookmarkModel. |
| 48 class BookmarkNode : public ui::TreeNode<BookmarkNode> { | 48 class BookmarkNode : public ui::TreeNode<BookmarkNode> { |
| 49 public: | 49 public: |
| 50 enum Type { | 50 enum Type { |
| 51 URL, | 51 URL, |
| 52 FOLDER, | 52 FOLDER, |
| 53 BOOKMARK_BAR, | 53 BOOKMARK_BAR, |
| 54 OTHER_NODE, | 54 OTHER_NODE, |
| 55 MOBILE | 55 MOBILE, |
| 56 APPS_NODE |
| 56 }; | 57 }; |
| 57 | 58 |
| 58 enum FaviconState { | 59 enum FaviconState { |
| 59 INVALID_FAVICON, | 60 INVALID_FAVICON, |
| 60 LOADING_FAVICON, | 61 LOADING_FAVICON, |
| 61 LOADED_FAVICON, | 62 LOADED_FAVICON, |
| 62 }; | 63 }; |
| 63 | 64 |
| 64 // Creates a new node with an id of 0 and |url|. | 65 // Creates a new node with an id of 0 and |url|. |
| 65 explicit BookmarkNode(const GURL& url); | 66 explicit BookmarkNode(const GURL& url); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 // for folders (including the bookmark bar and other folder). | 98 // for folders (including the bookmark bar and other folder). |
| 98 const base::Time& date_folder_modified() const { | 99 const base::Time& date_folder_modified() const { |
| 99 return date_folder_modified_; | 100 return date_folder_modified_; |
| 100 } | 101 } |
| 101 void set_date_folder_modified(const base::Time& date) { | 102 void set_date_folder_modified(const base::Time& date) { |
| 102 date_folder_modified_ = date; | 103 date_folder_modified_ = date; |
| 103 } | 104 } |
| 104 | 105 |
| 105 // Convenience for testing if this node represents a folder. A folder is a | 106 // Convenience for testing if this node represents a folder. A folder is a |
| 106 // node whose type is not URL. | 107 // node whose type is not URL. |
| 107 bool is_folder() const { return type_ != URL; } | 108 bool is_folder() const { return type_ != URL && type_ != APPS_NODE; } |
| 108 bool is_url() const { return type_ == URL; } | 109 bool is_url() const { return type_ == URL; } |
| 109 | 110 |
| 110 bool is_favicon_loaded() const { return favicon_state_ == LOADED_FAVICON; } | 111 bool is_favicon_loaded() const { return favicon_state_ == LOADED_FAVICON; } |
| 111 | 112 |
| 112 // Accessor method for controlling the visibility of a bookmark node/sub-tree. | 113 // Accessor method for controlling the visibility of a bookmark node/sub-tree. |
| 113 // Note that visibility is not propagated down the tree hierarchy so if a | 114 // Note that visibility is not propagated down the tree hierarchy so if a |
| 114 // parent node is marked as invisible, a child node may return "Visible". This | 115 // parent node is marked as invisible, a child node may return "Visible". This |
| 115 // function is primarily useful when traversing the model to generate a UI | 116 // function is primarily useful when traversing the model to generate a UI |
| 116 // representation but we may want to suppress some nodes. | 117 // representation but we may want to suppress some nodes. |
| 117 virtual bool IsVisible() const; | 118 virtual bool IsVisible() const; |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 | 249 |
| 249 // Returns the 'bookmark bar' node. This is NULL until loaded. | 250 // Returns the 'bookmark bar' node. This is NULL until loaded. |
| 250 const BookmarkNode* bookmark_bar_node() { return bookmark_bar_node_; } | 251 const BookmarkNode* bookmark_bar_node() { return bookmark_bar_node_; } |
| 251 | 252 |
| 252 // Returns the 'other' node. This is NULL until loaded. | 253 // Returns the 'other' node. This is NULL until loaded. |
| 253 const BookmarkNode* other_node() { return other_node_; } | 254 const BookmarkNode* other_node() { return other_node_; } |
| 254 | 255 |
| 255 // Returns the 'mobile' node. This is NULL until loaded. | 256 // Returns the 'mobile' node. This is NULL until loaded. |
| 256 const BookmarkNode* mobile_node() { return mobile_node_; } | 257 const BookmarkNode* mobile_node() { return mobile_node_; } |
| 257 | 258 |
| 259 // Returns the 'apps' node. This is NULL until loaded or if there is no apps |
| 260 // node. |
| 261 const BookmarkNode* apps_node() { return apps_node_; } |
| 262 |
| 258 bool is_root_node(const BookmarkNode* node) const { return node == &root_; } | 263 bool is_root_node(const BookmarkNode* node) const { return node == &root_; } |
| 259 | 264 |
| 260 // Returns whether the given |node| is one of the permanent nodes - root node, | 265 // Returns whether the given |node| is one of the permanent nodes - root node, |
| 261 // 'bookmark bar' node, 'other' node or 'mobile' node. | 266 // 'bookmark bar' node, 'other' node, 'mobile' node or 'apps' node. |
| 262 bool is_permanent_node(const BookmarkNode* node) const { | 267 bool is_permanent_node(const BookmarkNode* node) const { |
| 263 return node == &root_ || | 268 return node == &root_ || |
| 264 node == bookmark_bar_node_ || | 269 node == bookmark_bar_node_ || |
| 265 node == other_node_ || | 270 node == other_node_ || |
| 266 node == mobile_node_; | 271 node == mobile_node_ || |
| 272 node == apps_node_; |
| 267 } | 273 } |
| 268 | 274 |
| 269 Profile* profile() { return profile_; } | 275 Profile* profile() { return profile_; } |
| 270 | 276 |
| 271 // Returns the parent the last node was added to. This never returns NULL | 277 // Returns the parent the last node was added to. This never returns NULL |
| 272 // (as long as the model is loaded). | 278 // (as long as the model is loaded). |
| 273 const BookmarkNode* GetParentForNewNodes(); | 279 const BookmarkNode* GetParentForNewNodes(); |
| 274 | 280 |
| 275 void AddObserver(BookmarkModelObserver* observer); | 281 void AddObserver(BookmarkModelObserver* observer); |
| 276 void RemoveObserver(BookmarkModelObserver* observer); | 282 void RemoveObserver(BookmarkModelObserver* observer); |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 // Whether the initial set of data has been loaded. | 497 // Whether the initial set of data has been loaded. |
| 492 bool loaded_; | 498 bool loaded_; |
| 493 | 499 |
| 494 // The root node. This contains the bookmark bar node and the 'other' node as | 500 // The root node. This contains the bookmark bar node and the 'other' node as |
| 495 // children. | 501 // children. |
| 496 BookmarkNode root_; | 502 BookmarkNode root_; |
| 497 | 503 |
| 498 BookmarkPermanentNode* bookmark_bar_node_; | 504 BookmarkPermanentNode* bookmark_bar_node_; |
| 499 BookmarkPermanentNode* other_node_; | 505 BookmarkPermanentNode* other_node_; |
| 500 BookmarkPermanentNode* mobile_node_; | 506 BookmarkPermanentNode* mobile_node_; |
| 507 BookmarkPermanentNode* apps_node_; |
| 501 | 508 |
| 502 // The maximum ID assigned to the bookmark nodes in the model. | 509 // The maximum ID assigned to the bookmark nodes in the model. |
| 503 int64 next_node_id_; | 510 int64 next_node_id_; |
| 504 | 511 |
| 505 // The observers. | 512 // The observers. |
| 506 ObserverList<BookmarkModelObserver> observers_; | 513 ObserverList<BookmarkModelObserver> observers_; |
| 507 | 514 |
| 508 // Set of nodes ordered by URL. This is not a map to avoid copying the | 515 // Set of nodes ordered by URL. This is not a map to avoid copying the |
| 509 // urls. | 516 // urls. |
| 510 // WARNING: |nodes_ordered_by_url_set_| is accessed on multiple threads. As | 517 // WARNING: |nodes_ordered_by_url_set_| is accessed on multiple threads. As |
| (...skipping 14 matching lines...) Expand all Loading... |
| 525 | 532 |
| 526 // See description of IsDoingExtensiveChanges above. | 533 // See description of IsDoingExtensiveChanges above. |
| 527 int extensive_changes_; | 534 int extensive_changes_; |
| 528 | 535 |
| 529 scoped_ptr<BookmarkExpandedStateTracker> expanded_state_tracker_; | 536 scoped_ptr<BookmarkExpandedStateTracker> expanded_state_tracker_; |
| 530 | 537 |
| 531 DISALLOW_COPY_AND_ASSIGN(BookmarkModel); | 538 DISALLOW_COPY_AND_ASSIGN(BookmarkModel); |
| 532 }; | 539 }; |
| 533 | 540 |
| 534 #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_H_ | 541 #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_H_ |
| OLD | NEW |