42 const Cc = Components.classes;
43 const Ci = Components.interfaces;
49 ok(PlacesUtils,
"PlacesUtils in context");
53 var popup = document.getElementById(
"bookmarksMenuPopup");
54 ok(popup,
"Menu popup element exists");
58 var
sidebar = document.getElementById(
"sidebar");
59 sidebar.addEventListener(
"load",
function() {
60 sidebar.removeEventListener(
"load",
arguments.callee,
true);
64 toggleSidebar(
"viewBookmarksSidebar",
true);
72 var popupEvent = document.createEvent(
"MouseEvent");
73 popupEvent.initMouseEvent(
"popupshowing",
true,
true,
window, 0,
74 0, 0, 0, 0,
false,
false,
false,
false,
76 aPopup.dispatchEvent(popupEvent);
83 var
bs = PlacesUtils.bookmarks;
86 var addedBookmarks = [];
89 info(
"*** Acting on menu bookmarks");
90 var
id = bs.insertBookmark(bs.bookmarksMenuFolder,
91 PlacesUtils._uri(
"http://bm1.mozilla.org/"),
94 addedBookmarks.push(
id);
96 bs.setItemTitle(
id,
"bm1_edited");
97 id = bs.insertBookmark(bs.bookmarksMenuFolder,
98 PlacesUtils._uri(
"place:"),
101 addedBookmarks.push(
id);
102 id = bs.insertSeparator(bs.bookmarksMenuFolder, bs.DEFAULT_INDEX);
103 addedBookmarks.push(
id);
104 id = bs.createFolder(bs.bookmarksMenuFolder,
107 addedBookmarks.push(
id);
108 id = bs.insertBookmark(
id,
109 PlacesUtils._uri(
"http://bmf1.mozilla.org/"),
112 addedBookmarks.push(
id);
113 bs.moveItem(
id, bs.bookmarksMenuFolder, 0);
116 info(
"*** Acting on toolbar bookmarks");
117 id = bs.insertBookmark(bs.toolbarFolder,
118 PlacesUtils._uri(
"http://tb1.mozilla.org/"),
121 addedBookmarks.push(
id);
123 bs.setItemTitle(
id,
"tb1_edited");
124 id = bs.insertBookmark(bs.toolbarFolder,
125 PlacesUtils._uri(
"place:"),
128 addedBookmarks.push(
id);
129 id = bs.insertSeparator(bs.toolbarFolder, bs.DEFAULT_INDEX);
130 addedBookmarks.push(
id);
131 id = bs.createFolder(bs.toolbarFolder,
134 addedBookmarks.push(
id);
135 id = bs.insertBookmark(
id,
136 PlacesUtils._uri(
"http://tbf1.mozilla.org/"),
139 addedBookmarks.push(
id);
140 bs.moveItem(
id, bs.toolbarFolder, 0);
143 info(
"*** Acting on unsorted bookmarks");
144 id = bs.insertBookmark(bs.unfiledBookmarksFolder,
145 PlacesUtils._uri(
"http://ub1.mozilla.org/"),
148 addedBookmarks.push(
id);
150 bs.setItemTitle(
id,
"ub1_edited");
151 id = bs.insertBookmark(bs.unfiledBookmarksFolder,
152 PlacesUtils._uri(
"place:"),
155 addedBookmarks.push(
id);
156 id = bs.insertSeparator(bs.unfiledBookmarksFolder, bs.DEFAULT_INDEX);
157 addedBookmarks.push(
id);
158 id = bs.createFolder(bs.unfiledBookmarksFolder,
161 addedBookmarks.push(
id);
162 id = bs.insertBookmark(
id,
163 PlacesUtils._uri(
"http://ubf1.mozilla.org/"),
166 addedBookmarks.push(
id);
167 bs.moveItem(
id, bs.unfiledBookmarksFolder, 0);
170 addedBookmarks.forEach(
function (aItem) {
174 bs.removeItem(aItem);
188 toggleSidebar(
"viewBookmarksSidebar",
false);
199 if (aIID.equals(
Ci.nsINavBookmarkObserver) ||
200 aIID.equals(
Ci.nsISupports))
202 throw Cr.NS_NOINTERFACE;
206 onItemAdded:
function PSB_onItemAdded(aItemId, aFolderId, aIndex,
209 ok(views.length > 0,
"Found affected views (" + views.length +
"): " + views);
212 for (var
i = 0;
i < views.length;
i++) {
214 isnot(node,
null,
"Found new Places node in " + views[i]);
215 is(index, aIndex,
"Node is at index " + index);
219 onItemRemoved:
function PSB_onItemRemoved(aItemId, aFolder, aIndex,
222 ok(views.length > 0,
"Found affected views (" + views.length +
"): " + views);
224 for (var
i = 0;
i < views.length;
i++) {
228 is(node,
null,
"Places node not found in " + views[i]);
232 onItemMoved:
function(aItemId,
233 aOldFolderId, aOldIndex,
234 aNewFolderId, aNewIndex,
237 ok(views.length > 0,
"Found affected views: " + views);
240 for (var
i = 0;
i < views.length;
i++) {
244 isnot(node,
null,
"Found new Places node in " + views[i]);
245 is(index, aNewIndex,
"Node is at index " + index);
251 onBeforeItemRemoved:
function PSB_onBeforeItemRemoved(aItemId) {},
252 onItemVisited:
function() {},
254 onItemChanged:
function PSB_onItemChanged(aItemId, aProperty, aIsAnnotationProperty,
aValue) {
255 if (aProperty !==
"title")
258 var views =
getViewsForFolder(PlacesUtils.bookmarks.getFolderIdForItem(aItemId));
259 ok(views.length > 0,
"Found affected views (" + views.length +
"): " + views);
262 for (var
i = 0;
i < views.length;
i++) {
264 isnot(node,
null,
"Found new Places node in " + views[i]);
265 is(node.title,
aValue,
"Node has correct title: " +
aValue);
300 var toolbar = document.getElementById(
"bookmarksBarContent");
302 function findNode(aContainer) {
303 var children = aContainer.childNodes;
304 for (var
i = 0, staticNodes = 0;
i < children.length;
i++) {
305 var child = children[
i];
313 if (child.node.itemId == aItemId)
314 return [child.node,
i - staticNodes];
318 if (PlacesUtils.nodeIsFolder(child.node)) {
319 var popup = child.lastChild;
320 popup.showPopup(popup);
321 var foundNode = findNode(popup);
323 if (foundNode[0] !=
null)
330 return findNode(toolbar);
341 var
menu = document.getElementById(
"bookmarksMenu");
343 function findNode(aContainer) {
344 var children = aContainer.childNodes;
345 for (var
i = 0, staticNodes = 0;
i < children.length;
i++) {
346 var child = children[
i];
354 if (child.node.itemId == aItemId)
355 return [child.node,
i - staticNodes];
359 if (PlacesUtils.nodeIsFolder(child.node)) {
360 var popup = child.lastChild;
362 var foundNode = findNode(popup);
365 if (foundNode[0] !=
null)
372 return findNode(menu.lastChild);
383 var
sidebar = document.getElementById(
"sidebar");
384 var tree = sidebar.contentDocument.getElementById(
"bookmarks-view");
386 function findNode(aContainerIndex) {
387 if (tree.view.isContainerEmpty(aContainerIndex))
392 for (var
i = aContainerIndex + 1;
i < tree.view.rowCount;
i++) {
393 var
node = tree.view.nodeForTreeIndex(
i);
395 if (node.itemId == aItemId) {
397 return [
node,
i - tree.view.getParentIndex(
i) - 1];
400 if (PlacesUtils.nodeIsFolder(node)) {
402 tree.view.toggleOpenState(
i);
404 var foundNode = findNode(
i);
406 tree.view.toggleOpenState(
i);
408 if (foundNode[0] != null)
413 if (!tree.view.hasNextSibling(aContainerIndex + 1,
i))
420 for (var
i = 0;
i < tree.view.rowCount;
i++) {
422 tree.view.toggleOpenState(
i);
424 var foundNode = findNode(
i);
426 tree.view.toggleOpenState(
i);
428 if (foundNode[0] !=
null)
442 var rootId = aFolderId;
443 while (!PlacesUtils.isRootItem(rootId))
444 rootId = PlacesUtils.bookmarks.getFolderIdForItem(rootId);
447 case PlacesUtils.toolbarFolderId:
448 return [
"toolbar",
"sidebar"]
450 case PlacesUtils.bookmarksMenuFolderId:
451 return [
"menu",
"sidebar"]
453 case PlacesUtils.unfiledBookmarksFolderId:
function getNodeForSidebarItem(aItemId)
onPageChanged onEndUpdateBatch
function getViewsForFolder(aFolderId)
function fakeOpenPopup(aPopup)
sbOSDControlService prototype QueryInterface
function getNodeForMenuItem(aItemId)
onPageChanged onBeginUpdateBatch
return!aWindow arguments!aWindow arguments[0]
function searchItemInView(aItemId, aView)
function getNodeForToolbarItem(aItemId)
_getSelectedPageStyle s i