[PATCH] ieframe: Add a IServiceProvider stub to IBindStatusCallback

Detlef Riekenberg wine.dev at web.de
Sat May 18 08:11:38 CDT 2013


--
By by ... Detlef

---
 dlls/ieframe/navigate.c |   51 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/dlls/ieframe/navigate.c b/dlls/ieframe/navigate.c
index d730b10..65ab16d 100644
--- a/dlls/ieframe/navigate.c
+++ b/dlls/ieframe/navigate.c
@@ -40,6 +40,7 @@ typedef struct {
     IBindStatusCallback  IBindStatusCallback_iface;
     IHttpNegotiate       IHttpNegotiate_iface;
     IHttpSecurity        IHttpSecurity_iface;
+    IServiceProvider     IServiceProvider_iface;
 
     LONG ref;
 
@@ -172,6 +173,9 @@ static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *ifa
     }else if(IsEqualGUID(&IID_IHttpSecurity, riid)) {
         TRACE("(%p)->(IID_IHttpSecurity %p)\n", This, ppv);
         *ppv = &This->IHttpSecurity_iface;
+    }else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
+        TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
+        *ppv = &This->IServiceProvider_iface;;
     }else {
         *ppv = NULL;
         WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
@@ -534,6 +538,52 @@ static const IHttpSecurityVtbl HttpSecurityVtbl = {
     HttpSecurity_OnSecurityProblem
 };
 
+static inline BindStatusCallback *impl_from_IServiceProvider(IServiceProvider *iface)
+{
+    return CONTAINING_RECORD(iface, BindStatusCallback, IServiceProvider_iface);
+}
+
+static HRESULT WINAPI BSCServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
+{
+    BindStatusCallback *This = impl_from_IServiceProvider(iface);
+    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+    return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
+}
+
+static ULONG WINAPI BSCServiceProvider_AddRef(IServiceProvider *iface)
+{
+    BindStatusCallback *This = impl_from_IServiceProvider(iface);
+    TRACE("(%p)\n", This);
+    return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
+}
+
+static ULONG WINAPI BSCServiceProvider_Release(IServiceProvider *iface)
+{
+    BindStatusCallback *This = impl_from_IServiceProvider(iface);
+    TRACE("(%p)\n", This);
+    return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
+}
+
+
+static HRESULT WINAPI BSCServiceProvider_QueryService(IServiceProvider *iface,
+        REFGUID guidService, REFIID riid, void **ppv)
+{
+    BindStatusCallback *This = impl_from_IServiceProvider(iface);
+
+    FIXME("(%p)->(%s, %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
+    *ppv = NULL;
+    return E_NOINTERFACE;
+}
+
+static const IServiceProviderVtbl BSCServiceProviderVtbl =
+{
+    BSCServiceProvider_QueryInterface,
+    BSCServiceProvider_AddRef,
+    BSCServiceProvider_Release,
+    BSCServiceProvider_QueryService
+};
+
+
 static BindStatusCallback *create_callback(DocHost *doc_host, LPCWSTR url, PBYTE post_data,
         ULONG post_data_len, LPCWSTR headers)
 {
@@ -542,6 +592,7 @@ static BindStatusCallback *create_callback(DocHost *doc_host, LPCWSTR url, PBYTE
     ret->IBindStatusCallback_iface.lpVtbl = &BindStatusCallbackVtbl;
     ret->IHttpNegotiate_iface.lpVtbl      = &HttpNegotiateVtbl;
     ret->IHttpSecurity_iface.lpVtbl       = &HttpSecurityVtbl;
+    ret->IServiceProvider_iface.lpVtbl    = &BSCServiceProviderVtbl;
 
     ret->ref = 1;
     ret->url = SysAllocString(url);
-- 
1.7.5.4




More information about the wine-patches mailing list