/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Tests the Filter Editor Widget's add button const { CSSFilterEditorWidget, } = require("resource://devtools/client/shared/widgets/FilterWidget.js"); const STRINGS_URI = "devtools/client/locales/filterwidget.properties"; const L10N = new LocalizationHelper(STRINGS_URI); const TEST_URI = CHROME_URL_ROOT + "doc_filter-editor-01.html"; add_task(async function () { const { doc } = await createHost("bottom", TEST_URI); const container = doc.querySelector("#filter-container"); const widget = new CSSFilterEditorWidget(container, "none"); const select = widget.el.querySelector("select"), add = widget.el.querySelector("#add-filter"); const TEST_DATA = [ { name: "blur", unit: "px", type: "length", }, { name: "contrast", unit: "%", type: "percentage", }, { name: "hue-rotate", unit: "deg", type: "angle", }, { name: "drop-shadow", placeholder: L10N.getStr("dropShadowPlaceholder"), type: "string", }, { name: "url", placeholder: "example.svg#c1", type: "string", }, ]; info("Test adding new filters with different units"); for (const [index, filter] of TEST_DATA.entries()) { select.value = filter.name; add.click(); if (filter.unit) { is( widget.getValueAt(index), `0${filter.unit}`, `Should add ${filter.unit} to ${filter.type} filters` ); } else if (filter.placeholder) { const i = index + 1; const input = widget.el.querySelector(`.filter:nth-child(${i}) input`); is( input.placeholder, filter.placeholder, "Should set the appropriate placeholder for string-type filters" ); } } widget.destroy(); });