diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c
index 64ead8f115c..1adcc675681 100644
--- a/dlls/mshtml/dispex.c
+++ b/dlls/mshtml/dispex.c
@@ -886,6 +886,7 @@ static const dispex_static_data_vtbl_t function_dispex_vtbl = {
static const tid_t function_iface_tids[] = {0};
static dispex_static_data_t function_dispex = {
+ L"Function",
&function_dispex_vtbl,
NULL_tid,
function_iface_tids
@@ -1482,6 +1483,34 @@ compat_mode_t dispex_compat_mode(DispatchEx *dispex)
: dispex->info->desc->vtbl->get_compat_mode(dispex);
}
+HRESULT dispex_to_string(DispatchEx *dispex, BSTR *ret)
+{
+ static const WCHAR prefix[8] = L"[object ";
+ static const WCHAR suffix[] = L"]";
+ WCHAR buf[ARRAY_SIZE(prefix) + 28 + ARRAY_SIZE(suffix)], *p = buf;
+ compat_mode_t compat_mode = dispex_compat_mode(dispex);
+ const WCHAR *name = dispex->info->desc->name;
+ unsigned len;
+
+ if(!ret)
+ return E_INVALIDARG;
+
+ memcpy(p, prefix, sizeof(prefix));
+ p += ARRAY_SIZE(prefix);
+ if(compat_mode < COMPAT_MODE_IE9)
+ p--;
+ else {
+ len = wcslen(name);
+ assert(len <= 28);
+ memcpy(p, name, len * sizeof(WCHAR));
+ p += len;
+ }
+ memcpy(p, suffix, sizeof(suffix));
+
+ *ret = SysAllocString(buf);
+ return *ret ? S_OK : E_OUTOFMEMORY;
+}
+
static dispex_data_t *ensure_dispex_info(dispex_static_data_t *desc, compat_mode_t compat_mode)
{
if(!desc->info_cache[compat_mode]) {
diff --git a/dlls/mshtml/htmlanchor.c b/dlls/mshtml/htmlanchor.c
index da48601fe87..44166246139 100644
--- a/dlls/mshtml/htmlanchor.c
+++ b/dlls/mshtml/htmlanchor.c
@@ -857,6 +857,7 @@ static const tid_t HTMLAnchorElement_iface_tids[] = {
};
static dispex_static_data_t HTMLAnchorElement_dispex = {
+ L"HTMLAnchorElement",
NULL,
DispHTMLAnchorElement_tid,
HTMLAnchorElement_iface_tids,
diff --git a/dlls/mshtml/htmlarea.c b/dlls/mshtml/htmlarea.c
index e785871e244..6c0da3633d5 100644
--- a/dlls/mshtml/htmlarea.c
+++ b/dlls/mshtml/htmlarea.c
@@ -477,6 +477,7 @@ static const tid_t HTMLAreaElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLAreaElement_dispex = {
+ L"HTMLAreaElement",
NULL,
DispHTMLAreaElement_tid,
HTMLAreaElement_iface_tids,
diff --git a/dlls/mshtml/htmlattr.c b/dlls/mshtml/htmlattr.c
index dc8c45e488a..e10c7c3826f 100644
--- a/dlls/mshtml/htmlattr.c
+++ b/dlls/mshtml/htmlattr.c
@@ -484,6 +484,7 @@ static const tid_t HTMLDOMAttribute_iface_tids[] = {
0
};
static dispex_static_data_t HTMLDOMAttribute_dispex = {
+ L"Attr",
NULL,
DispHTMLDOMAttribute_tid,
HTMLDOMAttribute_iface_tids
diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c
index 32c49fe1214..551c3a15188 100644
--- a/dlls/mshtml/htmlbody.c
+++ b/dlls/mshtml/htmlbody.c
@@ -1008,6 +1008,7 @@ static const tid_t HTMLBodyElement_iface_tids[] = {
};
static dispex_static_data_t HTMLBodyElement_dispex = {
+ L"HTMLBodyElement",
NULL,
DispHTMLBody_tid,
HTMLBodyElement_iface_tids,
diff --git a/dlls/mshtml/htmlcomment.c b/dlls/mshtml/htmlcomment.c
index 85eceef22e8..78158650c25 100644
--- a/dlls/mshtml/htmlcomment.c
+++ b/dlls/mshtml/htmlcomment.c
@@ -199,6 +199,7 @@ static const tid_t HTMLCommentElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLCommentElement_dispex = {
+ L"Comment",
NULL,
DispHTMLCommentElement_tid,
HTMLCommentElement_iface_tids,
diff --git a/dlls/mshtml/htmlcurstyle.c b/dlls/mshtml/htmlcurstyle.c
index 2abe5df30ec..e66a42c1d4e 100644
--- a/dlls/mshtml/htmlcurstyle.c
+++ b/dlls/mshtml/htmlcurstyle.c
@@ -1300,6 +1300,7 @@ static const tid_t HTMLCurrentStyle_iface_tids[] = {
0
};
static dispex_static_data_t HTMLCurrentStyle_dispex = {
+ L"MSCurrentStyleCSSProperties",
&CSSStyle_dispex_vtbl,
DispHTMLCurrentStyle_tid,
HTMLCurrentStyle_iface_tids,
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 9faf987d7b9..6bbf058aed4 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -5654,6 +5654,7 @@ static void HTMLDocumentNode_init_dispex_info(dispex_data_t *info, compat_mode_t
}
static dispex_static_data_t HTMLDocumentNode_dispex = {
+ L"HTMLDocument",
&HTMLDocumentNode_event_target_vtbl.dispex_vtbl,
DispHTMLDocument_tid,
HTMLDocumentNode_iface_tids,
@@ -5949,6 +5950,7 @@ static const tid_t HTMLDocumentObj_iface_tids[] = {
0
};
static dispex_static_data_t HTMLDocumentObj_dispex = {
+ L"HTMLDocumentObj",
NULL,
DispHTMLDocument_tid,
HTMLDocumentObj_iface_tids
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index b07de03be2d..cb7a528be39 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -527,6 +527,7 @@ static const tid_t HTMLRect_iface_tids[] = {
0
};
static dispex_static_data_t HTMLRect_dispex = {
+ L"ClientRect",
NULL,
IHTMLRect_tid,
HTMLRect_iface_tids
@@ -788,6 +789,7 @@ static const tid_t HTMLRectCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLRectCollection_dispex = {
+ L"ClientRectList",
&HTMLRectCollection_dispex_vtbl,
IHTMLRectCollection_tid,
HTMLRectCollection_iface_tids
@@ -6669,6 +6671,7 @@ static const tid_t token_list_iface_tids[] = {
0
};
static dispex_static_data_t token_list_dispex = {
+ L"DOMTokenList",
&token_list_dispex_vtbl,
IWineDOMTokenList_tid,
token_list_iface_tids
@@ -6779,6 +6782,7 @@ static const IWineHTMLElementPrivateVtbl WineHTMLElementPrivateVtbl = {
};
static dispex_static_data_t HTMLElement_dispex = {
+ L"HTMLElement",
&HTMLElement_event_target_vtbl.dispex_vtbl,
DispHTMLUnknownElement_tid,
HTMLElement_iface_tids,
@@ -7053,6 +7057,7 @@ static const tid_t HTMLFiltersCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLFiltersCollection_dispex = {
+ L"FiltersCollection",
&HTMLFiltersCollection_dispex_vtbl,
IHTMLFiltersCollection_tid,
HTMLFiltersCollection_iface_tids
@@ -7626,6 +7631,7 @@ static const tid_t HTMLAttributeCollection_iface_tids[] = {
};
static dispex_static_data_t HTMLAttributeCollection_dispex = {
+ L"NamedNodeMap",
&HTMLAttributeCollection_dispex_vtbl,
DispHTMLAttributeCollection_tid,
HTMLAttributeCollection_iface_tids
diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c
index e72f21ffaa5..86ef3a32639 100644
--- a/dlls/mshtml/htmlelemcol.c
+++ b/dlls/mshtml/htmlelemcol.c
@@ -618,6 +618,7 @@ static const tid_t HTMLElementCollection_iface_tids[] = {
};
static dispex_static_data_t HTMLElementCollection_dispex = {
+ L"HTMLCollection",
&HTMLElementColection_dispex_vtbl,
DispHTMLElementCollection_tid,
HTMLElementCollection_iface_tids
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 5b040c4df62..3f545bbb3fd 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -750,6 +750,7 @@ static const tid_t HTMLEventObj_iface_tids[] = {
};
static dispex_static_data_t HTMLEventObj_dispex = {
+ L"MSEventObj",
NULL,
DispCEventObj_tid,
HTMLEventObj_iface_tids
@@ -2135,6 +2136,7 @@ static const tid_t DOMEvent_iface_tids[] = {
};
static dispex_static_data_t DOMEvent_dispex = {
+ L"Event",
NULL,
DispDOMEvent_tid,
DOMEvent_iface_tids
@@ -2147,6 +2149,7 @@ static const tid_t DOMUIEvent_iface_tids[] = {
};
static dispex_static_data_t DOMUIEvent_dispex = {
+ L"UIEvent",
NULL,
DispDOMUIEvent_tid,
DOMUIEvent_iface_tids
@@ -2160,6 +2163,7 @@ static const tid_t DOMMouseEvent_iface_tids[] = {
};
static dispex_static_data_t DOMMouseEvent_dispex = {
+ L"MouseEvent",
NULL,
DispDOMMouseEvent_tid,
DOMMouseEvent_iface_tids
@@ -2173,6 +2177,7 @@ static const tid_t DOMKeyboardEvent_iface_tids[] = {
};
static dispex_static_data_t DOMKeyboardEvent_dispex = {
+ L"KeyboardEvent",
NULL,
DispDOMKeyboardEvent_tid,
DOMKeyboardEvent_iface_tids
@@ -2185,6 +2190,7 @@ static const tid_t DOMCustomEvent_iface_tids[] = {
};
static dispex_static_data_t DOMCustomEvent_dispex = {
+ L"CustomEvent",
NULL,
DispDOMCustomEvent_tid,
DOMCustomEvent_iface_tids
diff --git a/dlls/mshtml/htmlform.c b/dlls/mshtml/htmlform.c
index 5d0928e4a9c..566612f675a 100644
--- a/dlls/mshtml/htmlform.c
+++ b/dlls/mshtml/htmlform.c
@@ -827,6 +827,7 @@ static const tid_t HTMLFormElement_iface_tids[] = {
};
static dispex_static_data_t HTMLFormElement_dispex = {
+ L"HTMLFormElement",
NULL,
DispHTMLFormElement_tid,
HTMLFormElement_iface_tids,
diff --git a/dlls/mshtml/htmlframe.c b/dlls/mshtml/htmlframe.c
index 7118ea86b57..e794284bef6 100644
--- a/dlls/mshtml/htmlframe.c
+++ b/dlls/mshtml/htmlframe.c
@@ -1023,6 +1023,7 @@ static const tid_t HTMLFrameElement_iface_tids[] = {
};
static dispex_static_data_t HTMLFrameElement_dispex = {
+ L"HTMLFrameElement",
NULL,
DispHTMLFrameElement_tid,
HTMLFrameElement_iface_tids,
@@ -1603,6 +1604,7 @@ static const tid_t HTMLIFrame_iface_tids[] = {
};
static dispex_static_data_t HTMLIFrame_dispex = {
+ L"HTMLIFrameElement",
NULL,
DispHTMLIFrame_tid,
HTMLIFrame_iface_tids,
diff --git a/dlls/mshtml/htmlgeneric.c b/dlls/mshtml/htmlgeneric.c
index 639c95ee43d..459fc78266b 100644
--- a/dlls/mshtml/htmlgeneric.c
+++ b/dlls/mshtml/htmlgeneric.c
@@ -168,6 +168,7 @@ static const tid_t HTMLGenericElement_iface_tids[] = {
};
static dispex_static_data_t HTMLGenericElement_dispex = {
+ L"HTMLUnknownElement",
NULL,
DispHTMLGenericElement_tid,
HTMLGenericElement_iface_tids,
diff --git a/dlls/mshtml/htmlhead.c b/dlls/mshtml/htmlhead.c
index 5dbf8d6b6bd..1bad06ee9d7 100644
--- a/dlls/mshtml/htmlhead.c
+++ b/dlls/mshtml/htmlhead.c
@@ -169,6 +169,7 @@ static const tid_t HTMLTitleElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLTitleElement_dispex = {
+ L"HTMLTitleElement",
NULL,
DispHTMLTitleElement_tid,
HTMLTitleElement_iface_tids,
@@ -352,6 +353,7 @@ static const tid_t HTMLHtmlElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLHtmlElement_dispex = {
+ L"HTMLHtmlElement",
NULL,
DispHTMLHtmlElement_tid,
HTMLHtmlElement_iface_tids,
@@ -588,6 +590,7 @@ static const tid_t HTMLMetaElement_iface_tids[] = {
};
static dispex_static_data_t HTMLMetaElement_dispex = {
+ L"HTMLMetaElement",
NULL,
DispHTMLMetaElement_tid,
HTMLMetaElement_iface_tids,
@@ -751,6 +754,7 @@ static const tid_t HTMLHeadElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLHeadElement_dispex = {
+ L"HTMLHeadElement",
NULL,
DispHTMLHeadElement_tid,
HTMLHeadElement_iface_tids,
diff --git a/dlls/mshtml/htmlimg.c b/dlls/mshtml/htmlimg.c
index f89e8e5ae84..96b8d31029f 100644
--- a/dlls/mshtml/htmlimg.c
+++ b/dlls/mshtml/htmlimg.c
@@ -730,6 +730,7 @@ static const tid_t HTMLImgElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLImgElement_dispex = {
+ L"HTMLImageElement",
NULL,
DispHTMLImg_tid,
HTMLImgElement_iface_tids,
@@ -974,6 +975,7 @@ static const dispex_static_data_vtbl_t HTMLImageElementFactory_dispex_vtbl = {
};
static dispex_static_data_t HTMLImageElementFactory_dispex = {
+ L"Function",
&HTMLImageElementFactory_dispex_vtbl,
IHTMLImageElementFactory_tid,
HTMLImageElementFactory_iface_tids
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c
index 1a0a739d5d5..e9b53dadb92 100644
--- a/dlls/mshtml/htmlinput.c
+++ b/dlls/mshtml/htmlinput.c
@@ -1441,6 +1441,7 @@ static const tid_t HTMLInputElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLInputElement_dispex = {
+ L"HTMLInputElement",
NULL,
DispHTMLInputElement_tid,
HTMLInputElement_iface_tids,
@@ -1637,6 +1638,7 @@ static const tid_t HTMLLabelElement_iface_tids[] = {
};
static dispex_static_data_t HTMLLabelElement_dispex = {
+ L"HTMLLabelElement",
NULL,
DispHTMLLabelElement_tid,
HTMLLabelElement_iface_tids,
@@ -1983,6 +1985,7 @@ static const tid_t HTMLButtonElement_iface_tids[] = {
};
static dispex_static_data_t HTMLButtonElement_dispex = {
+ L"HTMLButtonElement",
NULL,
DispHTMLButtonElement_tid,
HTMLButtonElement_iface_tids,
diff --git a/dlls/mshtml/htmllink.c b/dlls/mshtml/htmllink.c
index ddf67ca0f73..1dd48737eb4 100644
--- a/dlls/mshtml/htmllink.c
+++ b/dlls/mshtml/htmllink.c
@@ -446,6 +446,7 @@ static const tid_t HTMLLinkElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLLinkElement_dispex = {
+ L"HTMLLinkElement",
NULL,
DispHTMLLinkElement_tid,
HTMLLinkElement_iface_tids,
diff --git a/dlls/mshtml/htmllocation.c b/dlls/mshtml/htmllocation.c
index a85c9a626f2..85dfc40b5d7 100644
--- a/dlls/mshtml/htmllocation.c
+++ b/dlls/mshtml/htmllocation.c
@@ -631,6 +631,7 @@ static const tid_t HTMLLocation_iface_tids[] = {
0
};
static dispex_static_data_t HTMLLocation_dispex = {
+ L"Object",
NULL,
DispHTMLLocation_tid,
HTMLLocation_iface_tids
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c
index b5ff02bcee2..996c28c1038 100644
--- a/dlls/mshtml/htmlnode.c
+++ b/dlls/mshtml/htmlnode.c
@@ -429,6 +429,7 @@ static const tid_t HTMLDOMChildrenCollection_iface_tids[] = {
};
static dispex_static_data_t HTMLDOMChildrenCollection_dispex = {
+ L"NodeList",
&HTMLDOMChildrenCollection_dispex_vtbl,
DispDOMChildrenCollection_tid,
HTMLDOMChildrenCollection_iface_tids,
@@ -1476,6 +1477,7 @@ static const tid_t HTMLDOMNode_iface_tids[] = {
0
};
static dispex_static_data_t HTMLDOMNode_dispex = {
+ L"Node",
NULL,
IHTMLDOMNode_tid,
HTMLDOMNode_iface_tids,
diff --git a/dlls/mshtml/htmlobject.c b/dlls/mshtml/htmlobject.c
index 67025489751..9c8af177ecc 100644
--- a/dlls/mshtml/htmlobject.c
+++ b/dlls/mshtml/htmlobject.c
@@ -766,6 +766,7 @@ static const tid_t HTMLObjectElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLObjectElement_dispex = {
+ L"HTMLObjectElement",
NULL,
DispHTMLObjectElement_tid,
HTMLObjectElement_iface_tids,
@@ -1028,6 +1029,7 @@ static const tid_t HTMLEmbedElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLEmbedElement_dispex = {
+ L"HTMLEmbedElement",
NULL,
DispHTMLEmbed_tid,
HTMLEmbedElement_iface_tids,
diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c
index 9b7f95e3bb0..9f3a0b21bb9 100644
--- a/dlls/mshtml/htmlscript.c
+++ b/dlls/mshtml/htmlscript.c
@@ -479,6 +479,7 @@ static const tid_t HTMLScriptElement_iface_tids[] = {
};
static dispex_static_data_t HTMLScriptElement_dispex = {
+ L"HTMLScriptElement",
NULL,
DispHTMLScriptElement_tid,
HTMLScriptElement_iface_tids,
diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c
index ad801f8433b..7869a8e628b 100644
--- a/dlls/mshtml/htmlselect.c
+++ b/dlls/mshtml/htmlselect.c
@@ -416,6 +416,7 @@ static const tid_t HTMLOptionElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLOptionElement_dispex = {
+ L"HTMLOptionElement",
NULL,
DispHTMLOptionElement_tid,
HTMLOptionElement_iface_tids,
@@ -595,6 +596,7 @@ static const tid_t HTMLOptionElementFactory_iface_tids[] = {
};
static dispex_static_data_t HTMLOptionElementFactory_dispex = {
+ L"Function",
NULL,
IHTMLOptionElementFactory_tid,
HTMLOptionElementFactory_iface_tids,
@@ -1281,6 +1283,7 @@ static const tid_t HTMLSelectElement_tids[] = {
};
static dispex_static_data_t HTMLSelectElement_dispex = {
+ L"HTMLSelectElement",
NULL,
DispHTMLSelectElement_tid,
HTMLSelectElement_tids,
diff --git a/dlls/mshtml/htmlstorage.c b/dlls/mshtml/htmlstorage.c
index c3896475270..9c1f9044cb7 100644
--- a/dlls/mshtml/htmlstorage.c
+++ b/dlls/mshtml/htmlstorage.c
@@ -195,6 +195,7 @@ static const tid_t HTMLStorage_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStorage_dispex = {
+ L"Storage",
NULL,
IHTMLStorage_tid,
HTMLStorage_iface_tids
diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c
index 4ee81ba7e99..7dd7000bab0 100644
--- a/dlls/mshtml/htmlstyle.c
+++ b/dlls/mshtml/htmlstyle.c
@@ -10006,6 +10006,7 @@ static const tid_t HTMLStyle_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStyle_dispex = {
+ L"MSStyleCSSProperties",
&CSSStyle_dispex_vtbl,
DispHTMLStyle_tid,
HTMLStyle_iface_tids,
@@ -10100,6 +10101,7 @@ static const tid_t HTMLW3CComputedStyle_iface_tids[] = {
0
};
static dispex_static_data_t HTMLW3CComputedStyle_dispex = {
+ L"CSSStyleDeclaration",
&CSSStyle_dispex_vtbl,
DispHTMLW3CComputedStyle_tid,
HTMLW3CComputedStyle_iface_tids,
diff --git a/dlls/mshtml/htmlstyleelem.c b/dlls/mshtml/htmlstyleelem.c
index d2a4a75fe90..cf575476841 100644
--- a/dlls/mshtml/htmlstyleelem.c
+++ b/dlls/mshtml/htmlstyleelem.c
@@ -462,6 +462,7 @@ static const tid_t HTMLStyleElement_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStyleElement_dispex = {
+ L"HTMLStyleElement",
NULL,
DispHTMLStyleElement_tid,
HTMLStyleElement_iface_tids,
diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c
index b6f1c980760..cbc2adf68b5 100644
--- a/dlls/mshtml/htmlstylesheet.c
+++ b/dlls/mshtml/htmlstylesheet.c
@@ -202,6 +202,7 @@ static const tid_t HTMLStyleSheetRule_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStyleSheetRule_dispex = {
+ L"CSSStyleRule",
NULL,
DispHTMLStyleSheetRule_tid,
HTMLStyleSheetRule_iface_tids
@@ -376,6 +377,7 @@ static const tid_t HTMLStyleSheetRulesCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStyleSheetRulesCollection_dispex = {
+ L"MSCSSRuleList",
NULL,
DispHTMLStyleSheetRulesCollection_tid,
HTMLStyleSheetRulesCollection_iface_tids
@@ -575,6 +577,7 @@ static const tid_t HTMLStyleSheetsCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStyleSheetsCollection_dispex = {
+ L"StyleSheetList",
NULL,
DispHTMLStyleSheetsCollection_tid,
HTMLStyleSheetsCollection_iface_tids
@@ -1144,6 +1147,7 @@ static const tid_t HTMLStyleSheet_iface_tids[] = {
0
};
static dispex_static_data_t HTMLStyleSheet_dispex = {
+ L"CSSStyleSheet",
NULL,
DispHTMLStyleSheet_tid,
HTMLStyleSheet_iface_tids,
diff --git a/dlls/mshtml/htmltable.c b/dlls/mshtml/htmltable.c
index 178e9e52304..53c98205574 100644
--- a/dlls/mshtml/htmltable.c
+++ b/dlls/mshtml/htmltable.c
@@ -520,6 +520,7 @@ static const tid_t HTMLTableCell_iface_tids[] = {
};
static dispex_static_data_t HTMLTableCell_dispex = {
+ L"HTMLTableDataCellElement",
NULL,
DispHTMLTableCell_tid,
HTMLTableCell_iface_tids,
@@ -964,6 +965,7 @@ static const tid_t HTMLTableRow_iface_tids[] = {
};
static dispex_static_data_t HTMLTableRow_dispex = {
+ L"HTMLTableRowElement",
NULL,
DispHTMLTableRow_tid,
HTMLTableRow_iface_tids,
@@ -1996,6 +1998,7 @@ static const tid_t HTMLTable_iface_tids[] = {
};
static dispex_static_data_t HTMLTable_dispex = {
+ L"HTMLTableElement",
NULL,
DispHTMLTable_tid,
HTMLTable_iface_tids,
diff --git a/dlls/mshtml/htmltextarea.c b/dlls/mshtml/htmltextarea.c
index 57f33732a01..f95b5590198 100644
--- a/dlls/mshtml/htmltextarea.c
+++ b/dlls/mshtml/htmltextarea.c
@@ -479,6 +479,7 @@ static const tid_t HTMLTextAreaElement_iface_tids[] = {
};
static dispex_static_data_t HTMLTextAreaElement_dispex = {
+ L"HTMLTextAreaElement",
NULL,
DispHTMLTextAreaElement_tid,
HTMLTextAreaElement_iface_tids,
diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c
index 56a0572459a..afe5d21d77c 100644
--- a/dlls/mshtml/htmltextnode.c
+++ b/dlls/mshtml/htmltextnode.c
@@ -358,6 +358,7 @@ static const tid_t HTMLDOMTextNode_iface_tids[] = {
0
};
static dispex_static_data_t HTMLDOMTextNode_dispex = {
+ L"Text",
NULL,
DispHTMLDOMTextNode_tid,
HTMLDOMTextNode_iface_tids,
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 870d7e8f100..2dfa8796c01 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -3687,6 +3687,7 @@ static const tid_t HTMLWindow_iface_tids[] = {
};
static dispex_static_data_t HTMLWindow_dispex = {
+ L"Window",
&HTMLWindow_event_target_vtbl.dispex_vtbl,
DispHTMLWindow2_tid,
HTMLWindow_iface_tids,
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index c1e7e78253d..9429a4bb5b4 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -327,6 +327,7 @@ typedef struct {
} dispex_static_data_vtbl_t;
typedef struct {
+ const WCHAR *name;
const dispex_static_data_vtbl_t *vtbl;
const tid_t disp_tid;
const tid_t* const iface_tids;
@@ -393,6 +394,7 @@ HRESULT get_class_typeinfo(const CLSID*,ITypeInfo**) DECLSPEC_HIDDEN;
const void *dispex_get_vtbl(DispatchEx*) DECLSPEC_HIDDEN;
void dispex_info_add_interface(dispex_data_t*,tid_t,const dispex_hook_t*) DECLSPEC_HIDDEN;
compat_mode_t dispex_compat_mode(DispatchEx*) DECLSPEC_HIDDEN;
+HRESULT dispex_to_string(DispatchEx*,BSTR*) DECLSPEC_HIDDEN;
typedef enum {
DISPEXPROP_CUSTOM,
diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c
index eff9576a955..7b415635c6b 100644
--- a/dlls/mshtml/omnavigator.c
+++ b/dlls/mshtml/omnavigator.c
@@ -304,6 +304,7 @@ static const tid_t HTMLDOMImplementation_iface_tids[] = {
0
};
static dispex_static_data_t HTMLDOMImplementation_dispex = {
+ L"DOMImplementation",
NULL,
DispHTMLDOMImplementation_tid,
HTMLDOMImplementation_iface_tids
@@ -555,6 +556,7 @@ static const tid_t HTMLScreen_iface_tids[] = {
0
};
static dispex_static_data_t HTMLScreen_dispex = {
+ L"Screen",
NULL,
DispHTMLScreen_tid,
HTMLScreen_iface_tids
@@ -718,6 +720,7 @@ static const tid_t OmHistory_iface_tids[] = {
0
};
static dispex_static_data_t OmHistory_dispex = {
+ L"History",
NULL,
DispHTMLHistory_tid,
OmHistory_iface_tids
@@ -874,6 +877,7 @@ static const tid_t HTMLPluginsCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLPluginsCollection_dispex = {
+ L"PluginArray",
NULL,
DispCPlugins_tid,
HTMLPluginsCollection_iface_tids
@@ -1018,6 +1022,7 @@ static const tid_t HTMLMimeTypesCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLMimeTypesCollection_dispex = {
+ L"MimeTypeArray",
NULL,
IHTMLMimeTypesCollection_tid,
HTMLMimeTypesCollection_iface_tids
@@ -1310,12 +1315,7 @@ static HRESULT WINAPI OmNavigator_toString(IOmNavigator *iface, BSTR *String)
TRACE("(%p)->(%p)\n", This, String);
- if(!String)
- return E_INVALIDARG;
-
- *String = SysAllocString(dispex_compat_mode(&This->dispex) < COMPAT_MODE_IE9
- ? L"[object]" : L"[object Navigator]");
- return *String ? S_OK : E_OUTOFMEMORY;
+ return dispex_to_string(&This->dispex, String);
}
static HRESULT WINAPI OmNavigator_get_cpuClass(IOmNavigator *iface, BSTR *p)
@@ -1469,6 +1469,7 @@ static const tid_t OmNavigator_iface_tids[] = {
0
};
static dispex_static_data_t OmNavigator_dispex = {
+ L"Navigator",
NULL,
DispHTMLNavigator_tid,
OmNavigator_iface_tids
@@ -1849,6 +1850,7 @@ static const tid_t HTMLPerformanceTiming_iface_tids[] = {
0
};
static dispex_static_data_t HTMLPerformanceTiming_dispex = {
+ L"PerformanceTiming",
NULL,
IHTMLPerformanceTiming_tid,
HTMLPerformanceTiming_iface_tids
@@ -1998,6 +2000,7 @@ static const tid_t HTMLPerformanceNavigation_iface_tids[] = {
0
};
static dispex_static_data_t HTMLPerformanceNavigation_dispex = {
+ L"PerformanceNavigation",
NULL,
IHTMLPerformanceNavigation_tid,
HTMLPerformanceNavigation_iface_tids
@@ -2188,6 +2191,7 @@ static const tid_t HTMLPerformance_iface_tids[] = {
0
};
static dispex_static_data_t HTMLPerformance_dispex = {
+ L"Performance",
NULL,
IHTMLPerformance_tid,
HTMLPerformance_iface_tids
@@ -2346,6 +2350,7 @@ static const tid_t HTMLNamespaceCollection_iface_tids[] = {
0
};
static dispex_static_data_t HTMLNamespaceCollection_dispex = {
+ L"MSNamespaceInfoCollection",
NULL,
DispHTMLNamespaceCollection_tid,
HTMLNamespaceCollection_iface_tids
@@ -2601,6 +2606,7 @@ static const tid_t console_iface_tids[] = {
0
};
static dispex_static_data_t console_dispex = {
+ L"Console",
NULL,
IWineMSHTMLConsole_tid,
console_iface_tids
diff --git a/dlls/mshtml/range.c b/dlls/mshtml/range.c
index 89f68046a33..bea5ac6b371 100644
--- a/dlls/mshtml/range.c
+++ b/dlls/mshtml/range.c
@@ -1715,6 +1715,7 @@ static const tid_t HTMLTxtRange_iface_tids[] = {
0
};
static dispex_static_data_t HTMLTxtRange_dispex = {
+ L"TextRange",
NULL,
IHTMLTxtRange_tid,
HTMLTxtRange_iface_tids
@@ -2060,6 +2061,7 @@ static const tid_t HTMLDOMRange_iface_tids[] = {
};
static dispex_static_data_t HTMLDOMRange_dispex = {
+ L"Range",
NULL,
DispHTMLDOMRange_tid,
HTMLDOMRange_iface_tids
diff --git a/dlls/mshtml/selection.c b/dlls/mshtml/selection.c
index 786c2bd6b91..280fdaa84ad 100644
--- a/dlls/mshtml/selection.c
+++ b/dlls/mshtml/selection.c
@@ -330,6 +330,7 @@ static const tid_t HTMLSelectionObject_iface_tids[] = {
0
};
static dispex_static_data_t HTMLSelectionObject_dispex = {
+ L"MSSelection",
NULL,
IHTMLSelectionObject_tid, /* FIXME: We have a test for that, but it doesn't expose IHTMLSelectionObject2 iface. */
HTMLSelectionObject_iface_tids
diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c
index d7d8ce51593..56e18d0432e 100644
--- a/dlls/mshtml/xmlhttprequest.c
+++ b/dlls/mshtml/xmlhttprequest.c
@@ -895,6 +895,7 @@ static const tid_t HTMLXMLHttpRequest_iface_tids[] = {
0
};
static dispex_static_data_t HTMLXMLHttpRequest_dispex = {
+ L"XMLHttpRequest",
&HTMLXMLHttpRequest_event_target_vtbl.dispex_vtbl,
DispHTMLXMLHttpRequest_tid,
HTMLXMLHttpRequest_iface_tids,
@@ -1066,6 +1067,7 @@ static const tid_t HTMLXMLHttpRequestFactory_iface_tids[] = {
0
};
static dispex_static_data_t HTMLXMLHttpRequestFactory_dispex = {
+ L"Function",
&HTMLXMLHttpRequestFactory_dispex_vtbl,
IHTMLXMLHttpRequestFactory_tid,
HTMLXMLHttpRequestFactory_iface_tids