diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-01-25 09:05:21 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-01-26 15:50:52 -0500 |
commit | 0cea94242a555b7a8a2d956412da809a514814f7 (patch) | |
tree | c7522df90cbadd242936308a2818d7bd240b613f /testing | |
parent | d84323905b149cda8063ef73cd92e852f36c96c9 (diff) | |
download | UXP-0cea94242a555b7a8a2d956412da809a514814f7.tar UXP-0cea94242a555b7a8a2d956412da809a514814f7.tar.gz UXP-0cea94242a555b7a8a2d956412da809a514814f7.tar.lz UXP-0cea94242a555b7a8a2d956412da809a514814f7.tar.xz UXP-0cea94242a555b7a8a2d956412da809a514814f7.zip |
Bug 1430034 - Fix attributeChangedCallback isn't fired with correct newValue when the attribute value is an empty string;
Tag UXP Issue #1344
Diffstat (limited to 'testing')
-rw-r--r-- | testing/web-platform/tests/custom-elements/attribute-changed-callback.html | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/testing/web-platform/tests/custom-elements/attribute-changed-callback.html b/testing/web-platform/tests/custom-elements/attribute-changed-callback.html index bd467912b..5090bfbfb 100644 --- a/testing/web-platform/tests/custom-elements/attribute-changed-callback.html +++ b/testing/web-platform/tests/custom-elements/attribute-changed-callback.html @@ -11,6 +11,7 @@ </head> <body> <div id="log"></div> +<parser-created-element title></parser-created-element> <script> var customElement = define_new_custom_element(['title', 'id', 'r']); @@ -218,6 +219,36 @@ test(function () { assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: 'hello', namespace: null}); }, 'attributedChangedCallback must not be enqueued when mutating inline style declaration if the style attribute is not observed'); +test(function () { + var calls = []; + class CustomElement extends HTMLElement { } + CustomElement.prototype.attributeChangedCallback = function (...args) { + calls.push(create_attribute_changed_callback_log(this, ...args)); + } + CustomElement.observedAttributes = ['title']; + customElements.define('parser-created-element', CustomElement); + assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: '', namespace: null}); +}, 'Upgrading a parser created element must enqueue and invoke attributeChangedCallback for an HTML attribute'); + +test(function () { + var calls = []; + class CustomElement extends HTMLElement { } + CustomElement.prototype.attributeChangedCallback = function (...args) { + calls.push(create_attribute_changed_callback_log(this, ...args)); + } + CustomElement.observedAttributes = ['title']; + customElements.define('cloned-element-with-attribute', CustomElement); + + var instance = document.createElement('cloned-element-with-attribute'); + assert_equals(calls.length, 0); + instance.title = ''; + assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: '', namespace: null}); + + calls = []; + var clone = instance.cloneNode(false); + assert_attribute_log_entry(calls[0], {name: 'title', oldValue: null, newValue: '', namespace: null}); +}, 'Upgrading a cloned element must enqueue and invoke attributeChangedCallback for an HTML attribute'); + </script> </body> </html> |