| 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>
|
|
|