toolkit/components/places/tests/chrome/test_371798.xul

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:ffacaaf9661f
1 <?xml version="1.0"?>
2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
3 <?xml-stylesheet
4 href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
5 <window title="Bug 371798"
6 xmlns:html="http://www.w3.org/1999/xhtml"
7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
8 <script type="application/javascript"
9 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
10
11 <body xmlns="http://www.w3.org/1999/xhtml" />
12
13 <script type="application/javascript">
14 <![CDATA[
15 // Test the asynchronous live-updating of bookmarks query results
16 SimpleTest.waitForExplicitFinish();
17
18 const Cc = Components.classes;
19 const Ci = Components.interfaces;
20 const Cr = Components.results;
21
22 var iosvc = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
23
24 function uri(spec) {
25 return iosvc.newURI(spec, null, null);
26 }
27
28 var histsvc = Cc["@mozilla.org/browser/nav-history-service;1"].
29 getService(Ci.nsINavHistoryService);
30 var bmsvc = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
31 getService(Ci.nsINavBookmarksService);
32
33 // add 2 bookmarks to the toolbar, same URI, different titles (set later)
34 var toolbarFolderId = bmsvc.toolbarFolder;
35 var testURI = uri("http://foo.com");
36 var bm1 = bmsvc.insertBookmark(toolbarFolderId, testURI, bmsvc.DEFAULT_INDEX, "");
37 var bm2 = bmsvc.insertBookmark(toolbarFolderId, testURI, bmsvc.DEFAULT_INDEX, "");
38
39 // query for bookmarks
40 var options = histsvc.getNewQueryOptions();
41 var query = histsvc.getNewQuery();
42 query.setFolders([toolbarFolderId], 1);
43 var result = histsvc.executeQuery(query, options);
44 var rootNode = result.root;
45 rootNode.containerOpen = true;
46
47 // set up observer
48 var observer =
49 {
50 QueryInterface: function(iid) {
51 if (iid.equals(Ci.nsINavBookmarkObserver) ||
52 iid.equals(Ci.nsISupports))
53 return this;
54 throw Cr.NS_ERROR_NO_INTERFACE;
55 },
56
57 // nsINavBookmarkObserver
58 onBeginUpdateBatch: function(){},
59 onEndUpdateBatch: function(){},
60 onItemAdded: function(){},
61 onItemRemoved: function(){},
62 onItemChanged: function(bookmarkId, property, isAnnotationProperty, value,
63 lastModified, itemType){
64 runTest();
65 bmsvc.removeObserver(this);
66 },
67 onItemVisited: function(){},
68 onItemMoved: function(){}
69 };
70 bmsvc.addObserver(observer, false);
71
72 // modify the bookmark's title
73 var newTitle = "foo";
74 bmsvc.setItemTitle(bm2, newTitle);
75
76 /*
77 this gets called after our observer gets notified of onItemChanged
78 which is triggered by updating the item's title.
79 after receiving the notification, our original query should also
80 have been live-updated, so we can iterate through its children,
81 to check that only the modified bookmark has changed.
82 */
83 function runTest() {
84 // result node should be updated
85 var cc = rootNode.childCount;
86 for (var i=0; i < cc; ++i) {
87 var node = rootNode.getChild(i);
88 // test that bm1 does not have new title
89 if (node.itemId == bm1)
90 ok(node.title != newTitle,
91 "Changing a bookmark's title did not affect the title of other bookmarks with the same URI");
92 }
93 rootNode.containerOpen = false;
94
95 // clean up finish test
96 bmsvc.removeItem(bm1);
97 bmsvc.removeItem(bm2);
98 SimpleTest.finish();
99 }
100
101 ]]>
102 </script>
103
104 </window>

mercurial