summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_addBookmarkForFrame.js
blob: ec6f48c81747f1af4b9b06a898b92d4bd99f61df (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/**
 * Tests that the add bookmark for frame dialog functions correctly.
 */

const BASE_URL =
  "http://mochi.test:8888/browser/browser/components/places/tests/browser";
const PAGE_URL = BASE_URL + "/framedPage.html";
const LEFT_URL = BASE_URL + "/frameLeft.html";
const RIGHT_URL = BASE_URL + "/frameRight.html";

async function withAddBookmarkForFrame(taskFn) {
  // Open a tab and wait for all the subframes to load.
  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE_URL);

  let contentAreaContextMenu = document.getElementById(
    "contentAreaContextMenu"
  );

  let popupShownPromise = BrowserTestUtils.waitForEvent(
    contentAreaContextMenu,
    "popupshown"
  );
  await BrowserTestUtils.synthesizeMouseAtCenter(
    "#left",
    { type: "contextmenu", button: 2 },
    gBrowser.selectedBrowser
  );
  await popupShownPromise;

  await withBookmarksDialog(
    true,
    function() {
      let frameMenuItem = document.getElementById("frame");
      frameMenuItem.click();

      let bookmarkFrame = document.getElementById("context-bookmarkframe");
      bookmarkFrame.click();
    },
    taskFn
  );

  BrowserTestUtils.removeTab(tab);
}

add_task(async function test_open_add_bookmark_for_frame() {
  info("Test basic opening of the add bookmark for frame dialog.");
  await withAddBookmarkForFrame(async dialogWin => {
    let namepicker = dialogWin.document.getElementById(
      "editBMPanel_namePicker"
    );
    Assert.ok(!namepicker.readOnly, "Name field is writable");
    Assert.equal(namepicker.value, "Left frame", "Name field is correct.");

    let expectedFolder = gBookmarksToolbar2h2020
      ? "BookmarksToolbarFolderTitle"
      : "OtherBookmarksFolderTitle";
    let expectedFolderName = PlacesUtils.getString(expectedFolder);

    let folderPicker = dialogWin.document.getElementById(
      "editBMPanel_folderMenuList"
    );
    await BrowserTestUtils.waitForCondition(
      () => folderPicker.selectedItem.label == expectedFolderName,
      "The folder is the expected one."
    );

    let tagsField = dialogWin.document.getElementById("editBMPanel_tagsField");
    Assert.equal(tagsField.value, "", "The tags field should be empty");
  });
});

add_task(async function test_move_bookmark_whilst_add_bookmark_open() {
  info(
    "Test moving a bookmark whilst the add bookmark for frame dialog is open."
  );
  await withAddBookmarkForFrame(async dialogWin => {
    let expectedGuid = await PlacesUIUtils.defaultParentGuid;
    let expectedFolder = gBookmarksToolbar2h2020
      ? "BookmarksToolbarFolderTitle"
      : "OtherBookmarksFolderTitle";
    let expectedFolderName = PlacesUtils.getString(expectedFolder);
    let bookmarksMenuFolderName = PlacesUtils.getString(
      "BookmarksMenuFolderTitle"
    );

    let url = makeURI(LEFT_URL);
    let folderPicker = dialogWin.document.getElementById(
      "editBMPanel_folderMenuList"
    );

    // Check the initial state of the folder picker.
    await BrowserTestUtils.waitForCondition(
      () => folderPicker.selectedItem.label == expectedFolderName,
      "The folder is the expected one."
    );

    // Check the bookmark has been created as expected.
    let bookmark = await PlacesUtils.bookmarks.fetch({ url });

    Assert.equal(
      bookmark.parentGuid,
      expectedGuid,
      "The bookmark should be in the expected folder."
    );

    // Now move the bookmark and check the folder picker is updated correctly.
    bookmark.parentGuid = PlacesUtils.bookmarks.menuGuid;
    bookmark.index = PlacesUtils.bookmarks.DEFAULT_INDEX;

    await PlacesUtils.bookmarks.update(bookmark);

    await BrowserTestUtils.waitForCondition(
      () => folderPicker.selectedItem.label == bookmarksMenuFolderName,
      "The folder picker has changed to the new folder"
    );
  });
});