| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <script src=../../resources/testharness.js></script> |
| <script src=../../resources/testharnessreport.js></script> |
| <iframe id="frame" srcdoc=" |
| <!DOCTYPE html> |
| <style> |
| input { |
| background-color: rgb(50, 150, 200); |
| } |
| input:focus-within { |
| background-color: rgb(250, 200, 150); |
| } |
| </style> |
| <input id='input' /> |
| "></iframe> |
| <script> |
| test(() => assert_not_equals(window.internals, undefined), |
| "Check window.internals is available"); |
| |
| const frame = document.getElementById("frame"); |
| frame.addEventListener("load", () => { |
| const input = frame.contentDocument.getElementById("input"); |
| input.focus(); |
| |
| test(() => assert_equals(frame.contentWindow.getComputedStyle(input).backgroundColor, "rgb(250, 200, 150)"), |
| "Check ':focus-within' is applied after focusing the input"); |
| |
| frame.contentWindow.internals.setFocused(false); |
| test(() => assert_equals(frame.contentWindow.getComputedStyle(input).backgroundColor, "rgb(50, 150, 200)"), |
| "Check ':focus-within' is not applied when the frame is unfocused"); |
| |
| frame.contentWindow.internals.setFocused(true); |
| test(() => assert_equals(frame.contentWindow.getComputedStyle(input).backgroundColor, "rgb(250, 200, 150)"), |
| "Check ':focus-within' is applied when the frame is focsued again"); |
| }); |
| </script> |