shdocvw [3/3]: Add a stub implementation of the IOleCache interface

James Hawkins truiken at gmail.com
Fri Oct 6 20:15:22 CDT 2006


Hi,

Changelog:
* Add a stub implementation of the IOleCache interface.

 dlls/shdocvw/Makefile.in  |    1
 dlls/shdocvw/olecache.c   |   97 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/shdocvw/shdocvw.h    |    3 +
 dlls/shdocvw/webbrowser.c |    4 ++
 4 files changed, 105 insertions(+), 0 deletions(-)

-- 
James Hawkins
-------------- next part --------------
diff --git a/dlls/shdocvw/Makefile.in b/dlls/shdocvw/Makefile.in
index 6f9cb94..815369a 100644
--- a/dlls/shdocvw/Makefile.in
+++ b/dlls/shdocvw/Makefile.in
@@ -19,6 +19,7 @@ C_SRCS = \
 	ie.c \
 	iexplore.c \
 	navigate.c \
+	olecache.c \
 	oleobject.c \
 	persist.c \
 	regsvr.c \
diff --git a/dlls/shdocvw/olecache.c b/dlls/shdocvw/olecache.c
new file mode 100644
index 0000000..6849b1b
--- /dev/null
+++ b/dlls/shdocvw/olecache.c
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2006 James Hawkins
+ *
+ * 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 "wine/debug.h"
+#include "shdocvw.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+#define OLECACHE_THIS(iface) DEFINE_THIS(WebBrowser, OleCache, iface)
+
+static HRESULT WINAPI OleCache_QueryInterface(IOleCache *iface, REFIID riid, void **ppv)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppv);
+}
+
+static ULONG WINAPI OleCache_AddRef(IOleCache *iface)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    return IWebBrowser2_AddRef(WEBBROWSER(This));
+}
+
+static ULONG WINAPI OleCache_Release(IOleCache *iface)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    return IWebBrowser2_Release(WEBBROWSER(This));
+}
+
+static HRESULT WINAPI OleCache_Cache(IOleCache *iface, FORMATETC *pFormatetc,
+                                     DWORD advf, DWORD *pdwConnection)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    FIXME("(%p)->(%p, %d, %p)\n", This, pFormatetc, advf, pdwConnection);
+    return S_OK;
+}
+
+static HRESULT WINAPI OleCache_Uncache(IOleCache *iface, DWORD dwConnection)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    FIXME("(%p)->(%d)\n", This, dwConnection);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleCache_EnumCache(IOleCache *iface, IEnumSTATDATA **ppenumSTATDATA)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, ppenumSTATDATA);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleCache_InitCache(IOleCache *iface, IDataObject *pDataObject)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, pDataObject);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleCache_SetData(IOleCache *iface, FORMATETC *pFormatetc,
+                                       STGMEDIUM *pmedium, BOOL fRelease)
+{
+    WebBrowser *This = OLECACHE_THIS(iface);
+    FIXME("(%p)->(%p, %p, %d)\n", This, pFormatetc, pmedium, fRelease);
+    return E_NOTIMPL;
+}
+
+static const IOleCacheVtbl OleCacheVtbl = {
+    OleCache_QueryInterface,
+    OleCache_AddRef,
+    OleCache_Release,
+    OleCache_Cache,
+    OleCache_Uncache,
+    OleCache_EnumCache,
+    OleCache_InitCache,
+    OleCache_SetData
+};
+
+#undef OLECACHE_THIS
+
+void WebBrowser_OleCache_Init(WebBrowser *This)
+{
+    This->lpOleCacheVtbl = &OleCacheVtbl;
+}
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index 193fbfc..dbfdf5b 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -102,6 +102,7 @@ struct WebBrowser {
     const IOleCommandTargetVtbl         *lpOleCommandTargetVtbl;
     const IHlinkFrameVtbl               *lpHlinkFrameVtbl;
     const IRunnableObjectVtbl           *lpRunnableObjectVtbl;
+    const IOleCacheVtbl                 *lpOleCacheVtbl;
 
     LONG ref;
 
@@ -159,6 +160,7 @@ #define ACTIVEOBJ(x)    ((IOleInPlaceAct
 #define OLECMD(x)       ((IOleCommandTarget*)           &(x)->lpOleCommandTargetVtbl)
 #define HLINKFRAME(x)   ((IHlinkFrame*)                 &(x)->lpHlinkFrameVtbl)
 #define RUNNABLEOBJ(x)  ((IRunnableObject*)             &(x)->lpRunnableObjectVtbl)
+#define OLECACHE(x)     ((IOleCache*)                   &(x)->lpOleCacheVtbl)
 
 #define CLIENTSITE(x)   ((IOleClientSite*)              &(x)->lpOleClientSiteVtbl)
 #define INPLACESITE(x)  ((IOleInPlaceSite*)             &(x)->lpOleInPlaceSiteVtbl)
@@ -176,6 +178,7 @@ void WebBrowser_Persist_Init(WebBrowser*
 void WebBrowser_ClassInfo_Init(WebBrowser*);
 void WebBrowser_HlinkFrame_Init(WebBrowser*);
 void WebBrowser_RunnableObject_Init(WebBrowser*);
+void WebBrowser_OleCache_Init(WebBrowser*);
 
 void WebBrowser_OleObject_Destroy(WebBrowser*);
 
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index 1953909..891e62a 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -105,6 +105,9 @@ static HRESULT WINAPI WebBrowser_QueryIn
     }else if(IsEqualGUID(&IID_IRunnableObject, riid)) {
         TRACE("(%p)->(IID_IRunnableObject %p)\n", This, ppv);
         *ppv = RUNNABLEOBJ(This);
+    }else if(IsEqualGUID(&IID_IOleCache, riid)) {
+        TRACE("(%p)->(IID_IOleCache %p)\n", This, ppv);
+        *ppv = OLECACHE(This);
     }
 
     if(*ppv) {
@@ -967,6 +970,7 @@ static HRESULT WebBrowser_Create(INT ver
     WebBrowser_ClassInfo_Init(ret);
     WebBrowser_HlinkFrame_Init(ret);
     WebBrowser_RunnableObject_Init(ret);
+    WebBrowser_OleCache_Init(ret);
 
     hres = IWebBrowser_QueryInterface(WEBBROWSER(ret), riid, ppv);
     if(SUCCEEDED(hres)) {
-- 
1.4.2.1


More information about the wine-patches mailing list