Index: chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc |
diff --git a/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc b/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc |
index 49fc0433463f20ddd3c2b4c9a3fc42684e5d3f01..ec6f436da3c09fb580abc5c9c1693dc93cf671a2 100644 |
--- a/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc |
+++ b/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc |
@@ -24,12 +24,14 @@ namespace bookmark_api_helpers { |
namespace { |
-void AddNodeHelper(const BookmarkNode* node, |
+void AddNodeHelper(ChromeBookmarkClient* client, |
+ const BookmarkNode* node, |
std::vector<linked_ptr<BookmarkTreeNode> >* nodes, |
bool recurse, |
bool only_folders) { |
if (node->IsVisible()) { |
- linked_ptr<BookmarkTreeNode> new_node(GetBookmarkTreeNode(node, |
+ linked_ptr<BookmarkTreeNode> new_node(GetBookmarkTreeNode(client, |
+ node, |
recurse, |
only_folders)); |
nodes->push_back(new_node); |
@@ -38,7 +40,8 @@ void AddNodeHelper(const BookmarkNode* node, |
} // namespace |
-BookmarkTreeNode* GetBookmarkTreeNode(const BookmarkNode* node, |
+BookmarkTreeNode* GetBookmarkTreeNode(ChromeBookmarkClient* client, |
+ const BookmarkNode* node, |
bool recurse, |
bool only_folders) { |
BookmarkTreeNode* bookmark_tree_node = new BookmarkTreeNode; |
@@ -70,13 +73,16 @@ BookmarkTreeNode* GetBookmarkTreeNode(const BookmarkNode* node, |
new double(floor(node->date_added().ToDoubleT() * 1000))); |
} |
+ if (client->IsDescendantOfManagedNode(node)) |
+ bookmark_tree_node->unmodifiable = BookmarkTreeNode::UNMODIFIABLE_MANAGED; |
+ |
if (recurse && node->is_folder()) { |
std::vector<linked_ptr<BookmarkTreeNode> > children; |
for (int i = 0; i < node->child_count(); ++i) { |
const BookmarkNode* child = node->GetChild(i); |
if (child->IsVisible() && (!only_folders || child->is_folder())) { |
linked_ptr<BookmarkTreeNode> child_node( |
- GetBookmarkTreeNode(child, true, only_folders)); |
+ GetBookmarkTreeNode(client, child, true, only_folders)); |
children.push_back(child_node); |
} |
} |
@@ -86,16 +92,18 @@ BookmarkTreeNode* GetBookmarkTreeNode(const BookmarkNode* node, |
return bookmark_tree_node; |
} |
-void AddNode(const BookmarkNode* node, |
+void AddNode(ChromeBookmarkClient* client, |
+ const BookmarkNode* node, |
std::vector<linked_ptr<BookmarkTreeNode> >* nodes, |
bool recurse) { |
- return AddNodeHelper(node, nodes, recurse, false); |
+ return AddNodeHelper(client, node, nodes, recurse, false); |
} |
-void AddNodeFoldersOnly(const BookmarkNode* node, |
+void AddNodeFoldersOnly(ChromeBookmarkClient* client, |
+ const BookmarkNode* node, |
std::vector<linked_ptr<BookmarkTreeNode> >* nodes, |
bool recurse) { |
- return AddNodeHelper(node, nodes, recurse, true); |
+ return AddNodeHelper(client, node, nodes, recurse, true); |
} |
bool RemoveNode(ChromeBookmarkClient* client, |