| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <style> | |
| input { | |
| color: #FFFFFF; | |
| background-color: #FFFFFF; | |
| } | |
| form:has(input:autofill) { | |
| background-color: green; | |
| color: white; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| This tests that foreground and background colors properly change for autofilled inputs.<br> | |
| <form name="form" id="form"> | |
| <input type="text" id="input" value="Field value" /> | |
| </form> | |
| <script src="../../resources/testharness.js"></script> | |
| <script src="../../resources/testharnessreport.js"></script> | |
| <script> | |
| test(() => { | |
| testElement(input); | |
| }, "Testing input style changing with UA stylesheet"); | |
| test(() => { | |
| testElement(form); | |
| }, "Testing form style changing with :has() selector"); | |
| function testElement(element) { | |
| let computedStyle = getComputedStyle(element); | |
| let originalForeground = computedStyle.color; | |
| let originalBackground = computedStyle.backgroundColor; | |
| if (window.internals) | |
| window.internals.setAutofilled(input, true); | |
| // Both the foreground and background colors should change when autofilled. | |
| computedStyle = getComputedStyle(element); | |
| assert_not_equals(computedStyle.color, originalForeground, "Text color should change when autofilled."); | |
| assert_not_equals(computedStyle.backgroundColor, originalBackground, "Background color should change when autofilled.") | |
| if (window.internals) | |
| window.internals.setAutofilled(input, false); | |
| // Colors should be restored. | |
| computedStyle = getComputedStyle(element); | |
| assert_equals(computedStyle.color, originalForeground, "Text color should be restored"); | |
| assert_equals(computedStyle.backgroundColor, originalBackground, "Background color should be restored") | |
| } | |
| </script> | |
| </body> | |
| </html> |