Module: wine Branch: master Commit: 67333a2a19e78a0d1fc35f65181a3c9a1a4d5d44 URL: http://source.winehq.org/git/wine.git/?a=commit;h=67333a2a19e78a0d1fc35f6518...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Apr 30 18:19:49 2008 +0200
mshtml: Added IHTMLCommentElement stub implementation.
---
dlls/mshtml/Makefile.in | 1 + dlls/mshtml/htmlcomment.c | 188 ++++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/htmlnode.c | 3 + dlls/mshtml/mshtml_private.h | 1 + 4 files changed, 193 insertions(+), 0 deletions(-)
diff --git a/dlls/mshtml/Makefile.in b/dlls/mshtml/Makefile.in index 0794ccb..e76092b 100644 --- a/dlls/mshtml/Makefile.in +++ b/dlls/mshtml/Makefile.in @@ -14,6 +14,7 @@ C_SRCS = \ hlink.c \ htmlanchor.c \ htmlbody.c \ + htmlcomment.c \ htmldoc.c \ htmldoc3.c \ htmldoc5.c \ diff --git a/dlls/mshtml/htmlcomment.c b/dlls/mshtml/htmlcomment.c new file mode 100644 index 0000000..8dffa2d --- /dev/null +++ b/dlls/mshtml/htmlcomment.c @@ -0,0 +1,188 @@ +/* + * Copyright 2008 Jacek Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#include <stdarg.h> + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "ole2.h" + +#include "mshtml_private.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mshtml); + +typedef struct { + HTMLElement element; + const IHTMLCommentElementVtbl *lpIHTMLCommentElementVtbl; +} HTMLCommentElement; + +#define HTMLCOMMENT(x) ((IHTMLCommentElement*) &(x)->lpIHTMLCommentElementVtbl) + +#define HTMLCOMMENT_THIS(iface) DEFINE_THIS(HTMLCommentElement, IHTMLCommentElement, iface) + +static HRESULT WINAPI HTMLCommentElement_QueryInterface(IHTMLCommentElement *iface, + REFIID riid, void **ppv) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + + return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv); +} + +static ULONG WINAPI HTMLCommentElement_AddRef(IHTMLCommentElement *iface) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + + return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node)); +} + +static ULONG WINAPI HTMLCommentElement_Release(IHTMLCommentElement *iface) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + + return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node)); +} + +static HRESULT WINAPI HTMLCommentElement_GetTypeInfoCount(IHTMLCommentElement *iface, UINT *pctinfo) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%p)\n", This, pctinfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLCommentElement_GetTypeInfo(IHTMLCommentElement *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLCommentElement_GetIDsOfNames(IHTMLCommentElement *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, + LCID lcid, DISPID *rgDispId) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, + lcid, rgDispId); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLCommentElement_Invoke(IHTMLCommentElement *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLCommentElement *This = HTMLCOMMENT_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 HTMLCommentElement_put_text(IHTMLCommentElement *iface, BSTR v) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLCommentElement_get_text(IHTMLCommentElement *iface, BSTR *p) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLCommentElement_put_atomic(IHTMLCommentElement *iface, long v) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%ld)\n", This, v); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLCommentElement_get_atomic(IHTMLCommentElement *iface, long *p) +{ + HTMLCommentElement *This = HTMLCOMMENT_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +#undef HTMLCOMMENT_THIS + +static const IHTMLCommentElementVtbl HTMLCommentElementVtbl = { + HTMLCommentElement_QueryInterface, + HTMLCommentElement_AddRef, + HTMLCommentElement_Release, + HTMLCommentElement_GetTypeInfoCount, + HTMLCommentElement_GetTypeInfo, + HTMLCommentElement_GetIDsOfNames, + HTMLCommentElement_Invoke, + HTMLCommentElement_put_text, + HTMLCommentElement_get_text, + HTMLCommentElement_put_atomic, + HTMLCommentElement_get_atomic +}; + +#define HTMLCOMMENT_NODE_THIS(iface) DEFINE_THIS2(HTMLCommentElement, element.node, iface) + +HRESULT HTMLCommentElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) +{ + HTMLCommentElement *This = HTMLCOMMENT_NODE_THIS(iface); + + *ppv = NULL; + + if(IsEqualGUID(&IID_IHTMLCommentElement, riid)) { + TRACE("(%p)->(IID_IHTMLCommentElement %p)\n", This, ppv); + *ppv = HTMLCOMMENT(This); + }else { + return HTMLElement_QI(&This->element.node, riid, ppv); + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +void HTMLCommentElement_destructor(HTMLDOMNode *iface) +{ + HTMLCommentElement *This = HTMLCOMMENT_NODE_THIS(iface); + + HTMLElement_destructor(&This->element.node); +} + +#undef HTMLCOMMENT_NODE_THIS + +static const NodeImplVtbl HTMLCommentElementImplVtbl = { + HTMLCommentElement_QI, + HTMLCommentElement_destructor +}; + +HTMLElement *HTMLCommentElement_Create(nsIDOMNode *nsnode) +{ + HTMLCommentElement *ret = heap_alloc_zero(sizeof(*ret)); + + ret->element.node.vtbl = &HTMLCommentElementImplVtbl; + ret->lpIHTMLCommentElementVtbl = &HTMLCommentElementVtbl; + + HTMLElement_Init(&ret->element); + + return &ret->element; +} diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index 1a9bea3..f330d15 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -682,6 +682,9 @@ static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode) case TEXT_NODE: ret = HTMLDOMTextNode_Create(nsnode); break; + case COMMENT_NODE: + ret = &HTMLCommentElement_Create(nsnode)->node; + break; default: ret = heap_alloc_zero(sizeof(HTMLDOMNode)); ret->vtbl = &HTMLDOMNodeImplVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 92d63a2..3b5ac51 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -512,6 +512,7 @@ void detach_ranges(HTMLDocument*); HTMLDOMNode *HTMLDOMTextNode_Create(nsIDOMNode*);
HTMLElement *HTMLElement_Create(nsIDOMNode*); +HTMLElement *HTMLCommentElement_Create(nsIDOMNode*); HTMLElement *HTMLAnchorElement_Create(nsIDOMHTMLElement*); HTMLElement *HTMLBodyElement_Create(nsIDOMHTMLElement*); HTMLElement *HTMLInputElement_Create(nsIDOMHTMLElement*);