Jacek Caban : urlmon: Added DeCompMimeFilter stub implementation.

Alexandre Julliard julliard at winehq.org
Tue Apr 7 09:04:38 CDT 2009


Module: wine
Branch: master
Commit: 11a6f3539f6b3cf4ab61fbc1a64f7ea0a024a974
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=11a6f3539f6b3cf4ab61fbc1a64f7ea0a024a974

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Apr  7 00:14:26 2009 +0200

urlmon: Added DeCompMimeFilter stub implementation.

---

 dlls/urlmon/Makefile.in   |    1 +
 dlls/urlmon/mimefilter.c  |  192 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/urlmon/urlmon_main.c |    5 +-
 dlls/urlmon/urlmon_main.h |    1 +
 4 files changed, 198 insertions(+), 1 deletions(-)

diff --git a/dlls/urlmon/Makefile.in b/dlls/urlmon/Makefile.in
index 825eab2..bd6a256 100644
--- a/dlls/urlmon/Makefile.in
+++ b/dlls/urlmon/Makefile.in
@@ -17,6 +17,7 @@ C_SRCS = \
 	gopher.c \
 	http.c \
 	internet.c \
+	mimefilter.c \
 	mk.c \
 	protocol.c \
 	regsvr.c \
diff --git a/dlls/urlmon/mimefilter.c b/dlls/urlmon/mimefilter.c
new file mode 100644
index 0000000..9964612
--- /dev/null
+++ b/dlls/urlmon/mimefilter.c
@@ -0,0 +1,192 @@
+/*
+ * Copyright 2009 Jacek Caban 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "urlmon_main.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
+
+typedef struct {
+    const IInternetProtocolVtbl  *lpIInternetProtocolVtbl;
+
+    LONG ref;
+} MimeFilter;
+
+#define PROTOCOL(x)  ((IInternetProtocol*)  &(x)->lpIInternetProtocolVtbl)
+
+#define PROTOCOL_THIS(iface) DEFINE_THIS(MimeFilter, IInternetProtocol, iface)
+
+static HRESULT WINAPI MimeFilterProtocol_QueryInterface(IInternetProtocol *iface, REFIID riid, void **ppv)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+
+    *ppv = NULL;
+    if(IsEqualGUID(&IID_IUnknown, riid)) {
+        TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+        *ppv = PROTOCOL(This);
+    }else if(IsEqualGUID(&IID_IInternetProtocolRoot, riid)) {
+        TRACE("(%p)->(IID_IInternetProtocolRoot %p)\n", This, ppv);
+        *ppv = PROTOCOL(This);
+    }else if(IsEqualGUID(&IID_IInternetProtocol, riid)) {
+        TRACE("(%p)->(IID_IInternetProtocol %p)\n", This, ppv);
+        *ppv = PROTOCOL(This);
+    }
+
+    if(*ppv) {
+        IInternetProtocol_AddRef(iface);
+        return S_OK;
+    }
+
+    WARN("not supported interface %s\n", debugstr_guid(riid));
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI MimeFilterProtocol_AddRef(IInternetProtocol *iface)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    LONG ref = InterlockedIncrement(&This->ref);
+    TRACE("(%p) ref=%d\n", This, ref);
+    return ref;
+}
+
+static ULONG WINAPI MimeFilterProtocol_Release(IInternetProtocol *iface)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    LONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) ref=%d\n", This, ref);
+
+    if(!ref) {
+        heap_free(This);
+
+        URLMON_UnlockModule();
+    }
+
+    return ref;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
+        IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI, HANDLE_PTR dwReserved)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink,
+          pOIBindInfo, grfPI, dwReserved);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Continue(IInternetProtocol *iface, PROTOCOLDATA *pProtocolData)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, pProtocolData);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Abort(IInternetProtocol *iface, HRESULT hrReason,
+        DWORD dwOptions)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%08x %08x)\n", This, hrReason, dwOptions);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Terminate(IInternetProtocol *iface, DWORD dwOptions)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%08x)\n", This, dwOptions);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Suspend(IInternetProtocol *iface)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Resume(IInternetProtocol *iface)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Read(IInternetProtocol *iface, void *pv,
+        ULONG cb, ULONG *pcbRead)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_Seek(IInternetProtocol *iface, LARGE_INTEGER dlibMove,
+        DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_LockRequest(IInternetProtocol *iface, DWORD dwOptions)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%08x)\n", This, dwOptions);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI MimeFilterProtocol_UnlockRequest(IInternetProtocol *iface)
+{
+    MimeFilter *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+#undef PROTOCOL_THIS
+
+static const IInternetProtocolVtbl MimeFilterProtocolVtbl = {
+    MimeFilterProtocol_QueryInterface,
+    MimeFilterProtocol_AddRef,
+    MimeFilterProtocol_Release,
+    MimeFilterProtocol_Start,
+    MimeFilterProtocol_Continue,
+    MimeFilterProtocol_Abort,
+    MimeFilterProtocol_Terminate,
+    MimeFilterProtocol_Suspend,
+    MimeFilterProtocol_Resume,
+    MimeFilterProtocol_Read,
+    MimeFilterProtocol_Seek,
+    MimeFilterProtocol_LockRequest,
+    MimeFilterProtocol_UnlockRequest
+};
+
+HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
+{
+    MimeFilter *ret;
+
+    TRACE("(%p %p)\n", pUnkOuter, ppobj);
+
+    URLMON_LockModule();
+
+    ret = heap_alloc_zero(sizeof(MimeFilter));
+
+    ret->lpIInternetProtocolVtbl = &MimeFilterProtocolVtbl;
+    ret->ref = 1;
+
+    *ppobj = PROTOCOL(ret);
+    return S_OK;
+}
diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c
index ad1b07b..8561937 100644
--- a/dlls/urlmon/urlmon_main.c
+++ b/dlls/urlmon/urlmon_main.c
@@ -187,6 +187,8 @@ static const ClassFactory ZoneManagerCF =
     { &ClassFactoryVtbl, ZoneMgrImpl_Construct};
 static const ClassFactory StdURLMonikerCF =
     { &ClassFactoryVtbl, StdURLMoniker_Construct};
+static const ClassFactory MimeFilterCF =
+    { &ClassFactoryVtbl, MimeFilter_Construct};
  
 struct object_creation_info
 {
@@ -212,7 +214,8 @@ static const struct object_creation_info object_creation[] =
     { &CLSID_MkProtocol,              CLASSFACTORY(&MkProtocolCF),      wszMk },
     { &CLSID_InternetSecurityManager, CLASSFACTORY(&SecurityManagerCF), NULL    },
     { &CLSID_InternetZoneManager,     CLASSFACTORY(&ZoneManagerCF),     NULL    },
-    { &CLSID_StdURLMoniker,           CLASSFACTORY(&StdURLMonikerCF),   NULL    }
+    { &CLSID_StdURLMoniker,           CLASSFACTORY(&StdURLMonikerCF),   NULL    },
+    { &CLSID_DeCompMimeFilter,        CLASSFACTORY(&MimeFilterCF),      NULL    }
 };
 
 static void init_session(BOOL init)
diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h
index 0d9a966..1ee2eec 100644
--- a/dlls/urlmon/urlmon_main.h
+++ b/dlls/urlmon/urlmon_main.h
@@ -45,6 +45,7 @@ extern HRESULT HttpSProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 extern HRESULT FtpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 extern HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 extern HRESULT MkProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
+extern HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 
 /**********************************************************************
  * Dll lifetime tracking declaration for urlmon.dll




More information about the wine-cvs mailing list