Thomas Mullaly : urlmon: Added stub for CoInternetCombineUrlEx.

Alexandre Julliard julliard at winehq.org
Mon Nov 15 13:28:53 CST 2010


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

Author: Thomas Mullaly <thomas.mullaly at gmail.com>
Date:   Wed Nov 10 22:31:35 2010 -0500

urlmon: Added stub for CoInternetCombineUrlEx.

---

 dlls/urlmon/tests/uri.c |   38 ++++++++++++++++++++++++++++++++++++++
 dlls/urlmon/uri.c       |   25 +++++++++++++++++++++++++
 dlls/urlmon/urlmon.spec |    1 +
 include/urlmon.idl      |    1 +
 4 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c
index 8c4fd38..c06c4cd 100644
--- a/dlls/urlmon/tests/uri.c
+++ b/dlls/urlmon/tests/uri.c
@@ -67,6 +67,7 @@ static HRESULT (WINAPI *pCreateUriWithFragment)(LPCWSTR, LPCWSTR, DWORD, DWORD_P
 static HRESULT (WINAPI *pCreateIUriBuilder)(IUri*, DWORD, DWORD_PTR, IUriBuilder**);
 static HRESULT (WINAPI *pCoInternetCombineIUri)(IUri*,IUri*,DWORD,IUri**,DWORD_PTR);
 static HRESULT (WINAPI *pCoInternetGetSession)(DWORD,IInternetSession**,DWORD);
+static HRESULT (WINAPI *pCoInternetCombineUrlEx)(IUri*,LPCWSTR,DWORD,IUri**,DWORD_PTR);
 
 static const WCHAR http_urlW[] = { 'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q',
         '.','o','r','g','/',0};
@@ -9285,6 +9286,39 @@ static void test_CoInternetCombineIUri_Pluggable(void) {
     unregister_protocols();
 }
 
+static void test_CoInternetCombineUrlEx(void) {
+    HRESULT hr;
+    IUri *base, *result;
+
+    base = NULL;
+    hr = pCreateUri(http_urlW, 0, 0, &base);
+    ok(SUCCEEDED(hr), "Error: CreateUri returned 0x%08x.\n", hr);
+    if(SUCCEEDED(hr)) {
+        result = (void*) 0xdeadbeef;
+        hr = pCoInternetCombineUrlEx(base, NULL, 0, &result, 0);
+        ok(hr == E_UNEXPECTED, "Error: CoInternetCombineUrlEx returned 0x%08x, expected 0x%08x.\n",
+            hr, E_UNEXPECTED);
+        ok(!result, "Error: Expected 'result' to be NULL was %p instead.\n", result);
+    }
+
+    result = (void*) 0xdeadbeef;
+    hr = pCoInternetCombineUrlEx(NULL, http_urlW, 0, &result, 0);
+    ok(hr == E_INVALIDARG, "Error: CoInternetCombineUrlEx returned 0x%08x, expected 0x%08x.\n",
+        hr, E_INVALIDARG);
+    ok(!result, "Error: Expected 'result' to be NULL, but was %p instead.\n", result);
+
+    result = (void*) 0xdeadbeef;
+    hr = pCoInternetCombineUrlEx(NULL, NULL, 0, &result, 0);
+    ok(hr == E_UNEXPECTED, "Error: CoInternetCombineUrlEx returned 0x%08x, expected 0x%08x.\n",
+        hr, E_UNEXPECTED);
+    ok(!result, "Error: Expected 'result' to be NULL, but was %p instead.\n", result);
+
+    hr = pCoInternetCombineUrlEx(base, http_urlW, 0, NULL, 0);
+    ok(hr == E_POINTER, "Error: CoInternetCombineUrlEx returned 0x%08x, expected 0x%08x.\n",
+        hr, E_POINTER);
+    if(base) IUri_Release(base);
+}
+
 START_TEST(uri) {
     HMODULE hurlmon;
 
@@ -9294,6 +9328,7 @@ START_TEST(uri) {
     pCreateUriWithFragment = (void*) GetProcAddress(hurlmon, "CreateUriWithFragment");
     pCreateIUriBuilder = (void*) GetProcAddress(hurlmon, "CreateIUriBuilder");
     pCoInternetCombineIUri = (void*) GetProcAddress(hurlmon, "CoInternetCombineIUri");
+    pCoInternetCombineUrlEx = (void*) GetProcAddress(hurlmon, "CoInternetCombineUrlEx");
 
     if(!pCreateUri) {
         win_skip("CreateUri is not present, skipping tests.\n");
@@ -9369,6 +9404,9 @@ START_TEST(uri) {
     trace("test CoInternetCombineIUri...\n");
     test_CoInternetCombineIUri();
 
+    trace("test CoInternetCombineUrlEx...\n");
+    test_CoInternetCombineUrlEx();
+
     trace("test CoInternetCombineIUri pluggable...\n");
     test_CoInternetCombineIUri_Pluggable();
 }
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c
index 6ed71e1..518c6d0 100644
--- a/dlls/urlmon/uri.c
+++ b/dlls/urlmon/uri.c
@@ -6009,3 +6009,28 @@ HRESULT WINAPI CoInternetCombineIUri(IUri *pBaseUri, IUri *pRelativeUri, DWORD d
 
     return combine_uri(base, relative, dwCombineFlags, ppCombinedUri);
 }
+
+/***********************************************************************
+ *           CoInternetCombineUrlEx (urlmon.@)
+ */
+HRESULT WINAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags,
+                                      IUri **ppCombinedUri, DWORD_PTR dwReserved)
+{
+    TRACE("(%p %s %x %p %x) stub\n", pBaseUri, debugstr_w(pwzRelativeUrl), dwCombineFlags,
+        ppCombinedUri, (DWORD)dwReserved);
+
+    if(!ppCombinedUri)
+        return E_POINTER;
+
+    if(!pwzRelativeUrl) {
+        *ppCombinedUri = NULL;
+        return E_UNEXPECTED;
+    }
+
+    if(!pBaseUri) {
+        *ppCombinedUri = NULL;
+        return E_INVALIDARG;
+    }
+
+    return E_NOTIMPL;
+}
diff --git a/dlls/urlmon/urlmon.spec b/dlls/urlmon/urlmon.spec
index ff1adea..a4173d7 100644
--- a/dlls/urlmon/urlmon.spec
+++ b/dlls/urlmon/urlmon.spec
@@ -11,6 +11,7 @@
 @ stdcall CoGetClassObjectFromURL(ptr wstr long long wstr ptr long ptr ptr ptr)
 @ stub CoInstall
 @ stdcall CoInternetCombineUrl(wstr wstr long wstr long ptr long)
+@ stdcall CoInternetCombineUrlEx(ptr wstr long ptr long)
 @ stdcall CoInternetCompareUrl(wstr wstr long)
 @ stdcall CoInternetCombineIUri(ptr ptr long ptr long)
 @ stdcall CoInternetCreateSecurityManager(ptr ptr long)
diff --git a/include/urlmon.idl b/include/urlmon.idl
index e50975d..7a92e21 100644
--- a/include/urlmon.idl
+++ b/include/urlmon.idl
@@ -1930,6 +1930,7 @@ cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumF
 cpp_quote("HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx*,DWORD,IBindStatusCallback*,IEnumFORMATETC*,IBindCtx**,DWORD);")
 cpp_quote("HRESULT WINAPI CoInternetCreateSecurityManager(IServiceProvider*,IInternetSecurityManager**,DWORD);")
 cpp_quote("HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetCombineUrlEx(IUri*,LPCWSTR,DWORD,IUri**,DWORD_PTR);")
 cpp_quote("HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);")
 cpp_quote("HRESULT WINAPI CoInternetCombineIUri(IUri*,IUri*,DWORD,IUri**,DWORD_PTR);")
 cpp_quote("HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD);")




More information about the wine-cvs mailing list