summaryrefslogtreecommitdiffstats
path: root/browser/components/migration/tests/unit/test_360se_bookmarks.js
blob: e976aac6097767c90748bc0ce53c5c6170dba87a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"use strict";

const { CustomizableUI } = ChromeUtils.import(
  "resource:///modules/CustomizableUI.jsm"
);

add_task(async function() {
  registerFakePath("AppData", do_get_file("AppData/Roaming/"));

  let migrator = await MigrationUtils.getMigrator("chromium-360se");
  // Sanity check for the source.
  Assert.ok(await migrator.isSourceAvailable());

  let importedToBookmarksToolbar = false;
  let itemsSeen = { bookmarks: 0, folders: 0 };

  let listener = events => {
    for (let event of events) {
      itemsSeen[
        event.itemType == PlacesUtils.bookmarks.TYPE_FOLDER
          ? "folders"
          : "bookmarks"
      ]++;
      if (event.parentGuid == PlacesUtils.bookmarks.toolbarGuid) {
        importedToBookmarksToolbar = true;
      }
    }
  };
  PlacesUtils.observers.addListener(["bookmark-added"], listener);
  let observerNotified = false;
  Services.obs.addObserver((aSubject, aTopic, aData) => {
    let [toolbar, visibility] = JSON.parse(aData);
    Assert.equal(
      toolbar,
      CustomizableUI.AREA_BOOKMARKS,
      "Notification should be received for bookmarks toolbar"
    );
    Assert.equal(
      visibility,
      "true",
      "Notification should say to reveal the bookmarks toolbar"
    );
    observerNotified = true;
  }, "browser-set-toolbar-visibility");

  await promiseMigration(migrator, MigrationUtils.resourceTypes.BOOKMARKS, {
    id: "Default",
  });
  PlacesUtils.observers.removeListener(["bookmark-added"], listener);

  // Check the bookmarks have been imported to all the expected parents.
  Assert.ok(importedToBookmarksToolbar, "Bookmarks imported in the toolbar");
  Assert.equal(itemsSeen.bookmarks, 8, "Should import all bookmarks.");
  Assert.equal(itemsSeen.folders, 2, "Should import all folders.");
  // Check that the telemetry matches:
  Assert.equal(
    MigrationUtils._importQuantities.bookmarks,
    itemsSeen.bookmarks + itemsSeen.folders,
    "Telemetry reporting correct."
  );
  Assert.ok(observerNotified, "The observer should be notified upon migration");
});