summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/unit/test_PlacesUtils_lazyobservers.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/places/tests/unit/test_PlacesUtils_lazyobservers.js')
-rw-r--r--toolkit/components/places/tests/unit/test_PlacesUtils_lazyobservers.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/unit/test_PlacesUtils_lazyobservers.js b/toolkit/components/places/tests/unit/test_PlacesUtils_lazyobservers.js
new file mode 100644
index 000000000..f0e9c5517
--- /dev/null
+++ b/toolkit/components/places/tests/unit/test_PlacesUtils_lazyobservers.js
@@ -0,0 +1,47 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function run_test() {
+ do_test_pending();
+
+ const TEST_URI = NetUtil.newURI("http://moz.org/")
+ let observer = {
+ QueryInterface: XPCOMUtils.generateQI([
+ Ci.nsINavBookmarkObserver,
+ ]),
+
+ onBeginUpdateBatch: function () {},
+ onEndUpdateBatch: function () {},
+ onItemAdded: function (aItemId, aParentId, aIndex, aItemType, aURI) {
+ do_check_true(aURI.equals(TEST_URI));
+ PlacesUtils.removeLazyBookmarkObserver(this);
+ do_test_finished();
+ },
+ onItemRemoved: function () {},
+ onItemChanged: function () {},
+ onItemVisited: function () {},
+ onItemMoved: function () {},
+ };
+
+ // Check registration and removal with uninitialized bookmarks service.
+ PlacesUtils.addLazyBookmarkObserver(observer);
+ PlacesUtils.removeLazyBookmarkObserver(observer);
+
+ // Add a proper lazy observer we will test.
+ PlacesUtils.addLazyBookmarkObserver(observer);
+
+ // Check that we don't leak when adding and removing an observer while the
+ // bookmarks service is instantiated but no change happened (bug 721319).
+ PlacesUtils.bookmarks;
+ PlacesUtils.addLazyBookmarkObserver(observer);
+ PlacesUtils.removeLazyBookmarkObserver(observer);
+ try {
+ PlacesUtils.bookmarks.removeObserver(observer);
+ do_throw("Trying to remove a nonexisting observer should throw!");
+ } catch (ex) {}
+
+ PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId,
+ TEST_URI,
+ PlacesUtils.bookmarks.DEFAULT_INDEX,
+ "Bookmark title");
+}