From 7bf41fac63332a916a46440983bfb68df85607be Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 28 Jan 2010 02:10:24 +0100 Subject: [PATCH] mshtml: Added script element IDispatchEx support. --- dlls/mshtml/dispex.c | 2 ++ dlls/mshtml/htmlscript.c | 15 ++++++++++++++- dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/tests/dom.c | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index ca093130542..d7220d75608 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -100,6 +100,7 @@ static REFIID tid_ids[] = { &DIID_DispHTMLNavigator, &DIID_DispHTMLOptionElement, &DIID_DispHTMLScreen, + &DIID_DispHTMLScriptElement, &DIID_DispHTMLSelectElement, &DIID_DispHTMLStyle, &DIID_DispHTMLTable, @@ -142,6 +143,7 @@ static REFIID tid_ids[] = { &IID_IHTMLLocation, &IID_IHTMLOptionElement, &IID_IHTMLScreen, + &IID_IHTMLScriptElement, &IID_IHTMLSelectElement, &IID_IHTMLStyle, &IID_IHTMLStyle2, diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index d86f3988932..2427309bfba 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -319,6 +319,19 @@ static const NodeImplVtbl HTMLScriptElementImplVtbl = { HTMLScriptElement_get_readystate }; +static const tid_t HTMLScriptElement_iface_tids[] = { + HTMLELEMENT_TIDS, + IHTMLScriptElement_tid, + 0 +}; + +static dispex_static_data_t HTMLScriptElement_dispex = { + NULL, + DispHTMLScriptElement_tid, + NULL, + HTMLScriptElement_iface_tids +}; + HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem) { HTMLScriptElement *ret = heap_alloc_zero(sizeof(HTMLScriptElement)); @@ -327,7 +340,7 @@ HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement * ret->lpHTMLScriptElementVtbl = &HTMLScriptElementVtbl; ret->element.node.vtbl = &HTMLScriptElementImplVtbl; - HTMLElement_Init(&ret->element, doc, nselem, NULL); + HTMLElement_Init(&ret->element, doc, nselem, &HTMLScriptElement_dispex); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLScriptElement, (void**)&ret->nsscript); if(NS_FAILED(nsres)) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 30b47e891bb..8a1ff01d4db 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -76,6 +76,7 @@ typedef enum { DispHTMLNavigator_tid, DispHTMLOptionElement_tid, DispHTMLScreen_tid, + DispHTMLScriptElement_tid, DispHTMLSelectElement_tid, DispHTMLStyle_tid, DispHTMLTable_tid, @@ -118,6 +119,7 @@ typedef enum { IHTMLLocation_tid, IHTMLOptionElement_tid, IHTMLScreen_tid, + IHTMLScriptElement_tid, IHTMLSelectElement_tid, IHTMLStyle_tid, IHTMLStyle2_tid, diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index c818a1d8db7..581d9d4228a 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -412,7 +412,7 @@ static const elem_type_info_t elem_type_infos[] = { {"BR", elem_iids, NULL}, {"TABLE", table_iids, &DIID_DispHTMLTable}, {"TBODY", elem_iids, NULL}, - {"SCRIPT", script_iids, NULL}, + {"SCRIPT", script_iids, &DIID_DispHTMLScriptElement}, {"TEST", elem_iids, &DIID_DispHTMLUnknownElement}, {"TEST", generic_iids, &DIID_DispHTMLGenericElement}, {"!", comment_iids, &DIID_DispHTMLCommentElement},