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

Side by Side Diff: chrome/browser/resources/bookmark_manager/js/bmm.js

Issue 308003013: Make the Bookmark Manager aware of managed bookmarks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 cr.define('bmm', function() { 5 cr.define('bmm', function() {
6 /** 6 /**
7 * The id of the managed node.
8 * @type {string}
9 * @const
10 */
11 var MANAGED_NODE_ID = '4';
12
13 /**
7 * Whether a node contains another node. 14 * Whether a node contains another node.
8 * TODO(yosin): Once JavaScript style guide is updated and linter follows 15 * TODO(yosin): Once JavaScript style guide is updated and linter follows
9 * that, we'll remove useless documentations for |parent| and |descendant|. 16 * that, we'll remove useless documentations for |parent| and |descendant|.
10 * TODO(yosin): bmm.contains() should be method of BookmarkTreeNode. 17 * TODO(yosin): bmm.contains() should be method of BookmarkTreeNode.
11 * @param {!BookmarkTreeNode} parent . 18 * @param {!BookmarkTreeNode} parent .
12 * @param {!BookmarkTreeNode} descendant . 19 * @param {!BookmarkTreeNode} descendant .
13 * @return {boolean} Whether the parent contains the descendant. 20 * @return {boolean} Whether the parent contains the descendant.
14 */ 21 */
15 function contains(parent, descendant) { 22 function contains(parent, descendant) {
16 if (descendant.parentId == parent.id) 23 if (descendant.parentId == parent.id)
17 return true; 24 return true;
18 // the bmm.treeLookup contains all folders 25 // the bmm.treeLookup contains all folders
19 var parentTreeItem = bmm.treeLookup[descendant.parentId]; 26 var parentTreeItem = bmm.treeLookup[descendant.parentId];
20 if (!parentTreeItem || !parentTreeItem.bookmarkNode) 27 if (!parentTreeItem || !parentTreeItem.bookmarkNode)
21 return false; 28 return false;
22 return this.contains(parent, parentTreeItem.bookmarkNode); 29 return this.contains(parent, parentTreeItem.bookmarkNode);
23 } 30 }
24 31
25 /** 32 /**
26 * @param {!BookmarkTreeNode} node The node to test. 33 * @param {!BookmarkTreeNode} node The node to test.
27 * @return {boolean} Whether a bookmark node is a folder. 34 * @return {boolean} Whether a bookmark node is a folder.
28 */ 35 */
29 function isFolder(node) { 36 function isFolder(node) {
30 return !('url' in node); 37 return !('url' in node);
31 } 38 }
32 39
40 /**
41 * @param {!BookmarkTreeNode} node The node to test.
arv (Not doing code reviews) 2014/06/02 23:33:23 The code assumes node can be null but the type ann
arv (Not doing code reviews) 2014/06/02 23:33:23 Remove useless description
Joao da Silva 2014/06/03 14:07:54 The annotation is wrong, fixed.
Joao da Silva 2014/06/03 14:07:54 PRESUBMIT.py runs a javascript linter that fails w
arv (Not doing code reviews) 2014/06/03 14:31:38 Sad. Our linter is out of date.
42 * @return {boolean} Whether a bookmark node is managed.
43 */
44 function isManaged(node) {
45 if (!node)
46 return false;
47 if (node.id === MANAGED_NODE_ID)
48 return true;
49 return this.contains(bmm.treeLookup[MANAGED_NODE_ID].bookmarkNode, node);
arv (Not doing code reviews) 2014/06/02 23:33:23 This is O(depth). Is that acceptable?
Joao da Silva 2014/06/03 14:07:54 I think it's fine because the bookmarks tree is ra
50 }
51
33 var loadingPromises = {}; 52 var loadingPromises = {};
34 53
35 /** 54 /**
36 * Promise version of chrome.bookmarkManagerPrivate.getSubtree. 55 * Promise version of chrome.bookmarkManagerPrivate.getSubtree.
37 * @param {string} id . 56 * @param {string} id .
38 * @param {boolean} foldersOnly . 57 * @param {boolean} foldersOnly .
39 * @return {!Promise.<!Array.<!BookmarkTreeNode>>} . 58 * @return {!Promise.<!Array.<!BookmarkTreeNode>>} .
40 */ 59 */
41 function getSubtreePromise(id, foldersOnly) { 60 function getSubtreePromise(id, foldersOnly) {
42 return new Promise(function(resolve) { 61 return new Promise(function(resolve) {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 chrome.bookmarks.onCreated.addListener(handleCreated); 254 chrome.bookmarks.onCreated.addListener(handleCreated);
236 chrome.bookmarks.onMoved.addListener(handleMoved); 255 chrome.bookmarks.onMoved.addListener(handleMoved);
237 chrome.bookmarks.onRemoved.addListener(handleRemoved); 256 chrome.bookmarks.onRemoved.addListener(handleRemoved);
238 chrome.bookmarks.onImportBegan.addListener(handleImportBegan); 257 chrome.bookmarks.onImportBegan.addListener(handleImportBegan);
239 chrome.bookmarks.onImportEnded.addListener(handleImportEnded); 258 chrome.bookmarks.onImportEnded.addListener(handleImportEnded);
240 }; 259 };
241 260
242 return { 261 return {
243 contains: contains, 262 contains: contains,
244 isFolder: isFolder, 263 isFolder: isFolder,
264 isManaged: isManaged,
245 loadSubtree: loadSubtree, 265 loadSubtree: loadSubtree,
246 loadTree: loadTree, 266 loadTree: loadTree,
247 addBookmarkModelListeners: addBookmarkModelListeners 267 addBookmarkModelListeners: addBookmarkModelListeners
248 }; 268 };
249 }); 269 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698