add_task(async function() { info("Add a bookmark."); let bm = await PlacesUtils.bookmarks.insert({ url: "http://example.com/", parentGuid: PlacesUtils.bookmarks.unfiledGuid, }); let id = await PlacesUtils.promiseItemId(bm.guid); Assert.equal(await PlacesUtils.promiseItemGuid(id), bm.guid); // Ensure invalidating a non-existent itemId doesn't throw. PlacesUtils.invalidateCachedGuidFor(null); PlacesUtils.invalidateCachedGuidFor(9999); info("Change the GUID."); await PlacesUtils.withConnectionWrapper("test", async function(db) { await db.execute("UPDATE moz_bookmarks SET guid = :guid WHERE id = :id", { guid: "123456789012", id, }); }); // The cache should still point to the wrong id. Assert.equal(await PlacesUtils.promiseItemGuid(id), bm.guid); info("Invalidate the cache."); PlacesUtils.invalidateCachedGuidFor(id); Assert.equal(await PlacesUtils.promiseItemGuid(id), "123456789012"); Assert.equal(await PlacesUtils.promiseItemId("123456789012"), id); await Assert.rejects( PlacesUtils.promiseItemId(bm.guid), /no item found for the given GUID/ ); });