Chromium Code Reviews| 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. | |
|
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 Loading... | |
| 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 }); |
| OLD | NEW |