| <!doctype html> | |
| <meta charset=utf-8> | |
| <title>Observer notifications when updating styles</title> | |
| <link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty"> | |
| <script src=/resources/testharness.js></script> | |
| <script src=/resources/testharnessreport.js></script> | |
| <body> | |
| <script> | |
| "use strict"; | |
| promise_test(async () => { | |
| let called = 0; | |
| const el = document.createElement("div"); | |
| document.body.appendChild(el); | |
| const m = new MutationObserver(() => { | |
| called++; | |
| }); | |
| m.observe(el, { attributes: true }); | |
| el.style.height = "100px"; | |
| await Promise.resolve(); | |
| assert_equals(called, 1, "times callback called"); | |
| el.style.height = "100px"; | |
| await Promise.resolve(); | |
| assert_equals(called, 1, "times callback called"); | |
| }, "Updating style property with the same value does not trigger an observation callback"); | |
| promise_test(async () => { | |
| let called = 0; | |
| const el = document.createElement("div"); | |
| document.body.appendChild(el); | |
| const m = new MutationObserver(() => { | |
| called++; | |
| }); | |
| m.observe(el, { attributes: true }); | |
| el.style.cssText = "height:100px"; | |
| await Promise.resolve(); | |
| assert_equals(called, 1, "times callback called"); | |
| el.style.cssText = "height:100px"; | |
| await Promise.resolve(); | |
| assert_equals(called, 2, "times callback called"); | |
| }, "Updating cssText triggers an observation callback even if the value is the same"); | |
| </script> | |