Gabriel Ivăncescu (@insn) commented about dlls/mshtml/mutation.c:
+ return CONTAINING_RECORD(iface, struct mutation_observer, IWineMSHTMLMutationObserver_iface); +} + +static HRESULT WINAPI MutationObserver_QueryInterface(IWineMSHTMLMutationObserver *iface, REFIID riid, void **ppv) +{ + struct mutation_observer *This = impl_from_IWineMSHTMLMutationObserver(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + + if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IWineMSHTMLMutationObserver, riid)) { + *ppv = &This->IWineMSHTMLMutationObserver_iface; + }else { + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + *ppv = NULL; + return E_NOINTERFACE; + } Sorry, I missed this yesterday as I was tired, and since it's a stub it didn't seem to matter, but you forgot to query the dispex:
```c }else if(dispex_query_interface(&This->dispex, riid, ppv)) { return *ppv ? S_OK : E_NOINTERFACE; ``` Some nitpicks while you're at it: * Make `mutation_observer_ctor_value` static. * Put the opening bracket on a new line in `create_mutation_observer` and `create_mutation_observer_ctor` please. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3391#note_40625