Jacek Caban : mshtml: Added IHTMLWindow3 stub implementation.
Alexandre Julliard
julliard at winehq.org
Fri Apr 18 07:27:17 CDT 2008
Module: wine
Branch: master
Commit: a009157331320cc52482089fa5eedcd8d9d15bcd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a009157331320cc52482089fa5eedcd8d9d15bcd
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Apr 17 22:53:31 2008 +0200
mshtml: Added IHTMLWindow3 stub implementation.
---
dlls/mshtml/htmlwindow.c | 181 ++++++++++++++++++++++++++++++++++++++++++
dlls/mshtml/mshtml_private.h | 2 +
dlls/mshtml/tests/dom.c | 8 ++
3 files changed, 191 insertions(+), 0 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 0f57069..7ae121a 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -55,6 +55,9 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
}else if(IsEqualGUID(&IID_IHTMLWindow2, riid)) {
TRACE("(%p)->(IID_IHTMLWindow2 %p)\n", This, ppv);
*ppv = HTMLWINDOW2(This);
+ }else if(IsEqualGUID(&IID_IHTMLWindow3, riid)) {
+ TRACE("(%p)->(IID_IHTMLWindow2 %p)\n", This, ppv);
+ *ppv = HTMLWINDOW3(This);
}
if(*ppv) {
@@ -762,6 +765,183 @@ static const IHTMLWindow2Vtbl HTMLWindow2Vtbl = {
HTMLWindow2_get_external
};
+#define HTMLWINDOW3_THIS(iface) DEFINE_THIS(HTMLWindow, HTMLWindow3, iface)
+
+static HRESULT WINAPI HTMLWindow3_QueryInterface(IHTMLWindow3 *iface, REFIID riid, void **ppv)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IHTMLWindow2_QueryInterface(HTMLWINDOW2(This), riid, ppv);
+}
+
+static ULONG WINAPI HTMLWindow3_AddRef(IHTMLWindow3 *iface)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IHTMLWindow2_AddRef(HTMLWINDOW2(This));
+}
+
+static ULONG WINAPI HTMLWindow3_Release(IHTMLWindow3 *iface)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IHTMLWindow2_Release(HTMLWINDOW2(This));
+}
+
+static HRESULT WINAPI HTMLWindow3_GetTypeInfoCount(IHTMLWindow3 *iface, UINT *pctinfo)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_GetTypeInfo(IHTMLWindow3 *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_GetIDsOfNames(IHTMLWindow3 *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_Invoke(IHTMLWindow3 *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLWindow *This = HTMLWINDOW3_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 HTMLWindow3_get_screenLeft(IHTMLWindow3 *iface, long *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_screenTop(IHTMLWindow3 *iface, long *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_attachEvent(IHTMLWindow3 *iface, BSTR event, IDispatch *pDisp, VARIANT_BOOL *pfResult)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(event), pDisp, pfResult);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_detachEvent(IHTMLWindow3 *iface, BSTR event, IDispatch *pDisp)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_setTimeout(IHTMLWindow3 *iface, VARIANT *expression, long msec,
+ VARIANT *language, long *timerID)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p(%d) %ld %p %p)\n", This, expression, V_VT(expression), msec, language, timerID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_setInterval(IHTMLWindow3 *iface, VARIANT *expression, long msec,
+ VARIANT *language, long *timerID)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p %ld %p %p)\n", This, expression, msec, language, timerID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_print(IHTMLWindow3 *iface)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_put_onbeforeprint(IHTMLWindow3 *iface, VARIANT v)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_onbeforeprint(IHTMLWindow3 *iface, VARIANT *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_put_onafterprint(IHTMLWindow3 *iface, VARIANT v)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_onafterprint(IHTMLWindow3 *iface, VARIANT *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_clipboardData(IHTMLWindow3 *iface, IHTMLDataTransfer **p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_showModelessDialog(IHTMLWindow3 *iface, BSTR url,
+ VARIANT *varArgIn, VARIANT *options, IHTMLWindow2 **pDialog)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%s %p %p %p)\n", This, debugstr_w(url), varArgIn, options, pDialog);
+ return E_NOTIMPL;
+}
+
+#undef HTMLWINDOW3_THIS
+
+static const IHTMLWindow3Vtbl HTMLWindow3Vtbl = {
+ HTMLWindow3_QueryInterface,
+ HTMLWindow3_AddRef,
+ HTMLWindow3_Release,
+ HTMLWindow3_GetTypeInfoCount,
+ HTMLWindow3_GetTypeInfo,
+ HTMLWindow3_GetIDsOfNames,
+ HTMLWindow3_Invoke,
+ HTMLWindow3_get_screenLeft,
+ HTMLWindow3_get_screenTop,
+ HTMLWindow3_attachEvent,
+ HTMLWindow3_detachEvent,
+ HTMLWindow3_setTimeout,
+ HTMLWindow3_setInterval,
+ HTMLWindow3_print,
+ HTMLWindow3_put_onbeforeprint,
+ HTMLWindow3_get_onbeforeprint,
+ HTMLWindow3_put_onafterprint,
+ HTMLWindow3_get_onafterprint,
+ HTMLWindow3_get_clipboardData,
+ HTMLWindow3_showModelessDialog
+};
+
static const char wineConfig_func[] =
"window.__defineGetter__(\"external\",function() {\n"
" return window.__wineWindow__.external;\n"
@@ -869,6 +1049,7 @@ HTMLWindow *HTMLWindow_Create(HTMLDocument *doc)
HTMLWindow *ret = heap_alloc(sizeof(HTMLWindow));
ret->lpHTMLWindow2Vtbl = &HTMLWindow2Vtbl;
+ ret->lpHTMLWindow3Vtbl = &HTMLWindow3Vtbl;
ret->ref = 1;
ret->nswindow = NULL;
ret->doc = doc;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index f7e1e1e..ce75611 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -73,6 +73,7 @@ void init_dispex(DispatchEx*,IUnknown*);
typedef struct {
const IHTMLWindow2Vtbl *lpHTMLWindow2Vtbl;
+ const IHTMLWindow3Vtbl *lpHTMLWindow3Vtbl;
LONG ref;
@@ -296,6 +297,7 @@ typedef struct {
} HTMLTextContainer;
#define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl)
+#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
#define HTMLDOC(x) ((IHTMLDocument2*) &(x)->lpHTMLDocument2Vtbl)
#define HTMLDOC3(x) ((IHTMLDocument3*) &(x)->lpHTMLDocument3Vtbl)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index d041a2c..5e2acde 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -169,6 +169,13 @@ static REFIID const location_iids[] = {
NULL
};
+static REFIID const window_iids[] = {
+ &IID_IDispatch,
+ &IID_IHTMLWindow2,
+ &IID_IHTMLWindow3,
+ NULL
+};
+
typedef struct {
const char *tag;
REFIID *iids;
@@ -1038,6 +1045,7 @@ static void test_navigator(IHTMLDocument2 *doc)
hres = IHTMLDocument2_get_parentWindow(doc, &window);
ok(hres == S_OK, "parentWidnow failed: %08x\n", hres);
+ test_ifaces((IUnknown*)window, window_iids);
hres = IHTMLWindow2_get_navigator(window, &navigator);
ok(hres == S_OK, "get_navigator failed: %08x\n", hres);
More information about the wine-cvs
mailing list