Added: vendor/wine/dlls/shdocvw/
Added: vendor/wine/dlls/shdocvw/current/
Added: vendor/wine/dlls/shdocvw/current/Makefile.in
Added: vendor/wine/dlls/shdocvw/current/classinfo.c
Added: vendor/wine/dlls/shdocvw/current/events.c
Added: vendor/wine/dlls/shdocvw/current/factory.c
Added: vendor/wine/dlls/shdocvw/current/misc.c
Added: vendor/wine/dlls/shdocvw/current/oleobject.c
Added: vendor/wine/dlls/shdocvw/current/persist.c
Added: vendor/wine/dlls/shdocvw/current/regsvr.c
Added: vendor/wine/dlls/shdocvw/current/shdocvw.h
Added: vendor/wine/dlls/shdocvw/current/shdocvw.rc
Added: vendor/wine/dlls/shdocvw/current/shdocvw.spec
Added: vendor/wine/dlls/shdocvw/current/shdocvw_main.c
Added: vendor/wine/dlls/shdocvw/current/version.rc
Added: vendor/wine/dlls/shdocvw/current/webbrowser.c
--- vendor/wine/dlls/shdocvw/current/Makefile.in 2004-12-31 16:00:23 UTC (rev 12599)
+++ vendor/wine/dlls/shdocvw/current/Makefile.in 2004-12-31 16:05:11 UTC (rev 12600)
@@ -0,0 +1,25 @@
+EXTRADEFS = -D_SHDOCVW_
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = shdocvw.dll
+IMPORTS = urlmon ole32 user32 advapi32 kernel32
+EXTRALIBS = -luuid
+
+C_SRCS = \
+ classinfo.c \
+ events.c \
+ factory.c \
+ misc.c \
+ oleobject.c \
+ persist.c \
+ regsvr.c \
+ shdocvw_main.c \
+ webbrowser.c
+
+RC_SRCS = shdocvw.rc
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
--- vendor/wine/dlls/shdocvw/current/classinfo.c 2004-12-31 16:00:23 UTC (rev 12599)
+++ vendor/wine/dlls/shdocvw/current/classinfo.c 2004-12-31 16:05:11 UTC (rev 12600)
@@ -0,0 +1,170 @@
+/*
+ * Implementation of IProvideClassInfo interfaces for IE Web Browser control
+ *
+ * Copyright 2001 John R. Sheets (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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdarg.h>
+#include <string.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "shdocvw.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+/**********************************************************************
+ * Implement the IProvideClassInfo interface
+ *
+ * FIXME: Should we just pass in the IProvideClassInfo2 methods rather
+ * reimplementing them here?
+ */
+
+static HRESULT WINAPI WBPCI_QueryInterface(LPPROVIDECLASSINFO iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface;
+
+ FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI WBPCI_AddRef(LPPROVIDECLASSINFO iface)
+{
+ IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+static ULONG WINAPI WBPCI_Release(LPPROVIDECLASSINFO iface)
+{
+ IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+/* Return an ITypeInfo interface to retrieve type library info about
+ * this control.
+ */
+static HRESULT WINAPI WBPCI_GetClassInfo(LPPROVIDECLASSINFO iface, LPTYPEINFO *ppTI)
+{
+ FIXME("stub: LPTYPEINFO = %p\n", *ppTI);
+ return S_OK;
+}
+
+/**********************************************************************
+ * IProvideClassInfo virtual function table for IE Web Browser component
+ */
+
+static IProvideClassInfoVtbl WBPCI_Vtbl =
+{
+ WBPCI_QueryInterface,
+ WBPCI_AddRef,
+ WBPCI_Release,
+ WBPCI_GetClassInfo
+};
+
+IProvideClassInfoImpl SHDOCVW_ProvideClassInfo = { &WBPCI_Vtbl, 1 };
+
+
+/**********************************************************************
+ * Implement the IProvideClassInfo2 interface (inherits from
+ * IProvideClassInfo).
+ */
+
+static HRESULT WINAPI WBPCI2_QueryInterface(LPPROVIDECLASSINFO2 iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface;
+
+ FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI WBPCI2_AddRef(LPPROVIDECLASSINFO2 iface)
+{
+ IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+static ULONG WINAPI WBPCI2_Release(LPPROVIDECLASSINFO2 iface)
+{
+ IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+/* Return an ITypeInfo interface to retrieve type library info about
+ * this control.
+ */
+static HRESULT WINAPI WBPCI2_GetClassInfo(LPPROVIDECLASSINFO2 iface, LPTYPEINFO *ppTI)
+{
+ FIXME("stub: LPTYPEINFO = %p\n", *ppTI);
+ return S_OK;
+}
+
+/* Get the IID for generic default event callbacks. This IID will
+ * in theory be used to later query for an IConnectionPoint to connect
+ * an event sink (callback implementation in the OLE control site)
+ * to this control.
+*/
+static HRESULT WINAPI WBPCI2_GetGUID(LPPROVIDECLASSINFO2 iface,
+ DWORD dwGuidKind, GUID *pGUID)
+{
+ FIXME("stub: dwGuidKind = %ld, pGUID = %s\n", dwGuidKind, debugstr_guid(pGUID));
+
+ if (dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID)
+ {
+ FIXME ("Requested unsupported GUID type: %ld\n", dwGuidKind);
+ return E_FAIL; /* Is there a better return type here? */
+ }
+
+ /* FIXME: Returning IPropertyNotifySink interface, but should really
+ * return a more generic event set (???) dispinterface.
+ * However, this hack, allows a control site to return with success
+ * (MFC's COleControlSite falls back to older IProvideClassInfo interface
+ * if GetGUID() fails to return a non-NULL GUID).
+ */
+ memcpy(pGUID, &IID_IPropertyNotifySink, sizeof(GUID));
+ FIXME("Wrongly returning IPropertyNotifySink interface %s\n",
+ debugstr_guid(pGUID));
+
+ return S_OK;
+}
+
+/**********************************************************************
+ * IProvideClassInfo virtual function table for IE Web Browser component
+ */
+
+static IProvideClassInfo2Vtbl WBPCI2_Vtbl =
+{
+ WBPCI2_QueryInterface,
+ WBPCI2_AddRef,
+ WBPCI2_Release,
+ WBPCI2_GetClassInfo,
+ WBPCI2_GetGUID
+};
+
+IProvideClassInfo2Impl SHDOCVW_ProvideClassInfo2 = { &WBPCI2_Vtbl, 1 };
--- vendor/wine/dlls/shdocvw/current/events.c 2004-12-31 16:00:23 UTC (rev 12599)
+++ vendor/wine/dlls/shdocvw/current/events.c 2004-12-31 16:05:11 UTC (rev 12600)
@@ -0,0 +1,212 @@
+/*
+ * Implementation of event-related interfaces for IE Web Browser control:
+ *
+ * - IConnectionPointContainer
+ * - IConnectionPoint
+ *
+ * Copyright 2001 John R. Sheets (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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+#include "wine/debug.h"
+#include "shdocvw.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+
+static const GUID IID_INotifyDBEvents =
+ { 0xdb526cc0, 0xd188, 0x11cd, { 0xad, 0x48, 0x00, 0xaa, 0x00, 0x3c, 0x9c, 0xb6 } };
+
+/**********************************************************************
+ * Implement the IConnectionPointContainer interface
+ */
+
+static HRESULT WINAPI WBCPC_QueryInterface(LPCONNECTIONPOINTCONTAINER iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface;
+
+ FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI WBCPC_AddRef(LPCONNECTIONPOINTCONTAINER iface)
+{
+ IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+static ULONG WINAPI WBCPC_Release(LPCONNECTIONPOINTCONTAINER iface)
+{
+ IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+/* Get a list of connection points inside this container. */
+static HRESULT WINAPI WBCPC_EnumConnectionPoints(LPCONNECTIONPOINTCONTAINER iface,
+ LPENUMCONNECTIONPOINTS *ppEnum)
+{
+ FIXME("stub: IEnumConnectionPoints = %p\n", *ppEnum);
+ return S_OK;
+}
+
+/* Retrieve the connection point in this container associated with the
+ * riid interface. When events occur in the control, the control can
+ * call backwards into its embedding site, through these interfaces.
+ */
+static HRESULT WINAPI WBCPC_FindConnectionPoint(LPCONNECTIONPOINTCONTAINER iface,
+ REFIID riid, LPCONNECTIONPOINT *ppCP)
+{
+ TRACE(": IID = %s, IConnectionPoint = %p\n", debugstr_guid(riid), *ppCP);
+
+ /* For now, return the same IConnectionPoint object for both
+ * event interface requests.
+ */
+ if (IsEqualGUID (&IID_INotifyDBEvents, riid))
+ {
+ TRACE("Returning connection point %p for IID_INotifyDBEvents\n",
+ &SHDOCVW_ConnectionPoint);
+ *ppCP = (LPCONNECTIONPOINT)&SHDOCVW_ConnectionPoint;
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IPropertyNotifySink, riid))
+ {
+ TRACE("Returning connection point %p for IID_IPropertyNotifySink\n",
+ &SHDOCVW_ConnectionPoint);
+ *ppCP = (LPCONNECTIONPOINT)&SHDOCVW_ConnectionPoint;
+ return S_OK;
+ }
+
+ return E_FAIL;
+}
+
+/**********************************************************************
+ * IConnectionPointContainer virtual function table for IE Web Browser component
+ */
+
+static IConnectionPointContainerVtbl WBCPC_Vtbl =
+{
+ WBCPC_QueryInterface,
+ WBCPC_AddRef,
+ WBCPC_Release,
+ WBCPC_EnumConnectionPoints,
+ WBCPC_FindConnectionPoint
+};
+
+IConnectionPointContainerImpl SHDOCVW_ConnectionPointContainer = { &WBCPC_Vtbl, 1 };
+
+
+/**********************************************************************
+ * Implement the IConnectionPoint interface
+ */
+
+static HRESULT WINAPI WBCP_QueryInterface(LPCONNECTIONPOINT iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ IConnectionPointImpl *This = (IConnectionPointImpl *)iface;
+
+ FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI WBCP_AddRef(LPCONNECTIONPOINT iface)
+{
+ IConnectionPointImpl *This = (IConnectionPointImpl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+static ULONG WINAPI WBCP_Release(LPCONNECTIONPOINT iface)
+{
+ IConnectionPointImpl *This = (IConnectionPointImpl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+static HRESULT WINAPI WBCP_GetConnectionInterface(LPCONNECTIONPOINT iface, IID* pIId)
+{
+ FIXME("stub: %s\n", debugstr_guid(pIId));
+ return S_OK;
+}
+
+/* Get this connection point's owning container */
+static HRESULT WINAPI
+WBCP_GetConnectionPointContainer(LPCONNECTIONPOINT iface,
+ LPCONNECTIONPOINTCONTAINER *ppCPC)
+{
+ FIXME("stub: IConnectionPointContainer = %p\n", *ppCPC);
+ return S_OK;
+}
+
+/* Connect the pUnkSink event-handling implementation (in the control site)
+ * to this connection point. Return a handle to this connection in
+ * pdwCookie (for later use in Unadvise()).
+ */
+static HRESULT WINAPI WBCP_Advise(LPCONNECTIONPOINT iface,
+ LPUNKNOWN pUnkSink, DWORD *pdwCookie)
+{
+ static int new_cookie;
+
+ FIXME("stub: IUnknown = %p, connection cookie = %ld\n", pUnkSink, *pdwCookie);
+
+ *pdwCookie = ++new_cookie;
+ TRACE ("Returning cookie = %ld\n", *pdwCookie);
+
+ return S_OK;
+}
+
+/* Disconnect this implementation from the connection point. */
+static HRESULT WINAPI WBCP_Unadvise(LPCONNECTIONPOINT iface,
+ DWORD dwCookie)
+{
+ FIXME("stub: cookie to disconnect = %lx\n", dwCookie);
+ return S_OK;
+}
+
+/* Get a list of connections in this connection point. */
+static HRESULT WINAPI WBCP_EnumConnections(LPCONNECTIONPOINT iface,
+ LPENUMCONNECTIONS *ppEnum)
+{
+ FIXME("stub: IEnumConnections = %p\n", *ppEnum);
+ return S_OK;
+}
+
+/**********************************************************************
+ * IConnectionPoint virtual function table for IE Web Browser component
+ */
+
+static IConnectionPointVtbl WBCP_Vtbl =
+{
+ WBCP_QueryInterface,
+ WBCP_AddRef,
+ WBCP_Release,
+ WBCP_GetConnectionInterface,
+ WBCP_GetConnectionPointContainer,
+ WBCP_Advise,
+ WBCP_Unadvise,
+ WBCP_EnumConnections
+};
+
+IConnectionPointImpl SHDOCVW_ConnectionPoint = { &WBCP_Vtbl, 1 };
--- vendor/wine/dlls/shdocvw/current/factory.c 2004-12-31 16:00:23 UTC (rev 12599)
+++ vendor/wine/dlls/shdocvw/current/factory.c 2004-12-31 16:05:11 UTC (rev 12600)
@@ -0,0 +1,121 @@
+/*
+ * Implementation of class factory for IE Web Browser
+ *
+ * Copyright 2001 John R. Sheets (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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+#include "wine/debug.h"
+#include "shdocvw.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+/**********************************************************************
+ * Implement the IWebBrowser class factory
+ *
+ * (Based on implementation in ddraw/main.c)
+ */
+
+/**********************************************************************
+ * WBCF_QueryInterface (IUnknown)
+ */
+static HRESULT WINAPI WBCF_QueryInterface(LPCLASSFACTORY iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+
+ TRACE ("\n");
+
+ /*
+ * Perform a sanity check on the parameters.
+ */
+ if ((This == NULL) || (ppobj == NULL) )
+ return E_INVALIDARG;
+
+ return E_NOINTERFACE;
+}
+
+/************************************************************************
+ * WBCF_AddRef (IUnknown)
+ */
+static ULONG WINAPI WBCF_AddRef(LPCLASSFACTORY iface)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+/************************************************************************
+ * WBCF_Release (IUnknown)
+ */
+static ULONG WINAPI WBCF_Release(LPCLASSFACTORY iface)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+/************************************************************************
+ * WBCF_CreateInstance (IClassFactory)
+ */
+static HRESULT WINAPI WBCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter,
+ REFIID riid, LPVOID *ppobj)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+
+ /* Don't support aggregation (yet?) */
+ if (pOuter)
+ {
+ TRACE ("Failed attempt to aggregate IWebBrowser\n");
+ return CLASS_E_NOAGGREGATION;
+ }
+
+ TRACE("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
+
+ if ((IsEqualGUID (&IID_IOleObject, riid)))
+ {
+ TRACE ("Instantiating IOleObject component\n");
+ *ppobj = (LPVOID)&SHDOCVW_OleObject;
+
+ return S_OK;
+ }
+ return CLASS_E_CLASSNOTAVAILABLE;
+}
+
+/************************************************************************
+ * WBCF_LockServer (IClassFactory)
+ */
+static HRESULT WINAPI WBCF_LockServer(LPCLASSFACTORY iface, BOOL dolock)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+ FIXME("(%p)->(%d),stub!\n", This, dolock);
+ return S_OK;
+}
+
+static IClassFactoryVtbl WBCF_Vtbl =
+{
+ WBCF_QueryInterface,
+ WBCF_AddRef,
+ WBCF_Release,
+ WBCF_CreateInstance,
+ WBCF_LockServer
+};
+
+IClassFactoryImpl SHDOCVW_ClassFactory = { &WBCF_Vtbl, 1 };
--- vendor/wine/dlls/shdocvw/current/misc.c 2004-12-31 16:00:23 UTC (rev 12599)
+++ vendor/wine/dlls/shdocvw/current/misc.c 2004-12-31 16:05:11 UTC (rev 12600)
@@ -0,0 +1,93 @@
+/*
+ * Implementation of miscellaneous interfaces for IE Web Browser control:
+ *
+ * - IQuickActivate
+ *
+ * Copyright 2001 John R. Sheets (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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "wine/debug.h"
+#include "shdocvw.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+/**********************************************************************
+ * Implement the IQuickActivate interface
+ */
+
+static HRESULT WINAPI WBQA_QueryInterface(LPQUICKACTIVATE iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ IQuickActivateImpl *This = (IQuickActivateImpl *)iface;
+
+ FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI WBQA_AddRef(LPQUICKACTIVATE iface)
+{
+ IQuickActivateImpl *This = (IQuickActivateImpl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+static ULONG WINAPI WBQA_Release(LPQUICKACTIVATE iface)
+{
+ IQuickActivateImpl *This = (IQuickActivateImpl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+/* Alternative interface for quicker, easier activation of a control. */
+static HRESULT WINAPI WBQA_QuickActivate(LPQUICKACTIVATE iface,
+ QACONTAINER *pQaContainer,
+ QACONTROL *pQaControl)
+{
+ FIXME("stub: QACONTAINER = %p, QACONTROL = %p\n", pQaContainer, pQaControl);
+ return S_OK;
+}
+
+static HRESULT WINAPI WBQA_SetContentExtent(LPQUICKACTIVATE iface, LPSIZEL pSizel)
+{
+ FIXME("stub: LPSIZEL = %p\n", pSizel);
+ return E_NOINTERFACE;
+}
+
+static HRESULT WINAPI WBQA_GetContentExtent(LPQUICKACTIVATE iface, LPSIZEL pSizel)
+{
+ FIXME("stub: LPSIZEL = %p\n", pSizel);
+ return E_NOINTERFACE;
+}
+
+/**********************************************************************
+ * IQuickActivate virtual function table for IE Web Browser component
+ */
+
+static IQuickActivateVtbl WBQA_Vtbl =
+{
+ WBQA_QueryInterface,
+ WBQA_AddRef,
+ WBQA_Release,
+ WBQA_QuickActivate,
+ WBQA_SetContentExtent,
+ WBQA_GetContentExtent
+};
+
+IQuickActivateImpl SHDOCVW_QuickActivate = { &WBQA_Vtbl, 1 };
--- vendor/wine/dlls/shdocvw/current/oleobject.c 2004-12-31 16:00:23 UTC (rev 12599)
+++ vendor/wine/dlls/shdocvw/current/oleobject.c 2004-12-31 16:05:11 UTC (rev 12600)
@@ -0,0 +1,615 @@
+/*
+ * Implementation of IOleObject interfaces for IE Web Browser
+ *
+ * - IOleObject
+ * - IOleInPlaceObject
+ * - IOleControl
+ *
+ * Copyright 2001 John R. Sheets (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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+#include "wine/debug.h"
+#include "shdocvw.h"
+#include "ole2.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+/**********************************************************************
+ * Implement the IOleObject interface for the web browser component
+ *
+ * Based on DefaultHandler code in dlls/ole32/defaulthandler.c.
+ */
+
+static ULONG WINAPI WBOOBJ_AddRef(LPOLEOBJECT iface);
+static ULONG WINAPI WBOOBJ_Release(LPOLEOBJECT iface);
+
+/************************************************************************
+ * WBOOBJ_QueryInterface (IUnknown)
+ *
+ * Interfaces we need to (at least pretend to) retrieve:
+ *
+ * a6bc3ac0-dbaa-11ce-9de3-00aa004bb851 IID_IProvideClassInfo2
+ * b196b283-bab4-101a-b69c-00aa00341d07 IID_IProvideClassInfo
+ * cf51ed10-62fe-11cf-bf86-00a0c9034836 IID_IQuickActivate
+ * 7fd52380-4e07-101b-ae2d-08002b2ec713 IID_IPersistStreamInit
+ * 0000010a-0000-0000-c000-000000000046 IID_IPersistStorage
+ * b196b284-bab4-101a-b69c-00aa00341d07 IID_IConnectionPointContainer
+ */
+static HRESULT WINAPI WBOOBJ_QueryInterface(LPOLEOBJECT iface,
+ REFIID riid, void** ppobj)
+{
+ IOleObjectImpl *This = (IOleObjectImpl *)iface;
+
+ /*
+ * Perform a sanity check on the parameters.
+ */
+ if ((This == NULL) || (ppobj == NULL) )
+ return E_INVALIDARG;
+
+ if (IsEqualGUID (&IID_IPersistStorage, riid))
+ {
+ TRACE("Returning IID_IPersistStorage interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_PersistStorage;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IPersistStreamInit, riid))
+ {
+ TRACE("Returning IID_IPersistStreamInit interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_PersistStreamInit;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IProvideClassInfo, riid))
+ {
+ TRACE("Returning IID_IProvideClassInfo interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_ProvideClassInfo;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IProvideClassInfo2, riid))
+ {
+ TRACE("Returning IID_IProvideClassInfo2 interface %p\n",
+ &SHDOCVW_ProvideClassInfo2);
+ *ppobj = (LPVOID)&SHDOCVW_ProvideClassInfo2;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IQuickActivate, riid))
+ {
+ TRACE("Returning IID_IQuickActivate interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_QuickActivate;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IConnectionPointContainer, riid))
+ {
+ TRACE("Returning IID_IConnectionPointContainer interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_ConnectionPointContainer;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IOleInPlaceObject, riid))
+ {
+ TRACE("Returning IID_IOleInPlaceObject interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_OleInPlaceObject;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IOleControl, riid))
+ {
+ TRACE("Returning IID_IOleControl interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_OleControl;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IWebBrowser, riid))
+ {
+ TRACE("Returning IID_IWebBrowser interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_WebBrowser;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+ else if (IsEqualGUID (&IID_IDispatch, riid))
+ {
+ TRACE("Returning IID_IDispatch interface\n");
+ *ppobj = (LPVOID)&SHDOCVW_WebBrowser;
+ WBOOBJ_AddRef (iface);
+ return S_OK;
+ }
+
+ TRACE ("Failed to find iid = %s\n", debugstr_guid(riid));
+
+ return E_NOINTERFACE;
+}
+
+/************************************************************************
+ * WBOOBJ_AddRef (IUnknown)
+ */
+static ULONG WINAPI WBOOBJ_AddRef(LPOLEOBJECT iface)
+{
+ IOleObjectImpl *This = (IOleObjectImpl *)iface;
+
+ TRACE("\n");
+ return ++(This->ref);
+}
+
+/************************************************************************
+ * WBOOBJ_Release (IUnknown)
+ */
+static ULONG WINAPI WBOOBJ_Release(LPOLEOBJECT iface)
+{
+ IOleObjectImpl *This = (IOleObjectImpl *)iface;
+
+ /* static class, won't be freed */
+ TRACE("\n");
+ return --(This->ref);
+}
+
+/************************************************************************
+ * WBOOBJ_SetClientSite (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_SetClientSite(LPOLEOBJECT iface,
+ LPOLECLIENTSITE pClientSite)
+{
+ FIXME("stub: (%p, %p)\n", iface, pClientSite);
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_GetClientSite (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_GetClientSite(LPOLEOBJECT iface,
+ LPOLECLIENTSITE* ppClientSite)
+{
+ FIXME("stub: (%p)\n", *ppClientSite);
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_SetHostNames (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_SetHostNames(LPOLEOBJECT iface, LPCOLESTR szContainerApp,
+ LPCOLESTR szContainerObj)
+{
+ FIXME("stub: (%p, %s, %s)\n", iface, debugstr_w(szContainerApp),
+ debugstr_w(szContainerObj));
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_Close (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_Close(LPOLEOBJECT iface, DWORD dwSaveOption)
+{
+ FIXME("stub: ()\n");
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_SetMoniker (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_SetMoniker(LPOLEOBJECT iface,
+ DWORD dwWhichMoniker, IMoniker* pmk)
+{
+ FIXME("stub: (%p, %ld, %p)\n", iface, dwWhichMoniker, pmk);
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_GetMoniker (IOleObject)
+ *
+ * Delegate this request to the client site if we have one.
+ */
+static HRESULT WINAPI WBOOBJ_GetMoniker(LPOLEOBJECT iface, DWORD dwAssign,
+ DWORD dwWhichMoniker, LPMONIKER *ppmk)
+{
+ FIXME("stub (%p, %ld, %ld, %p)\n", iface, dwAssign, dwWhichMoniker, ppmk);
+ return E_FAIL;
+}
+
+/************************************************************************
+ * WBOOBJ_InitFromData (IOleObject)
+ *
+ * This method is meaningless if the server is not running
+ */
+static HRESULT WINAPI WBOOBJ_InitFromData(LPOLEOBJECT iface, LPDATAOBJECT pDataObject,
+ BOOL fCreation, DWORD dwReserved)
+{
+ FIXME("stub: (%p, %p, %d, %ld)\n", iface, pDataObject, fCreation, dwReserved);
+ return OLE_E_NOTRUNNING;
+}
+
+/************************************************************************
+ * WBOOBJ_GetClipboardData (IOleObject)
+ *
+ * This method is meaningless if the server is not running
+ */
+static HRESULT WINAPI WBOOBJ_GetClipboardData(LPOLEOBJECT iface, DWORD dwReserved,
+ LPDATAOBJECT *ppDataObject)
+{
+ FIXME("stub: (%p, %ld, %p)\n", iface, dwReserved, ppDataObject);
+ return OLE_E_NOTRUNNING;
+}
+
+/************************************************************************
+ * WBOOBJ_DoVerb (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_DoVerb(LPOLEOBJECT iface, LONG iVerb, struct tagMSG* lpmsg,
+ LPOLECLIENTSITE pActiveSite, LONG lindex,
+ HWND hwndParent, LPCRECT lprcPosRect)
+{
+ FIXME(": stub iVerb = %ld\n", iVerb);
+ switch (iVerb)
+ {
+ case OLEIVERB_INPLACEACTIVATE:
+ FIXME ("stub for OLEIVERB_INPLACEACTIVATE\n");
+ break;
+ case OLEIVERB_HIDE:
+ FIXME ("stub for OLEIVERB_HIDE\n");
+ break;
+ }
+
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_EnumVerbs (IOleObject)
+ *
+ * Delegate to OleRegEnumVerbs.
+ */
+static HRESULT WINAPI WBOOBJ_EnumVerbs(LPOLEOBJECT iface,
+ IEnumOLEVERB** ppEnumOleVerb)
+{
+ TRACE("(%p, %p)\n", iface, ppEnumOleVerb);
+
+ return OleRegEnumVerbs(&CLSID_WebBrowser, ppEnumOleVerb);
+}
+
+/************************************************************************
+ * WBOOBJ_EnumVerbs (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_Update(LPOLEOBJECT iface)
+{
+ FIXME(": Stub\n");
+ return E_NOTIMPL;
+}
+
+/************************************************************************
+ * WBOOBJ_IsUpToDate (IOleObject)
+ *
+ * This method is meaningless if the server is not running
+ */
+static HRESULT WINAPI WBOOBJ_IsUpToDate(LPOLEOBJECT iface)
+{
+ FIXME("(%p)\n", iface);
+ return OLE_E_NOTRUNNING;
+}
+
+/************************************************************************
+ * WBOOBJ_GetUserClassID (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_GetUserClassID(LPOLEOBJECT iface, CLSID* pClsid)
+{
+ FIXME("stub: (%p, %p)\n", iface, pClsid);
+ return S_OK;
+}
+
+/************************************************************************
+ * WBOOBJ_GetUserType (IOleObject)
+ *
+ * Delegate to OleRegGetUserType.
+ */
+static HRESULT WINAPI WBOOBJ_GetUserType(LPOLEOBJECT iface, DWORD dwFormOfType,
+ LPOLESTR* pszUserType)
+{
+ TRACE("(%p, %ld, %p)\n", iface, dwFormOfType, pszUserType);
+
+ return OleRegGetUserType(&CLSID_WebBrowser, dwFormOfType, pszUserType);
+}
+
+/************************************************************************
+ * WBOOBJ_SetExtent (IOleObject)
+ *
+ * This method is meaningless if the server is not running
+ */
+static HRESULT WINAPI WBOOBJ_SetExtent(LPOLEOBJECT iface, DWORD dwDrawAspect,
+ SIZEL* psizel)
+{
+ FIXME("stub: (%p, %lx, (%ld x %ld))\n", iface, dwDrawAspect,
+ psizel->cx, psizel->cy);
+ return OLE_E_NOTRUNNING;
+}
+
+/************************************************************************
+ * WBOOBJ_GetExtent (IOleObject)
+ */
+static HRESULT WINAPI WBOOBJ_GetExtent(LPOLEOBJECT iface, DWORD dwDrawAspect,
+ SIZEL* psizel)
+{
+ FIXME("stub: (%p, %lx, %p)\n", iface, dwDrawAspect, psizel);
+ return S_OK;
+}
+
+/************************************************************************
[truncated at 1000 lines; 2280 more skipped]