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

Side by Side Diff: chrome/browser/extensions/extension_bookmark_helpers.cc

Issue 8374023: Move bookmarks extension api implementation to bookmarks dir (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix deps, rebase Created 9 years, 2 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
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/extension_bookmark_helpers.h"
6
7 #include "base/string_number_conversions.h"
8 #include "base/values.h"
9 #include "chrome/browser/bookmarks/bookmark_model.h"
10 #include "chrome/browser/extensions/extension_bookmarks_module_constants.h"
11
12 namespace keys = extension_bookmarks_module_constants;
13
14 namespace {
15
16 void AddNode(const BookmarkNode* node,
17 base::ListValue* list,
18 bool recurse,
19 bool only_folders) {
20 if (node->IsVisible()) {
21 base::DictionaryValue* dict = extension_bookmark_helpers::GetNodeDictionary(
22 node, recurse, only_folders);
23 list->Append(dict);
24 }
25 }
26
27 } // namespace
28
29 namespace extension_bookmark_helpers {
30
31 base::DictionaryValue* GetNodeDictionary(const BookmarkNode* node,
32 bool recurse,
33 bool only_folders) {
34 base::DictionaryValue* dict = new base::DictionaryValue;
35 dict->SetString(keys::kIdKey, base::Int64ToString(node->id()));
36
37 const BookmarkNode* parent = node->parent();
38 if (parent) {
39 dict->SetString(keys::kParentIdKey, base::Int64ToString(parent->id()));
40 dict->SetInteger(keys::kIndexKey, parent->GetIndexOf(node));
41 }
42
43 if (!node->is_folder()) {
44 dict->SetString(keys::kUrlKey, node->url().spec());
45 } else {
46 // Javascript Date wants milliseconds since the epoch, ToDoubleT is seconds.
47 base::Time t = node->date_folder_modified();
48 if (!t.is_null())
49 dict->SetDouble(keys::kDateFolderModifiedKey,
50 floor(t.ToDoubleT() * 1000));
51 }
52
53 dict->SetString(keys::kTitleKey, node->GetTitle());
54 if (!node->date_added().is_null()) {
55 // Javascript Date wants milliseconds since the epoch, ToDoubleT is seconds.
56 dict->SetDouble(keys::kDateAddedKey,
57 floor(node->date_added().ToDoubleT() * 1000));
58 }
59
60 if (recurse && node->is_folder()) {
61 base::ListValue* children = new base::ListValue;
62 for (int i = 0; i < node->child_count(); ++i) {
63 const BookmarkNode* child = node->GetChild(i);
64 if (child->IsVisible() && (!only_folders || child->is_folder())) {
65 DictionaryValue* dict = GetNodeDictionary(child, true, only_folders);
66 children->Append(dict);
67 }
68 }
69 dict->Set(keys::kChildrenKey, children);
70 }
71 return dict;
72 }
73
74 void AddNode(const BookmarkNode* node, base::ListValue* list, bool recurse) {
75 return ::AddNode(node, list, recurse, false);
76 }
77
78 void AddNodeFoldersOnly(const BookmarkNode* node,
79 base::ListValue* list,
80 bool recurse) {
81 return ::AddNode(node, list, recurse, true);
82 }
83
84 bool RemoveNode(BookmarkModel* model,
85 int64 id,
86 bool recursive,
87 std::string* error) {
88 const BookmarkNode* node = model->GetNodeByID(id);
89 if (!node) {
90 *error = keys::kNoNodeError;
91 return false;
92 }
93 if (model->is_permanent_node(node)) {
94 *error = keys::kModifySpecialError;
95 return false;
96 }
97 if (node->is_folder() && !node->empty() && !recursive) {
98 *error = keys::kFolderNotEmptyError;
99 return false;
100 }
101
102 const BookmarkNode* parent = node->parent();
103 model->Remove(parent, parent->GetIndexOf(node));
104 return true;
105 }
106
107 } // namespace extension_bookmark_helpers
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_bookmark_helpers.h ('k') | chrome/browser/extensions/extension_bookmark_manager_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698