-- v3: mshtml: Get rid of HTMLELEMENT_TIDS. mshtml: Add IHTMLDOMNode2 in every mode in node's init_dispex_info. mshtml: Move HTMLTableDataCellElement prototype props to the mshtml: Don't expose some props from elements in IE11 mode. mshtml: Don't expose some props from elements in IE10+ modes. mshtml: Don't expose expression methods from elements in IE9+ modes. mshtml: Don't expose onpage from elements in IE9+ modes. mshtml: Move normalize from HTMLElement to HTMLDOMNode in IE9+ modes. mshtml: Move hasAttributes from HTMLElement to HTMLDOMNode in IE9+ modes. mshtml: Move toString from HTMLElement to HTMLAnchorElement or HTMLAreaElement mshtml: Don't expose onmspointerhover from elements in IE11 mode. mshtml: Don't expose fireEvent from elements in IE11 mode. mshtml: Expose respective props from Element prototype.
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Instead of HTMLElement.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/dispex.c | 28 +++++++++- dlls/mshtml/htmlelem.c | 93 +++++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 56 +++++++++++++++++++ 4 files changed, 175 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index f0a69c8734c..823b7283d7a 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -438,7 +438,8 @@ static void add_func_info(dispex_data_t *data, tid_t tid, const FUNCDESC *desc, } }
-static HRESULT process_interface(dispex_data_t *data, tid_t tid, ITypeInfo *disp_typeinfo, const dispex_hook_t *hooks) +static HRESULT process_interface(dispex_data_t *data, tid_t tid, ITypeInfo *disp_typeinfo, const dispex_hook_t *hooks, + const DISPID *allow_list) { unsigned i = 7; /* skip IDispatch functions */ ITypeInfo *typeinfo; @@ -451,6 +452,7 @@ static HRESULT process_interface(dispex_data_t *data, tid_t tid, ITypeInfo *disp
while(1) { const dispex_hook_t *hook = NULL; + const DISPID *dispid = NULL;
hres = ITypeInfo_GetFuncDesc(typeinfo, i++, &funcdesc); if(FAILED(hres)) @@ -465,6 +467,17 @@ static HRESULT process_interface(dispex_data_t *data, tid_t tid, ITypeInfo *disp hook = NULL; }
+ if(allow_list) { + for(dispid = allow_list; *dispid != DISPID_UNKNOWN; dispid++) { + if(*dispid == funcdesc->memid) + break; + } + if(*dispid == DISPID_UNKNOWN) { + ITypeInfo_ReleaseFuncDesc(typeinfo, funcdesc); + continue; + } + } + if(!hook || hook->invoke || hook->name) { add_func_info(data, tid, funcdesc, disp_typeinfo ? disp_typeinfo : typeinfo, hook ? hook->invoke : NULL, hook ? hook->name : NULL); @@ -480,7 +493,16 @@ void dispex_info_add_interface(dispex_data_t *info, tid_t tid, const dispex_hook { HRESULT hres;
- hres = process_interface(info, tid, NULL, hooks); + hres = process_interface(info, tid, NULL, hooks, NULL); + if(FAILED(hres)) + ERR("process_interface failed: %08lx\n", hres); +} + +void dispex_info_add_dispids(dispex_data_t *info, tid_t tid, const DISPID *dispids) +{ + HRESULT hres; + + hres = process_interface(info, tid, NULL, NULL, dispids); if(FAILED(hres)) ERR("process_interface failed: %08lx\n", hres); } @@ -574,7 +596,7 @@ static dispex_data_t *preprocess_dispex_data(dispex_static_data_t *desc, compat_
if(desc->iface_tids) { for(tid = desc->iface_tids; *tid; tid++) { - hres = process_interface(data, *tid, dti, NULL); + hres = process_interface(data, *tid, dti, NULL, NULL); if(FAILED(hres)) break; } diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 72aeaae816e..117417b3e7c 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -7236,9 +7236,102 @@ static const IWineHTMLElementPrivateVtbl WineHTMLElementPrivateVtbl = { htmlelement_private_get_classList, };
+static void Element_init_dispex_info(dispex_data_t *info, compat_mode_t mode) +{ + static const DISPID elem_dispids[] = { + DISPID_IHTMLELEMENT_SETATTRIBUTE, + DISPID_IHTMLELEMENT_GETATTRIBUTE, + DISPID_IHTMLELEMENT_REMOVEATTRIBUTE, + DISPID_IHTMLELEMENT_TAGNAME, + DISPID_UNKNOWN + }; + static const DISPID elem2_dispids[] = { + DISPID_IHTMLELEMENT2_GETCLIENTRECTS, + DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT, + DISPID_IHTMLELEMENT2_CLIENTHEIGHT, + DISPID_IHTMLELEMENT2_CLIENTWIDTH, + DISPID_IHTMLELEMENT2_CLIENTTOP, + DISPID_IHTMLELEMENT2_CLIENTLEFT, + DISPID_IHTMLELEMENT2_SCROLLHEIGHT, + DISPID_IHTMLELEMENT2_SCROLLWIDTH, + DISPID_IHTMLELEMENT2_SCROLLTOP, + DISPID_IHTMLELEMENT2_SCROLLLEFT, + DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME, + DISPID_UNKNOWN + }; + static const DISPID elem3_pre_ie11_dispids[] = { + DISPID_IHTMLELEMENT3_FIREEVENT, + DISPID_UNKNOWN + }; + static const DISPID elem4_dispids[] = { + DISPID_IHTMLELEMENT4_GETATTRIBUTENODE, + DISPID_IHTMLELEMENT4_SETATTRIBUTENODE, + DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE, + DISPID_UNKNOWN + }; + static const DISPID elem6_dispids[] = { + DISPID_IHTMLELEMENT6_GETATTRIBUTENS, + DISPID_IHTMLELEMENT6_SETATTRIBUTENS, + DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS, + DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS, + DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS, + DISPID_IHTMLELEMENT6_HASATTRIBUTENS, + DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE, + DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE, + DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE, + DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE, + DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE, + DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE, + DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE, + DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS, + DISPID_IHTMLELEMENT6_IE9_TAGNAME, + DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR, + DISPID_UNKNOWN + }; + static const DISPID elem7_dispids[] = { + DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN, + DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE, + DISPID_IHTMLELEMENT7_ONMSPOINTERUP, + DISPID_IHTMLELEMENT7_ONMSPOINTEROVER, + DISPID_IHTMLELEMENT7_ONMSPOINTEROUT, + DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL, + DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE, + DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE, + DISPID_IHTMLELEMENT7_ONMSGESTURESTART, + DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE, + DISPID_IHTMLELEMENT7_ONMSGESTUREEND, + DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD, + DISPID_IHTMLELEMENT7_ONMSGESTURETAP, + DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP, + DISPID_IHTMLELEMENT7_ONMSINERTIASTART, + DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE, + DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE, + DISPID_UNKNOWN + }; + static const DISPID elem7_ie10_dispids[] = { + DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER, + DISPID_UNKNOWN + }; + + dispex_info_add_dispids(info, IHTMLElement2_tid, elem2_dispids); + dispex_info_add_dispids(info, IHTMLElement6_tid, elem6_dispids); + if(mode >= COMPAT_MODE_IE10) { + dispex_info_add_dispids(info, IHTMLElement7_tid, elem7_dispids); + if(mode == COMPAT_MODE_IE10) + dispex_info_add_dispids(info, IHTMLElement7_tid, elem7_ie10_dispids); + } + if(mode <= COMPAT_MODE_IE10) + dispex_info_add_dispids(info, IHTMLElement3_tid, elem3_pre_ie11_dispids); + dispex_info_add_dispids(info, IHTMLElement_tid, elem_dispids); + dispex_info_add_dispids(info, IHTMLElement4_tid, elem4_dispids); + dispex_info_add_interface(info, IElementSelector_tid, NULL); + dispex_info_add_interface(info, IElementTraversal_tid, NULL); +} + dispex_static_data_t Element_dispex = { .id = PROT_Element, .prototype_id = PROT_Node, + .init_info = Element_init_dispex_info, };
dispex_static_data_t HTMLElement_dispex = { diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 881049c6cd3..9e2bdf38681 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -625,6 +625,7 @@ void release_typelib(void); HRESULT get_class_typeinfo(const CLSID*,ITypeInfo**); const void *dispex_get_vtbl(DispatchEx*); void dispex_info_add_interface(dispex_data_t*,tid_t,const dispex_hook_t*); +void dispex_info_add_dispids(dispex_data_t*,tid_t,const DISPID*); compat_mode_t dispex_compat_mode(DispatchEx*); HRESULT dispex_to_string(DispatchEx*,BSTR*); HRESULT dispex_call_builtin(DispatchEx *dispex, DISPID id, DISPPARAMS *dp, diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 2cd4623f06e..2e3848349a1 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3692,11 +3692,67 @@ sync_test("prototype props", function() { check(CSSStyleRule, [ "readOnly", "selectorText", "style" ]); check(CustomEvent, [ "detail", "initCustomEvent" ]); check(DocumentType, [ "entities", "internalSubset", "name", "notations", "publicId", "systemId" ]); + check(Element, [ + "childElementCount", "clientHeight", "clientLeft", "clientTop", "clientWidth", ["fireEvent",9,10], "firstElementChild", + "getAttribute", "getAttributeNS", "getAttributeNode", "getAttributeNodeNS", "getBoundingClientRect", "getClientRects", + "getElementsByTagName", "getElementsByTagNameNS", "hasAttribute", "hasAttributeNS", "lastElementChild", + ["msContentZoomFactor",10], ["msGetRegionContent",10], ["msGetUntransformedBounds",11], "msMatchesSelector", + ["msRegionOverflow",10], ["msReleasePointerCapture",10], ["msRequestFullscreen",11], ["msSetPointerCapture",10], + ["msZoomTo",11], "nextElementSibling", ["ongotpointercapture",11], ["onlostpointercapture",11], ["onmsgesturechange",10], + ["onmsgesturedoubletap",10], ["onmsgestureend",10], ["onmsgesturehold",10], ["onmsgesturestart",10], ["onmsgesturetap",10], + ["onmsgotpointercapture",10], ["onmsinertiastart",10], ["onmslostpointercapture",10], ["onmspointercancel",10], + ["onmspointerdown",10], ["onmspointerenter",11], ["onmspointerhover",10,10], ["onmspointerleave",11], ["onmspointermove",10], + ["onmspointerout",10], ["onmspointerover",10], ["onmspointerup",10], ["onpointercancel",11], ["onpointerdown",11], + ["onpointerenter",11], ["onpointerleave",11], ["onpointermove",11], ["onpointerout",11], ["onpointerover",11], + ["onpointerup",11], "previousElementSibling", "querySelector", "querySelectorAll", ["releasePointerCapture",11], + "removeAttribute", "removeAttributeNS", "removeAttributeNode", "scrollHeight", "scrollLeft", "scrollTop", "scrollWidth", + "setAttribute", "setAttributeNS", "setAttributeNode", "setAttributeNodeNS", ["setPointerCapture",11], "tagName" + ], [ + ["msContentZoomFactor",10], ["msGetRegionContent",10], ["msGetUntransformedBounds",11], ["msRegionOverflow",10], + ["msRequestFullscreen",11], ["msZoomTo",11], ["ongotpointercapture",11], ["onlostpointercapture",11], + ["onmspointerenter",11], ["onmspointerleave",11], ["onpointercancel",11], ["onpointerdown",11], ["onpointerenter",11], + ["onpointerleave",11], ["onpointermove",11], ["onpointerout",11], ["onpointerover",11], ["onpointerup",11], + ["releasePointerCapture",11], ["setPointerCapture",11] + ]); check(Event, [ "AT_TARGET", "BUBBLING_PHASE", "CAPTURING_PHASE", "bubbles", "cancelBubble", "cancelable", "currentTarget", "defaultPrevented", "eventPhase", "initEvent", "isTrusted", "preventDefault", "srcElement", "stopImmediatePropagation", "stopPropagation", "target", "timeStamp", "type" ], [ "AT_TARGET", "BUBBLING_PHASE", "CAPTURING_PHASE" ]); + check(HTMLElement, [ + "accessKey", ["addBehavior",9,10], ["addFilter",9,9], ["all",9,10], "applyElement", ["attachEvent",9,10], ["behaviorUrns",9,10], "blur", + "canHaveChildren", "canHaveHTML", "children", ["classList",10], "className", "clearAttributes", "click", "componentFromPoint", "contains", + "contentEditable", "createControlRange", "currentStyle", ["dataset",11], ["detachEvent",9,10], "dir", "disabled", ["doScroll",9,10], + ["document",9,9], "dragDrop", ["draggable",10], ["filters",9,9], "focus", "getAdjacentText", "getElementsByClassName", ["hidden",11], + "hideFocus", "id", "innerHTML", "innerText", "insertAdjacentElement", "insertAdjacentHTML", "insertAdjacentText", "isContentEditable", + "isDisabled", "isMultiLine", "isTextEdit", "lang", "language", "mergeAttributes", ["msGetInputContext",11], "offsetHeight", "offsetLeft", + "offsetParent", "offsetTop", "offsetWidth", "onabort", "onactivate", ["onafterupdate",9,10], "onbeforeactivate", "onbeforecopy", + "onbeforecut", "onbeforedeactivate", ["onbeforeeditfocus",9,10], "onbeforepaste", ["onbeforeupdate",9,10], "onblur", "oncanplay", + "oncanplaythrough", ["oncellchange",9,10], "onchange", "onclick", "oncontextmenu", ["oncontrolselect",9,10], "oncopy", ["oncuechange",10], + "oncut", ["ondataavailable",9,10], ["ondatasetchanged",9,10], ["ondatasetcomplete",9,10], "ondblclick", "ondeactivate", "ondrag", + "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", + ["onerrorupdate",9,10], ["onfilterchange",9,10], "onfocus", "onfocusin", "onfocusout", "onhelp", "oninput", "onkeydown", "onkeypress", + "onkeyup", ["onlayoutcomplete",9,10], "onload", "onloadeddata", "onloadedmetadata", "onloadstart", ["onlosecapture",9,10], + "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", ["onmove",9,10], + ["onmoveend",9,10], ["onmovestart",9,10], ["onmscontentzoom",10], ["onmsmanipulationstatechanged",10], "onpaste", "onpause", "onplay", + "onplaying", "onprogress", ["onpropertychange",9,10], "onratechange", ["onreadystatechange",9,10], "onreset", ["onresize",9,10], + ["onresizeend",9,10], ["onresizestart",9,10], ["onrowenter",9,10], ["onrowexit",9,10], ["onrowsdelete",9,10], ["onrowsinserted",9,10], + "onscroll", "onseeked", "onseeking", "onselect", "onselectstart", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", + "onwaiting", "outerHTML", "outerText", "parentElement", "parentTextEdit", ["readyState",9,10], "recordNumber", "releaseCapture", + ["removeBehavior",9,10], ["removeFilter",9,9], "removeNode", "replaceAdjacentText", "replaceNode", "runtimeStyle", ["scopeName",9,9], + "scrollIntoView", "setActive", "setCapture", "sourceIndex", ["spellcheck",10], "style", "swapNode", "tabIndex", ["tagUrn",9,9], "title", + "uniqueID", "uniqueNumber" + ], [ + ["addBehavior",11], ["addFilter",10], ["all",11], ["behaviorUrns",11], ["dataset",11], ["document",10], ["draggable",10], ["filters",10], + ["fireEvent",11], "getExpression", "hasAttributes", ["hidden",11], ["msGetInputContext",11], "normalize", ["onafterupdate",11], + ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], + ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], + ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], + ["onmscontentzoom",10], ["onmspointerhover",11], ["onmstransitionend",10], ["onmstransitionstart",10], "onpage", ["onpropertychange",11], + ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], + ["onrowsdelete",11], ["onrowsinserted",11], ["removeBehavior",11], "removeExpression", ["removeFilter",10], ["scopeName",10], "setExpression", + ["tagUrn",10], "toString", ["xmsAcceleratorKey",10] + ]); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [ "DOM_KEY_LOCATION_JOYSTICK", "DOM_KEY_LOCATION_LEFT", "DOM_KEY_LOCATION_MOBILE",
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 6 ++++++ dlls/mshtml/mshtml_private.h | 1 - dlls/mshtml/tests/documentmode.js | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 117417b3e7c..821cc96722b 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6687,6 +6687,10 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT2_READYSTATE, NULL}, {DISPID_UNKNOWN} }; + static const dispex_hook_t elem3_ie11_hooks[] = { + {DISPID_IHTMLELEMENT3_FIREEVENT, NULL}, + {DISPID_UNKNOWN} + };
HTMLDOMNode_init_dispex_info(info, mode);
@@ -6705,6 +6709,8 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) dispex_info_add_interface(info, IHTMLElement7_tid, NULL); dispex_info_add_interface(info, IWineHTMLElementPrivate_tid, NULL); } + + dispex_info_add_interface(info, IHTMLElement3_tid, mode >= COMPAT_MODE_IE11 ? elem3_ie11_hooks : NULL); }
const tid_t HTMLElement_iface_tids[] = { diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 9e2bdf38681..cf0a08c5a83 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1060,7 +1060,6 @@ typedef struct { IHTMLDOMNode_tid, \ IHTMLDOMNode2_tid, \ IHTMLElement_tid, \ - IHTMLElement3_tid, \ IHTMLElement4_tid, \ IHTMLUniqueName_tid
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 2e3848349a1..ccad6a7672e 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3744,8 +3744,8 @@ sync_test("prototype props", function() { "uniqueID", "uniqueNumber" ], [ ["addBehavior",11], ["addFilter",10], ["all",11], ["behaviorUrns",11], ["dataset",11], ["document",10], ["draggable",10], ["filters",10], - ["fireEvent",11], "getExpression", "hasAttributes", ["hidden",11], ["msGetInputContext",11], "normalize", ["onafterupdate",11], - ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], + "getExpression", "hasAttributes", ["hidden",11], ["msGetInputContext",11], "normalize", ["onafterupdate",11], ["onbeforeeditfocus",11], + ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], ["onmscontentzoom",10], ["onmspointerhover",11], ["onmstransitionend",10], ["onmstransitionstart",10], "onpage", ["onpropertychange",11],
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 6 +++++- dlls/mshtml/tests/documentmode.js | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 821cc96722b..4de4d3ecc5a 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6691,6 +6691,10 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT3_FIREEVENT, NULL}, {DISPID_UNKNOWN} }; + static const dispex_hook_t elem7_ie11_hooks[] = { + {DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER}, + {DISPID_UNKNOWN} + };
HTMLDOMNode_init_dispex_info(info, mode);
@@ -6706,7 +6710,7 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode)
if(mode >= COMPAT_MODE_IE10) { - dispex_info_add_interface(info, IHTMLElement7_tid, NULL); + dispex_info_add_interface(info, IHTMLElement7_tid, mode >= COMPAT_MODE_IE11 ? elem7_ie11_hooks : NULL); dispex_info_add_interface(info, IWineHTMLElementPrivate_tid, NULL); }
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index ccad6a7672e..f5cd707fb84 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3748,7 +3748,7 @@ sync_test("prototype props", function() { ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], - ["onmscontentzoom",10], ["onmspointerhover",11], ["onmstransitionend",10], ["onmstransitionstart",10], "onpage", ["onpropertychange",11], + ["onmscontentzoom",10], ["onmstransitionend",10], ["onmstransitionstart",10], "onpage", ["onpropertychange",11], ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], ["onrowsinserted",11], ["removeBehavior",11], "removeExpression", ["removeFilter",10], ["scopeName",10], "setExpression", ["tagUrn",10], "toString", ["xmsAcceleratorKey",10]
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlanchor.c | 14 +++++++++++++- dlls/mshtml/htmlarea.c | 14 +++++++++++++- dlls/mshtml/htmlelem.c | 10 ++++++++++ dlls/mshtml/mshtml_private.h | 1 - dlls/mshtml/tests/documentmode.js | 4 +++- 5 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/htmlanchor.c b/dlls/mshtml/htmlanchor.c index 0e1642b07bf..2e0be3d4241 100644 --- a/dlls/mshtml/htmlanchor.c +++ b/dlls/mshtml/htmlanchor.c @@ -25,6 +25,7 @@ #include "winbase.h" #include "winuser.h" #include "ole2.h" +#include "mshtmdid.h"
#include "mshtml_private.h" #include "htmlevent.h" @@ -828,6 +829,17 @@ static const event_target_vtbl_t HTMLAnchorElement_event_target_vtbl = { .handle_event = HTMLAnchorElement_handle_event };
+static void HTMLAnchorElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) +{ + static const DISPID elem_dispids[] = { + DISPID_IHTMLELEMENT_TOSTRING, + DISPID_UNKNOWN + }; + HTMLElement_init_dispex_info(info, mode); + if(mode >= COMPAT_MODE_IE9) + dispex_info_add_dispids(info, IHTMLElement_tid, elem_dispids); +} + static const tid_t HTMLAnchorElement_iface_tids[] = { IHTMLAnchorElement_tid, HTMLELEMENT_TIDS, @@ -840,7 +852,7 @@ dispex_static_data_t HTMLAnchorElement_dispex = { .vtbl = &HTMLAnchorElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLAnchorElement_tid, .iface_tids = HTMLAnchorElement_iface_tids, - .init_info = HTMLElement_init_dispex_info, + .init_info = HTMLAnchorElement_init_dispex_info, };
HRESULT HTMLAnchorElement_Create(HTMLDocumentNode *doc, nsIDOMElement *nselem, HTMLElement **elem) diff --git a/dlls/mshtml/htmlarea.c b/dlls/mshtml/htmlarea.c index 34e58473f72..153bfd514b7 100644 --- a/dlls/mshtml/htmlarea.c +++ b/dlls/mshtml/htmlarea.c @@ -24,6 +24,7 @@ #include "winbase.h" #include "winuser.h" #include "ole2.h" +#include "mshtmdid.h"
#include "wine/debug.h"
@@ -439,6 +440,17 @@ static const event_target_vtbl_t HTMLAreaElement_event_target_vtbl = { .handle_event = HTMLAreaElement_handle_event };
+static void HTMLAreaElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) +{ + static const DISPID elem_dispids[] = { + DISPID_IHTMLELEMENT_TOSTRING, + DISPID_UNKNOWN + }; + HTMLElement_init_dispex_info(info, mode); + if(mode >= COMPAT_MODE_IE9) + dispex_info_add_dispids(info, IHTMLElement_tid, elem_dispids); +} + static const tid_t HTMLAreaElement_iface_tids[] = { HTMLELEMENT_TIDS, IHTMLAreaElement_tid, @@ -450,7 +462,7 @@ dispex_static_data_t HTMLAreaElement_dispex = { .vtbl = &HTMLAreaElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLAreaElement_tid, .iface_tids = HTMLAreaElement_iface_tids, - .init_info = HTMLElement_init_dispex_info, + .init_info = HTMLAreaElement_init_dispex_info, };
HRESULT HTMLAreaElement_Create(HTMLDocumentNode *doc, nsIDOMElement *nselem, HTMLElement **elem) diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 4de4d3ecc5a..d3b23ca4f25 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6680,6 +6680,10 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE, IHTMLElement6_setAttribute_hook}, {DISPID_UNKNOWN} }; + static const dispex_hook_t elem_ie9_hooks[] = { + {DISPID_IHTMLELEMENT_TOSTRING, NULL}, + {DISPID_UNKNOWN} + }; static const dispex_hook_t elem2_ie11_hooks[] = { {DISPID_IHTMLELEMENT2_ATTACHEVENT, NULL}, {DISPID_IHTMLELEMENT2_DETACHEVENT, NULL}, @@ -6715,8 +6719,14 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) }
dispex_info_add_interface(info, IHTMLElement3_tid, mode >= COMPAT_MODE_IE11 ? elem3_ie11_hooks : NULL); + dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE9 ? elem_ie9_hooks : NULL); }
+const DISPID HTMLElement_toString_dispids[] = { + DISPID_IHTMLELEMENT_TOSTRING, + DISPID_UNKNOWN +}; + const tid_t HTMLElement_iface_tids[] = { HTMLELEMENT_TIDS, 0 diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index cf0a08c5a83..b0ab02c8d82 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1059,7 +1059,6 @@ typedef struct { #define HTMLELEMENT_TIDS \ IHTMLDOMNode_tid, \ IHTMLDOMNode2_tid, \ - IHTMLElement_tid, \ IHTMLElement4_tid, \ IHTMLUniqueName_tid
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index f5cd707fb84..b444726d3b5 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -252,11 +252,13 @@ sync_test("builtin_toString", function() {
e = document.createElement("a"); ok(e.toString() === "", "tag 'a' (without href) toString returned " + e.toString()); + ok(e + "" === "", "tag 'a' (without href) value = " + e); e.href = "https://www.winehq.org/"; test("tag 'a'", e, "HTMLAnchorElement", "https://www.winehq.org/");
e = document.createElement("area"); ok(e.toString() === "", "tag 'area' (without href) toString returned " + e.toString()); + ok(e + "" === "", "tag 'area' (without href) value = " + e); e.href = "https://www.winehq.org/"; test("tag 'area'", e, "HTMLAreaElement", "https://www.winehq.org/");
@@ -3751,7 +3753,7 @@ sync_test("prototype props", function() { ["onmscontentzoom",10], ["onmstransitionend",10], ["onmstransitionstart",10], "onpage", ["onpropertychange",11], ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], ["onrowsinserted",11], ["removeBehavior",11], "removeExpression", ["removeFilter",10], ["scopeName",10], "setExpression", - ["tagUrn",10], "toString", ["xmsAcceleratorKey",10] + ["tagUrn",10], ["xmsAcceleratorKey",10] ]); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlnode.c | 31 ++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/mshtml_private_iface.idl | 13 ++++++++++++ dlls/mshtml/tests/documentmode.js | 4 ++-- 4 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index 7df7b5bdc6a..aa498fa7fbb 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -1191,6 +1191,33 @@ static const IHTMLDOMNode3Vtbl HTMLDOMNode3Vtbl = { HTMLDOMNode3_isSupported };
+static inline HTMLDOMNode *impl_from_IWineHTMLDOMNodePrivate(IWineHTMLDOMNodePrivate *iface) +{ + return CONTAINING_RECORD(iface, HTMLDOMNode, IWineHTMLDOMNodePrivate_iface); +} + +DISPEX_IDISPATCH_IMPL(HTMLDOMNode_private, IWineHTMLDOMNodePrivate, impl_from_IWineHTMLDOMNodePrivate(iface)->event_target.dispex) + +static HRESULT WINAPI HTMLDOMNode_private_get_hasAttributes(IWineHTMLDOMNodePrivate *iface, VARIANT_BOOL *p) +{ + HTMLDOMNode *This = impl_from_IWineHTMLDOMNodePrivate(iface); + + FIXME("(%p)->(%p)\n", This, p); + + return E_NOTIMPL; +} + +static const IWineHTMLDOMNodePrivateVtbl HTMLDOMNode_private_vtbl = { + HTMLDOMNode_private_QueryInterface, + HTMLDOMNode_private_AddRef, + HTMLDOMNode_private_Release, + HTMLDOMNode_private_GetTypeInfoCount, + HTMLDOMNode_private_GetTypeInfo, + HTMLDOMNode_private_GetIDsOfNames, + HTMLDOMNode_private_Invoke, + HTMLDOMNode_private_get_hasAttributes, +}; + static inline HTMLDOMNode *HTMLDOMNode_from_DispatchEx(DispatchEx *iface) { return CONTAINING_RECORD(iface, HTMLDOMNode, event_target.dispex); @@ -1210,6 +1237,8 @@ void *HTMLDOMNode_query_interface(DispatchEx *dispex, REFIID riid) return &This->IHTMLDOMNode2_iface; if(IsEqualGUID(&IID_IHTMLDOMNode3, riid)) return &This->IHTMLDOMNode3_iface; + if(IsEqualGUID(&IID_IWineHTMLDOMNodePrivate, riid)) + return &This->IWineHTMLDOMNodePrivate_iface;
return EventTarget_query_interface(&This->event_target, riid); } @@ -1265,6 +1294,7 @@ void HTMLDOMNode_init_dispex_info(dispex_data_t *info, compat_mode_t mode) if(mode >= COMPAT_MODE_IE9) { dispex_info_add_interface(info, IHTMLDOMNode2_tid, NULL); dispex_info_add_interface(info, IHTMLDOMNode3_tid, NULL); + dispex_info_add_interface(info, IWineHTMLDOMNodePrivate_tid, NULL); }
EventTarget_init_dispex_info(info, mode); @@ -1284,6 +1314,7 @@ void HTMLDOMNode_Init(HTMLDocumentNode *doc, HTMLDOMNode *node, nsIDOMNode *nsno node->IHTMLDOMNode_iface.lpVtbl = &HTMLDOMNodeVtbl; node->IHTMLDOMNode2_iface.lpVtbl = &HTMLDOMNode2Vtbl; node->IHTMLDOMNode3_iface.lpVtbl = &HTMLDOMNode3Vtbl; + node->IWineHTMLDOMNodePrivate_iface.lpVtbl = &HTMLDOMNode_private_vtbl;
init_event_target(&node->event_target, dispex_data, doc->script_global);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index b0ab02c8d82..2290d13894f 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -300,6 +300,7 @@ typedef struct ScriptHost ScriptHost; #define PRIVATE_TID_LIST \ XIID(IWineDOMTokenList) \ XIID(IWineHTMLCharacterData) \ + XIID(IWineHTMLDOMNodePrivate) \ XIID(IWineHTMLElementPrivate) \ XIID(IWineHTMLWindowPrivate) \ XIID(IWineHTMLWindowCompatPrivate) \ @@ -1013,6 +1014,7 @@ struct HTMLDOMNode { IHTMLDOMNode IHTMLDOMNode_iface; IHTMLDOMNode2 IHTMLDOMNode2_iface; IHTMLDOMNode3 IHTMLDOMNode3_iface; + IWineHTMLDOMNodePrivate IWineHTMLDOMNodePrivate_iface; const NodeImplVtbl *vtbl;
nsIDOMNode *nsnode; diff --git a/dlls/mshtml/mshtml_private_iface.idl b/dlls/mshtml/mshtml_private_iface.idl index e32687329f9..3b74c4a5d7f 100644 --- a/dlls/mshtml/mshtml_private_iface.idl +++ b/dlls/mshtml/mshtml_private_iface.idl @@ -149,6 +149,19 @@ interface IWineHTMLWindowCompatPrivate : IDispatch HRESULT performance([out, retval] VARIANT *p); }
+[ + odl, + oleautomation, + dual, + hidden, + uuid(465908fd-f394-489f-b7a3-4c00fbbe9eea) +] +interface IWineHTMLDOMNodePrivate : IDispatch +{ + [id(DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] + HRESULT hasAttributes([retval, out] VARIANT_BOOL *p); +} + [ odl, oleautomation, diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index b444726d3b5..6c6b1b6b684 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3746,7 +3746,7 @@ sync_test("prototype props", function() { "uniqueID", "uniqueNumber" ], [ ["addBehavior",11], ["addFilter",10], ["all",11], ["behaviorUrns",11], ["dataset",11], ["document",10], ["draggable",10], ["filters",10], - "getExpression", "hasAttributes", ["hidden",11], ["msGetInputContext",11], "normalize", ["onafterupdate",11], ["onbeforeeditfocus",11], + "getExpression", ["hidden",11], ["msGetInputContext",11], "normalize", ["onafterupdate",11], ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], @@ -3786,7 +3786,7 @@ sync_test("prototype props", function() { "DOCUMENT_POSITION_CONTAINED_BY", "DOCUMENT_POSITION_CONTAINS", "DOCUMENT_POSITION_DISCONNECTED", "DOCUMENT_POSITION_FOLLOWING", "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC", "DOCUMENT_POSITION_PRECEDING", "DOCUMENT_TYPE_NODE", "ELEMENT_NODE", "ENTITY_NODE", "ENTITY_REFERENCE_NODE", "NOTATION_NODE", - "PROCESSING_INSTRUCTION_NODE", "TEXT_NODE", "hasAttributes", "normalize" + "PROCESSING_INSTRUCTION_NODE", "TEXT_NODE", "normalize" ]); if(v >= 11) check(PageTransitionEvent, [ "persisted" ]);
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlnode.c | 10 ++++++++++ dlls/mshtml/mshtml_private_iface.idl | 2 ++ dlls/mshtml/tests/documentmode.js | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index aa498fa7fbb..b87e20c433b 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -1207,6 +1207,15 @@ static HRESULT WINAPI HTMLDOMNode_private_get_hasAttributes(IWineHTMLDOMNodePriv return E_NOTIMPL; }
+static HRESULT WINAPI HTMLDOMNode_private_normalize(IWineHTMLDOMNodePrivate *iface) +{ + HTMLDOMNode *This = impl_from_IWineHTMLDOMNodePrivate(iface); + + FIXME("(%p)\n", This); + + return E_NOTIMPL; +} + static const IWineHTMLDOMNodePrivateVtbl HTMLDOMNode_private_vtbl = { HTMLDOMNode_private_QueryInterface, HTMLDOMNode_private_AddRef, @@ -1216,6 +1225,7 @@ static const IWineHTMLDOMNodePrivateVtbl HTMLDOMNode_private_vtbl = { HTMLDOMNode_private_GetIDsOfNames, HTMLDOMNode_private_Invoke, HTMLDOMNode_private_get_hasAttributes, + HTMLDOMNode_private_normalize, };
static inline HTMLDOMNode *HTMLDOMNode_from_DispatchEx(DispatchEx *iface) diff --git a/dlls/mshtml/mshtml_private_iface.idl b/dlls/mshtml/mshtml_private_iface.idl index 3b74c4a5d7f..6fcf465e5be 100644 --- a/dlls/mshtml/mshtml_private_iface.idl +++ b/dlls/mshtml/mshtml_private_iface.idl @@ -160,6 +160,8 @@ interface IWineHTMLDOMNodePrivate : IDispatch { [id(DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] HRESULT hasAttributes([retval, out] VARIANT_BOOL *p); + [id(DISPID_IHTMLELEMENT4_NORMALIZE)] + HRESULT normalize(); }
[ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 6c6b1b6b684..883633985c5 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3746,7 +3746,7 @@ sync_test("prototype props", function() { "uniqueID", "uniqueNumber" ], [ ["addBehavior",11], ["addFilter",10], ["all",11], ["behaviorUrns",11], ["dataset",11], ["document",10], ["draggable",10], ["filters",10], - "getExpression", ["hidden",11], ["msGetInputContext",11], "normalize", ["onafterupdate",11], ["onbeforeeditfocus",11], + "getExpression", ["hidden",11], ["msGetInputContext",11], ["onafterupdate",11], ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], @@ -3786,7 +3786,7 @@ sync_test("prototype props", function() { "DOCUMENT_POSITION_CONTAINED_BY", "DOCUMENT_POSITION_CONTAINS", "DOCUMENT_POSITION_DISCONNECTED", "DOCUMENT_POSITION_FOLLOWING", "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC", "DOCUMENT_POSITION_PRECEDING", "DOCUMENT_TYPE_NODE", "ELEMENT_NODE", "ENTITY_NODE", "ENTITY_REFERENCE_NODE", "NOTATION_NODE", - "PROCESSING_INSTRUCTION_NODE", "TEXT_NODE", "normalize" + "PROCESSING_INSTRUCTION_NODE", "TEXT_NODE" ]); if(v >= 11) check(PageTransitionEvent, [ "persisted" ]);
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 7 ++++++- dlls/mshtml/tests/documentmode.js | 7 +++---- 2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index d3b23ca4f25..83da484f184 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6693,8 +6693,12 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) }; static const dispex_hook_t elem3_ie11_hooks[] = { {DISPID_IHTMLELEMENT3_FIREEVENT, NULL}, + + /* IE9+ */ + {DISPID_IHTMLELEMENT3_ONPAGE, NULL}, {DISPID_UNKNOWN} }; + const dispex_hook_t *const elem3_ie9_hooks = elem3_ie11_hooks + 1; static const dispex_hook_t elem7_ie11_hooks[] = { {DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER}, {DISPID_UNKNOWN} @@ -6718,7 +6722,8 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) dispex_info_add_interface(info, IWineHTMLElementPrivate_tid, NULL); }
- dispex_info_add_interface(info, IHTMLElement3_tid, mode >= COMPAT_MODE_IE11 ? elem3_ie11_hooks : NULL); + dispex_info_add_interface(info, IHTMLElement3_tid, mode >= COMPAT_MODE_IE11 ? elem3_ie11_hooks : + mode >= COMPAT_MODE_IE9 ? elem3_ie9_hooks : NULL); dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE9 ? elem_ie9_hooks : NULL); }
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 883633985c5..5c3051d5a84 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3750,10 +3750,9 @@ sync_test("prototype props", function() { ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], - ["onmscontentzoom",10], ["onmstransitionend",10], ["onmstransitionstart",10], "onpage", ["onpropertychange",11], - ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], - ["onrowsdelete",11], ["onrowsinserted",11], ["removeBehavior",11], "removeExpression", ["removeFilter",10], ["scopeName",10], "setExpression", - ["tagUrn",10], ["xmsAcceleratorKey",10] + ["onmscontentzoom",10], ["onmstransitionend",10], ["onmstransitionstart",10], ["onpropertychange",11], ["onreadystatechange",11], + ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], ["onrowsinserted",11], + ["removeBehavior",11], "removeExpression", ["removeFilter",10], ["scopeName",10], "setExpression", ["tagUrn",10], ["xmsAcceleratorKey",10] ]); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 10 ++++++++-- dlls/mshtml/tests/documentmode.js | 14 +++++++------- 2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 83da484f184..4b925e27d29 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6689,8 +6689,14 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT2_DETACHEVENT, NULL}, {DISPID_IHTMLELEMENT2_DOSCROLL, NULL}, {DISPID_IHTMLELEMENT2_READYSTATE, NULL}, + + /* IE9+ */ + {DISPID_IHTMLELEMENT2_SETEXPRESSION, NULL}, + {DISPID_IHTMLELEMENT2_GETEXPRESSION, NULL}, + {DISPID_IHTMLELEMENT2_REMOVEEXPRESSION, NULL}, {DISPID_UNKNOWN} }; + const dispex_hook_t *const elem2_ie9_hooks = elem2_ie11_hooks + 4; static const dispex_hook_t elem3_ie11_hooks[] = { {DISPID_IHTMLELEMENT3_FIREEVENT, NULL},
@@ -6706,8 +6712,8 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode)
HTMLDOMNode_init_dispex_info(info, mode);
- dispex_info_add_interface(info, IHTMLElement2_tid, mode >= COMPAT_MODE_IE11 ? elem2_ie11_hooks : NULL); - + dispex_info_add_interface(info, IHTMLElement2_tid, mode >= COMPAT_MODE_IE11 ? elem2_ie11_hooks : + mode >= COMPAT_MODE_IE9 ? elem2_ie9_hooks : NULL); if(mode >= COMPAT_MODE_IE8) dispex_info_add_interface(info, IElementSelector_tid, NULL);
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 5c3051d5a84..78a909d2944 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3746,13 +3746,13 @@ sync_test("prototype props", function() { "uniqueID", "uniqueNumber" ], [ ["addBehavior",11], ["addFilter",10], ["all",11], ["behaviorUrns",11], ["dataset",11], ["document",10], ["draggable",10], ["filters",10], - "getExpression", ["hidden",11], ["msGetInputContext",11], ["onafterupdate",11], ["onbeforeeditfocus",11], - ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], - ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], - ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], - ["onmscontentzoom",10], ["onmstransitionend",10], ["onmstransitionstart",10], ["onpropertychange",11], ["onreadystatechange",11], - ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], ["onrowsinserted",11], - ["removeBehavior",11], "removeExpression", ["removeFilter",10], ["scopeName",10], "setExpression", ["tagUrn",10], ["xmsAcceleratorKey",10] + ["hidden",11], ["msGetInputContext",11], ["onafterupdate",11], ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], + ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], + ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], + ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], ["onmscontentzoom",10], ["onmstransitionend",10], + ["onmstransitionstart",10], ["onpropertychange",11], ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], + ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], ["onrowsinserted",11], ["removeBehavior",11], ["removeFilter",10], ["scopeName",10], + ["tagUrn",10], ["xmsAcceleratorKey",10] ]); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 33 +++++++++++++++++++++++++++---- dlls/mshtml/tests/documentmode.js | 14 ++++++------- 2 files changed, 35 insertions(+), 12 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 4b925e27d29..bf2467c99c0 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6680,23 +6680,35 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE, IHTMLElement6_setAttribute_hook}, {DISPID_UNKNOWN} }; - static const dispex_hook_t elem_ie9_hooks[] = { + static const dispex_hook_t elem_ie10_hooks[] = { + {DISPID_IHTMLELEMENT_DOCUMENT, NULL}, + {DISPID_IHTMLELEMENT_FILTERS, NULL}, + + /* IE9+ */ {DISPID_IHTMLELEMENT_TOSTRING, NULL}, {DISPID_UNKNOWN} }; + const dispex_hook_t *const elem_ie9_hooks = elem_ie10_hooks + 2; static const dispex_hook_t elem2_ie11_hooks[] = { {DISPID_IHTMLELEMENT2_ATTACHEVENT, NULL}, {DISPID_IHTMLELEMENT2_DETACHEVENT, NULL}, {DISPID_IHTMLELEMENT2_DOSCROLL, NULL}, {DISPID_IHTMLELEMENT2_READYSTATE, NULL},
+ /* IE10+ */ + {DISPID_IHTMLELEMENT2_SCOPENAME, NULL}, + {DISPID_IHTMLELEMENT2_ADDFILTER, NULL}, + {DISPID_IHTMLELEMENT2_REMOVEFILTER,NULL}, + {DISPID_IHTMLELEMENT2_TAGURN, NULL}, + /* IE9+ */ {DISPID_IHTMLELEMENT2_SETEXPRESSION, NULL}, {DISPID_IHTMLELEMENT2_GETEXPRESSION, NULL}, {DISPID_IHTMLELEMENT2_REMOVEEXPRESSION, NULL}, {DISPID_UNKNOWN} }; - const dispex_hook_t *const elem2_ie9_hooks = elem2_ie11_hooks + 4; + const dispex_hook_t *const elem2_ie10_hooks = elem2_ie11_hooks + 4; + const dispex_hook_t *const elem2_ie9_hooks = elem2_ie10_hooks + 4; static const dispex_hook_t elem3_ie11_hooks[] = { {DISPID_IHTMLELEMENT3_FIREEVENT, NULL},
@@ -6707,12 +6719,23 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) const dispex_hook_t *const elem3_ie9_hooks = elem3_ie11_hooks + 1; static const dispex_hook_t elem7_ie11_hooks[] = { {DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER}, + + /* IE10+ */ + {DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART}, + {DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND}, + {DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART}, + {DISPID_IHTMLELEMENT7_ONMSANIMATIONEND}, + {DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION}, + {DISPID_IHTMLELEMENT7_ONINVALID}, + {DISPID_IHTMLELEMENT7_XMSACCELERATORKEY}, {DISPID_UNKNOWN} }; + const dispex_hook_t *const elem7_ie10_hooks = elem7_ie11_hooks + 1;
HTMLDOMNode_init_dispex_info(info, mode);
dispex_info_add_interface(info, IHTMLElement2_tid, mode >= COMPAT_MODE_IE11 ? elem2_ie11_hooks : + mode >= COMPAT_MODE_IE10 ? elem2_ie10_hooks : mode >= COMPAT_MODE_IE9 ? elem2_ie9_hooks : NULL); if(mode >= COMPAT_MODE_IE8) dispex_info_add_interface(info, IElementSelector_tid, NULL); @@ -6724,13 +6747,15 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode)
if(mode >= COMPAT_MODE_IE10) { - dispex_info_add_interface(info, IHTMLElement7_tid, mode >= COMPAT_MODE_IE11 ? elem7_ie11_hooks : NULL); + dispex_info_add_interface(info, IHTMLElement7_tid, mode >= COMPAT_MODE_IE11 ? elem7_ie11_hooks : + mode >= COMPAT_MODE_IE10 ? elem7_ie10_hooks : NULL); dispex_info_add_interface(info, IWineHTMLElementPrivate_tid, NULL); }
dispex_info_add_interface(info, IHTMLElement3_tid, mode >= COMPAT_MODE_IE11 ? elem3_ie11_hooks : mode >= COMPAT_MODE_IE9 ? elem3_ie9_hooks : NULL); - dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE9 ? elem_ie9_hooks : NULL); + dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE10 ? elem_ie10_hooks : + mode >= COMPAT_MODE_IE9 ? elem_ie9_hooks : NULL); }
const DISPID HTMLElement_toString_dispids[] = { diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 78a909d2944..fb0bbcbe691 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3745,14 +3745,12 @@ sync_test("prototype props", function() { "scrollIntoView", "setActive", "setCapture", "sourceIndex", ["spellcheck",10], "style", "swapNode", "tabIndex", ["tagUrn",9,9], "title", "uniqueID", "uniqueNumber" ], [ - ["addBehavior",11], ["addFilter",10], ["all",11], ["behaviorUrns",11], ["dataset",11], ["document",10], ["draggable",10], ["filters",10], - ["hidden",11], ["msGetInputContext",11], ["onafterupdate",11], ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], - ["oncontrolselect",11], ["ondataavailable",11], ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], - ["onfilterchange",11], ["oninvalid",10], ["onlayoutcomplete",11], ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], - ["onmsanimationend",10], ["onmsanimationiteration",10], ["onmsanimationstart",10], ["onmscontentzoom",10], ["onmstransitionend",10], - ["onmstransitionstart",10], ["onpropertychange",11], ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], - ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], ["onrowsinserted",11], ["removeBehavior",11], ["removeFilter",10], ["scopeName",10], - ["tagUrn",10], ["xmsAcceleratorKey",10] + ["addBehavior",11], ["all",11], ["behaviorUrns",11], ["dataset",11], ["draggable",10], ["hidden",11], ["msGetInputContext",11], + ["onafterupdate",11], ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], + ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["onlayoutcomplete",11], + ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmscontentzoom",10], ["onpropertychange",11], + ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], + ["onrowsinserted",11], ["removeBehavior",11] ]); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 54 ++++++++++++++++++++++++------- dlls/mshtml/tests/documentmode.js | 9 +----- 2 files changed, 44 insertions(+), 19 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index bf2467c99c0..be2557d629d 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6680,7 +6680,19 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE, IHTMLElement6_setAttribute_hook}, {DISPID_UNKNOWN} }; - static const dispex_hook_t elem_ie10_hooks[] = { + static const dispex_hook_t elem_ie11_hooks[] = { + {DISPID_IHTMLELEMENT_ONBEFOREUPDATE}, + {DISPID_IHTMLELEMENT_ONAFTERUPDATE}, + {DISPID_IHTMLELEMENT_ONERRORUPDATE}, + {DISPID_IHTMLELEMENT_ONROWEXIT}, + {DISPID_IHTMLELEMENT_ONROWENTER}, + {DISPID_IHTMLELEMENT_ONDATASETCHANGED}, + {DISPID_IHTMLELEMENT_ONDATAAVAILABLE}, + {DISPID_IHTMLELEMENT_ONDATASETCOMPLETE}, + {DISPID_IHTMLELEMENT_ONFILTERCHANGE}, + {DISPID_IHTMLELEMENT_ALL}, + + /* IE10+ */ {DISPID_IHTMLELEMENT_DOCUMENT, NULL}, {DISPID_IHTMLELEMENT_FILTERS, NULL},
@@ -6688,12 +6700,24 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT_TOSTRING, NULL}, {DISPID_UNKNOWN} }; - const dispex_hook_t *const elem_ie9_hooks = elem_ie10_hooks + 2; + const dispex_hook_t *const elem_ie10_hooks = elem_ie11_hooks + 10; + const dispex_hook_t *const elem_ie9_hooks = elem_ie10_hooks + 2; static const dispex_hook_t elem2_ie11_hooks[] = { - {DISPID_IHTMLELEMENT2_ATTACHEVENT, NULL}, - {DISPID_IHTMLELEMENT2_DETACHEVENT, NULL}, - {DISPID_IHTMLELEMENT2_DOSCROLL, NULL}, - {DISPID_IHTMLELEMENT2_READYSTATE, NULL}, + {DISPID_IHTMLELEMENT2_ONLOSECAPTURE}, + {DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE}, + {DISPID_IHTMLELEMENT2_ONRESIZE}, + {DISPID_IHTMLELEMENT2_ATTACHEVENT}, + {DISPID_IHTMLELEMENT2_DETACHEVENT}, + {DISPID_IHTMLELEMENT2_DOSCROLL}, + {DISPID_IHTMLELEMENT2_READYSTATE}, + {DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE}, + {DISPID_IHTMLELEMENT2_ONROWSDELETE}, + {DISPID_IHTMLELEMENT2_ONROWSINSERTED}, + {DISPID_IHTMLELEMENT2_ONCELLCHANGE}, + {DISPID_IHTMLELEMENT2_ADDBEHAVIOR}, + {DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR}, + {DISPID_IHTMLELEMENT2_BEHAVIORURNS}, + {DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS},
/* IE10+ */ {DISPID_IHTMLELEMENT2_SCOPENAME, NULL}, @@ -6707,16 +6731,23 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) {DISPID_IHTMLELEMENT2_REMOVEEXPRESSION, NULL}, {DISPID_UNKNOWN} }; - const dispex_hook_t *const elem2_ie10_hooks = elem2_ie11_hooks + 4; + const dispex_hook_t *const elem2_ie10_hooks = elem2_ie11_hooks + 15; const dispex_hook_t *const elem2_ie9_hooks = elem2_ie10_hooks + 4; static const dispex_hook_t elem3_ie11_hooks[] = { - {DISPID_IHTMLELEMENT3_FIREEVENT, NULL}, + {DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE}, + {DISPID_IHTMLELEMENT3_ONMOVE}, + {DISPID_IHTMLELEMENT3_ONCONTROLSELECT}, + {DISPID_IHTMLELEMENT3_FIREEVENT}, + {DISPID_IHTMLELEMENT3_ONRESIZESTART}, + {DISPID_IHTMLELEMENT3_ONRESIZEEND}, + {DISPID_IHTMLELEMENT3_ONMOVESTART}, + {DISPID_IHTMLELEMENT3_ONMOVEEND},
/* IE9+ */ - {DISPID_IHTMLELEMENT3_ONPAGE, NULL}, + {DISPID_IHTMLELEMENT3_ONPAGE}, {DISPID_UNKNOWN} }; - const dispex_hook_t *const elem3_ie9_hooks = elem3_ie11_hooks + 1; + const dispex_hook_t *const elem3_ie9_hooks = elem3_ie11_hooks + 8; static const dispex_hook_t elem7_ie11_hooks[] = { {DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER},
@@ -6754,7 +6785,8 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode)
dispex_info_add_interface(info, IHTMLElement3_tid, mode >= COMPAT_MODE_IE11 ? elem3_ie11_hooks : mode >= COMPAT_MODE_IE9 ? elem3_ie9_hooks : NULL); - dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE10 ? elem_ie10_hooks : + dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE11 ? elem_ie11_hooks : + mode >= COMPAT_MODE_IE10 ? elem_ie10_hooks : mode >= COMPAT_MODE_IE9 ? elem_ie9_hooks : NULL); }
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index fb0bbcbe691..eaa70423bb0 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3744,14 +3744,7 @@ sync_test("prototype props", function() { ["removeBehavior",9,10], ["removeFilter",9,9], "removeNode", "replaceAdjacentText", "replaceNode", "runtimeStyle", ["scopeName",9,9], "scrollIntoView", "setActive", "setCapture", "sourceIndex", ["spellcheck",10], "style", "swapNode", "tabIndex", ["tagUrn",9,9], "title", "uniqueID", "uniqueNumber" - ], [ - ["addBehavior",11], ["all",11], ["behaviorUrns",11], ["dataset",11], ["draggable",10], ["hidden",11], ["msGetInputContext",11], - ["onafterupdate",11], ["onbeforeeditfocus",11], ["onbeforeupdate",11], ["oncellchange",11], ["oncontrolselect",11], ["ondataavailable",11], - ["ondatasetchanged",11], ["ondatasetcomplete",11], ["onerrorupdate",11], ["onfilterchange",11], ["onlayoutcomplete",11], - ["onlosecapture",11], ["onmove",11], ["onmoveend",11], ["onmovestart",11], ["onmscontentzoom",10], ["onpropertychange",11], - ["onreadystatechange",11], ["onresize",11], ["onresizeend",11], ["onresizestart",11], ["onrowenter",11], ["onrowexit",11], ["onrowsdelete",11], - ["onrowsinserted",11], ["removeBehavior",11] - ]); + ], [ ["dataset",11], ["draggable",10], ["hidden",11], ["msGetInputContext",11], ["onmscontentzoom",10] ]); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [ "DOM_KEY_LOCATION_JOYSTICK", "DOM_KEY_LOCATION_LEFT", "DOM_KEY_LOCATION_MOBILE",
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmltable.c | 15 +++++++++------ dlls/mshtml/tests/documentmode.js | 5 +++++ 2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/dlls/mshtml/htmltable.c b/dlls/mshtml/htmltable.c index 40fd13bc03d..b043dd4d773 100644 --- a/dlls/mshtml/htmltable.c +++ b/dlls/mshtml/htmltable.c @@ -430,9 +430,18 @@ static const NodeImplVtbl HTMLTableCellImplVtbl = { .get_attr_col = HTMLElement_get_attr_col, };
+static const tid_t HTMLTableDataCellElement_iface_tids[] = { + HTMLELEMENT_TIDS, + IHTMLTableCell_tid, + 0 +}; + dispex_static_data_t HTMLTableCellElement_dispex = { .id = PROT_HTMLTableCellElement, .prototype_id = PROT_HTMLElement, + .disp_tid = DispHTMLTableCell_tid, + .iface_tids = HTMLTableDataCellElement_iface_tids, + .init_info = HTMLElement_init_dispex_info, };
static const event_target_vtbl_t HTMLTableDataCellElement_event_target_vtbl = { @@ -447,12 +456,6 @@ static const event_target_vtbl_t HTMLTableDataCellElement_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static const tid_t HTMLTableDataCellElement_iface_tids[] = { - HTMLELEMENT_TIDS, - IHTMLTableCell_tid, - 0 -}; - dispex_static_data_t HTMLTableDataCellElement_dispex = { .id = PROT_HTMLTableDataCellElement, .prototype_id = PROT_HTMLTableCellElement, diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index eaa70423bb0..52d91dbf117 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3745,6 +3745,11 @@ sync_test("prototype props", function() { "scrollIntoView", "setActive", "setCapture", "sourceIndex", ["spellcheck",10], "style", "swapNode", "tabIndex", ["tagUrn",9,9], "title", "uniqueID", "uniqueNumber" ], [ ["dataset",11], ["draggable",10], ["hidden",11], ["msGetInputContext",11], ["onmscontentzoom",10] ]); + check(HTMLTableCellElement, [ + "abbr", "align", "axis", "background", "bgColor", "borderColor", "borderColorDark", "borderColorLight", + "cellIndex", "ch", "chOff", "colSpan", "headers", "height", "noWrap", "rowSpan", "scope", "vAlign", "width" + ], [ "abbr", "axis", "ch", "chOff", "headers", "scope" ]); + check(HTMLTableDataCellElement, []); check(HTMLUnknownElement, [ "namedRecordset", "recordset" ]); check(KeyboardEvent, [ "DOM_KEY_LOCATION_JOYSTICK", "DOM_KEY_LOCATION_LEFT", "DOM_KEY_LOCATION_MOBILE",
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmldoc.c | 1 - dlls/mshtml/htmlnode.c | 2 +- dlls/mshtml/htmltextnode.c | 1 - dlls/mshtml/mshtml_private.h | 1 - dlls/mshtml/tests/documentmode.js | 1 + 5 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index e8470c0d4cb..853a75cfaaf 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -5655,7 +5655,6 @@ static const NodeImplVtbl HTMLDocumentFragmentImplVtbl = {
static const tid_t HTMLDocumentNode_iface_tids[] = { IHTMLDOMNode_tid, - IHTMLDOMNode2_tid, IHTMLDocument4_tid, IHTMLDocument5_tid, IDocumentSelector_tid, diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index b87e20c433b..c39159d9b43 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -1300,9 +1300,9 @@ void HTMLDOMNode_init_dispex_info(dispex_data_t *info, compat_mode_t mode) };
dispex_info_add_interface(info, IHTMLDOMNode_tid, mode >= COMPAT_MODE_IE9 ? ie9_hooks : NULL); + dispex_info_add_interface(info, IHTMLDOMNode2_tid, NULL);
if(mode >= COMPAT_MODE_IE9) { - dispex_info_add_interface(info, IHTMLDOMNode2_tid, NULL); dispex_info_add_interface(info, IHTMLDOMNode3_tid, NULL); dispex_info_add_interface(info, IWineHTMLDOMNodePrivate_tid, NULL); } diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c index 8ed5f0b135e..9c4476dc79b 100644 --- a/dlls/mshtml/htmltextnode.c +++ b/dlls/mshtml/htmltextnode.c @@ -431,7 +431,6 @@ static void Text_init_dispex_info(dispex_data_t *info, compat_mode_t mode)
static const tid_t Text_iface_tids[] = { IHTMLDOMNode_tid, - IHTMLDOMNode2_tid, 0 }; dispex_static_data_t Text_dispex = { diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 2290d13894f..4f47d5786c9 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1060,7 +1060,6 @@ typedef struct {
#define HTMLELEMENT_TIDS \ IHTMLDOMNode_tid, \ - IHTMLDOMNode2_tid, \ IHTMLElement4_tid, \ IHTMLUniqueName_tid
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 52d91dbf117..14c73550949 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -519,6 +519,7 @@ sync_test("elem_props", function() { test_exposed("doScroll", v < 11); test_exposed("readyState", v < 11); test_exposed("clientTop", true); + test_exposed("ownerDocument", true); test_exposed("title", true); test_exposed("removeNode", true); test_exposed("replaceNode", true);
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlanchor.c | 1 - dlls/mshtml/htmlarea.c | 1 - dlls/mshtml/htmlbody.c | 1 - dlls/mshtml/htmlelem.c | 18 +++++++----------- dlls/mshtml/htmlform.c | 1 - dlls/mshtml/htmlframe.c | 2 -- dlls/mshtml/htmlgeneric.c | 1 - dlls/mshtml/htmlhead.c | 4 ---- dlls/mshtml/htmlimg.c | 6 ------ dlls/mshtml/htmlinput.c | 3 --- dlls/mshtml/htmllink.c | 1 - dlls/mshtml/htmlobject.c | 2 -- dlls/mshtml/htmlscript.c | 1 - dlls/mshtml/htmlselect.c | 2 -- dlls/mshtml/htmlstyleelem.c | 5 ----- dlls/mshtml/htmltable.c | 3 --- dlls/mshtml/htmltextarea.c | 1 - dlls/mshtml/htmltextnode.c | 7 +------ dlls/mshtml/mshtml_private.h | 6 ------ dlls/mshtml/svg.c | 4 ---- 20 files changed, 8 insertions(+), 62 deletions(-)
diff --git a/dlls/mshtml/htmlanchor.c b/dlls/mshtml/htmlanchor.c index 2e0be3d4241..6f328b8173c 100644 --- a/dlls/mshtml/htmlanchor.c +++ b/dlls/mshtml/htmlanchor.c @@ -842,7 +842,6 @@ static void HTMLAnchorElement_init_dispex_info(dispex_data_t *info, compat_mode_
static const tid_t HTMLAnchorElement_iface_tids[] = { IHTMLAnchorElement_tid, - HTMLELEMENT_TIDS, 0 };
diff --git a/dlls/mshtml/htmlarea.c b/dlls/mshtml/htmlarea.c index 153bfd514b7..bde44cb9075 100644 --- a/dlls/mshtml/htmlarea.c +++ b/dlls/mshtml/htmlarea.c @@ -452,7 +452,6 @@ static void HTMLAreaElement_init_dispex_info(dispex_data_t *info, compat_mode_t }
static const tid_t HTMLAreaElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLAreaElement_tid, 0 }; diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c index 9057dfc7cd9..4ca08e0e3a4 100644 --- a/dlls/mshtml/htmlbody.c +++ b/dlls/mshtml/htmlbody.c @@ -888,7 +888,6 @@ static const event_target_vtbl_t HTMLBodyElement_event_target_vtbl = { static const tid_t HTMLBodyElement_iface_tids[] = { IHTMLBodyElement_tid, IHTMLBodyElement2_tid, - HTMLELEMENT_TIDS, IHTMLTextContainer_tid, 0 }; diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index be2557d629d..3d586db02d2 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -6788,6 +6788,9 @@ void HTMLElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) dispex_info_add_interface(info, IHTMLElement_tid, mode >= COMPAT_MODE_IE11 ? elem_ie11_hooks : mode >= COMPAT_MODE_IE10 ? elem_ie10_hooks : mode >= COMPAT_MODE_IE9 ? elem_ie9_hooks : NULL); + dispex_info_add_interface(info, IHTMLElement4_tid, NULL); + dispex_info_add_interface(info, IHTMLDOMNode_tid, NULL); + dispex_info_add_interface(info, IHTMLUniqueName_tid, NULL); }
const DISPID HTMLElement_toString_dispids[] = { @@ -6795,11 +6798,6 @@ const DISPID HTMLElement_toString_dispids[] = { DISPID_UNKNOWN };
-const tid_t HTMLElement_iface_tids[] = { - HTMLELEMENT_TIDS, - 0 -}; - static const event_target_vtbl_t HTMLElement_event_target_vtbl = { { HTMLELEMENT_DISPEX_VTBL_ENTRIES, @@ -7427,16 +7425,14 @@ dispex_static_data_t HTMLElement_dispex = { .prototype_id = PROT_Element, .vtbl = &HTMLElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLUnknownElement_tid, - .iface_tids = HTMLElement_iface_tids, .init_info = HTMLElement_init_dispex_info, };
static dispex_static_data_t LegacyUnknownElement_dispex = { - "HTMLUnknownElement", - &HTMLElement_event_target_vtbl.dispex_vtbl, - DispHTMLUnknownElement_tid, - HTMLElement_iface_tids, - HTMLElement_init_dispex_info + .name = "HTMLUnknownElement", + .vtbl = &HTMLElement_event_target_vtbl.dispex_vtbl, + .disp_tid = DispHTMLUnknownElement_tid, + .init_info = HTMLElement_init_dispex_info };
void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMElement *nselem, dispex_static_data_t *dispex_data) diff --git a/dlls/mshtml/htmlform.c b/dlls/mshtml/htmlform.c index f9fa68c498a..153133493f6 100644 --- a/dlls/mshtml/htmlform.c +++ b/dlls/mshtml/htmlform.c @@ -903,7 +903,6 @@ static const event_target_vtbl_t HTMLFormElement_event_target_vtbl = { };
static const tid_t HTMLFormElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLFormElement_tid, 0 }; diff --git a/dlls/mshtml/htmlframe.c b/dlls/mshtml/htmlframe.c index bc8e76c3448..193be9f6323 100644 --- a/dlls/mshtml/htmlframe.c +++ b/dlls/mshtml/htmlframe.c @@ -921,7 +921,6 @@ static const event_target_vtbl_t HTMLFrameElement_event_target_vtbl = { };
static const tid_t HTMLFrameElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLFrameBase_tid, IHTMLFrameBase2_tid, IHTMLFrameElement3_tid, @@ -1357,7 +1356,6 @@ static const event_target_vtbl_t HTMLIFrameElement_event_target_vtbl = { };
static const tid_t HTMLIFrameElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLFrameBase_tid, IHTMLFrameBase2_tid, IHTMLIFrameElement_tid, diff --git a/dlls/mshtml/htmlgeneric.c b/dlls/mshtml/htmlgeneric.c index acd4998832b..e57e3558a49 100644 --- a/dlls/mshtml/htmlgeneric.c +++ b/dlls/mshtml/htmlgeneric.c @@ -109,7 +109,6 @@ static const event_target_vtbl_t HTMLGenericElement_event_target_vtbl = { };
static const tid_t HTMLUnknownElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLGenericElement_tid, 0 }; diff --git a/dlls/mshtml/htmlhead.c b/dlls/mshtml/htmlhead.c index 36c66065b29..7f05e506dce 100644 --- a/dlls/mshtml/htmlhead.c +++ b/dlls/mshtml/htmlhead.c @@ -122,7 +122,6 @@ static const event_target_vtbl_t HTMLTitleElement_event_target_vtbl = { };
static const tid_t HTMLTitleElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLTitleElement_tid, 0 }; @@ -238,7 +237,6 @@ static const event_target_vtbl_t HTMLHtmlElement_event_target_vtbl = { };
static const tid_t HTMLHtmlElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLHtmlElement_tid, 0 }; @@ -417,7 +415,6 @@ static const event_target_vtbl_t HTMLMetaElement_event_target_vtbl = { };
static const tid_t HTMLMetaElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLMetaElement_tid, 0 }; @@ -525,7 +522,6 @@ static const event_target_vtbl_t HTMLHeadElement_event_target_vtbl = { };
static const tid_t HTMLHeadElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLHeadElement_tid, 0 }; diff --git a/dlls/mshtml/htmlimg.c b/dlls/mshtml/htmlimg.c index baa55462039..f6a4b992ab6 100644 --- a/dlls/mshtml/htmlimg.c +++ b/dlls/mshtml/htmlimg.c @@ -666,11 +666,6 @@ static const event_target_vtbl_t HTMLImgElement_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static const tid_t HTMLImgElement_iface_tids[] = { - HTMLELEMENT_TIDS, - 0 -}; - static void HTMLImgElement_init_dispex_info(dispex_data_t *info, compat_mode_t mode) { static const dispex_hook_t img_ie11_hooks[] = { @@ -688,7 +683,6 @@ dispex_static_data_t HTMLImageElement_dispex = { .prototype_id = PROT_HTMLElement, .vtbl = &HTMLImgElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLImg_tid, - .iface_tids = HTMLImgElement_iface_tids, .init_info = HTMLImgElement_init_dispex_info, };
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c index 6d436ecffc1..4605005d6fd 100644 --- a/dlls/mshtml/htmlinput.c +++ b/dlls/mshtml/htmlinput.c @@ -1283,7 +1283,6 @@ static const event_target_vtbl_t HTMLInputElement_event_target_vtbl = { };
static const tid_t HTMLInputElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLInputElement_tid, IHTMLInputTextElement2_tid, 0 @@ -1427,7 +1426,6 @@ static const event_target_vtbl_t HTMLLabelElement_event_target_vtbl = { };
static const tid_t HTMLLabelElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLLabelElement_tid, 0 }; @@ -1714,7 +1712,6 @@ static const event_target_vtbl_t HTMLButtonElement_event_target_vtbl = { };
static const tid_t HTMLButtonElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLButtonElement_tid, 0 }; diff --git a/dlls/mshtml/htmllink.c b/dlls/mshtml/htmllink.c index 6ceb5bc2249..c9e35d69d95 100644 --- a/dlls/mshtml/htmllink.c +++ b/dlls/mshtml/htmllink.c @@ -383,7 +383,6 @@ static const event_target_vtbl_t HTMLLinkElement_event_target_vtbl = { };
static const tid_t HTMLLinkElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLLinkElement_tid, 0 }; diff --git a/dlls/mshtml/htmlobject.c b/dlls/mshtml/htmlobject.c index 77ccaf12936..c99afb03137 100644 --- a/dlls/mshtml/htmlobject.c +++ b/dlls/mshtml/htmlobject.c @@ -679,7 +679,6 @@ static const event_target_vtbl_t HTMLObjectElement_event_target_vtbl = { static const tid_t HTMLObjectElement_iface_tids[] = { IHTMLObjectElement2_tid, IHTMLObjectElement_tid, - HTMLELEMENT_TIDS, 0 }; dispex_static_data_t HTMLObjectElement_dispex = { @@ -884,7 +883,6 @@ static const event_target_vtbl_t HTMLEmbedElement_event_target_vtbl = { };
static const tid_t HTMLEmbedElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLEmbedElement_tid, 0 }; diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index 2a14b94bc08..b490e374356 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -409,7 +409,6 @@ HRESULT script_elem_from_nsscript(nsIDOMHTMLScriptElement *nsscript, HTMLScriptE }
static const tid_t HTMLScriptElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLScriptElement_tid, 0 }; diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c index 01729222041..2d02589db38 100644 --- a/dlls/mshtml/htmlselect.c +++ b/dlls/mshtml/htmlselect.c @@ -341,7 +341,6 @@ static const event_target_vtbl_t HTMLOptionElement_event_target_vtbl = { };
static const tid_t HTMLOptionElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLOptionElement_tid, 0 }; @@ -1294,7 +1293,6 @@ static const event_target_vtbl_t HTMLSelectElement_event_target_vtbl = { };
static const tid_t HTMLSelectElement_tids[] = { - HTMLELEMENT_TIDS, IHTMLSelectElement_tid, 0 }; diff --git a/dlls/mshtml/htmlstyleelem.c b/dlls/mshtml/htmlstyleelem.c index 00142a353ec..b08e73b767e 100644 --- a/dlls/mshtml/htmlstyleelem.c +++ b/dlls/mshtml/htmlstyleelem.c @@ -331,16 +331,11 @@ static const event_target_vtbl_t HTMLStyleElement_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static const tid_t HTMLStyleElement_iface_tids[] = { - HTMLELEMENT_TIDS, - 0 -}; dispex_static_data_t HTMLStyleElement_dispex = { .id = PROT_HTMLStyleElement, .prototype_id = PROT_HTMLElement, .vtbl = &HTMLStyleElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLStyleElement_tid, - .iface_tids = HTMLStyleElement_iface_tids, .init_info = HTMLStyleElement_init_dispex_info, };
diff --git a/dlls/mshtml/htmltable.c b/dlls/mshtml/htmltable.c index b043dd4d773..934047412d6 100644 --- a/dlls/mshtml/htmltable.c +++ b/dlls/mshtml/htmltable.c @@ -431,7 +431,6 @@ static const NodeImplVtbl HTMLTableCellImplVtbl = { };
static const tid_t HTMLTableDataCellElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLTableCell_tid, 0 }; @@ -826,7 +825,6 @@ static const event_target_vtbl_t HTMLTableRowElement_event_target_vtbl = { };
static const tid_t HTMLTableRowElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLTableRow_tid, 0 }; @@ -1678,7 +1676,6 @@ static const event_target_vtbl_t HTMLTableElement_event_target_vtbl = { };
static const tid_t HTMLTableElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLTable_tid, IHTMLTable2_tid, IHTMLTable3_tid, diff --git a/dlls/mshtml/htmltextarea.c b/dlls/mshtml/htmltextarea.c index 4ab7ab961a9..659ebbe2776 100644 --- a/dlls/mshtml/htmltextarea.c +++ b/dlls/mshtml/htmltextarea.c @@ -410,7 +410,6 @@ static const event_target_vtbl_t HTMLTextAreaElement_event_target_vtbl = { };
static const tid_t HTMLTextAreaElement_iface_tids[] = { - HTMLELEMENT_TIDS, IHTMLTextAreaElement_tid, 0 }; diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c index 9c4476dc79b..63158f7cb8a 100644 --- a/dlls/mshtml/htmltextnode.c +++ b/dlls/mshtml/htmltextnode.c @@ -661,13 +661,8 @@ static void Comment_init_dispex_info(dispex_data_t *info, compat_mode_t mode)
if(mode >= COMPAT_MODE_IE9) HTMLDOMNode_init_dispex_info(info, mode); - else { + else HTMLElement_init_dispex_info(info, mode); - dispex_info_add_interface(info, IHTMLElement_tid, NULL); - dispex_info_add_interface(info, IHTMLElement3_tid, NULL); - dispex_info_add_interface(info, IHTMLElement4_tid, NULL); - dispex_info_add_interface(info, IHTMLUniqueName_tid, NULL); - } CharacterData_init_dispex_info(info, mode);
dispex_info_add_interface(info, IHTMLCommentElement_tid, mode >= COMPAT_MODE_IE9 ? ie9_hooks : NULL); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 4f47d5786c9..19a546e269f 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1058,12 +1058,6 @@ typedef struct { unsigned unique_id; } HTMLElement;
-#define HTMLELEMENT_TIDS \ - IHTMLDOMNode_tid, \ - IHTMLElement4_tid, \ - IHTMLUniqueName_tid - -extern const tid_t HTMLElement_iface_tids[]; extern cp_static_data_t HTMLElementEvents2_data; #define HTMLELEMENT_CPC {&DIID_HTMLElementEvents2, &HTMLElementEvents2_data} extern const cpc_entry_t HTMLElement_cpc[]; diff --git a/dlls/mshtml/svg.c b/dlls/mshtml/svg.c index ab72e0c95d9..3baf422989a 100644 --- a/dlls/mshtml/svg.c +++ b/dlls/mshtml/svg.c @@ -161,7 +161,6 @@ dispex_static_data_t SVGElement_dispex = { .prototype_id = PROT_Element, .vtbl = &SVGElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLUnknownElement_tid, - .iface_tids = HTMLElement_iface_tids, .init_info = HTMLElement_init_dispex_info, };
@@ -662,7 +661,6 @@ dispex_static_data_t SVGSVGElement_dispex = { .prototype_id = PROT_SVGElement, .vtbl = &SVGSVGElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLUnknownElement_tid, - .iface_tids = HTMLElement_iface_tids, .init_info = HTMLElement_init_dispex_info, };
@@ -793,7 +791,6 @@ dispex_static_data_t SVGCircleElement_dispex = { .prototype_id = PROT_SVGElement, .vtbl = &SVGCircleElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLUnknownElement_tid, - .iface_tids = HTMLElement_iface_tids, .init_info = HTMLElement_init_dispex_info, };
@@ -1010,7 +1007,6 @@ dispex_static_data_t SVGTSpanElement_dispex = { .prototype_id = PROT_SVGTextPositioningElement, .vtbl = &SVGTSpanElement_event_target_vtbl.dispex_vtbl, .disp_tid = DispHTMLUnknownElement_tid, - .iface_tids = HTMLElement_iface_tids, .init_info = HTMLElement_init_dispex_info, };
This merge request was approved by Jacek Caban.