"use strict";

// This test checks whether applied WebExtension themes that attempt to change
// the toolbar and toolbar_field properties also theme the findbar.

add_task(async function setup() {
  await SpecialPowers.pushPrefEnv({
    set: [["extensions.webextensions.themes.enabled", true]],
  });
});

add_task(async function test_support_toolbar_properties_on_findbar() {
  const TOOLBAR_COLOR = "#ff00ff";
  const TOOLBAR_TEXT_COLOR = "#9400ff";
  let extension = ExtensionTestUtils.loadExtension({
    manifest: {
      "theme": {
        "images": {
          "headerURL": "image1.png",
        },
        "colors": {
          "accentcolor": ACCENT_COLOR,
          "textcolor": TEXT_COLOR,
          "toolbar": TOOLBAR_COLOR,
          "toolbar_text": TOOLBAR_TEXT_COLOR,
        },
      },
    },
    files: {
      "image1.png": BACKGROUND,
    },
  });

  await extension.startup();
  await gBrowser.getFindBar();

  let findbar_button = document.getAnonymousElementByAttribute(gFindBar, "anonid", "highlight");

  info("Checking findbar background is set as toolbar color");
  Assert.equal(window.getComputedStyle(gFindBar).backgroundColor,
               hexToCSS(TOOLBAR_COLOR),
               "Findbar background color should be the same as toolbar background color.");

  info("Checking findbar and button text color is set as toolbar text color");
  Assert.equal(window.getComputedStyle(gFindBar).color,
               hexToCSS(TOOLBAR_TEXT_COLOR),
               "Findbar text color should be the same as toolbar text color.");
  Assert.equal(window.getComputedStyle(findbar_button).color,
               hexToCSS(TOOLBAR_TEXT_COLOR),
               "Findbar button text color should be the same as toolbar text color.");

  await extension.unload();
});

add_task(async function test_support_toolbar_field_properties_on_findbar() {
  const TOOLBAR_FIELD_COLOR = "#ff00ff";
  const TOOLBAR_FIELD_TEXT_COLOR = "#9400ff";
  const TOOLBAR_FIELD_BORDER_COLOR = "#ffffff";
  let extension = ExtensionTestUtils.loadExtension({
    manifest: {
      "theme": {
        "images": {
          "headerURL": "image1.png",
        },
        "colors": {
          "accentcolor": ACCENT_COLOR,
          "textcolor": TEXT_COLOR,
          "toolbar_field": TOOLBAR_FIELD_COLOR,
          "toolbar_field_text": TOOLBAR_FIELD_TEXT_COLOR,
          "toolbar_field_border": TOOLBAR_FIELD_BORDER_COLOR,
        },
      },
    },
    files: {
      "image1.png": BACKGROUND,
    },
  });

  await extension.startup();
  await gBrowser.getFindBar();

  let findbar_textbox =
    document.getAnonymousElementByAttribute(gFindBar, "anonid", "findbar-textbox");

  let findbar_prev_button =
    document.getAnonymousElementByAttribute(gFindBar, "anonid", "find-previous");

  let findbar_next_button =
    document.getAnonymousElementByAttribute(gFindBar, "anonid", "find-next");

  info("Checking findbar textbox background is set as toolbar field background color");
  Assert.equal(window.getComputedStyle(findbar_textbox).backgroundColor,
               hexToCSS(TOOLBAR_FIELD_COLOR),
               "Findbar textbox background color should be the same as toolbar field color.");

  info("Checking findbar textbox color is set as toolbar field text color");
  Assert.equal(window.getComputedStyle(findbar_textbox).color,
               hexToCSS(TOOLBAR_FIELD_TEXT_COLOR),
               "Findbar textbox text color should be the same as toolbar field text color.");
  testBorderColor(findbar_textbox, TOOLBAR_FIELD_BORDER_COLOR);
  testBorderColor(findbar_prev_button, TOOLBAR_FIELD_BORDER_COLOR);
  testBorderColor(findbar_next_button, TOOLBAR_FIELD_BORDER_COLOR);

  await extension.unload();
});
