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

Unified Diff: chrome/browser/bookmarks/bookmark_extension_helpers.cc

Issue 10694062: Refactor chrome.bookmarks API to use JSON schema compiler. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Nits Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/bookmarks/bookmark_extension_helpers.cc
diff --git a/chrome/browser/bookmarks/bookmark_extension_helpers.cc b/chrome/browser/bookmarks/bookmark_extension_helpers.cc
index fea02db1143bc2d052bdb5cce97058a4fec5edaf..281ac02c7f8e6517f852ad05e7111724a017f5a7 100644
--- a/chrome/browser/bookmarks/bookmark_extension_helpers.cc
+++ b/chrome/browser/bookmarks/bookmark_extension_helpers.cc
@@ -5,17 +5,37 @@
#include "chrome/browser/bookmarks/bookmark_extension_helpers.h"
#include <math.h> // For floor()
+#include <vector>
#include "base/string_number_conversions.h"
+#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/bookmarks/bookmark_extension_api_constants.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
+#include "chrome/common/extensions/api/bookmarks.h"
+
+using extensions::api::bookmarks::BookmarkTreeNode;
namespace keys = bookmark_extension_api_constants;
namespace {
void AddNode(const BookmarkNode* node,
+ std::vector<linked_ptr<BookmarkTreeNode> >* nodes,
+ bool recurse,
+ bool only_folders) {
+ if (node->IsVisible()) {
+ linked_ptr<BookmarkTreeNode> new_node(
+ bookmark_extension_helpers::GetBookmarkTreeNode(node,
+ recurse,
+ only_folders));
+ nodes->push_back(new_node);
+ }
+}
+
+// TODO(mwrosen): Remove this function once chrome.experimental.bookmarkManager
+// is refactored to use the JSON schema compiler.
+void AddNode(const BookmarkNode* node,
base::ListValue* list,
bool recurse,
bool only_folders) {
@@ -30,6 +50,54 @@ void AddNode(const BookmarkNode* node,
namespace bookmark_extension_helpers {
+BookmarkTreeNode* GetBookmarkTreeNode(const BookmarkNode* node,
+ bool recurse,
+ bool only_folders) {
+ BookmarkTreeNode* bookmark_tree_node = new BookmarkTreeNode;
+
+ bookmark_tree_node->id = base::Int64ToString(node->id());
+
+ const BookmarkNode* parent = node->parent();
+ if (parent) {
+ bookmark_tree_node->parent_id.reset(new std::string(
+ base::Int64ToString(parent->id())));
+ bookmark_tree_node->index.reset(new int(parent->GetIndexOf(node)));
+ }
+
+ if (!node->is_folder()) {
+ bookmark_tree_node->url.reset(new std::string(node->url().spec()));
+ } else {
+ // Javascript Date wants milliseconds since the epoch, ToDoubleT is seconds.
+ base::Time t = node->date_folder_modified();
+ if (!t.is_null()) {
+ bookmark_tree_node->date_group_modified.reset(
+ new double(floor(t.ToDoubleT() * 1000)));
+ }
+ }
+
+ bookmark_tree_node->title = UTF16ToUTF8(node->GetTitle());
+ if (!node->date_added().is_null()) {
+ // Javascript Date wants milliseconds since the epoch, ToDoubleT is seconds.
+ bookmark_tree_node->date_added.reset(
+ new double(floor(node->date_added().ToDoubleT() * 1000)));
+ }
+
+ 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));
+ children.push_back(child_node);
+ }
+ }
+ bookmark_tree_node->children.reset(
+ new std::vector<linked_ptr<BookmarkTreeNode> >(children));
+ }
+ return bookmark_tree_node;
+}
+
base::DictionaryValue* GetNodeDictionary(const BookmarkNode* node,
bool recurse,
bool only_folders) {
@@ -73,6 +141,18 @@ base::DictionaryValue* GetNodeDictionary(const BookmarkNode* node,
return dict;
}
+void AddNode(const BookmarkNode* node,
+ std::vector<linked_ptr<BookmarkTreeNode> >* nodes,
+ bool recurse) {
+ return ::AddNode(node, nodes, recurse, false);
+}
+
+void AddNodeFoldersOnly(const BookmarkNode* node,
+ std::vector<linked_ptr<BookmarkTreeNode> >* nodes,
+ bool recurse) {
+ return ::AddNode(node, nodes, recurse, true);
+}
+
void AddNode(const BookmarkNode* node, base::ListValue* list, bool recurse) {
return ::AddNode(node, list, recurse, false);
}
« no previous file with comments | « chrome/browser/bookmarks/bookmark_extension_helpers.h ('k') | chrome/browser/bookmarks/bookmark_extension_helpers_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698