Module: wine Branch: master Commit: 7b156524809a0dd4802153c6fbd7009dc64d8b67 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7b156524809a0dd4802153c6fb...
Author: Jacek Caban jacek@codeweavers.com Date: Sun Aug 30 01:00:53 2009 +0200
shdocvw: Move OnObjectAvailable implementation to dochost.c.
---
dlls/shdocvw/dochost.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- dlls/shdocvw/navigate.c | 38 +------------------------------------- dlls/shdocvw/shdocvw.h | 2 +- 3 files changed, 44 insertions(+), 40 deletions(-)
diff --git a/dlls/shdocvw/dochost.c b/dlls/shdocvw/dochost.c index a3d3b3c..6dedd07 100644 --- a/dlls/shdocvw/dochost.c +++ b/dlls/shdocvw/dochost.c @@ -20,6 +20,7 @@ #include "shdocvw.h" #include "hlink.h" #include "exdispid.h" +#include "mshtml.h"
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
@@ -73,7 +74,7 @@ static void navigate_complete(DocHost *This) This->busy = VARIANT_FALSE; }
-void object_available(DocHost *This) +static void object_available(DocHost *This) { IHlinkTarget *hlink; HRESULT hres; @@ -99,8 +100,47 @@ void object_available(DocHost *This) }
navigate_complete(This); +} + +static void object_available_proc(DocHost *This, task_header_t *task) +{ + object_available(This); +} + +HRESULT dochost_object_available(DocHost *This, IUnknown *doc) +{ + task_header_t *task; + IOleObject *oleobj; + HRESULT hres; + + IUnknown_AddRef(doc); + This->document = doc; + + hres = IUnknown_QueryInterface(doc, &IID_IOleObject, (void**)&oleobj); + if(SUCCEEDED(hres)) { + CLSID clsid;
- return; + hres = IOleObject_GetUserClassID(oleobj, &clsid); + if(SUCCEEDED(hres)) + TRACE("Got clsid %s\n", + IsEqualGUID(&clsid, &CLSID_HTMLDocument) ? "CLSID_HTMLDocument" : debugstr_guid(&clsid)); + + hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(This)); + if(FAILED(hres)) + FIXME("SetClientSite failed: %08x\n", hres); + + IOleObject_Release(oleobj); + }else { + FIXME("Could not get IOleObject iface: %08x\n", hres); + } + + /* FIXME: Call SetAdvise */ + /* FIXME: Call Invoke(DISPID_READYSTATE) */ + + task = heap_alloc(sizeof(*task)); + push_dochost_task(This, task, object_available_proc, FALSE); + + return S_OK; }
static LRESULT resize_document(DocHost *This, LONG width, LONG height) diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c index 4b17d33..9bd2445 100644 --- a/dlls/shdocvw/navigate.c +++ b/dlls/shdocvw/navigate.c @@ -22,7 +22,6 @@ #include "wine/debug.h"
#include "shdocvw.h" -#include "mshtml.h" #include "exdispid.h" #include "shellapi.h" #include "winreg.h" @@ -270,49 +269,14 @@ static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *if return E_NOTIMPL; }
-static void object_available_proc(DocHost *This, task_header_t *task) -{ - object_available(This); -} - static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk) { BindStatusCallback *This = BINDSC_THIS(iface); - task_header_t *task; - IOleObject *oleobj; - HRESULT hres;
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk);
- IUnknown_AddRef(punk); - This->doc_host->document = punk; - - hres = IUnknown_QueryInterface(punk, &IID_IOleObject, (void**)&oleobj); - if(SUCCEEDED(hres)) { - CLSID clsid; - - hres = IOleObject_GetUserClassID(oleobj, &clsid); - if(SUCCEEDED(hres)) - TRACE("Got clsid %s\n", - IsEqualGUID(&clsid, &CLSID_HTMLDocument) ? "CLSID_HTMLDocument" : debugstr_guid(&clsid)); - - hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(This->doc_host)); - if(FAILED(hres)) - FIXME("SetClientSite failed: %08x\n", hres); - - IOleObject_Release(oleobj); - }else { - FIXME("Could not get IOleObject iface: %08x\n", hres); - } - - /* FIXME: Call SetAdvise */ - /* FIXME: Call Invoke(DISPID_READYSTATE) */ - - task = heap_alloc(sizeof(*task)); - push_dochost_task(This->doc_host, task, object_available_proc, FALSE); - - return S_OK; + return dochost_object_available(This->doc_host, punk); }
#undef BSC_THIS diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index e28c98f..f5cace1 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -213,7 +213,7 @@ HRESULT WebBrowserV2_Create(IUnknown*,REFIID,void**);
void create_doc_view_hwnd(DocHost*); void deactivate_document(DocHost*); -void object_available(DocHost*); +HRESULT dochost_object_available(DocHost*,IUnknown*); void call_sink(ConnectionPoint*,DISPID,DISPPARAMS*); HRESULT navigate_url(DocHost*,LPCWSTR,const VARIANT*,const VARIANT*,VARIANT*,VARIANT*); HRESULT go_home(DocHost*);