/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

add_setup(async function () {
  await PlacesUtils.bookmarks.insert({
    parentGuid: PlacesUtils.bookmarks.menuGuid,
    url: "https://example.com/",
    title: "Test1",
  });

  registerCleanupFunction(async () => {
    await PlacesUtils.bookmarks.eraseEverything();
  });
});

add_task(async function test_menu_in_hidden_window() {
  let hwDoc = Services.appShell.hiddenDOMWindow.document;
  let bmPopup = hwDoc.getElementById("bookmarksMenuPopup");
  var popupEvent = hwDoc.createEvent("MouseEvent");
  popupEvent.initMouseEvent(
    "popupshowing",
    true,
    true,
    Services.appShell.hiddenDOMWindow,
    0,
    0,
    0,
    0,
    0,
    false,
    false,
    false,
    false,
    0,
    null
  );
  bmPopup.dispatchEvent(popupEvent);

  let testMenuitem = [...bmPopup.children].find(
    node => node.getAttribute("label") == "Test1"
  );
  Assert.ok(
    testMenuitem,
    "Should have found the test bookmark in the hidden window bookmark menu"
  );
});
