Jacek Caban : itss: Added IInternetProtocolInfo interface stub implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Feb 23 05:28:14 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Feb 22 21:10:42 2007 +0100

itss: Added IInternetProtocolInfo interface stub implementation.

---

 dlls/itss/protocol.c       |   82 ++++++++++++++++++++++++++++++++++++++++++-
 dlls/itss/tests/protocol.c |   15 ++++++++
 2 files changed, 95 insertions(+), 2 deletions(-)

diff --git a/dlls/itss/protocol.c b/dlls/itss/protocol.c
index 357476d..8286aed 100644
--- a/dlls/itss/protocol.c
+++ b/dlls/itss/protocol.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Jacek Caban for CodeWeavers
+ * Copyright 2006-2007 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
@@ -36,7 +36,8 @@
 WINE_DEFAULT_DEBUG_CHANNEL(itss);
 
 typedef struct {
-    const IInternetProtocolVtbl  *lpInternetProtocolVtbl;
+    const IInternetProtocolVtbl     *lpInternetProtocolVtbl;
+    const IInternetProtocolInfoVtbl *lpInternetProtocolInfoVtbl;
 
     LONG ref;
 
@@ -46,6 +47,7 @@ typedef struct {
 } ITSProtocol;
 
 #define PROTOCOL(x)  ((IInternetProtocol*)  &(x)->lpInternetProtocolVtbl)
+#define PROTINFO(x)  ((IInternetProtocolInfo*) &(x)->lpInternetProtocolInfoVtbl)
 
 static void release_chm(ITSProtocol *This)
 {
@@ -72,6 +74,9 @@ static HRESULT WINAPI ITSProtocol_QueryInterface(IInternetProtocol *iface, REFII
     }else if(IsEqualGUID(&IID_IInternetProtocol, riid)) {
         TRACE("(%p)->(IID_IInternetProtocol %p)\n", This, ppv);
         *ppv = PROTOCOL(This);
+    }else if(IsEqualGUID(&IID_IInternetProtocolInfo, riid)) {
+        TRACE("(%p)->(IID_IInternetProtocolInfo %p)\n", This, ppv);
+        *ppv = PROTINFO(This);
     }
 
     if(*ppv) {
@@ -338,6 +343,78 @@ static const IInternetProtocolVtbl ITSProtocolVtbl = {
     ITSProtocol_UnlockRequest
 };
 
+#define PROTINFO_THIS(iface) DEFINE_THIS(ITSProtocol, InternetProtocolInfo, iface)
+
+static HRESULT WINAPI ITSProtocolInfo_QueryInterface(IInternetProtocolInfo *iface,
+                                              REFIID riid, void **ppv)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    return IInternetProtocol_QueryInterface(PROTOCOL(This), riid, ppv);
+}
+
+static ULONG WINAPI ITSProtocolInfo_AddRef(IInternetProtocolInfo *iface)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    return IInternetProtocol_AddRef(PROTOCOL(This));
+}
+
+static ULONG WINAPI ITSProtocolInfo_Release(IInternetProtocolInfo *iface)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    return IInternetProtocol_Release(PROTOCOL(This));
+}
+
+static HRESULT WINAPI ITSProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl,
+        PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult,
+        DWORD *pcchResult, DWORD dwReserved)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    FIXME("(%p)->(%s %x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), ParseAction,
+          dwParseFlags, pwzResult, cchResult, pcchResult, dwReserved);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
+        LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult,
+        DWORD cchResult, DWORD* pcchResult, DWORD dwReserved)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    FIXME("(%p)->(%s %s %08x %p %d %p %d)\n", This, debugstr_w(pwzBaseUrl),
+            debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult,
+            pcchResult, dwReserved);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ITSProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1,
+        LPCWSTR pwzUrl2, DWORD dwCompareFlags)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    FIXME("%p)->(%s %s %08x)\n", This, debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ITSProtocolInfo_QueryInfo(IInternetProtocolInfo *iface, LPCWSTR pwzUrl,
+        QUERYOPTION QueryOption, DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD* pcbBuf,
+        DWORD dwReserved)
+{
+    ITSProtocol *This = PROTINFO_THIS(iface);
+    FIXME("(%p)->(%s %08x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), QueryOption,
+          dwQueryFlags, pBuffer, cbBuffer, pcbBuf, dwReserved);
+    return E_NOTIMPL;
+}
+
+#undef PROTINFO_THIS
+
+static const IInternetProtocolInfoVtbl ITSProtocolInfoVtbl = {
+    ITSProtocolInfo_QueryInterface,
+    ITSProtocolInfo_AddRef,
+    ITSProtocolInfo_Release,
+    ITSProtocolInfo_ParseUrl,
+    ITSProtocolInfo_CombineUrl,
+    ITSProtocolInfo_CompareUrl,
+    ITSProtocolInfo_QueryInfo
+};
+
 HRESULT ITSProtocol_create(IUnknown *pUnkOuter, LPVOID *ppobj)
 {
     ITSProtocol *ret;
@@ -349,6 +426,7 @@ HRESULT ITSProtocol_create(IUnknown *pUnkOuter, LPVOID *ppobj)
     ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ITSProtocol));
 
     ret->lpInternetProtocolVtbl = &ITSProtocolVtbl;
+    ret->lpInternetProtocolInfoVtbl = &ITSProtocolInfoVtbl;
     ret->ref = 1;
 
     *ppobj = PROTOCOL(ret);
diff --git a/dlls/itss/tests/protocol.c b/dlls/itss/tests/protocol.c
index c9f7e95..4cdf09f 100644
--- a/dlls/itss/tests/protocol.c
+++ b/dlls/itss/tests/protocol.c
@@ -393,6 +393,19 @@ static void test_protocol_url(IClassFactory *factory, LPCWSTR url)
     read_protocol = NULL;
 }
 
+static void test_its_protocol_info(IInternetProtocol *protocol)
+{
+    IInternetProtocolInfo *info;
+    HRESULT hres;
+
+    hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetProtocolInfo, (void**)&info);
+    ok(hres == S_OK, "Could not get IInternetProtocolInfo interface: %08x\n", hres);
+    if(FAILED(hres))
+        return;
+
+    IInternetProtocolInfo_Release(info);
+}
+
 static void test_its_protocol(void)
 {
     IInternetProtocolInfo *info;
@@ -442,6 +455,8 @@ static void test_its_protocol(void)
         hres = IClassFactory_CreateInstance(factory, NULL, &IID_IInternetProtocol, (void**)&protocol);
         ok(hres == S_OK, "Could not get IInternetProtocol: %08x\n", hres);
         if(SUCCEEDED(hres)) {
+            test_its_protocol_info(protocol);
+
             test_protocol_fail(protocol, wrong_url1, STG_E_FILENOTFOUND);
             test_protocol_fail(protocol, wrong_url2, STG_E_FILENOTFOUND);
             test_protocol_fail(protocol, wrong_url3, STG_E_FILENOTFOUND);




More information about the wine-cvs mailing list