| <!DOCTYPE html> |
| <meta charset="utf-8" /> |
| <title>'inert' is an HTML attribute and has no effect when used on other elements</title> |
| <link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> |
| <style> |
| #tests { |
| line-height: 1.5em; |
| } |
| #tests svg { |
| height: 1.5em; |
| vertical-align: middle; |
| } |
| #tests svg > text { |
| transform: translateY(50%); |
| dominant-baseline: central; |
| } |
| #tests foreignObject { |
| height: 100%; |
| width: 100%; |
| } |
| </style> |
| <div id="log"></div> |
| <ul id="tests"> |
| <!-- The 'inert' attribute only works on HTML elements --> |
| <li> |
| <span>non-inert</span> |
| </li> |
| <li> |
| <span inert>inert</span> |
| </li> |
| <li> |
| <foo>non-inert</foo> |
| </li> |
| <li> |
| <foo inert>inert</foo> |
| </li> |
| <li> |
| <foo-bar>non-inert</foo-bar> |
| </li> |
| <li> |
| <foo-bar inert>inert</foo-bar> |
| </li> |
| <li> |
| <math><mi>non-inert</mi></math> |
| </li> |
| <li> |
| <math inert><mi>non-inert</mi></math> |
| </li> |
| <li> |
| <math><mi inert>non-inert</mi></math> |
| </li> |
| <li> |
| <svg><text>non-inert</text></svg> |
| </li> |
| <li> |
| <svg inert><text>non-inert</text></svg> |
| </li> |
| <li> |
| <svg><text inert>non-inert</text></svg> |
| </li> |
| |
| <!-- But non-HTML are inert if an HTML ancestor has the attribute --> |
| <li> |
| <span inert><span>inert</span></span> |
| </li> |
| <li> |
| <span inert><foo>inert</foo></span> |
| </li> |
| <li> |
| <span inert><foo-bar>inert</foo-bar></span> |
| </li> |
| <li> |
| <span inert><math><mi>inert</mi></math></span> |
| </li> |
| <li> |
| <span inert><svg><text>inert</text></svg></span> |
| </li> |
| |
| <!-- HTML elements are not inert if an non-HTML ancestor has the attribute --> |
| <li> |
| <span data-move>non-inert</span> |
| <math inert><mi data-destination></mi></math> |
| </li> |
| <li> |
| <span data-move>non-inert</span> |
| <math><mi inert data-destination></mi></math> |
| </li> |
| <li> |
| <svg inert><foreignObject><span>non-inert</span></foreignobject></svg> |
| </li> |
| <li> |
| <svg><foreignObject inert><span>non-inert</span></foreignobject></svg> |
| </li> |
| |
| <!-- HTML elements with non-HTML ancestors are inert if they have the attribute themselves --> |
| <li> |
| <span inert data-move>inert</span> |
| <math><mi data-destination></mi></math> |
| </li> |
| <li> |
| <foo inert data-move>inert</foo> |
| <math><mi data-destination></mi></math> |
| </li> |
| <li> |
| <foo-bar inert data-move>inert</foo-bar> |
| <math><mi data-destination></mi></math> |
| </li> |
| <li> |
| <svg><foreignObject><span inert>inert</span></foreignobject></svg> |
| </li> |
| <li> |
| <svg><foreignObject><foo inert>inert</foo></foreignobject></svg> |
| </li> |
| <li> |
| <svg><foreignObject><foo-bar inert>inert</foo-bar></foreignobject></svg> |
| </li> |
| </ul> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| for (let li of document.querySelectorAll("#tests > li")) { |
| // The HTML parser would mess certain trees, fixup here. |
| const move = li.querySelector("[data-move]"); |
| if (move) { |
| const destination = li.querySelector("[data-destination]"); |
| destination.append(move); |
| move.removeAttribute("data-move"); |
| destination.removeAttribute("data-destination"); |
| } |
| test(() => { |
| assert_equals(li.childElementCount, 1); |
| const element = li.firstElementChild; |
| const selection = getSelection(); |
| selection.selectAllChildren(element); |
| const selectionText = selection.toString().trim(); |
| const textContent = element.textContent.trim(); |
| if (textContent === "inert") { |
| assert_equals(selectionText, ""); |
| } else { |
| assert_equals(selectionText, "non-inert"); |
| } |
| }, li.innerHTML.trim()); |
| } |
| </script> |