Jacek Caban : urlmon: Store BindProtocol as IInternetProtocolEx.

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


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Nov 15 12:37:03 2010 +0100

urlmon: Store BindProtocol as IInternetProtocolEx.

---

 dlls/urlmon/binding.c     |    8 ++++----
 dlls/urlmon/bindprot.c    |   14 +++++++-------
 dlls/urlmon/session.c     |   10 +++++++++-
 dlls/urlmon/urlmon_main.h |    6 +++---
 4 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c
index 99aaf02..c27213a 100644
--- a/dlls/urlmon/binding.c
+++ b/dlls/urlmon/binding.c
@@ -42,7 +42,7 @@ typedef struct {
 
     LONG ref;
 
-    IInternetProtocol *protocol;
+    IInternetProtocolEx *protocol;
 
     BYTE buf[1024*8];
     DWORD size;
@@ -88,7 +88,7 @@ struct Binding {
     LONG ref;
 
     IBindStatusCallback *callback;
-    IInternetProtocol *protocol;
+    IInternetProtocolEx *protocol;
     IServiceProvider *service_provider;
 
     stgmed_buf_t *stgmed_buf;
@@ -427,7 +427,7 @@ static const IUnknownVtbl StgMedUnkVtbl = {
     StgMedUnk_Release
 };
 
-static stgmed_buf_t *create_stgmed_buf(IInternetProtocol *protocol)
+static stgmed_buf_t *create_stgmed_buf(IInternetProtocolEx *protocol)
 {
     stgmed_buf_t *ret = heap_alloc(sizeof(*ret));
 
@@ -1487,7 +1487,7 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, LPCWSTR url,
         ret->protocol = binding_ctx->protocol;
         IInternetProtocol_AddRef(ret->protocol);
     }else {
-        hres = create_binding_protocol(url, TRUE, &ret->protocol);
+        hres = create_binding_protocol(TRUE, &ret->protocol);
         if(FAILED(hres)) {
             WARN("Could not get protocol handler\n");
             IBinding_Release(BINDING(ret));
diff --git a/dlls/urlmon/bindprot.c b/dlls/urlmon/bindprot.c
index 2e103e3..4acef40 100644
--- a/dlls/urlmon/bindprot.c
+++ b/dlls/urlmon/bindprot.c
@@ -388,7 +388,7 @@ static ULONG WINAPI BindProtocol_Release(IInternetProtocolEx *iface)
         if(This->uri)
             IUri_Release(This->uri);
 
-        set_binding_sink((IInternetProtocol*)PROTOCOLEX(This), NULL, NULL);
+        set_binding_sink(PROTOCOLEX(This), NULL, NULL);
 
         if(This->notif_hwnd)
             release_notif_hwnd(This->notif_hwnd);
@@ -581,7 +581,7 @@ static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr
     if(urlmon_protocol)
         IInternetProtocol_QueryInterface(protocol, &IID_IWinInetInfo, (void**)&This->wininet_info);
 
-    set_binding_sink((IInternetProtocol*)PROTOCOLEX(This), pOIProtSink, pOIBindInfo);
+    set_binding_sink(PROTOCOLEX(This), pOIProtSink, pOIBindInfo);
 
     hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetPriority, (void**)&priority);
     if(SUCCEEDED(hres)) {
@@ -607,7 +607,7 @@ static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr
     return hres;
 }
 
-void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *sink, IInternetBindInfo *bind_info)
+void set_binding_sink(IInternetProtocolEx *bind_protocol, IInternetProtocolSink *sink, IInternetBindInfo *bind_info)
 {
     BindProtocol *This = PROTOCOL_THIS(bind_protocol);
     IInternetProtocolSink *prev_sink;
@@ -632,7 +632,7 @@ void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *s
         IInternetBindInfo_Release(bind_info);
 }
 
-IWinInetInfo *get_wininet_info(IInternetProtocol *bind_protocol)
+IWinInetInfo *get_wininet_info(IInternetProtocolEx *bind_protocol)
 {
     BindProtocol *This = PROTOCOL_THIS(bind_protocol);
 
@@ -728,7 +728,7 @@ static HRESULT WINAPI ProtocolHandler_Terminate(IInternetProtocol *iface, DWORD
         This->filter_proxy = NULL;
     }
 
-    set_binding_sink((IInternetProtocol*)PROTOCOLEX(This), NULL, NULL);
+    set_binding_sink(PROTOCOLEX(This), NULL, NULL);
 
     if(This->bind_info) {
         IInternetBindInfo_Release(This->bind_info);
@@ -1340,7 +1340,7 @@ static const IServiceProviderVtbl ServiceProviderVtbl = {
     BPServiceProvider_QueryService
 };
 
-HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol **protocol)
+HRESULT create_binding_protocol(BOOL from_urlmon, IInternetProtocolEx **protocol)
 {
     BindProtocol *ret = heap_alloc_zero(sizeof(BindProtocol));
 
@@ -1361,6 +1361,6 @@ HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol
 
     URLMON_LockModule();
 
-    *protocol = (IInternetProtocol*)PROTOCOLEX(ret);
+    *protocol = PROTOCOLEX(ret);
     return S_OK;
 }
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c
index ef1881c..4c9281a 100644
--- a/dlls/urlmon/session.c
+++ b/dlls/urlmon/session.c
@@ -421,13 +421,21 @@ static HRESULT WINAPI InternetSession_CreateBinding(IInternetSession *iface,
         LPBC pBC, LPCWSTR szUrl, IUnknown *pUnkOuter, IUnknown **ppUnk,
         IInternetProtocol **ppOInetProt, DWORD dwOption)
 {
+    IInternetProtocolEx *protocol;
+    HRESULT hres;
+
     TRACE("(%p %s %p %p %p %08x)\n", pBC, debugstr_w(szUrl), pUnkOuter, ppUnk,
             ppOInetProt, dwOption);
 
     if(pBC || pUnkOuter || ppUnk || dwOption)
         FIXME("Unsupported arguments\n");
 
-    return create_binding_protocol(szUrl, FALSE, ppOInetProt);
+    hres = create_binding_protocol(FALSE, &protocol);
+    if(FAILED(hres))
+        return hres;
+
+    *ppOInetProt = (IInternetProtocol*)protocol;
+    return S_OK;
 }
 
 static HRESULT WINAPI InternetSession_SetSessionOption(IInternetSession *iface,
diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h
index 215a868..239182e 100644
--- a/dlls/urlmon/urlmon_main.h
+++ b/dlls/urlmon/urlmon_main.h
@@ -77,9 +77,9 @@ void free_session(void);
 HRESULT bind_to_storage(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv);
 HRESULT bind_to_object(IMoniker *mon, LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv);
 
-HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol **protocol);
-void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *sink, IInternetBindInfo *bind_info);
-IWinInetInfo *get_wininet_info(IInternetProtocol*);
+HRESULT create_binding_protocol(BOOL,IInternetProtocolEx**);
+void set_binding_sink(IInternetProtocolEx*,IInternetProtocolSink*,IInternetBindInfo*);
+IWinInetInfo *get_wininet_info(IInternetProtocolEx*);
 HRESULT create_default_callback(IBindStatusCallback**);
 HRESULT wrap_callback(IBindStatusCallback*,IBindStatusCallback**);
 




More information about the wine-cvs mailing list