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 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. |
| 42 * @return {boolean} Whether the 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 // The managed node may be invisible, in which case it won't exist in |
| 50 // |bmm.treeLookup|. |
| 51 var managedNode = bmm.treeLookup[MANAGED_NODE_ID]; |
| 52 return managedNode && bmm.contains(managedNode.bookmarkNode, node); |
| 53 } |
| 54 |
33 var loadingPromises = {}; | 55 var loadingPromises = {}; |
34 | 56 |
35 /** | 57 /** |
36 * Promise version of chrome.bookmarkManagerPrivate.getSubtree. | 58 * Promise version of chrome.bookmarkManagerPrivate.getSubtree. |
37 * @param {string} id . | 59 * @param {string} id . |
38 * @param {boolean} foldersOnly . | 60 * @param {boolean} foldersOnly . |
39 * @return {!Promise.<!Array.<!BookmarkTreeNode>>} . | 61 * @return {!Promise.<!Array.<!BookmarkTreeNode>>} . |
40 */ | 62 */ |
41 function getSubtreePromise(id, foldersOnly) { | 63 function getSubtreePromise(id, foldersOnly) { |
42 return new Promise(function(resolve) { | 64 return new Promise(function(resolve) { |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 chrome.bookmarks.onCreated.addListener(handleCreated); | 257 chrome.bookmarks.onCreated.addListener(handleCreated); |
236 chrome.bookmarks.onMoved.addListener(handleMoved); | 258 chrome.bookmarks.onMoved.addListener(handleMoved); |
237 chrome.bookmarks.onRemoved.addListener(handleRemoved); | 259 chrome.bookmarks.onRemoved.addListener(handleRemoved); |
238 chrome.bookmarks.onImportBegan.addListener(handleImportBegan); | 260 chrome.bookmarks.onImportBegan.addListener(handleImportBegan); |
239 chrome.bookmarks.onImportEnded.addListener(handleImportEnded); | 261 chrome.bookmarks.onImportEnded.addListener(handleImportEnded); |
240 }; | 262 }; |
241 | 263 |
242 return { | 264 return { |
243 contains: contains, | 265 contains: contains, |
244 isFolder: isFolder, | 266 isFolder: isFolder, |
| 267 isManaged: isManaged, |
245 loadSubtree: loadSubtree, | 268 loadSubtree: loadSubtree, |
246 loadTree: loadTree, | 269 loadTree: loadTree, |
247 addBookmarkModelListeners: addBookmarkModelListeners | 270 addBookmarkModelListeners: addBookmarkModelListeners |
248 }; | 271 }; |
249 }); | 272 }); |
OLD | NEW |