Module: wine Branch: master Commit: 83c45eaa3ce8e9ac69c7b160445dab54267997cf URL: http://source.winehq.org/git/wine.git/?a=commit;h=83c45eaa3ce8e9ac69c7b16044...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Feb 10 11:51:12 2014 +0100
wmp: Added GetClientSite implementation.
---
dlls/wmp/oleobj.c | 7 +++++-- dlls/wmp/tests/oleobj.c | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/wmp/oleobj.c b/dlls/wmp/oleobj.c index d5c2f85..6506824 100644 --- a/dlls/wmp/oleobj.c +++ b/dlls/wmp/oleobj.c @@ -137,8 +137,11 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite static HRESULT WINAPI OleObject_GetClientSite(IOleObject *iface, IOleClientSite **ppClientSite) { WindowsMediaPlayer *This = impl_from_IOleObject(iface); - FIXME("(%p)->(%p)\n", This, ppClientSite); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, ppClientSite); + + *ppClientSite = This->client_site; + return This->client_site ? S_OK : E_FAIL; }
static HRESULT WINAPI OleObject_SetHostNames(IOleObject *iface, LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) diff --git a/dlls/wmp/tests/oleobj.c b/dlls/wmp/tests/oleobj.c index 8578780..c8fb5a3 100644 --- a/dlls/wmp/tests/oleobj.c +++ b/dlls/wmp/tests/oleobj.c @@ -627,6 +627,7 @@ static void test_QI(IUnknown *unk) static void test_wmp(void) { IProvideClassInfo2 *class_info; + IOleClientSite *client_site; IPersistStreamInit *psi; IOleObject *oleobj; GUID guid; @@ -667,9 +668,19 @@ static void test_wmp(void) todo_wine CHECK_CALLED(GetWindow); todo_wine CHECK_CALLED(Invoke_USERMODE);
+ client_site = NULL; + hres = IOleObject_GetClientSite(oleobj, &client_site); + ok(hres == S_OK, "GetClientSite failed: %08x\n", hres); + ok(client_site == &ClientSite, "client_site != ClientSite\n"); + hres = IOleObject_SetClientSite(oleobj, NULL); ok(hres == S_OK, "SetClientSite failed: %08x\n", hres);
+ client_site = (void*)0xdeadbeef; + hres = IOleObject_GetClientSite(oleobj, &client_site); + ok(hres == E_FAIL, "GetClientSite failed: %08x\n", hres); + ok(!client_site, "client_site = %p\n", client_site); + ref = IOleObject_Release(oleobj); ok(!ref, "ref = %d\n", ref); }