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_EXTENSIONS_API_BOOKMARKS_BOOKMARKS_API_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARKS_API_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARKS_API_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARKS_API_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 24 matching lines...) Expand all Loading... |
35 namespace bookmarks { | 35 namespace bookmarks { |
36 struct CreateDetails; | 36 struct CreateDetails; |
37 } | 37 } |
38 } | 38 } |
39 | 39 |
40 // Observes BookmarkModel and then routes the notifications as events to | 40 // Observes BookmarkModel and then routes the notifications as events to |
41 // the extension system. | 41 // the extension system. |
42 class BookmarkEventRouter : public BookmarkModelObserver { | 42 class BookmarkEventRouter : public BookmarkModelObserver { |
43 public: | 43 public: |
44 explicit BookmarkEventRouter(Profile* profile); | 44 explicit BookmarkEventRouter(Profile* profile); |
45 virtual ~BookmarkEventRouter(); | 45 ~BookmarkEventRouter() override; |
46 | 46 |
47 // BookmarkModelObserver: | 47 // BookmarkModelObserver: |
48 virtual void BookmarkModelLoaded(BookmarkModel* model, | 48 void BookmarkModelLoaded(BookmarkModel* model, bool ids_reassigned) override; |
49 bool ids_reassigned) override; | 49 void BookmarkModelBeingDeleted(BookmarkModel* model) override; |
50 virtual void BookmarkModelBeingDeleted(BookmarkModel* model) override; | 50 void BookmarkNodeMoved(BookmarkModel* model, |
51 virtual void BookmarkNodeMoved(BookmarkModel* model, | 51 const BookmarkNode* old_parent, |
52 const BookmarkNode* old_parent, | 52 int old_index, |
53 int old_index, | 53 const BookmarkNode* new_parent, |
54 const BookmarkNode* new_parent, | 54 int new_index) override; |
55 int new_index) override; | 55 void BookmarkNodeAdded(BookmarkModel* model, |
56 virtual void BookmarkNodeAdded(BookmarkModel* model, | 56 const BookmarkNode* parent, |
57 const BookmarkNode* parent, | 57 int index) override; |
58 int index) override; | 58 void BookmarkNodeRemoved(BookmarkModel* model, |
59 virtual void BookmarkNodeRemoved(BookmarkModel* model, | 59 const BookmarkNode* parent, |
60 const BookmarkNode* parent, | 60 int old_index, |
61 int old_index, | 61 const BookmarkNode* node, |
62 const BookmarkNode* node, | 62 const std::set<GURL>& removed_urls) override; |
| 63 void BookmarkAllUserNodesRemoved(BookmarkModel* model, |
63 const std::set<GURL>& removed_urls) override; | 64 const std::set<GURL>& removed_urls) override; |
64 virtual void BookmarkAllUserNodesRemoved( | 65 void BookmarkNodeChanged(BookmarkModel* model, |
65 BookmarkModel* model, | 66 const BookmarkNode* node) override; |
66 const std::set<GURL>& removed_urls) override; | 67 void BookmarkNodeFaviconChanged(BookmarkModel* model, |
67 virtual void BookmarkNodeChanged(BookmarkModel* model, | 68 const BookmarkNode* node) override; |
68 const BookmarkNode* node) override; | 69 void BookmarkNodeChildrenReordered(BookmarkModel* model, |
69 virtual void BookmarkNodeFaviconChanged(BookmarkModel* model, | 70 const BookmarkNode* node) override; |
70 const BookmarkNode* node) override; | 71 void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) override; |
71 virtual void BookmarkNodeChildrenReordered(BookmarkModel* model, | 72 void ExtensiveBookmarkChangesEnded(BookmarkModel* model) override; |
72 const BookmarkNode* node) override; | |
73 virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) override; | |
74 virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) override; | |
75 | 73 |
76 private: | 74 private: |
77 // Helper to actually dispatch an event to extension listeners. | 75 // Helper to actually dispatch an event to extension listeners. |
78 void DispatchEvent(const std::string& event_name, | 76 void DispatchEvent(const std::string& event_name, |
79 scoped_ptr<base::ListValue> event_args); | 77 scoped_ptr<base::ListValue> event_args); |
80 | 78 |
81 content::BrowserContext* browser_context_; | 79 content::BrowserContext* browser_context_; |
82 BookmarkModel* model_; | 80 BookmarkModel* model_; |
83 ChromeBookmarkClient* client_; | 81 ChromeBookmarkClient* client_; |
84 | 82 |
85 DISALLOW_COPY_AND_ASSIGN(BookmarkEventRouter); | 83 DISALLOW_COPY_AND_ASSIGN(BookmarkEventRouter); |
86 }; | 84 }; |
87 | 85 |
88 class BookmarksAPI : public BrowserContextKeyedAPI, | 86 class BookmarksAPI : public BrowserContextKeyedAPI, |
89 public EventRouter::Observer { | 87 public EventRouter::Observer { |
90 public: | 88 public: |
91 explicit BookmarksAPI(content::BrowserContext* context); | 89 explicit BookmarksAPI(content::BrowserContext* context); |
92 virtual ~BookmarksAPI(); | 90 ~BookmarksAPI() override; |
93 | 91 |
94 // KeyedService implementation. | 92 // KeyedService implementation. |
95 virtual void Shutdown() override; | 93 void Shutdown() override; |
96 | 94 |
97 // BrowserContextKeyedAPI implementation. | 95 // BrowserContextKeyedAPI implementation. |
98 static BrowserContextKeyedAPIFactory<BookmarksAPI>* GetFactoryInstance(); | 96 static BrowserContextKeyedAPIFactory<BookmarksAPI>* GetFactoryInstance(); |
99 | 97 |
100 // EventRouter::Observer implementation. | 98 // EventRouter::Observer implementation. |
101 virtual void OnListenerAdded( | 99 void OnListenerAdded(const EventListenerInfo& details) override; |
102 const EventListenerInfo& details) override; | |
103 | 100 |
104 private: | 101 private: |
105 friend class BrowserContextKeyedAPIFactory<BookmarksAPI>; | 102 friend class BrowserContextKeyedAPIFactory<BookmarksAPI>; |
106 | 103 |
107 content::BrowserContext* browser_context_; | 104 content::BrowserContext* browser_context_; |
108 | 105 |
109 // BrowserContextKeyedAPI implementation. | 106 // BrowserContextKeyedAPI implementation. |
110 static const char* service_name() { | 107 static const char* service_name() { |
111 return "BookmarksAPI"; | 108 return "BookmarksAPI"; |
112 } | 109 } |
113 static const bool kServiceIsNULLWhileTesting = true; | 110 static const bool kServiceIsNULLWhileTesting = true; |
114 | 111 |
115 // Created lazily upon OnListenerAdded. | 112 // Created lazily upon OnListenerAdded. |
116 scoped_ptr<BookmarkEventRouter> bookmark_event_router_; | 113 scoped_ptr<BookmarkEventRouter> bookmark_event_router_; |
117 }; | 114 }; |
118 | 115 |
119 class BookmarksFunction : public ChromeAsyncExtensionFunction, | 116 class BookmarksFunction : public ChromeAsyncExtensionFunction, |
120 public BaseBookmarkModelObserver { | 117 public BaseBookmarkModelObserver { |
121 public: | 118 public: |
122 // AsyncExtensionFunction: | 119 // AsyncExtensionFunction: |
123 virtual bool RunAsync() override; | 120 bool RunAsync() override; |
124 | 121 |
125 protected: | 122 protected: |
126 virtual ~BookmarksFunction() {} | 123 ~BookmarksFunction() override {} |
127 | 124 |
128 // RunAsync semantic equivalent called when the bookmarks are ready. | 125 // RunAsync semantic equivalent called when the bookmarks are ready. |
129 virtual bool RunOnReady() = 0; | 126 virtual bool RunOnReady() = 0; |
130 | 127 |
131 // Helper to get the BookmarkModel. | 128 // Helper to get the BookmarkModel. |
132 BookmarkModel* GetBookmarkModel(); | 129 BookmarkModel* GetBookmarkModel(); |
133 | 130 |
134 // Helper to get the ChromeBookmarkClient. | 131 // Helper to get the ChromeBookmarkClient. |
135 ChromeBookmarkClient* GetChromeBookmarkClient(); | 132 ChromeBookmarkClient* GetChromeBookmarkClient(); |
136 | 133 |
(...skipping 19 matching lines...) Expand all Loading... |
156 bool EditBookmarksEnabled(); | 153 bool EditBookmarksEnabled(); |
157 | 154 |
158 // Helper that checks if |node| can be modified. Returns false if |node| | 155 // Helper that checks if |node| can be modified. Returns false if |node| |
159 // is NULL, or a managed node, or the root node. In these cases the node | 156 // is NULL, or a managed node, or the root node. In these cases the node |
160 // can't be edited, can't have new child nodes appended, and its direct | 157 // can't be edited, can't have new child nodes appended, and its direct |
161 // children can't be moved or reordered. | 158 // children can't be moved or reordered. |
162 bool CanBeModified(const BookmarkNode* node); | 159 bool CanBeModified(const BookmarkNode* node); |
163 | 160 |
164 private: | 161 private: |
165 // BaseBookmarkModelObserver: | 162 // BaseBookmarkModelObserver: |
166 virtual void BookmarkModelChanged() override; | 163 void BookmarkModelChanged() override; |
167 virtual void BookmarkModelLoaded(BookmarkModel* model, | 164 void BookmarkModelLoaded(BookmarkModel* model, bool ids_reassigned) override; |
168 bool ids_reassigned) override; | |
169 }; | 165 }; |
170 | 166 |
171 class BookmarksGetFunction : public BookmarksFunction { | 167 class BookmarksGetFunction : public BookmarksFunction { |
172 public: | 168 public: |
173 DECLARE_EXTENSION_FUNCTION("bookmarks.get", BOOKMARKS_GET) | 169 DECLARE_EXTENSION_FUNCTION("bookmarks.get", BOOKMARKS_GET) |
174 | 170 |
175 protected: | 171 protected: |
176 virtual ~BookmarksGetFunction() {} | 172 ~BookmarksGetFunction() override {} |
177 | 173 |
178 // BookmarksFunction: | 174 // BookmarksFunction: |
179 virtual bool RunOnReady() override; | 175 bool RunOnReady() override; |
180 }; | 176 }; |
181 | 177 |
182 class BookmarksGetChildrenFunction : public BookmarksFunction { | 178 class BookmarksGetChildrenFunction : public BookmarksFunction { |
183 public: | 179 public: |
184 DECLARE_EXTENSION_FUNCTION("bookmarks.getChildren", BOOKMARKS_GETCHILDREN) | 180 DECLARE_EXTENSION_FUNCTION("bookmarks.getChildren", BOOKMARKS_GETCHILDREN) |
185 | 181 |
186 protected: | 182 protected: |
187 virtual ~BookmarksGetChildrenFunction() {} | 183 ~BookmarksGetChildrenFunction() override {} |
188 | 184 |
189 // BookmarksFunction: | 185 // BookmarksFunction: |
190 virtual bool RunOnReady() override; | 186 bool RunOnReady() override; |
191 }; | 187 }; |
192 | 188 |
193 class BookmarksGetRecentFunction : public BookmarksFunction { | 189 class BookmarksGetRecentFunction : public BookmarksFunction { |
194 public: | 190 public: |
195 DECLARE_EXTENSION_FUNCTION("bookmarks.getRecent", BOOKMARKS_GETRECENT) | 191 DECLARE_EXTENSION_FUNCTION("bookmarks.getRecent", BOOKMARKS_GETRECENT) |
196 | 192 |
197 protected: | 193 protected: |
198 virtual ~BookmarksGetRecentFunction() {} | 194 ~BookmarksGetRecentFunction() override {} |
199 | 195 |
200 // BookmarksFunction: | 196 // BookmarksFunction: |
201 virtual bool RunOnReady() override; | 197 bool RunOnReady() override; |
202 }; | 198 }; |
203 | 199 |
204 class BookmarksGetTreeFunction : public BookmarksFunction { | 200 class BookmarksGetTreeFunction : public BookmarksFunction { |
205 public: | 201 public: |
206 DECLARE_EXTENSION_FUNCTION("bookmarks.getTree", BOOKMARKS_GETTREE) | 202 DECLARE_EXTENSION_FUNCTION("bookmarks.getTree", BOOKMARKS_GETTREE) |
207 | 203 |
208 protected: | 204 protected: |
209 virtual ~BookmarksGetTreeFunction() {} | 205 ~BookmarksGetTreeFunction() override {} |
210 | 206 |
211 // BookmarksFunction: | 207 // BookmarksFunction: |
212 virtual bool RunOnReady() override; | 208 bool RunOnReady() override; |
213 }; | 209 }; |
214 | 210 |
215 class BookmarksGetSubTreeFunction : public BookmarksFunction { | 211 class BookmarksGetSubTreeFunction : public BookmarksFunction { |
216 public: | 212 public: |
217 DECLARE_EXTENSION_FUNCTION("bookmarks.getSubTree", BOOKMARKS_GETSUBTREE) | 213 DECLARE_EXTENSION_FUNCTION("bookmarks.getSubTree", BOOKMARKS_GETSUBTREE) |
218 | 214 |
219 protected: | 215 protected: |
220 virtual ~BookmarksGetSubTreeFunction() {} | 216 ~BookmarksGetSubTreeFunction() override {} |
221 | 217 |
222 // BookmarksFunction: | 218 // BookmarksFunction: |
223 virtual bool RunOnReady() override; | 219 bool RunOnReady() override; |
224 }; | 220 }; |
225 | 221 |
226 class BookmarksSearchFunction : public BookmarksFunction { | 222 class BookmarksSearchFunction : public BookmarksFunction { |
227 public: | 223 public: |
228 DECLARE_EXTENSION_FUNCTION("bookmarks.search", BOOKMARKS_SEARCH) | 224 DECLARE_EXTENSION_FUNCTION("bookmarks.search", BOOKMARKS_SEARCH) |
229 | 225 |
230 protected: | 226 protected: |
231 virtual ~BookmarksSearchFunction() {} | 227 ~BookmarksSearchFunction() override {} |
232 | 228 |
233 // BookmarksFunction: | 229 // BookmarksFunction: |
234 virtual bool RunOnReady() override; | 230 bool RunOnReady() override; |
235 }; | 231 }; |
236 | 232 |
237 class BookmarksRemoveFunction : public BookmarksFunction { | 233 class BookmarksRemoveFunction : public BookmarksFunction { |
238 public: | 234 public: |
239 DECLARE_EXTENSION_FUNCTION("bookmarks.remove", BOOKMARKS_REMOVE) | 235 DECLARE_EXTENSION_FUNCTION("bookmarks.remove", BOOKMARKS_REMOVE) |
240 | 236 |
241 // Returns true on successful parse and sets invalid_id to true if conversion | 237 // Returns true on successful parse and sets invalid_id to true if conversion |
242 // from id string to int64 failed. | 238 // from id string to int64 failed. |
243 static bool ExtractIds(const base::ListValue* args, | 239 static bool ExtractIds(const base::ListValue* args, |
244 std::list<int64>* ids, | 240 std::list<int64>* ids, |
245 bool* invalid_id); | 241 bool* invalid_id); |
246 | 242 |
247 protected: | 243 protected: |
248 virtual ~BookmarksRemoveFunction() {} | 244 ~BookmarksRemoveFunction() override {} |
249 | 245 |
250 // BookmarksFunction: | 246 // BookmarksFunction: |
251 virtual bool RunOnReady() override; | 247 bool RunOnReady() override; |
252 }; | 248 }; |
253 | 249 |
254 class BookmarksRemoveTreeFunction : public BookmarksRemoveFunction { | 250 class BookmarksRemoveTreeFunction : public BookmarksRemoveFunction { |
255 public: | 251 public: |
256 DECLARE_EXTENSION_FUNCTION("bookmarks.removeTree", BOOKMARKS_REMOVETREE) | 252 DECLARE_EXTENSION_FUNCTION("bookmarks.removeTree", BOOKMARKS_REMOVETREE) |
257 | 253 |
258 protected: | 254 protected: |
259 virtual ~BookmarksRemoveTreeFunction() {} | 255 ~BookmarksRemoveTreeFunction() override {} |
260 }; | 256 }; |
261 | 257 |
262 class BookmarksCreateFunction : public BookmarksFunction { | 258 class BookmarksCreateFunction : public BookmarksFunction { |
263 public: | 259 public: |
264 DECLARE_EXTENSION_FUNCTION("bookmarks.create", BOOKMARKS_CREATE) | 260 DECLARE_EXTENSION_FUNCTION("bookmarks.create", BOOKMARKS_CREATE) |
265 | 261 |
266 protected: | 262 protected: |
267 virtual ~BookmarksCreateFunction() {} | 263 ~BookmarksCreateFunction() override {} |
268 | 264 |
269 // BookmarksFunction: | 265 // BookmarksFunction: |
270 virtual bool RunOnReady() override; | 266 bool RunOnReady() override; |
271 }; | 267 }; |
272 | 268 |
273 class BookmarksMoveFunction : public BookmarksFunction { | 269 class BookmarksMoveFunction : public BookmarksFunction { |
274 public: | 270 public: |
275 DECLARE_EXTENSION_FUNCTION("bookmarks.move", BOOKMARKS_MOVE) | 271 DECLARE_EXTENSION_FUNCTION("bookmarks.move", BOOKMARKS_MOVE) |
276 | 272 |
277 static bool ExtractIds(const base::ListValue* args, | 273 static bool ExtractIds(const base::ListValue* args, |
278 std::list<int64>* ids, | 274 std::list<int64>* ids, |
279 bool* invalid_id); | 275 bool* invalid_id); |
280 | 276 |
281 protected: | 277 protected: |
282 virtual ~BookmarksMoveFunction() {} | 278 ~BookmarksMoveFunction() override {} |
283 | 279 |
284 // BookmarksFunction: | 280 // BookmarksFunction: |
285 virtual bool RunOnReady() override; | 281 bool RunOnReady() override; |
286 }; | 282 }; |
287 | 283 |
288 class BookmarksUpdateFunction : public BookmarksFunction { | 284 class BookmarksUpdateFunction : public BookmarksFunction { |
289 public: | 285 public: |
290 DECLARE_EXTENSION_FUNCTION("bookmarks.update", BOOKMARKS_UPDATE) | 286 DECLARE_EXTENSION_FUNCTION("bookmarks.update", BOOKMARKS_UPDATE) |
291 | 287 |
292 static bool ExtractIds(const base::ListValue* args, | 288 static bool ExtractIds(const base::ListValue* args, |
293 std::list<int64>* ids, | 289 std::list<int64>* ids, |
294 bool* invalid_id); | 290 bool* invalid_id); |
295 | 291 |
296 protected: | 292 protected: |
297 virtual ~BookmarksUpdateFunction() {} | 293 ~BookmarksUpdateFunction() override {} |
298 | 294 |
299 // BookmarksFunction: | 295 // BookmarksFunction: |
300 virtual bool RunOnReady() override; | 296 bool RunOnReady() override; |
301 }; | 297 }; |
302 | 298 |
303 class BookmarksIOFunction : public BookmarksFunction, | 299 class BookmarksIOFunction : public BookmarksFunction, |
304 public ui::SelectFileDialog::Listener { | 300 public ui::SelectFileDialog::Listener { |
305 public: | 301 public: |
306 BookmarksIOFunction(); | 302 BookmarksIOFunction(); |
307 | 303 |
308 virtual void FileSelected(const base::FilePath& path, int index, void* params)
= 0; | 304 virtual void FileSelected(const base::FilePath& path, int index, void* params)
= 0; |
309 | 305 |
310 // ui::SelectFileDialog::Listener: | 306 // ui::SelectFileDialog::Listener: |
311 virtual void MultiFilesSelected(const std::vector<base::FilePath>& files, | 307 void MultiFilesSelected(const std::vector<base::FilePath>& files, |
312 void* params) override; | 308 void* params) override; |
313 virtual void FileSelectionCanceled(void* params) override; | 309 void FileSelectionCanceled(void* params) override; |
314 | 310 |
315 void SelectFile(ui::SelectFileDialog::Type type); | 311 void SelectFile(ui::SelectFileDialog::Type type); |
316 | 312 |
317 protected: | 313 protected: |
318 virtual ~BookmarksIOFunction(); | 314 ~BookmarksIOFunction() override; |
319 | 315 |
320 private: | 316 private: |
321 void ShowSelectFileDialog( | 317 void ShowSelectFileDialog( |
322 ui::SelectFileDialog::Type type, | 318 ui::SelectFileDialog::Type type, |
323 const base::FilePath& default_path); | 319 const base::FilePath& default_path); |
324 | 320 |
325 protected: | 321 protected: |
326 scoped_refptr<ui::SelectFileDialog> select_file_dialog_; | 322 scoped_refptr<ui::SelectFileDialog> select_file_dialog_; |
327 }; | 323 }; |
328 | 324 |
329 class BookmarksImportFunction : public BookmarksIOFunction { | 325 class BookmarksImportFunction : public BookmarksIOFunction { |
330 public: | 326 public: |
331 DECLARE_EXTENSION_FUNCTION("bookmarks.import", BOOKMARKS_IMPORT) | 327 DECLARE_EXTENSION_FUNCTION("bookmarks.import", BOOKMARKS_IMPORT) |
332 | 328 |
333 // BookmarkManagerIOFunction: | 329 // BookmarkManagerIOFunction: |
334 virtual void FileSelected(const base::FilePath& path, | 330 void FileSelected(const base::FilePath& path, |
335 int index, | 331 int index, |
336 void* params) override; | 332 void* params) override; |
337 | 333 |
338 private: | 334 private: |
339 virtual ~BookmarksImportFunction() {} | 335 ~BookmarksImportFunction() override {} |
340 | 336 |
341 // BookmarksFunction: | 337 // BookmarksFunction: |
342 virtual bool RunOnReady() override; | 338 bool RunOnReady() override; |
343 }; | 339 }; |
344 | 340 |
345 class BookmarksExportFunction : public BookmarksIOFunction { | 341 class BookmarksExportFunction : public BookmarksIOFunction { |
346 public: | 342 public: |
347 DECLARE_EXTENSION_FUNCTION("bookmarks.export", BOOKMARKS_EXPORT) | 343 DECLARE_EXTENSION_FUNCTION("bookmarks.export", BOOKMARKS_EXPORT) |
348 | 344 |
349 // BookmarkManagerIOFunction: | 345 // BookmarkManagerIOFunction: |
350 virtual void FileSelected(const base::FilePath& path, | 346 void FileSelected(const base::FilePath& path, |
351 int index, | 347 int index, |
352 void* params) override; | 348 void* params) override; |
353 | 349 |
354 private: | 350 private: |
355 virtual ~BookmarksExportFunction() {} | 351 ~BookmarksExportFunction() override {} |
356 | 352 |
357 // BookmarksFunction: | 353 // BookmarksFunction: |
358 virtual bool RunOnReady() override; | 354 bool RunOnReady() override; |
359 }; | 355 }; |
360 | 356 |
361 } // namespace extensions | 357 } // namespace extensions |
362 | 358 |
363 #endif // CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARKS_API_H_ | 359 #endif // CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARKS_API_H_ |
OLD | NEW |