summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/unit/test_async_in_batchmode.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/places/tests/unit/test_async_in_batchmode.js')
-rw-r--r--toolkit/components/places/tests/unit/test_async_in_batchmode.js55
1 files changed, 0 insertions, 55 deletions
diff --git a/toolkit/components/places/tests/unit/test_async_in_batchmode.js b/toolkit/components/places/tests/unit/test_async_in_batchmode.js
deleted file mode 100644
index b39b26519..000000000
--- a/toolkit/components/places/tests/unit/test_async_in_batchmode.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// This is testing the frankenstein situation Sync forces Places into.
-// Sync does runInBatchMode() and before the callback returns the Places async
-// APIs are used (either by Sync itself, or by any other code in the system)
-// As seen in bug 1197856 and bug 1190131.
-
-Cu.import("resource://gre/modules/PlacesUtils.jsm");
-
-// This function "waits" for a promise to resolve by spinning a nested event
-// loop.
-function waitForPromise(promise) {
- let thread = Cc["@mozilla.org/thread-manager;1"].getService().currentThread;
-
- let finalResult, finalException;
-
- promise.then(result => {
- finalResult = result;
- }, err => {
- finalException = err;
- });
-
- // Keep waiting until our callback is triggered (unless the app is quitting).
- while (!finalResult && !finalException) {
- thread.processNextEvent(true);
- }
- if (finalException) {
- throw finalException;
- }
- return finalResult;
-}
-
-add_test(function() {
- let testCompleted = false;
- PlacesUtils.bookmarks.runInBatchMode({
- runBatched() {
- // create a bookmark.
- let info = { parentGuid: PlacesUtils.bookmarks.unfiledGuid,
- type: PlacesUtils.bookmarks.TYPE_BOOKMARK,
- url: "http://example.com/" };
- let insertPromise = PlacesUtils.bookmarks.insert(info);
- let bookmark = waitForPromise(insertPromise);
- // Check we got a bookmark (bookmark creation failed completely in
- // bug 1190131)
- equal(bookmark.url, info.url);
- // Check the promiseItemGuid and promiseItemId helpers - failure in these
- // was the underlying reason for the failure.
- let id = waitForPromise(PlacesUtils.promiseItemId(bookmark.guid));
- let guid = waitForPromise(PlacesUtils.promiseItemGuid(id));
- equal(guid, bookmark.guid, "id and guid round-tripped correctly");
- testCompleted = true;
- }
- }, null);
- // make sure we tested what we think we tested.
- ok(testCompleted);
- run_next_test();
-});