| <!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> |
| |