Wine-20041201 vendor drop
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

Added: vendor/wine/dlls/shdocvw/current/Makefile.in
--- 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:

Added: vendor/wine/dlls/shdocvw/current/classinfo.c
--- 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 };

Added: vendor/wine/dlls/shdocvw/current/events.c
--- 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 };

Added: vendor/wine/dlls/shdocvw/current/factory.c
--- 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 };

Added: vendor/wine/dlls/shdocvw/current/misc.c
--- 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 };

Added: vendor/wine/dlls/shdocvw/current/oleobject.c
--- 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]