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

Unified Diff: chrome/test/data/extensions/samples/bookmarks/bookmark_view.html

Issue 99201: Sample sprucing part 2 (Closed)
Patch Set: Merge to HEAD Created 11 years, 8 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/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>

Powered by Google App Engine
This is Rietveld 408576698