Currently it appears to not be, in three ways: - It gets cleared (set to undefined) when an iframe is removed from the DOM - It gets reset to a new value on navigation from the initial about:blank, even though the Window stays the same during such a navigation - It does not get cleared during document.open(). Per spec this is supposed to create a new Window; non-Firefox browsers do not follow this, but they do generally clear Window-associated stuff, and so we should do the same for window.customElements. Tests at http://w3c-test.org/custom-elements/custom-element-registry/per-global.html
<rdar://problem/32067854>
This stems from the fact neither Blink nor WebKit preserves DOMWindow when navigating from about:blank and doesn't replace DOMWindow upon document.open. This seems quite inconsequential nonetheless.
We will likely revert the document.open() tests as part of a general document.open() overhaul led by Timothy Gu (CC'ed), to bring the spec more in line with the simple model used by Chrome and WebKit. For about:blank, the issue is less clear to me, as I was pretty sure that did preserve Window in all browsers... I'm investigating further and will get back to you.
Great. Let me know what you decide to do.
Safari Technology Preview 151 is failing on following test from test case in Comment 0: Navigating from the initial about:blank must not replace window.customElements Similarly, Chrome Canary 106 also fail on same, while Firefox Nightly 105 pass all tests. Thanks1
Created attachment 464791 [details] WIP
Created attachment 464881 [details] WIP2