[PATCH v2 01/16] mshtml: Add names for each object and use it in the Navigator.

Gabriel Ivăncescu gabrielopcode at gmail.com
Tue Oct 5 09:18:34 CDT 2021


Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---

All the names match native, and will be tested later when more are
implemented.

 dlls/mshtml/dispex.c         | 29 +++++++++++++++++++++++++++++
 dlls/mshtml/htmlanchor.c     |  1 +
 dlls/mshtml/htmlarea.c       |  1 +
 dlls/mshtml/htmlattr.c       |  1 +
 dlls/mshtml/htmlbody.c       |  1 +
 dlls/mshtml/htmlcomment.c    |  1 +
 dlls/mshtml/htmlcurstyle.c   |  1 +
 dlls/mshtml/htmldoc.c        |  2 ++
 dlls/mshtml/htmlelem.c       |  6 ++++++
 dlls/mshtml/htmlelemcol.c    |  1 +
 dlls/mshtml/htmlevent.c      |  6 ++++++
 dlls/mshtml/htmlform.c       |  1 +
 dlls/mshtml/htmlframe.c      |  2 ++
 dlls/mshtml/htmlgeneric.c    |  1 +
 dlls/mshtml/htmlhead.c       |  4 ++++
 dlls/mshtml/htmlimg.c        |  2 ++
 dlls/mshtml/htmlinput.c      |  3 +++
 dlls/mshtml/htmllink.c       |  1 +
 dlls/mshtml/htmllocation.c   |  1 +
 dlls/mshtml/htmlnode.c       |  2 ++
 dlls/mshtml/htmlobject.c     |  2 ++
 dlls/mshtml/htmlscript.c     |  1 +
 dlls/mshtml/htmlselect.c     |  3 +++
 dlls/mshtml/htmlstorage.c    |  1 +
 dlls/mshtml/htmlstyle.c      |  2 ++
 dlls/mshtml/htmlstyleelem.c  |  1 +
 dlls/mshtml/htmlstylesheet.c |  4 ++++
 dlls/mshtml/htmltable.c      |  3 +++
 dlls/mshtml/htmltextarea.c   |  1 +
 dlls/mshtml/htmltextnode.c   |  1 +
 dlls/mshtml/htmlwindow.c     |  1 +
 dlls/mshtml/mshtml_private.h |  2 ++
 dlls/mshtml/omnavigator.c    | 18 ++++++++++++------
 dlls/mshtml/range.c          |  2 ++
 dlls/mshtml/selection.c      |  1 +
 dlls/mshtml/xmlhttprequest.c |  2 ++
 36 files changed, 106 insertions(+), 6 deletions(-)

diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c
index 64ead8f..26aab5e 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 = {
+    NULL,
     &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 || !name)
+        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 da48601..4416624 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 e785871..6c0da36 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 dc8c45e..e10c7c3 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 32c49fe..551c3a1 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 85eceef..40066cb 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 = {
+    NULL,
     NULL,
     DispHTMLCommentElement_tid,
     HTMLCommentElement_iface_tids,
diff --git a/dlls/mshtml/htmlcurstyle.c b/dlls/mshtml/htmlcurstyle.c
index 2abe5df..e66a42c 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 9faf987..4c6c470 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 = {
+    NULL,
     NULL,
     DispHTMLDocument_tid,
     HTMLDocumentObj_iface_tids
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index b07de03..4b16fce 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 = {
+    NULL,
     &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 e72f21f..86ef3a3 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 5b040c4..3f545bb 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 5d0928e..566612f 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 7118ea8..e794284 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 639c95e..459fc78 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 5dbf8d6..1bad06e 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 f89e8e5..2724c28 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 = {
+    NULL,
     &HTMLImageElementFactory_dispex_vtbl,
     IHTMLImageElementFactory_tid,
     HTMLImageElementFactory_iface_tids
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c
index 1a0a739..e9b53da 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 ddf67ca..1dd4873 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 a85c9a6..85dfc40 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 b5ff02b..6e65581 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 = {
+    NULL,
     NULL,
     IHTMLDOMNode_tid,
     HTMLDOMNode_iface_tids,
diff --git a/dlls/mshtml/htmlobject.c b/dlls/mshtml/htmlobject.c
index 6702548..9c8af17 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 9b7f95e..9f3a0b2 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 ad801f8..4585e2e 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 = {
+    NULL,
     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 c389647..9c1f904 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 4ee81ba..7dd7000 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 d2a4a75..cf57547 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 b6f1c98..cbc2adf 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 178e9e5..53c9820 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 57f3373..f95b559 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 56a0572..afe5d21 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 870d7e8..2dfa879 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 c1e7e78..9429a4b 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 eff9576..7b41563 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 89f6804..bea5ac6 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 786c2bd..280fdaa 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 d7d8ce5..70a332c 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 = {
+    NULL,
     &HTMLXMLHttpRequestFactory_dispex_vtbl,
     IHTMLXMLHttpRequestFactory_tid,
     HTMLXMLHttpRequestFactory_iface_tids
-- 
2.31.1




More information about the wine-devel mailing list