Module: wine Branch: refs/heads/master Commit: 881653ccdc878a2ce1bb8d6436aec675e737aa9e URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=881653ccdc878a2ce1bb8d64...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jun 22 16:14:14 2006 +0200
mshtml: Added stub implementation of HTMLLoadOptions.
---
dlls/mshtml/Makefile.in | 1 dlls/mshtml/loadopts.c | 140 ++++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/main.c | 3 + dlls/mshtml/mshtml_private.h | 1 4 files changed, 145 insertions(+), 0 deletions(-) create mode 100644 dlls/mshtml/loadopts.c
diff --git a/dlls/mshtml/Makefile.in b/dlls/mshtml/Makefile.in index a51f25e..99767b8 100644 --- a/dlls/mshtml/Makefile.in +++ b/dlls/mshtml/Makefile.in @@ -22,6 +22,7 @@ C_SRCS = \ htmltextcont.c \ htmltextarea.c \ install.c \ + loadopts.c \ main.c \ navigate.c \ nsembed.c \ diff --git a/dlls/mshtml/loadopts.c b/dlls/mshtml/loadopts.c new file mode 100644 index 0000000..fec2ffb --- /dev/null +++ b/dlls/mshtml/loadopts.c @@ -0,0 +1,140 @@ +/* + * Copyright 2006 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 "config.h" + +#include <stdarg.h> +#include <stdio.h> + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "ole2.h" +#include "optary.h" + +#include "wine/debug.h" + +#include "mshtml_private.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mshtml); + +typedef struct { + const IHtmlLoadOptionsVtbl *lpHtmlLoadOptionsVtbl; + + LONG ref; +} HTMLLoadOptions; + +#define LOADOPTS(x) ((IHtmlLoadOptions*) &(x)->lpHtmlLoadOptionsVtbl) + +#define LOADOPTS_THIS(iface) DEFINE_THIS(HTMLLoadOptions, HtmlLoadOptions, iface) + +static HRESULT WINAPI HtmlLoadOptions_QueryInterface(IHtmlLoadOptions *iface, + REFIID riid, void **ppv) +{ + HTMLLoadOptions *This = LOADOPTS_THIS(iface); + + *ppv = NULL; + + if(IsEqualGUID(&IID_IUnknown, riid)) { + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); + *ppv = LOADOPTS(This); + }else if(IsEqualGUID(&IID_IOptionArray, riid)) { + TRACE("(%p)->(IID_IOptionArray %p)\n", This, ppv); + *ppv = LOADOPTS(This); + }else if(IsEqualGUID(&IID_IHtmlLoadOptions, riid)) { + TRACE("(%p)->(IID_IHtmlLoadOptions %p)\n", This, ppv); + *ppv = LOADOPTS(This); + } + + if(*ppv) { + IHtmlLoadOptions_AddRef(LOADOPTS(This)); + return S_OK; + } + + WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + return E_NOINTERFACE; +} + +static ULONG WINAPI HtmlLoadOptions_AddRef(IHtmlLoadOptions *iface) +{ + HTMLLoadOptions *This = LOADOPTS_THIS(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%ld\n", This, ref); + + return ref; +} + +static ULONG WINAPI HtmlLoadOptions_Release(IHtmlLoadOptions *iface) +{ + HTMLLoadOptions *This = LOADOPTS_THIS(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%ld\n", This, ref); + + if(!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +static HRESULT WINAPI HtmlLoadOptions_QueryOption(IHtmlLoadOptions *iface, DWORD dwOption, + LPVOID pBuffer, ULONG *pcbBuf) +{ + HTMLLoadOptions *This = LOADOPTS_THIS(iface); + FIXME("(%p)->(%ld %p %p)\n", This, dwOption, pBuffer, pcbBuf); + return E_NOTIMPL; +} + +static HRESULT WINAPI HtmlLoadOptions_SetOption(IHtmlLoadOptions *iface, DWORD dwOption, + LPVOID pBuffer, ULONG cbBuf) +{ + HTMLLoadOptions *This = LOADOPTS_THIS(iface); + FIXME("(%p)->(%ld %p %ld)\n", This, dwOption, pBuffer, cbBuf); + return E_NOTIMPL; +} + +#undef LOADOPTS_THIS + +static const IHtmlLoadOptionsVtbl HtmlLoadOptionsVtbl = { + HtmlLoadOptions_QueryInterface, + HtmlLoadOptions_AddRef, + HtmlLoadOptions_Release, + HtmlLoadOptions_QueryOption, + HtmlLoadOptions_SetOption +}; + +HRESULT HTMLLoadOptions_Create(IUnknown *pUnkOuter, REFIID riid, void** ppv) +{ + HTMLLoadOptions *ret; + HRESULT hres; + + TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv); + + ret = HeapAlloc(GetProcessHeap(), 0, sizeof(HTMLLoadOptions)); + + ret->lpHtmlLoadOptionsVtbl = &HtmlLoadOptionsVtbl; + ret->ref = 1; + + hres = IHtmlLoadOptions_QueryInterface(LOADOPTS(ret), riid, ppv); + IHtmlLoadOptions_Release(LOADOPTS(ret)); + + return hres; +} diff --git a/dlls/mshtml/main.c b/dlls/mshtml/main.c index 94dfcc1..58098d0 100644 --- a/dlls/mshtml/main.c +++ b/dlls/mshtml/main.c @@ -176,6 +176,9 @@ HRESULT WINAPI DllGetClassObject(REFCLSI }else if(IsEqualGUID(&CLSID_SysimageProtocol, rclsid)) { TRACE("(CLSID_SysimageProtocol %s %p)\n", debugstr_guid(riid), ppv); return ProtocolFactory_Create(rclsid, riid, ppv); + }else if(IsEqualGUID(&CLSID_HTMLLoadOptions, rclsid)) { + TRACE("(CLSID_HTMLLoadOptions %s %p)\n", debugstr_guid(riid), ppv); + return ClassFactory_Create(riid, ppv, HTMLLoadOptions_Create); }
FIXME("Unknown class %s\n", debugstr_guid(rclsid)); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 3087c3a..4c7abe4 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -248,6 +248,7 @@ #define HTMLTEXTCONT(x) ((IHTMLTextCont #define DEFINE_THIS(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,lp ## ifc ## Vtbl)))
HRESULT HTMLDocument_Create(IUnknown*,REFIID,void**); +HRESULT HTMLLoadOptions_Create(IUnknown*,REFIID,void**);
void HTMLDocument_HTMLDocument3_Init(HTMLDocument*); void HTMLDocument_Persist_Init(HTMLDocument*);