Jacek Caban (@jacek) commented about dlls/mshtml/oleobj.c:
*ppv = &This->ITargetContainer_iface; }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { *ppv = &This->cp_container.IConnectionPointContainer_iface;
- }else if(IsEqualGUID(&IID_IEventTarget, riid)) {
if(!This->doc_node || dispex_compat_mode(&This->doc_node->node.event_target.dispex) < COMPAT_MODE_IE9) {
This breaks COM rule: it's possible that we'd return IEventTarget in one QI call, then navigate to other page and then return failure for QI on the same object. We avoid this problem for document node by locking compat mode, but this won't work here, because doc_node may change as a result of navigation to other page. Do you know if native also breaks those rules? It would be also interesting to know what happens to registered events in this case: if we register an event handler on document object and then document node changes, should those events handlers still work or are they dropped (they will be dropped with this patch)?