| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../resources/js-test-pre.js"></script> |
| <style> |
| * { |
| background-color: rgb(255, 255, 255); |
| } |
| [data-webkit='Matched' i] { |
| background-color: rgb(1, 2, 3); |
| } |
| </style> |
| </head> |
| <body> |
| <div> |
| <!-- With renderer --> |
| <target></target> |
| </div> |
| <div style="display:none;"> |
| <!-- Without renderer --> |
| <target></target> |
| </div> |
| </body> |
| <script> |
| description('Test the basic cases of style update when matching attribute values with the case-insensitive flag.'); |
| |
| function testState(shouldMatch) { |
| shouldBe('document.querySelectorAll("[data-webkit=Matched i]").length', shouldMatch ? '2' : '0'); |
| shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[0]).backgroundColor', shouldMatch ? 'rgb(1, 2, 3)' : 'rgb(255, 255, 255)'); |
| shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[1]).backgroundColor', shouldMatch ? 'rgb(1, 2, 3)' : 'rgb(255, 255, 255)'); |
| } |
| |
| function setAttribute(attribute, value) { |
| var allTargets = document.querySelectorAll("target"); |
| for (var i = 0; i < allTargets.length; ++i) |
| allTargets[i].setAttribute(attribute, value); |
| } |
| |
| function removeAttribute(attribute) { |
| var allTargets = document.querySelectorAll("target"); |
| for (var i = 0; i < allTargets.length; ++i) |
| allTargets[i].removeAttribute(attribute); |
| } |
| |
| |
| debug("Initial state."); |
| testState(false); |
| |
| debug("Adding the attribute without value."); |
| setAttribute('data-webkit', ''); |
| testState(false); |
| |
| debug("Setting the value to \"matched\"."); |
| setAttribute('data-webkit', 'matched'); |
| testState(true); |
| |
| |
| debug("Setting the value to \"not\"."); |
| setAttribute('data-webkit', 'not'); |
| testState(false); |
| |
| debug("Setting the value to \"Matched\"."); |
| setAttribute('data-webkit', 'Matched'); |
| testState(true); |
| |
| debug("Setting the value of an unrelated attribute to \"Matched\"."); |
| setAttribute('data-foobar', 'Matched'); |
| testState(true); |
| |
| debug("Remove the data-webkit attribute."); |
| removeAttribute('data-webkit'); |
| testState(false); |
| |
| debug("Setting the value to \"MATCHED\"."); |
| setAttribute('data-webkit', 'Matched'); |
| testState(true); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </html> |