Index: chrome/test/data/extensions/samples/bookmarks/bookmark_view.html |
diff --git a/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html b/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5b9b064a48a4c18331ad117985651d0e9705826b |
--- /dev/null |
+++ b/chrome/test/data/extensions/samples/bookmarks/bookmark_view.html |
@@ -0,0 +1,143 @@ |
+<!DOCTYPE HTML> |
+<title>Bookmark View</title> |
+<style> |
+ |
+.bookmark { |
+ margin-left: 5px; |
+ padding: 2px; |
+} |
+ |
+.bookmark_title { |
+ display: inline; |
+ border: 1px solid white; |
+ padding: 0px 3px; |
+} |
+ |
+.bookmark_title:hover { |
+ background-color: silver; |
+ border: 1px solid black; |
+} |
+ |
+.event-log { |
+ font-family: monospace; |
+} |
+ |
+</style> |
+<script> |
+// XXX Hack: When you call window.open('chrome-extension://...'), the window is |
+// first navigated to about:blank, and then to the final URL. This confuses the |
+// code that sets up our v8 extensions, and we don't end up with them running. |
+// |
+// If we noticed this happened, reload ourselves, which should fix it. |
+if (!chromium.bookmarks) |
+ location.reload(); |
+ |
+var logEvent = function(name, data) { |
+ var log = document.getElementById("event-log"); |
+ log.innerHTML = name + "<br>" + log.innerHTML; |
+ console.log("got event: " + name); |
+} |
+ |
+chromium.bookmarks.onBookmarkAdded.addListener(function(data) { |
+ logEvent("onBookmarkAdded", data); |
+}); |
+ |
+chromium.bookmarks.onBookmarkRemoved.addListener(function(data) { |
+ logEvent("onBookmarkRemoved", data); |
+}); |
+ |
+chromium.bookmarks.onBookmarkChanged.addListener(function(data) { |
+ logEvent("onBookmarkChanged", data); |
+}); |
+ |
+chromium.bookmarks.onBookmarkMoved.addListener(function(data) { |
+ logEvent("onBookmarkMoved", data); |
+}); |
+ |
+chromium.bookmarks.onBookmarkChildrenReordered.addListener(function(data) { |
+ logEvent("onBookmarkChildrenReordered", data); |
+}); |
+ |
+var prefix = "bookmark_"; |
+ |
+var toggleBookmark = function(event) { |
+ event.stopPropagation(); |
+ var node = event.currentTarget; |
+ var id_str = node.id; |
+ if (id_str < prefix.length) |
+ return; |
+ var id = parseInt(id_str.substring(prefix.length)); |
+ if (id == NaN) |
+ return; |
+ console.log("toggle: " + id); |
+ //console.dir(event); |
+ chromium.bookmarks.get([id], function(bookmark) { |
+ //console.log("toggle get"); |
+ console.dir(bookmark[0]); |
+ if (bookmark[0].childrenIds && bookmark[0].childrenIds.length) { |
+ if (node.childNodes.length != 1) { |
+ //console.log("toggle collapse"); |
+ node.removeChild(node.childNodes[1]); |
+ } else { |
+ //console.log("before"); |
+ chromium.bookmarks.get(bookmark[0].childrenIds, function(children) { |
+ //console.log("toggle expand"); |
+ if (children && children.length) { |
+ console.dir(children); |
+ addBookmarks(children, node); |
+ } |
+ }); |
+ } |
+ } |
+ }); |
+}; |
+ |
+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); |
+ if (bookmark.url && bookmark.url.length) { |
+ var link = document.createElement('a'); |
+ link.href = bookmark.url; |
+ link.innerHTML = bookmark.title; |
+ link.className = 'bookmark_title'; |
+ child.appendChild(link); |
+ } else { |
+ var title = document.createElement('div'); |
+ title.innerHTML = bookmark.title; |
+ title.className = 'bookmark_title'; |
+ child.appendChild(title); |
+ } |
+ parent.appendChild(child); |
+}; |
+ |
+var addBookmarks = function(bookmarks, parent) { |
+ console.log("addBookmarks " + parent.id); |
+ var list = document.createElement("ul"); |
+ parent.appendChild(list); |
+ bookmarks.forEach(function(bookmark) { addBookmark(bookmark, list); }); |
+}; |
+ |
+var loadBookmarks = function() { |
+ var container = document.getElementById('container'); |
+ chromium.bookmarks.get([], function(results) { |
+ var root = results[0]; |
+ console.dir(root); |
+ var rootElement = document.createElement("div"); |
+ rootElement.id = prefix + root.id; |
+ // root element is empty / invisible, just an id to be looked up |
+ container.appendChild(rootElement); |
+ chromium.bookmarks.get(root.childrenIds, function(children) { |
+ addBookmarks(children, rootElement); |
+ }); |
+ }); |
+}; |
+ |
+</script> |
+<body onload="loadBookmarks()"> |
+<div id="container"> |
+</div> |
+<div id="event-log"></div> |
+</body> |