| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>@scope - implicit scope root (external sheet)</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-cascade-6/#scope-atrule"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <div class="a outside"></div> | |
| <div id=main></div> | |
| <div class="a outside"></div> | |
| <template id=templateLink> | |
| <div id=root> | |
| <link id=importElement rel="stylesheet" href="resources/scope.css"> | |
| <div class=a></div> | |
| </div> | |
| </template> | |
| <template id=templateImport> | |
| <div id=root> | |
| <style id="importElement"> | |
| @import url("resources/scope.css"); | |
| </style> | |
| <div class=a></div> | |
| </div> | |
| </template> | |
| <script> | |
| function test_external(template_element, description) { | |
| promise_test(async t => { | |
| t.add_cleanup(() => main.replaceChildren()); | |
| const cloned = template_element.content.cloneNode(true); | |
| const importElement = cloned.querySelector('#importElement'); | |
| const p = new Promise((resolve, reject) => importElement.addEventListener('load', () => { | |
| try { | |
| assert_equals(getComputedStyle(root).zIndex, '1'); | |
| assert_equals(getComputedStyle(document.querySelector('#root > .a')).zIndex, '2'); | |
| let outside = document.querySelectorAll('.outside'); | |
| assert_equals(outside.length, 2); | |
| for (let div of outside) { | |
| assert_equals(getComputedStyle(div).zIndex, 'auto'); | |
| } | |
| resolve(); | |
| } catch(e) { | |
| reject(e); | |
| } | |
| })); | |
| main.append(cloned); | |
| return p; | |
| }, description); | |
| } | |
| test_external(templateLink, '@scope with external stylesheet through link element'); | |
| test_external(templateImport, '@scope with external stylesheet through @import'); | |
| </script> | |
| </body> | |
| </html> |