summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerikkay@google.com <erikkay@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-29 21:32:12 +0000
committererikkay@google.com <erikkay@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-29 21:32:12 +0000
commit15bc709d5af8b4d1d31d7297d21c5d95396f01c4 (patch)
tree4cf3be3de15af83c28d3ab0626faf0a67a90e140
parentd4db95b2c1e239700c5557197ecce1e36c735d4a (diff)
downloadchromium_src-15bc709d5af8b4d1d31d7297d21c5d95396f01c4.zip
chromium_src-15bc709d5af8b4d1d31d7297d21c5d95396f01c4.tar.gz
chromium_src-15bc709d5af8b4d1d31d7297d21c5d95396f01c4.tar.bz2
a few minor tweaks the bookmarks API:
* change name "childrenIds" to "children" * add dateAdded and dateGroupModified properties * add id to onRemoved BUG=13994 BUG=14581 BUG=12217 TEST=load sample bookmarks extension and play around with Dump Bookmarks Review URL: http://codereview.chromium.org/151032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19536 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/extension_bookmarks_module.cc36
-rw-r--r--chrome/browser/extensions/extension_bookmarks_module.h4
-rwxr-xr-xchrome/browser/extensions/extension_bookmarks_module_constants.cc4
-rwxr-xr-xchrome/browser/extensions/extension_bookmarks_module_constants.h2
-rw-r--r--chrome/renderer/resources/extension_process_bindings.js5
-rw-r--r--chrome/test/data/extensions/samples/bookmarks/bookmark_view.html48
6 files changed, 71 insertions, 28 deletions
diff --git a/chrome/browser/extensions/extension_bookmarks_module.cc b/chrome/browser/extensions/extension_bookmarks_module.cc
index f25bd40..a538d3b 100644
--- a/chrome/browser/extensions/extension_bookmarks_module.cc
+++ b/chrome/browser/extensions/extension_bookmarks_module.cc
@@ -31,10 +31,23 @@ class ExtensionBookmarks {
if (parent)
dict->SetInteger(keys::kParentIdKey, parent->id());
- if (!node->is_folder())
+ if (!node->is_folder()) {
dict->SetString(keys::kUrlKey, node->GetURL().spec());
+ } else {
+ // Javascript Date wants milliseconds since the epoch, ToDoubleT is
+ // seconds.
+ base::Time t = node->date_group_modified();
+ if (!t.is_null())
+ dict->SetReal(keys::kDateGroupModifiedKey, floor(t.ToDoubleT() * 1000));
+ }
dict->SetString(keys::kTitleKey, node->GetTitle());
+ if (!node->date_added().is_null()) {
+ // Javascript Date wants milliseconds since the epoch, ToDoubleT is
+ // seconds.
+ dict->SetReal(keys::kDateAddedKey,
+ floor(node->date_added().ToDoubleT() * 1000));
+ }
int childCount = node->GetChildCount();
ListValue* children = new ListValue();
@@ -168,12 +181,11 @@ void ExtensionBookmarkEventRouter::BookmarkNodeAdded(BookmarkModel* model,
ListValue args;
const BookmarkNode* node = parent->GetChild(index);
args.Append(new FundamentalValue(node->id()));
- DictionaryValue* object_args = new DictionaryValue();
- object_args->SetString(keys::kTitleKey, node->GetTitle());
- object_args->SetString(keys::kUrlKey, node->GetURL().spec());
- object_args->SetInteger(keys::kParentIdKey, parent->id());
- object_args->SetInteger(keys::kIndexKey, index);
- args.Append(object_args);
+ DictionaryValue* obj = ExtensionBookmarks::GetNodeDictionary(node, false);
+
+ // Remove id since it's already being passed as the first argument.
+ obj->Remove(keys::kIdKey, NULL);
+ args.Append(obj);
std::string json_args;
JSONWriter::Write(&args, false, &json_args);
@@ -184,7 +196,17 @@ void ExtensionBookmarkEventRouter::BookmarkNodeRemoved(
BookmarkModel* model,
const BookmarkNode* parent,
int index) {
+ // TODO(erikkay) can this version ever be called?
+ NOTREACHED();
+}
+
+void ExtensionBookmarkEventRouter::BookmarkNodeRemoved(
+ BookmarkModel* model,
+ const BookmarkNode* parent,
+ int index,
+ const BookmarkNode* node) {
ListValue args;
+ args.Append(new FundamentalValue(node->id()));
DictionaryValue* object_args = new DictionaryValue();
object_args->SetInteger(keys::kParentIdKey, parent->id());
object_args->SetInteger(keys::kIndexKey, index);
diff --git a/chrome/browser/extensions/extension_bookmarks_module.h b/chrome/browser/extensions/extension_bookmarks_module.h
index 426e145..cfa32de 100644
--- a/chrome/browser/extensions/extension_bookmarks_module.h
+++ b/chrome/browser/extensions/extension_bookmarks_module.h
@@ -40,9 +40,7 @@ class ExtensionBookmarkEventRouter : public BookmarkModelObserver {
virtual void BookmarkNodeRemoved(BookmarkModel* model,
const BookmarkNode* parent,
int old_index,
- const BookmarkNode* node) {
- BookmarkNodeRemoved(model, parent, old_index);
- }
+ const BookmarkNode* node);
virtual void BookmarkNodeChanged(BookmarkModel* model,
const BookmarkNode* node);
virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model,
diff --git a/chrome/browser/extensions/extension_bookmarks_module_constants.cc b/chrome/browser/extensions/extension_bookmarks_module_constants.cc
index 96b8623..cdf602d 100755
--- a/chrome/browser/extensions/extension_bookmarks_module_constants.cc
+++ b/chrome/browser/extensions/extension_bookmarks_module_constants.cc
@@ -13,8 +13,10 @@ const wchar_t kOldIndexKey[] = L"oldIndex";
const wchar_t kOldParentIdKey[] = L"oldParentId";
const wchar_t kUrlKey[] = L"url";
const wchar_t kTitleKey[] = L"title";
-const wchar_t kChildrenKey[] = L"childrenIds";
+const wchar_t kChildrenKey[] = L"children";
const wchar_t kRecursiveKey[] = L"recursive";
+const wchar_t kDateAddedKey[] = L"dateAdded";
+const wchar_t kDateGroupModifiedKey[] = L"dateGroupModified";
const char kNoNodeError[] = "Can't find bookmark for id.";
const char kNoParentError[] = "Can't find parent bookmark for id.";
diff --git a/chrome/browser/extensions/extension_bookmarks_module_constants.h b/chrome/browser/extensions/extension_bookmarks_module_constants.h
index 4287359..3b504e6 100755
--- a/chrome/browser/extensions/extension_bookmarks_module_constants.h
+++ b/chrome/browser/extensions/extension_bookmarks_module_constants.h
@@ -19,6 +19,8 @@ extern const wchar_t kUrlKey[];
extern const wchar_t kTitleKey[];
extern const wchar_t kChildrenKey[];
extern const wchar_t kRecursiveKey[];
+extern const wchar_t kDateAddedKey[];
+extern const wchar_t kDateGroupModifiedKey[];
// Errors.
extern const char kNoNodeError[];
diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js
index 472d9f7..2cdf661 100644
--- a/chrome/renderer/resources/extension_process_bindings.js
+++ b/chrome/renderer/resources/extension_process_bindings.js
@@ -503,10 +503,11 @@ var chrome;
// bookmark events
- // Sends (id, {title, url, parentId, index})
+ // Sends (id, {title, url, parentId, index, dateAdded, dateGroupModified})
+ // date values are milliseconds since the UTC epoch.
chrome.bookmarks.onAdded = new chrome.Event("bookmark-added");
- // Sends ({parentId, index})
+ // Sends (id, {parentId, index})
chrome.bookmarks.onRemoved = new chrome.Event("bookmark-removed");
// Sends (id, object) where object has list of properties that have changed.
diff --git a/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html b/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html
index b470bcb..5275f37 100644
--- a/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html
+++ b/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html
@@ -22,6 +22,10 @@
font-family: monospace;
}
+ul {
+ padding-left: 10px;
+}
+
</style>
<script>
// XXX Hack: When you call window.open('chrome-extension://...'), the window is
@@ -32,30 +36,31 @@
if (!chrome.bookmarks)
location.reload();
-var logEvent = function(name, data) {
+var logEvent = function(name, id, data) {
var log = document.getElementById("event-log");
- log.innerHTML = name + "<br>" + log.innerHTML;
+ log.innerHTML = name + ": " + id + ", " + JSON.stringify(data) + "<br>" +
+ log.innerHTML;
console.log("got event: " + name);
}
-chrome.bookmarks.onAdded.addListener(function(data) {
- logEvent("onBookmarkAdded", data);
+chrome.bookmarks.onAdded.addListener(function(id, data) {
+ logEvent("onBookmarkAdded", id, data);
});
-chrome.bookmarks.onRemoved.addListener(function(data) {
- logEvent("onBookmarkRemoved", data);
+chrome.bookmarks.onRemoved.addListener(function(id, data) {
+ logEvent("onBookmarkRemoved", id, data);
});
-chrome.bookmarks.onChanged.addListener(function(data) {
- logEvent("onBookmarkChanged", data);
+chrome.bookmarks.onChanged.addListener(function(id, data) {
+ logEvent("onBookmarkChanged", id, data);
});
-chrome.bookmarks.onMoved.addListener(function(data) {
- logEvent("onBookmarkMoved", data);
+chrome.bookmarks.onMoved.addListener(function(id, data) {
+ logEvent("onBookmarkMoved", id, data);
});
-chrome.bookmarks.onChildrenReordered.addListener(function(data) {
- logEvent("onBookmarkChildrenReordered", data);
+chrome.bookmarks.onChildrenReordered.addListener(function(id, data) {
+ logEvent("onBookmarkChildrenReordered", id, data);
});
var prefix = "bookmark_";
@@ -89,20 +94,22 @@ var toggleBookmark = function(event) {
};
var addBookmark = function(bookmark, parent) {
- //console.log("addBookmark " + bookmark.id);
var child = document.createElement('li');
child.className = 'bookmark';
child.id = prefix + bookmark.id;
child.addEventListener('click', toggleBookmark, false);
+ var text = bookmark.title;
+ if (bookmark.dateAdded)
+ text += " (" + new Date(bookmark.dateAdded) + ")";
if (bookmark.url && bookmark.url.length) {
var link = document.createElement('a');
link.href = bookmark.url;
- link.innerHTML = bookmark.title;
+ link.innerHTML = text;
link.className = 'bookmark_title';
child.appendChild(link);
} else {
var title = document.createElement('div');
- title.innerHTML = bookmark.title;
+ title.innerHTML = text;
title.className = 'bookmark_title';
child.appendChild(title);
}
@@ -116,6 +123,16 @@ var addBookmarks = function(bookmarks, parent) {
bookmarks.forEach(function(bookmark) { addBookmark(bookmark, list); });
};
+var testGetTree = function(results) {
+ console.log("testGetTree:");
+ console.dir(results);
+ function get_children(node) {
+ console.log(node.title);
+ node.children.forEach(get_children);
+ };
+ results.forEach(get_children);
+};
+
var loadBookmarks = function() {
var container = document.getElementById('container');
var rootElement = document.createElement("div");
@@ -126,6 +143,7 @@ var loadBookmarks = function() {
chrome.bookmarks.getChildren(rootId, function(children) {
addBookmarks(children, rootElement);
});
+ chrome.bookmarks.getTree(testGetTree);
};
</script>