Jacek Caban : shdocvw: Added WebBrowser v1 implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 23 15:22:41 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 86163e7a789cfdd75fc9318bc4a234aef4d19e9d
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=86163e7a789cfdd75fc9318bc4a234aef4d19e9d

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue May 23 20:03:30 2006 +0200

shdocvw: Added WebBrowser v1 implementation.

---

 dlls/shdocvw/factory.c    |    9 +++++++--
 dlls/shdocvw/shdocvw.h    |    5 ++++-
 dlls/shdocvw/webbrowser.c |   13 ++++++++++++-
 3 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/dlls/shdocvw/factory.c b/dlls/shdocvw/factory.c
index 9f4dc33..519c5df 100644
--- a/dlls/shdocvw/factory.c
+++ b/dlls/shdocvw/factory.c
@@ -124,7 +124,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSI
 {
     HRESULT hres;
 
-    static IClassFactoryImpl WBClassFactory = {&WBCF_Vtbl, WebBrowser_Create};
+    static IClassFactoryImpl WB1ClassFactory = {&WBCF_Vtbl, WebBrowserV1_Create};
+    static IClassFactoryImpl WB2ClassFactory = {&WBCF_Vtbl, WebBrowserV2_Create};
 
     TRACE("\n");
 
@@ -132,9 +133,13 @@ HRESULT WINAPI DllGetClassObject(REFCLSI
         hres = create_mozctl(riid, ppv);
         if(SUCCEEDED(hres))
             return hres;
-        return IClassFactory_QueryInterface(FACTORY(&WBClassFactory), riid, ppv);
+        return IClassFactory_QueryInterface(FACTORY(&WB2ClassFactory), riid, ppv);
     }
 
+    if(IsEqualGUID(&CLSID_WebBrowser_V1, rclsid))
+        return IClassFactory_QueryInterface(FACTORY(&WB1ClassFactory), riid, ppv);
+
+
     /* As a last resort, figure if the CLSID belongs to a 'Shell Instance Object' */
     return SHDOCVW_GetShellInstanceObjectClassObject(rclsid, riid, ppv);
 }
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index b1ea6ea..146035a 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -104,6 +104,8 @@ typedef struct {
 
     LONG ref;
 
+    INT version;
+
     IOleClientSite *client;
     IOleContainer *container;
     IOleInPlaceSite *inplace;
@@ -182,7 +184,8 @@ void DocHost_ClientSite_Release(DocHost*
 void ConnectionPointContainer_Init(ConnectionPointContainer*,IUnknown*);
 void ConnectionPointContainer_Destroy(ConnectionPointContainer*);
 
-HRESULT WebBrowser_Create(IUnknown*,REFIID,void**);
+HRESULT WebBrowserV1_Create(IUnknown*,REFIID,void**);
+HRESULT WebBrowserV2_Create(IUnknown*,REFIID,void**);
 
 void create_doc_view_hwnd(DocHost*);
 void deactivate_document(DocHost*);
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index b4a93b4..7ab2ffc 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -918,7 +918,7 @@ static const IWebBrowser2Vtbl WebBrowser
     WebBrowser_put_Resizable
 };
 
-HRESULT WebBrowser_Create(IUnknown *pOuter, REFIID riid, void **ppv)
+static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, void **ppv)
 {
     WebBrowser *ret;
     HRESULT hres;
@@ -929,6 +929,7 @@ HRESULT WebBrowser_Create(IUnknown *pOut
 
     ret->lpWebBrowser2Vtbl = &WebBrowser2Vtbl;
     ret->ref = 0;
+    ret->version = version;
 
     DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret));
 
@@ -954,3 +955,13 @@ HRESULT WebBrowser_Create(IUnknown *pOut
 
     return hres;
 }
+
+HRESULT WebBrowserV1_Create(IUnknown *pOuter, REFIID riid, void **ppv)
+{
+    return WebBrowser_Create(1, pOuter, riid, ppv);
+}
+
+HRESULT WebBrowserV2_Create(IUnknown *pOuter, REFIID riid, void **ppv)
+{
+    return WebBrowser_Create(2, pOuter, riid, ppv);
+}




More information about the wine-cvs mailing list