| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test.js"></script> |
| <input id="defaultFocus" autofocus> |
| <script> |
| |
| jsTestIsAsync = true; |
| |
| description('This tests that -internal-direct-focus is not recognized in author stylesheets'); |
| |
| let focusedDefault = false; |
| function didFocusDefault() { } |
| function checkFocusMatch() { |
| if (defaultFocus.matches(':focus')) { |
| focusedDefault = true; |
| didFocusDefault(); |
| } else |
| setTimeout(checkFocusMatch, 100); |
| } |
| defaultFocus.addEventListener('focus', checkFocusMatch); |
| |
| function waitForFrameToBeFocused(test) |
| { |
| return new Promise((resolve) => { |
| if (focusedDefault) |
| resolve(); |
| else |
| didFocusDefault = resolve; |
| }); |
| } |
| |
| async function runTest() { |
| await waitForFrameToBeFocused(); |
| |
| shouldBeTrue('defaultFocus.matches(":focus")'); |
| shouldThrowErrorName('defaultFocus.matches(":-internal-direct-focus")', 'SyntaxError'); |
| |
| const host = document.body.appendChild(document.createElement('div')); |
| const shadowRoot = host.attachShadow({mode: 'closed'}); |
| shadowRoot.innerHTML = '<input>'; |
| window.inputInShadowRoot = shadowRoot.firstChild; |
| inputInShadowRoot.focus(); |
| |
| shouldBeTrue('inputInShadowRoot.matches(":focus")'); |
| shouldThrowErrorName('inputInShadowRoot.matches(":-internal-direct-focus")', 'SyntaxError'); |
| |
| finishJSTest(); |
| } |
| |
| window.onload = runTest; |
| |
| </script> |
| </body> |
| </html> |