"use strict";

/**
 * Check inserting before a node that has moved from the toolbar into a
 * non-customizable bit of the browser works.
 */
add_task(async function() {
  for (let toolbar of ["nav-bar", "TabsToolbar"]) {
    CustomizableUI.createWidget({id: "real-button", label: "test real button"});
    CustomizableUI.addWidgetToArea("real-button", toolbar);
    CustomizableUI.addWidgetToArea("moved-button-not-here", toolbar);
    let placements = CustomizableUI.getWidgetIdsInArea(toolbar);
    Assert.deepEqual(placements.slice(-2), ["real-button", "moved-button-not-here"],
      "Should have correct placements");
    let otherButton = document.createElement("toolbarbutton");
    otherButton.id = "moved-button-not-here";
    if (toolbar == "nav-bar") {
      gURLBar.parentNode.appendChild(otherButton);
    } else {
      gBrowser.tabContainer.appendChild(otherButton);
    }
    CustomizableUI.destroyWidget("real-button");
    CustomizableUI.createWidget({id: "real-button", label: "test real button"});

    let button = document.getElementById("real-button");
    ok(button, "Button should exist");
    if (button) {
      let expectedContainer = document.getElementById(toolbar).customizationTarget;
      is(button.parentNode, expectedContainer, "Button should be in the toolbar");
    }

    CustomizableUI.destroyWidget("real-button");
    otherButton.remove();
    CustomizableUI.reset();
  }
});

