Andrew Eikum : hlink: Implement IHlinkBrowseContext::GetBrowseWindowInfo.
Alexandre Julliard
julliard at winehq.org
Wed Mar 17 12:19:06 CDT 2010
Module: wine
Branch: master
Commit: 94edcc1d880229a00713e83330bd4b70d77e4fa1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=94edcc1d880229a00713e83330bd4b70d77e4fa1
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Tue Mar 16 16:49:23 2010 -0500
hlink: Implement IHlinkBrowseContext::GetBrowseWindowInfo.
---
dlls/hlink/browse_ctx.c | 17 +++++++++++++-
dlls/hlink/tests/browse_ctx.c | 47 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/dlls/hlink/browse_ctx.c b/dlls/hlink/browse_ctx.c
index a5b73c1..1e15c13 100644
--- a/dlls/hlink/browse_ctx.c
+++ b/dlls/hlink/browse_ctx.c
@@ -155,6 +155,9 @@ static HRESULT WINAPI IHlinkBC_SetBrowseWindowInfo(IHlinkBrowseContext* iface,
HlinkBCImpl *This = (HlinkBCImpl*)iface;
TRACE("(%p)->(%p)\n", This, phlbwi);
+ if(!phlbwi)
+ return E_INVALIDARG;
+
heap_free(This->BrowseWindowInfo);
This->BrowseWindowInfo = heap_alloc(phlbwi->cbSize);
memcpy(This->BrowseWindowInfo, phlbwi, phlbwi->cbSize);
@@ -165,8 +168,18 @@ static HRESULT WINAPI IHlinkBC_SetBrowseWindowInfo(IHlinkBrowseContext* iface,
static HRESULT WINAPI IHlinkBC_GetBrowseWindowInfo(IHlinkBrowseContext* iface,
HLBWINFO *phlbwi)
{
- FIXME("\n");
- return E_NOTIMPL;
+ HlinkBCImpl *This = (HlinkBCImpl*)iface;
+ TRACE("(%p)->(%p)\n", This, phlbwi);
+
+ if(!phlbwi)
+ return E_INVALIDARG;
+
+ if(!This->BrowseWindowInfo)
+ phlbwi->cbSize = 0;
+ else
+ memcpy(phlbwi, This->BrowseWindowInfo, This->BrowseWindowInfo->cbSize);
+
+ return S_OK;
}
static HRESULT WINAPI IHlinkBC_SetInitialHlink(IHlinkBrowseContext* iface,
diff --git a/dlls/hlink/tests/browse_ctx.c b/dlls/hlink/tests/browse_ctx.c
index a9b26e7..30cd559 100644
--- a/dlls/hlink/tests/browse_ctx.c
+++ b/dlls/hlink/tests/browse_ctx.c
@@ -80,11 +80,58 @@ static void test_SetInitialHlink(void)
IMoniker_Release(dummy);
}
+static void test_BrowseWindowInfo(void)
+{
+ IHlinkBrowseContext *bc;
+ HLBWINFO bwinfo_set, bwinfo_get;
+ HRESULT hres;
+
+ hres = HlinkCreateBrowseContext(NULL, &IID_IHlinkBrowseContext, (void**)&bc);
+ ok(hres == S_OK, "HlinkCreateBrowseContext failed: 0x%08x\n", hres);
+
+ hres = IHlinkBrowseContext_GetBrowseWindowInfo(bc, NULL);
+ ok(hres == E_INVALIDARG, "GetBrowseWindow failed with wrong code: 0x%08x\n", hres);
+
+ hres = IHlinkBrowseContext_SetBrowseWindowInfo(bc, NULL);
+ ok(hres == E_INVALIDARG, "SetBrowseWindow failed with wrong code: 0x%08x\n", hres);
+
+ memset(&bwinfo_get, -1, sizeof(HLBWINFO));
+
+ hres = IHlinkBrowseContext_GetBrowseWindowInfo(bc, &bwinfo_get);
+ ok(hres == S_OK, "GetBrowseWindowInfo failed: 0x%08x\n", hres);
+ ok(bwinfo_get.cbSize == 0, "Got wrong size: %x\n", bwinfo_get.cbSize);
+
+ bwinfo_set.cbSize = sizeof(HLBWINFO);
+ bwinfo_set.grfHLBWIF = HLBWIF_WEBTOOLBARHIDDEN;
+ bwinfo_set.rcFramePos.left = 1;
+ bwinfo_set.rcFramePos.right = 2;
+ bwinfo_set.rcFramePos.top = 3;
+ bwinfo_set.rcFramePos.bottom = 4;
+ bwinfo_set.rcDocPos.left = 5;
+ bwinfo_set.rcDocPos.right = 6;
+ bwinfo_set.rcDocPos.top = 7;
+ bwinfo_set.rcDocPos.bottom = 8;
+ bwinfo_set.hltbinfo.uDockType = 4321;
+ bwinfo_set.hltbinfo.rcTbPos.left = 9;
+ bwinfo_set.hltbinfo.rcTbPos.right = 10;
+ bwinfo_set.hltbinfo.rcTbPos.top = 11;
+ bwinfo_set.hltbinfo.rcTbPos.bottom = 12;
+ hres = IHlinkBrowseContext_SetBrowseWindowInfo(bc, &bwinfo_set);
+ ok(hres == S_OK, "SetBrowseWindowInfo failed: 0x%08x\n", hres);
+
+ memset(&bwinfo_get, 0, sizeof(HLBWINFO));
+
+ hres = IHlinkBrowseContext_GetBrowseWindowInfo(bc, &bwinfo_get);
+ ok(hres == S_OK, "GetBrowseWindowInfo failed: 0x%08x\n", hres);
+ ok(!memcmp(&bwinfo_set, &bwinfo_get, sizeof(HLBWINFO)), "Set and Get differ");
+}
+
START_TEST(browse_ctx)
{
CoInitialize(NULL);
test_SetInitialHlink();
+ test_BrowseWindowInfo();
CoUninitialize();
}
More information about the wine-cvs
mailing list