diff options
Diffstat (limited to 'remote/shared/test')
-rw-r--r-- | remote/shared/test/xpcshell/test_DOM.js | 114 |
1 files changed, 87 insertions, 27 deletions
diff --git a/remote/shared/test/xpcshell/test_DOM.js b/remote/shared/test/xpcshell/test_DOM.js index 19844659b9..03ac27ed45 100644 --- a/remote/shared/test/xpcshell/test_DOM.js +++ b/remote/shared/test/xpcshell/test_DOM.js @@ -75,27 +75,55 @@ function setupTest() { <iframe></iframe> <video></video> <svg xmlns="http://www.w3.org/2000/svg"></svg> - <textarea></textarea> + <form> + <button/> + <input/> + <fieldset> + <legend><input id="first"/></legend> + <legend><input id="second"/></legend> + </fieldset> + <select> + <optgroup> + <option id="in-group">foo</options> + </optgroup> + <option id="no-group">bar</option> + </select> + <textarea></textarea> + </form> </div> `; const divEl = browser.document.querySelector("div"); const svgEl = browser.document.querySelector("svg"); - const textareaEl = browser.document.querySelector("textarea"); const videoEl = browser.document.querySelector("video"); + const shadowRoot = videoEl.openOrClosedShadowRoot; + + const buttonEl = browser.document.querySelector("button"); + const fieldsetEl = browser.document.querySelector("fieldset"); + const inputEl = browser.document.querySelector("input"); + const optgroupEl = browser.document.querySelector("optgroup"); + const optionInGroupEl = browser.document.querySelector("option#in-group"); + const optionNoGroupEl = browser.document.querySelector("option#no-group"); + const selectEl = browser.document.querySelector("select"); + const textareaEl = browser.document.querySelector("textarea"); const iframeEl = browser.document.querySelector("iframe"); const childEl = iframeEl.contentDocument.createElement("div"); iframeEl.contentDocument.body.appendChild(childEl); - const shadowRoot = videoEl.openOrClosedShadowRoot; - return { browser, - nodeCache: new NodeCache(), + buttonEl, childEl, divEl, + inputEl, + fieldsetEl, iframeEl, + nodeCache: new NodeCache(), + optgroupEl, + optionInGroupEl, + optionNoGroupEl, + selectEl, shadowRoot, svgEl, textareaEl, @@ -252,38 +280,70 @@ add_task(function test_isReadOnly() { ok(!dom.isReadOnly(null)); }); -add_task(function test_isDisabled() { - const { browser, divEl, svgEl } = setupTest(); +add_task(function test_isDisabledSelect() { + const { optgroupEl, optionInGroupEl, optionNoGroupEl, selectEl } = + setupTest(); + + optionNoGroupEl.disabled = true; + ok(dom.isDisabled(optionNoGroupEl)); + optionNoGroupEl.disabled = false; + ok(!dom.isDisabled(optionNoGroupEl)); + + optgroupEl.disabled = true; + ok(dom.isDisabled(optgroupEl)); + ok(dom.isDisabled(optionInGroupEl)); + optgroupEl.disabled = false; + ok(!dom.isDisabled(optgroupEl)); + ok(!dom.isDisabled(optionInGroupEl)); + + selectEl.disabled = true; + ok(dom.isDisabled(selectEl)); + ok(dom.isDisabled(optgroupEl)); + ok(dom.isDisabled(optionNoGroupEl)); + selectEl.disabled = false; + ok(!dom.isDisabled(selectEl)); + ok(!dom.isDisabled(optgroupEl)); + ok(!dom.isDisabled(optionNoGroupEl)); +}); - const select = browser.document.createElement("select"); - const option = browser.document.createElement("option"); - select.appendChild(option); - select.disabled = true; - ok(dom.isDisabled(option)); +add_task(function test_isDisabledFormControl() { + const { buttonEl, fieldsetEl, inputEl, selectEl, textareaEl } = setupTest(); - const optgroup = browser.document.createElement("optgroup"); - option.parentNode = optgroup; - ok(dom.isDisabled(option)); + for (const elem of [buttonEl, inputEl, selectEl, textareaEl]) { + elem.disabled = true; + ok(dom.isDisabled(elem)); + elem.disabled = false; + ok(!dom.isDisabled(elem)); + } - optgroup.parentNode = select; - ok(dom.isDisabled(option)); + const inputs = fieldsetEl.querySelectorAll("input"); + fieldsetEl.disabled = true; + ok(dom.isDisabled(fieldsetEl)); + ok(!dom.isDisabled(inputs[0])); + ok(dom.isDisabled(inputs[1])); + fieldsetEl.disabled = false; + ok(!dom.isDisabled(fieldsetEl)); + ok(!dom.isDisabled(inputs[0])); + ok(!dom.isDisabled(inputs[1])); +}); - select.disabled = false; - ok(!dom.isDisabled(option)); +add_task(function test_isDisabledElement() { + const { divEl, svgEl } = setupTest(); + const mockXulEl = new MockXULElement("browser", { disabled: true }); - for (const type of ["button", "input", "select", "textarea"]) { - const elem = browser.document.createElement(type); + for (const elem of [divEl, svgEl, mockXulEl]) { ok(!dom.isDisabled(elem)); elem.disabled = true; - ok(dom.isDisabled(elem)); + ok(!dom.isDisabled(elem)); } +}); - ok(!dom.isDisabled(divEl)); - - svgEl.disabled = true; - ok(!dom.isDisabled(svgEl)); +add_task(function test_isDisabledNoDOMElement() { + ok(!dom.isDisabled()); - ok(!dom.isDisabled(new MockXULElement("browser", { disabled: true }))); + for (const obj of [null, undefined, 42, "", {}, []]) { + ok(!dom.isDisabled(obj)); + } }); add_task(function test_isEditingHost() { |