OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_NODE_H_ | 5 #ifndef COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_NODE_H_ |
6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_NODE_H_ | 6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_NODE_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 | 11 |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/ptr_util.h" |
13 #include "base/task/cancelable_task_tracker.h" | 14 #include "base/task/cancelable_task_tracker.h" |
14 #include "base/time/time.h" | 15 #include "base/time/time.h" |
15 #include "components/bookmarks/browser/titled_url_node.h" | 16 #include "components/bookmarks/browser/titled_url_node.h" |
16 #include "components/favicon_base/favicon_types.h" | 17 #include "components/favicon_base/favicon_types.h" |
17 #include "ui/base/models/tree_node_model.h" | 18 #include "ui/base/models/tree_node_model.h" |
18 #include "ui/gfx/image/image.h" | 19 #include "ui/gfx/image/image.h" |
19 #include "url/gurl.h" | 20 #include "url/gurl.h" |
20 | 21 |
21 namespace bookmarks { | 22 namespace bookmarks { |
22 | 23 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 // For bookmark nodes that are managed by the bookmark model, the IDs are | 63 // For bookmark nodes that are managed by the bookmark model, the IDs are |
63 // persisted across sessions. | 64 // persisted across sessions. |
64 int64_t id() const { return id_; } | 65 int64_t id() const { return id_; } |
65 void set_id(int64_t id) { id_ = id; } | 66 void set_id(int64_t id) { id_ = id; } |
66 | 67 |
67 const GURL& url() const { return url_; } | 68 const GURL& url() const { return url_; } |
68 void set_url(const GURL& url) { url_ = url; } | 69 void set_url(const GURL& url) { url_ = url; } |
69 | 70 |
70 // Returns the favicon's URL. Returns an empty URL if there is no favicon | 71 // Returns the favicon's URL. Returns an empty URL if there is no favicon |
71 // associated with this bookmark. | 72 // associated with this bookmark. |
72 const GURL& icon_url() const { return icon_url_; } | 73 const GURL* icon_url() const { return icon_url_ ? icon_url_.get() : nullptr; } |
73 | 74 |
74 Type type() const { return type_; } | 75 Type type() const { return type_; } |
75 void set_type(Type type) { type_ = type; } | 76 void set_type(Type type) { type_ = type; } |
76 | 77 |
77 // Returns the time the node was added. | 78 // Returns the time the node was added. |
78 const base::Time& date_added() const { return date_added_; } | 79 const base::Time& date_added() const { return date_added_; } |
79 void set_date_added(const base::Time& date) { date_added_ = date; } | 80 void set_date_added(const base::Time& date) { date_added_ = date; } |
80 | 81 |
81 // Returns the last time the folder was modified. This is only maintained | 82 // Returns the last time the folder was modified. This is only maintained |
82 // for folders (including the bookmark bar and other folder). | 83 // for folders (including the bookmark bar and other folder). |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 friend class BookmarkModel; | 128 friend class BookmarkModel; |
128 | 129 |
129 // A helper function to initialize various fields during construction. | 130 // A helper function to initialize various fields during construction. |
130 void Initialize(int64_t id); | 131 void Initialize(int64_t id); |
131 | 132 |
132 // Called when the favicon becomes invalid. | 133 // Called when the favicon becomes invalid. |
133 void InvalidateFavicon(); | 134 void InvalidateFavicon(); |
134 | 135 |
135 // Sets the favicon's URL. | 136 // Sets the favicon's URL. |
136 void set_icon_url(const GURL& icon_url) { | 137 void set_icon_url(const GURL& icon_url) { |
137 icon_url_ = icon_url; | 138 icon_url_ = base::MakeUnique<GURL>(icon_url); |
138 } | 139 } |
139 | 140 |
140 // Returns the favicon. In nearly all cases you should use the method | 141 // Returns the favicon. In nearly all cases you should use the method |
141 // BookmarkModel::GetFavicon rather than this one as it takes care of | 142 // BookmarkModel::GetFavicon rather than this one as it takes care of |
142 // loading the favicon if it isn't already loaded. | 143 // loading the favicon if it isn't already loaded. |
143 const gfx::Image& favicon() const { return favicon_; } | 144 const gfx::Image& favicon() const { return favicon_; } |
144 void set_favicon(const gfx::Image& icon) { favicon_ = icon; } | 145 void set_favicon(const gfx::Image& icon) { favicon_ = icon; } |
145 | 146 |
146 favicon_base::IconType favicon_type() const { return favicon_type_; } | 147 favicon_base::IconType favicon_type() const { return favicon_type_; } |
147 void set_favicon_type(favicon_base::IconType type) { favicon_type_ = type; } | 148 void set_favicon_type(favicon_base::IconType type) { favicon_type_ = type; } |
(...skipping 24 matching lines...) Expand all Loading... |
172 // Date of the last modification. Only used for folders. | 173 // Date of the last modification. Only used for folders. |
173 base::Time date_folder_modified_; | 174 base::Time date_folder_modified_; |
174 | 175 |
175 // The favicon of this node. | 176 // The favicon of this node. |
176 gfx::Image favicon_; | 177 gfx::Image favicon_; |
177 | 178 |
178 // The type of favicon currently loaded. | 179 // The type of favicon currently loaded. |
179 favicon_base::IconType favicon_type_; | 180 favicon_base::IconType favicon_type_; |
180 | 181 |
181 // The URL of the node's favicon. | 182 // The URL of the node's favicon. |
182 GURL icon_url_; | 183 std::unique_ptr<GURL> icon_url_; |
183 | 184 |
184 // The loading state of the favicon. | 185 // The loading state of the favicon. |
185 FaviconState favicon_state_; | 186 FaviconState favicon_state_; |
186 | 187 |
187 // If not base::CancelableTaskTracker::kBadTaskId, it indicates | 188 // If not base::CancelableTaskTracker::kBadTaskId, it indicates |
188 // we're loading the | 189 // we're loading the |
189 // favicon and the task is tracked by CancelabelTaskTracker. | 190 // favicon and the task is tracked by CancelabelTaskTracker. |
190 base::CancelableTaskTracker::TaskId favicon_load_task_id_; | 191 base::CancelableTaskTracker::TaskId favicon_load_task_id_; |
191 | 192 |
192 // A map that stores arbitrary meta information about the node. | 193 // A map that stores arbitrary meta information about the node. |
(...skipping 21 matching lines...) Expand all Loading... |
214 | 215 |
215 private: | 216 private: |
216 bool visible_; | 217 bool visible_; |
217 | 218 |
218 DISALLOW_COPY_AND_ASSIGN(BookmarkPermanentNode); | 219 DISALLOW_COPY_AND_ASSIGN(BookmarkPermanentNode); |
219 }; | 220 }; |
220 | 221 |
221 } // namespace bookmarks | 222 } // namespace bookmarks |
222 | 223 |
223 #endif // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_NODE_H_ | 224 #endif // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_NODE_H_ |
OLD | NEW |