Hi Team, While going through Blink's bug, I came across another where we differ: Test Case: https://jsfiddle.net/b56f2v8e/ ^ Console logs 'true' for STP181 while 'false' for Chrome Canary 120 and Firefox Nightly 121. Chrome Bug: crbug.com/843901 Just wanted to raise so we can track and fix it. Thanks!
<rdar://problem/117840533>
Created attachment 468670 [details] steps in devtools of safari and firefox These are the steps in both browsers for the script. var elem = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); elem.setAttribute('transform', 'matrix(1,0,0,1,0,0)'); elem.transform.baseVal.removeItem(0); elem.removeAttribute('transform'); console.log(elem.hasAttribute('transform')); The interesting differences are starting once the following has been applied. "elem.transform.baseVal.removeItem(0)" Firefox: <rect transform=""></rect> Safari: <rect transform="matrix(1,0,0,1,0,0)"></rect> then applying "elem.removeAttribute('transform')" gives the same result Firefox: <rect></rect> Safari: <rect></rect> BUT doing "elem.hasAttribute('transform')" Firefox: false Safari: true which is not logical with the previous result.
it seems like there is not a complete synchronization of the element state.
Good catch Karl. Indeed this is the „lazy SVG attribute synchronization“ that apparently exposes this bug. We probably fail to unmap properly..