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