| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>CSS Shadow Parts - Part Name IDL</title> |
| <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly"> |
| <link href="http://www.google.com/" rel="author" title="Google"> |
| <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="support/shadow-helper.js"></script> |
| </head> |
| <body> |
| <span id="s_no_part"></span> |
| <span id="s_part" part="part1"></span> |
| <span id="s_2_parts" part="part1 part2"></span> |
| <script> |
| "use strict"; |
| test(function() { |
| const parts = s_no_part.part; |
| assert_equals(parts.length, 0); |
| assert_equals(parts.value, ""); |
| }, "Access to .part returns an empty DOMTokenList."); |
| test(function() { |
| const parts = s_2_parts.part; |
| assert_equals(parts.length, 2); |
| assert_equals(parts[0], "part1"); |
| assert_equals(parts[1], "part2"); |
| assert_equals(parts.value, "part1 part2"); |
| }, "Multiple names give a DOMTokenList with multiple entries."); |
| test(function() { |
| const parts = s_no_part.part; |
| assert_equals(parts.length, 0); |
| assert_equals(parts.value, ""); |
| parts.add("part1"); |
| assert_equals(parts.length, 1); |
| assert_equals(parts.value, "part1"); |
| }, "DOMTokenList created by access is persisted."); |
| test(function() { |
| const parts = s_part.part; |
| assert_equals(parts.length, 1); |
| assert_equals(parts.value, "part1"); |
| parts.add("part2"); |
| assert_equals(parts.length, 2); |
| assert_equals(parts.value, "part1 part2"); |
| assert_equals(s_part.getAttribute("part"), parts.value); |
| parts.remove("part1"); |
| assert_equals(parts.length, 1); |
| assert_equals(parts.value, "part2"); |
| assert_equals(s_part.getAttribute("part"), parts.value); |
| }, "Changes in DOMTokenList are refected in attribute."); |
| </script> |
| </body> |
| </html> |