/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";

// Test that 'no styles' indicator is shown if a page doesn't contain any style
// sheets.

const TESTCASE_URI = TEST_BASE_HTTP + "nostyle.html";

add_task(async function () {
  // Make enough room for the "append style sheet" link to not wrap,
  // as it messes up with EvenEventUtils.synthesizeMouse
  await pushPref("devtools.styleeditor.navSidebarWidth", 500);
  const { panel, ui } = await openStyleEditorForURL(TESTCASE_URI);
  const { panelWindow } = panel;

  ok(
    !getRootElement(panel).classList.contains("loading"),
    "style editor root element does not have 'loading' class name anymore"
  );

  const newButton = panelWindow.document.querySelector(
    "toolbarbutton.style-editor-newButton"
  );
  ok(!newButton.hasAttribute("disabled"), "new style sheet button is enabled");

  const importButton = panelWindow.document.querySelector(
    ".style-editor-importButton"
  );
  ok(!importButton.hasAttribute("disabled"), "import button is enabled");

  const emptyPlaceHolderEl =
    getRootElement(panel).querySelector(".empty.placeholder");
  isnot(
    emptyPlaceHolderEl.documentGlobal.getComputedStyle(emptyPlaceHolderEl)
      .display,
    "none",
    "showing 'no style' indicator"
  );

  info(
    "Check that clicking on the append new stylesheet link do add a stylesheet"
  );
  const onEditorAdded = ui.once("editor-added");
  const newLink = emptyPlaceHolderEl.querySelector("a.style-editor-newButton");

  // Use synthesizeMouse to also check that the element is visible
  EventUtils.synthesizeMouseAtCenter(newLink, {}, newLink.documentGlobal);
  await onEditorAdded;

  ok(true, "A stylesheet was added");
  is(
    emptyPlaceHolderEl.documentGlobal.getComputedStyle(emptyPlaceHolderEl)
      .display,
    "none",
    "The empty placeholder element is now hidden"
  );
});
