<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin" type="text/css"?> <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?> <window title="Add Bad Livemarks" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="runTest()"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <body xmlns="http://www.w3.org/1999/xhtml" /> <script type="application/javascript"> <![CDATA[ /* Test loading feeds with items that aren't allowed */ SimpleTest.waitForExplicitFinish(); var Cc = Components.classes; var Ci = Components.interfaces; var Cr = Components.results; Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); Components.utils.import("resource://gre/modules/NetUtil.jsm"); Components.utils.import("resource://gre/modules/PlacesUtils.jsm"); function runTest() { const FEEDSPEC = "http://mochi.test:8888/tests/toolkit/components/places/tests/chrome/bad_links.atom"; const GOOD_URLS = ["http://example.org/first", "http://example.org/last"]; PlacesUtils.livemarks.addLivemark( { title: "foo" , parentGuid: PlacesUtils.bookmarks.toolbarGuid , feedURI: NetUtil.newURI(FEEDSPEC) , siteURI: NetUtil.newURI("http:/mochi.test/") }) .then(function (aLivemark) { waitForLivemarkLoad(aLivemark, function (aLivemark) { let nodes = aLivemark.getNodesForContainer({}); is(nodes.length, 2, "Created the two good livemark items"); for (let i = 0; i < nodes.length; ++i) { let node = nodes[i]; ok(GOOD_URLS.includes(node.uri), "livemark item created with bad uri " + node.uri); } PlacesUtils.livemarks.removeLivemark(aLivemark).then(() => { SimpleTest.finish(); }); }); }, function () { is(true, false, "Should not fail adding a livemark"); } ); } function waitForLivemarkLoad(aLivemark, aCallback) { // Don't need a real node here. let node = {}; let resultObserver = { nodeInserted: function() {}, nodeRemoved: function() {}, nodeAnnotationChanged: function() {}, nodeTitleChanged: function() {}, nodeHistoryDetailsChanged: function() {}, nodeMoved: function() {}, ontainerStateChanged: function () {}, sortingChanged: function() {}, batching: function() {}, invalidateContainer: function(node) { isnot(aLivemark.status, Ci.mozILivemark.STATUS_FAILED, "Loading livemark should success"); if (aLivemark.status == Ci.mozILivemark.STATUS_READY) { aLivemark.unregisterForUpdates(node, resultObserver); aCallback(aLivemark); } } }; aLivemark.registerForUpdates(node, resultObserver); aLivemark.reload(); } ]]> </script> </window>