Jacek Caban : itss: Added ParseUrl implementation.

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


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

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

itss: Added ParseUrl implementation.

---

 dlls/itss/protocol.c       |   17 +++++++++++++-
 dlls/itss/tests/protocol.c |   48 ++++++++++++++++++++++++++-----------------
 2 files changed, 44 insertions(+), 21 deletions(-)

diff --git a/dlls/itss/protocol.c b/dlls/itss/protocol.c
index 8286aed..44345db 100644
--- a/dlls/itss/protocol.c
+++ b/dlls/itss/protocol.c
@@ -369,9 +369,22 @@ static HRESULT WINAPI ITSProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPC
         DWORD *pcchResult, DWORD dwReserved)
 {
     ITSProtocol *This = PROTINFO_THIS(iface);
-    FIXME("(%p)->(%s %x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), ParseAction,
+
+    TRACE("(%p)->(%s %x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), ParseAction,
           dwParseFlags, pwzResult, cchResult, pcchResult, dwReserved);
-    return E_NOTIMPL;
+
+    switch(ParseAction) {
+    case PARSE_CANONICALIZE:
+        FIXME("PARSE_CANONICALIZE\n");
+        return E_NOTIMPL;
+    case PARSE_SECURITY_URL:
+        FIXME("PARSE_SECURITY_URL\n");
+        return E_NOTIMPL;
+    default:
+        return INET_E_DEFAULT_ACTION;
+    }
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
diff --git a/dlls/itss/tests/protocol.c b/dlls/itss/tests/protocol.c
index 4cdf09f..4ef8045 100644
--- a/dlls/itss/tests/protocol.c
+++ b/dlls/itss/tests/protocol.c
@@ -68,6 +68,22 @@ DEFINE_EXPECT(ReportResult);
 static HRESULT expect_hrResult;
 static IInternetProtocol *read_protocol = NULL;
 
+static const WCHAR blank_url1[] = {'i','t','s',':',
+    't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
+static const WCHAR blank_url2[] = {'m','S','-','i','T','s',':',
+    't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
+static const WCHAR blank_url3[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':',
+    't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
+static const WCHAR blank_url4[] = {'i','t','s',':',
+    't','e','s','t','.','c','h','m',':',':','b','l','a','n','k','.','h','t','m','l',0};
+static const WCHAR blank_url5[] = {'i','t','s',':',
+    't','e','s','t','.','c','h','m',':',':','\\','b','l','a','n','k','.','h','t','m','l',0};
+static const WCHAR blank_url6[] = {'i','t','s',':',
+    't','e','s','t','.','c','h','m',':',':','/','%','6','2','l','a','n','k','.','h','t','m','l',0};
+static const WCHAR blank_url7[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':',
+    't','e','s','t','.','c','h','m',':',':','\\','b','l','a','n','k','.','h','t','m','l',0};
+
+
 static enum {
     ITS_PROTOCOL,
     MK_PROTOCOL
@@ -396,6 +412,8 @@ static void test_protocol_url(IClassFactory *factory, LPCWSTR url)
 static void test_its_protocol_info(IInternetProtocol *protocol)
 {
     IInternetProtocolInfo *info;
+    WCHAR buf[1024];
+    DWORD size, i;
     HRESULT hres;
 
     hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetProtocolInfo, (void**)&info);
@@ -403,6 +421,15 @@ static void test_its_protocol_info(IInternetProtocol *protocol)
     if(FAILED(hres))
         return;
 
+    for(i = PARSE_CANONICALIZE; i <= PARSE_UNESCAPE; i++) {
+        if(i != PARSE_CANONICALIZE && i != PARSE_SECURITY_URL) {
+            hres = IInternetProtocolInfo_ParseUrl(info, blank_url1, i, 0, buf,
+                    sizeof(buf)/sizeof(buf[0]), &size, 0);
+            ok(hres == INET_E_DEFAULT_ACTION,
+               "[%d] failed: %08x, expected INET_E_DEFAULT_ACTION\n", i, hres);
+        }
+    }
+
     IInternetProtocolInfo_Release(info);
 }
 
@@ -414,18 +441,6 @@ static void test_its_protocol(void)
     ULONG ref;
     HRESULT hres;
 
-    static const WCHAR blank_url1[] = {'i','t','s',':',
-        't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
-    static const WCHAR blank_url2[] = {'m','S','-','i','T','s',':',
-         't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
-    static const WCHAR blank_url3[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':',
-         't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
-    static const WCHAR blank_url4[] = {'i','t','s',':',
-        't','e','s','t','.','c','h','m',':',':','b','l','a','n','k','.','h','t','m','l',0};
-    static const WCHAR blank_url5[] = {'i','t','s',':',
-        't','e','s','t','.','c','h','m',':',':','\\','b','l','a','n','k','.','h','t','m','l',0};
-    static const WCHAR blank_url6[] = {'i','t','s',':',
-        't','e','s','t','.','c','h','m',':',':','/','%','6','2','l','a','n','k','.','h','t','m','l',0};
     static const WCHAR wrong_url1[] =
         {'i','t','s',':','t','e','s','t','.','c','h','m',':',':','/','b','l','a','n','.','h','t','m','l',0};
     static const WCHAR wrong_url2[] =
@@ -491,11 +506,6 @@ static void test_mk_protocol(void)
     IClassFactory *cf;
     HRESULT hres;
 
-    static const WCHAR blank_url1[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':',
-         't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
-    static const WCHAR blank_url2[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':',
-         't','e','s','t','.','c','h','m',':',':','\\','b','l','a','n','k','.','h','t','m','l',0};
-
     test_protocol = MK_PROTOCOL;
 
     hres = CoGetClassObject(&CLSID_MkProtocol, CLSCTX_INPROC_SERVER, NULL, &IID_IClassFactory,
@@ -505,9 +515,9 @@ static void test_mk_protocol(void)
         return;
 
     cache_file = cache_file1;
-    test_protocol_url(cf, blank_url1);
+    test_protocol_url(cf, blank_url3);
     cache_file = cache_file2;
-    test_protocol_url(cf, blank_url2);
+    test_protocol_url(cf, blank_url7);
 
     IClassFactory_Release(cf);
 }




More information about the wine-cvs mailing list