"use strict"; add_task(function* () { registerFakePath("ULibDir", do_get_file("Library/")); let migrator = MigrationUtils.getMigrator("safari"); // Sanity check for the source. Assert.ok(migrator.sourceExists); // Wait for the imported bookmarks. Check that "From Safari" // folders are created on the toolbar. let source = MigrationUtils.getLocalizedString("sourceNameSafari"); let label = MigrationUtils.getLocalizedString("importedBookmarksFolder", [source]); let expectedParents = [ PlacesUtils.toolbarFolderId ]; let itemCount = 0; let bmObserver = { onItemAdded(aItemId, aParentId, aIndex, aItemType, aURI, aTitle) { if (aTitle != label) { itemCount++; } if (expectedParents.length > 0 && aTitle == label) { let index = expectedParents.indexOf(aParentId); Assert.ok(index != -1, "Found expected parent"); expectedParents.splice(index, 1); } }, onBeginUpdateBatch() {}, onEndUpdateBatch() {}, onItemRemoved() {}, onItemChanged() {}, onItemVisited() {}, onItemMoved() {}, }; PlacesUtils.bookmarks.addObserver(bmObserver, false); yield promiseMigration(migrator, MigrationUtils.resourceTypes.BOOKMARKS); PlacesUtils.bookmarks.removeObserver(bmObserver); // Check the bookmarks have been imported to all the expected parents. Assert.ok(!expectedParents.length, "No more expected parents"); Assert.equal(itemCount, 13, "Should import all 13 items."); // Check that the telemetry matches: Assert.equal(MigrationUtils._importQuantities.bookmarks, itemCount, "Telemetry reporting correct."); });