Module: wine Branch: master Commit: 8dc2cf0d3a7babb16cafef2f1b7636d414609597 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8dc2cf0d3a7babb16cafef2f1b...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Apr 24 18:22:51 2008 +0200
mshtml: Added IHTMLDOMNode2 stub implementation.
---
dlls/mshtml/htmlnode.c | 89 +++++++++++++++++++++++++++++++++++++++++- dlls/mshtml/mshtml_private.h | 4 +- dlls/mshtml/tests/dom.c | 9 ++++ 3 files changed, 99 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index d3a9b72..9ee4513 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -31,8 +31,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
-#define NSSUPPORTS(x) ((nsISupports*) &(x)->lpSupportsVtbl) - #define HTMLDOMNODE_THIS(iface) DEFINE_THIS(HTMLDOMNode, HTMLDOMNode, iface)
static HRESULT WINAPI HTMLDOMNode_QueryInterface(IHTMLDOMNode *iface, @@ -273,6 +271,8 @@ static HRESULT WINAPI HTMLDOMNode_get_nextSibling(IHTMLDOMNode *iface, IHTMLDOMN return E_NOTIMPL; }
+#undef HTMLDOMNODE_THIS + static const IHTMLDOMNodeVtbl HTMLDOMNodeVtbl = { HTMLDOMNode_QueryInterface, HTMLDOMNode_AddRef, @@ -303,6 +303,85 @@ static const IHTMLDOMNodeVtbl HTMLDOMNodeVtbl = { HTMLDOMNode_get_nextSibling };
+#define HTMLDOMNODE2_THIS(iface) DEFINE_THIS(HTMLDOMNode, HTMLDOMNode2, iface) + +static HRESULT WINAPI HTMLDOMNode2_QueryInterface(IHTMLDOMNode2 *iface, + REFIID riid, void **ppv) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + + return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(This), riid, ppv); +} + +static ULONG WINAPI HTMLDOMNode2_AddRef(IHTMLDOMNode2 *iface) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + + return IHTMLDOMNode_AddRef(HTMLDOMNODE(This)); +} + +static ULONG WINAPI HTMLDOMNode2_Release(IHTMLDOMNode2 *iface) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + + return IHTMLDOMNode_Release(HTMLDOMNODE(This)); +} + +static HRESULT WINAPI HTMLDOMNode2_GetTypeInfoCount(IHTMLDOMNode2 *iface, UINT *pctinfo) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + FIXME("(%p)->(%p)\n", This, pctinfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLDOMNode2_GetTypeInfo(IHTMLDOMNode2 *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLDOMNode2_GetIDsOfNames(IHTMLDOMNode2 *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, + LCID lcid, DISPID *rgDispId) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, + lcid, rgDispId); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLDOMNode2_Invoke(IHTMLDOMNode2 *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), + lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLDOMNode2_get_ownerDocument(IHTMLDOMNode2 *iface, IDispatch **p) +{ + HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +#undef HTMLDOMNODE2_THIS + +static const IHTMLDOMNode2Vtbl HTMLDOMNode2Vtbl = { + HTMLDOMNode2_QueryInterface, + HTMLDOMNode2_AddRef, + HTMLDOMNode2_Release, + HTMLDOMNode2_GetTypeInfoCount, + HTMLDOMNode2_GetTypeInfo, + HTMLDOMNode2_GetIDsOfNames, + HTMLDOMNode2_Invoke, + HTMLDOMNode2_get_ownerDocument +}; + HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv) { *ppv = NULL; @@ -324,6 +403,9 @@ HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv) }else if(IsEqualGUID(&IID_IHTMLDOMNode, riid)) { TRACE("(%p)->(IID_IHTMLDOMNode %p)\n", This, ppv); *ppv = HTMLDOMNODE(This); + }else if(IsEqualGUID(&IID_IHTMLDOMNode2, riid)) { + TRACE("(%p)->(IID_IHTMLDOMNode2 %p)\n", This, ppv); + *ppv = HTMLDOMNODE2(This); }
if(*ppv) { @@ -365,12 +447,15 @@ static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode) }
ret->lpHTMLDOMNodeVtbl = &HTMLDOMNodeVtbl; + ret->lpHTMLDOMNode2Vtbl = &HTMLDOMNode2Vtbl; ret->ref = 1; ret->doc = doc;
nsIDOMNode_AddRef(nsnode); ret->nsnode = nsnode;
+ TRACE("type %d ret %p\n", node_type, ret); + return ret; }
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 5fb37da..37e4c5f 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -298,7 +298,8 @@ typedef struct {
struct HTMLDOMNode { DispatchEx dispex; - const IHTMLDOMNodeVtbl *lpHTMLDOMNodeVtbl; + const IHTMLDOMNodeVtbl *lpHTMLDOMNodeVtbl; + const IHTMLDOMNode2Vtbl *lpHTMLDOMNode2Vtbl; const NodeImplVtbl *vtbl;
LONG ref; @@ -377,6 +378,7 @@ typedef struct { #define HTMLELEM(x) ((IHTMLElement*) &(x)->lpHTMLElementVtbl) #define HTMLELEM2(x) ((IHTMLElement2*) &(x)->lpHTMLElement2Vtbl) #define HTMLDOMNODE(x) ((IHTMLDOMNode*) &(x)->lpHTMLDOMNodeVtbl) +#define HTMLDOMNODE2(x) ((IHTMLDOMNode2*) &(x)->lpHTMLDOMNode2Vtbl)
#define HTMLTEXTCONT(x) ((IHTMLTextContainer*) &(x)->lpHTMLTextContainerVtbl)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 0bdeb16..83dc38f 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -88,6 +88,7 @@ static REFIID const none_iids[] = {
static REFIID const elem_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IDispatchEx, @@ -97,6 +98,7 @@ static REFIID const elem_iids[] = {
static REFIID const body_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLTextContainer, @@ -108,6 +110,7 @@ static REFIID const body_iids[] = {
static REFIID const anchor_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLAnchorElement, @@ -118,6 +121,7 @@ static REFIID const anchor_iids[] = {
static REFIID const input_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLInputElement, @@ -129,6 +133,7 @@ static REFIID const input_iids[] = {
static REFIID const select_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLSelectElement, @@ -139,6 +144,7 @@ static REFIID const select_iids[] = {
static REFIID const textarea_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLTextAreaElement, @@ -149,6 +155,7 @@ static REFIID const textarea_iids[] = {
static REFIID const option_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLOptionElement, @@ -159,6 +166,7 @@ static REFIID const option_iids[] = {
static REFIID const table_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLTable, @@ -169,6 +177,7 @@ static REFIID const table_iids[] = {
static REFIID const script_iids[] = { &IID_IHTMLDOMNode, + &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLScriptElement,