This is mostly a precursor to the attribute nodes implementation for IE9+ modes later, since most of them are stubs in legacy modes. There's also no way to insert them in legacy modes via node props either, since they don't expose IHTMLDOMNode* interfaces.
--
v2: mshtml: Implement removeChild for attributes.
mshtml: Implement replaceChild for attributes.
mshtml: Implement nextSibling prop for attributes.
mshtml: Implement previousSibling prop for attributes.
mshtml: Implement lastChild prop for attributes.
mshtml: Implement firstChild prop for attributes.
mshtml: Implement childNodes prop for attributes.
mshtml: Implement hasChildNodes for attributes.
mshtml: Implement insertBefore for attributes.
mshtml: Implement appendChild for attributes.
mshtml: Implement cloneNode for attributes.
mshtml: Implement ownerDocument prop for attributes.
mshtml: Implement attributes prop for attributes.
mshtml: Implement nodeType prop for attributes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8029
That was puzzling because ntdll.RtlQueryRegistryValues() affected is not called in Wine anywhere besides ntoskrnl tests in the driver and ntdll reg tests. The effect of this exact commit was effectively re-enabling ntoskrnl tests which were broken after ccb99cd00f55b716e3aa1a80ff4b13a6d6fa70d6.
Rémi found that the problem may be reproduced locally by running "winetest.exe -q -o - dinput ntoskrnl.exe services.exe", these three tests together. And that reproduces with both ccb99cd00f55b716e3aa1a80ff4b13a6d6fa70d6 and this commit reverted, while what actually triggered the present breakage was bisected to 9d6455f91cb7a7d166d5c4708d528b43a63eb4d7 (AFAIK Rémi is looking into that).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8027#note_103386