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

Side by Side Diff: chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc

Issue 320473002: Added the "unmodifiable" property to chrome.bookmarks.BookmarkTreeNode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebaes 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 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h" 5 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h"
6 6
7 #include <math.h> // For floor() 7 #include <math.h> // For floor()
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/bookmarks/chrome_bookmark_client.h" 12 #include "chrome/browser/bookmarks/chrome_bookmark_client.h"
13 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h" 13 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h"
14 #include "chrome/common/extensions/api/bookmarks.h" 14 #include "chrome/common/extensions/api/bookmarks.h"
15 #include "components/bookmarks/browser/bookmark_model.h" 15 #include "components/bookmarks/browser/bookmark_model.h"
16 #include "components/bookmarks/browser/bookmark_utils.h" 16 #include "components/bookmarks/browser/bookmark_utils.h"
17 17
18 namespace extensions { 18 namespace extensions {
19 19
20 namespace keys = bookmark_api_constants; 20 namespace keys = bookmark_api_constants;
21 using api::bookmarks::BookmarkTreeNode; 21 using api::bookmarks::BookmarkTreeNode;
22 22
23 namespace bookmark_api_helpers { 23 namespace bookmark_api_helpers {
24 24
25 namespace { 25 namespace {
26 26
27 void AddNodeHelper(const BookmarkNode* node, 27 void AddNodeHelper(ChromeBookmarkClient* client,
28 const BookmarkNode* node,
28 std::vector<linked_ptr<BookmarkTreeNode> >* nodes, 29 std::vector<linked_ptr<BookmarkTreeNode> >* nodes,
29 bool recurse, 30 bool recurse,
30 bool only_folders) { 31 bool only_folders) {
31 if (node->IsVisible()) { 32 if (node->IsVisible()) {
32 linked_ptr<BookmarkTreeNode> new_node(GetBookmarkTreeNode(node, 33 linked_ptr<BookmarkTreeNode> new_node(GetBookmarkTreeNode(client,
34 node,
33 recurse, 35 recurse,
34 only_folders)); 36 only_folders));
35 nodes->push_back(new_node); 37 nodes->push_back(new_node);
36 } 38 }
37 } 39 }
38 40
39 } // namespace 41 } // namespace
40 42
41 BookmarkTreeNode* GetBookmarkTreeNode(const BookmarkNode* node, 43 BookmarkTreeNode* GetBookmarkTreeNode(ChromeBookmarkClient* client,
44 const BookmarkNode* node,
42 bool recurse, 45 bool recurse,
43 bool only_folders) { 46 bool only_folders) {
44 BookmarkTreeNode* bookmark_tree_node = new BookmarkTreeNode; 47 BookmarkTreeNode* bookmark_tree_node = new BookmarkTreeNode;
45 48
46 bookmark_tree_node->id = base::Int64ToString(node->id()); 49 bookmark_tree_node->id = base::Int64ToString(node->id());
47 50
48 const BookmarkNode* parent = node->parent(); 51 const BookmarkNode* parent = node->parent();
49 if (parent) { 52 if (parent) {
50 bookmark_tree_node->parent_id.reset(new std::string( 53 bookmark_tree_node->parent_id.reset(new std::string(
51 base::Int64ToString(parent->id()))); 54 base::Int64ToString(parent->id())));
(...skipping 11 matching lines...) Expand all
63 } 66 }
64 } 67 }
65 68
66 bookmark_tree_node->title = base::UTF16ToUTF8(node->GetTitle()); 69 bookmark_tree_node->title = base::UTF16ToUTF8(node->GetTitle());
67 if (!node->date_added().is_null()) { 70 if (!node->date_added().is_null()) {
68 // Javascript Date wants milliseconds since the epoch, ToDoubleT is seconds. 71 // Javascript Date wants milliseconds since the epoch, ToDoubleT is seconds.
69 bookmark_tree_node->date_added.reset( 72 bookmark_tree_node->date_added.reset(
70 new double(floor(node->date_added().ToDoubleT() * 1000))); 73 new double(floor(node->date_added().ToDoubleT() * 1000)));
71 } 74 }
72 75
76 if (client->IsDescendantOfManagedNode(node))
77 bookmark_tree_node->unmodifiable = BookmarkTreeNode::UNMODIFIABLE_MANAGED;
78
73 if (recurse && node->is_folder()) { 79 if (recurse && node->is_folder()) {
74 std::vector<linked_ptr<BookmarkTreeNode> > children; 80 std::vector<linked_ptr<BookmarkTreeNode> > children;
75 for (int i = 0; i < node->child_count(); ++i) { 81 for (int i = 0; i < node->child_count(); ++i) {
76 const BookmarkNode* child = node->GetChild(i); 82 const BookmarkNode* child = node->GetChild(i);
77 if (child->IsVisible() && (!only_folders || child->is_folder())) { 83 if (child->IsVisible() && (!only_folders || child->is_folder())) {
78 linked_ptr<BookmarkTreeNode> child_node( 84 linked_ptr<BookmarkTreeNode> child_node(
79 GetBookmarkTreeNode(child, true, only_folders)); 85 GetBookmarkTreeNode(client, child, true, only_folders));
80 children.push_back(child_node); 86 children.push_back(child_node);
81 } 87 }
82 } 88 }
83 bookmark_tree_node->children.reset( 89 bookmark_tree_node->children.reset(
84 new std::vector<linked_ptr<BookmarkTreeNode> >(children)); 90 new std::vector<linked_ptr<BookmarkTreeNode> >(children));
85 } 91 }
86 return bookmark_tree_node; 92 return bookmark_tree_node;
87 } 93 }
88 94
89 void AddNode(const BookmarkNode* node, 95 void AddNode(ChromeBookmarkClient* client,
96 const BookmarkNode* node,
90 std::vector<linked_ptr<BookmarkTreeNode> >* nodes, 97 std::vector<linked_ptr<BookmarkTreeNode> >* nodes,
91 bool recurse) { 98 bool recurse) {
92 return AddNodeHelper(node, nodes, recurse, false); 99 return AddNodeHelper(client, node, nodes, recurse, false);
93 } 100 }
94 101
95 void AddNodeFoldersOnly(const BookmarkNode* node, 102 void AddNodeFoldersOnly(ChromeBookmarkClient* client,
103 const BookmarkNode* node,
96 std::vector<linked_ptr<BookmarkTreeNode> >* nodes, 104 std::vector<linked_ptr<BookmarkTreeNode> >* nodes,
97 bool recurse) { 105 bool recurse) {
98 return AddNodeHelper(node, nodes, recurse, true); 106 return AddNodeHelper(client, node, nodes, recurse, true);
99 } 107 }
100 108
101 bool RemoveNode(ChromeBookmarkClient* client, 109 bool RemoveNode(ChromeBookmarkClient* client,
102 int64 id, 110 int64 id,
103 bool recursive, 111 bool recursive,
104 std::string* error) { 112 std::string* error) {
105 BookmarkModel* model = client->model(); 113 BookmarkModel* model = client->model();
106 const BookmarkNode* node = GetBookmarkNodeByID(model, id); 114 const BookmarkNode* node = GetBookmarkNodeByID(model, id);
107 if (!node) { 115 if (!node) {
108 *error = keys::kNoNodeError; 116 *error = keys::kNoNodeError;
(...skipping 12 matching lines...) Expand all
121 return false; 129 return false;
122 } 130 }
123 131
124 const BookmarkNode* parent = node->parent(); 132 const BookmarkNode* parent = node->parent();
125 model->Remove(parent, parent->GetIndexOf(node)); 133 model->Remove(parent, parent->GetIndexOf(node));
126 return true; 134 return true;
127 } 135 }
128 136
129 } // namespace bookmark_api_helpers 137 } // namespace bookmark_api_helpers
130 } // namespace extensions 138 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698