Commit 3d1627f6 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

shdocvw: Added SetExtent and GetExtent implementation.

parent 13557abb
...@@ -395,15 +395,23 @@ static HRESULT WINAPI OleObject_GetUserType(IOleObject *iface, DWORD dwFormOfTyp ...@@ -395,15 +395,23 @@ static HRESULT WINAPI OleObject_GetUserType(IOleObject *iface, DWORD dwFormOfTyp
static HRESULT WINAPI OleObject_SetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel) static HRESULT WINAPI OleObject_SetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
{ {
WebBrowser *This = OLEOBJ_THIS(iface); WebBrowser *This = OLEOBJ_THIS(iface);
FIXME("(%p)->(%lx %p)\n", This, dwDrawAspect, psizel);
return E_NOTIMPL; TRACE("(%p)->(%lx %p)\n", This, dwDrawAspect, psizel);
/* Tests show that dwDrawAspect is ignored */
memcpy(&This->extent, psizel, sizeof(SIZEL));
return S_OK;
} }
static HRESULT WINAPI OleObject_GetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel) static HRESULT WINAPI OleObject_GetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
{ {
WebBrowser *This = OLEOBJ_THIS(iface); WebBrowser *This = OLEOBJ_THIS(iface);
FIXME("(%p)->(%lx, %p)\n", This, dwDrawAspect, psizel);
return E_NOTIMPL; TRACE("(%p)->(%lx, %p)\n", This, dwDrawAspect, psizel);
/* Tests show that dwDrawAspect is ignored */
memcpy(psizel, &This->extent, sizeof(SIZEL));
return S_OK;
} }
static HRESULT WINAPI OleObject_Advise(IOleObject *iface, IAdviseSink *pAdvSink, static HRESULT WINAPI OleObject_Advise(IOleObject *iface, IAdviseSink *pAdvSink,
...@@ -808,6 +816,9 @@ void WebBrowser_OleObject_Init(WebBrowser *This) ...@@ -808,6 +816,9 @@ void WebBrowser_OleObject_Init(WebBrowser *This)
memset(&This->pos_rect, 0, sizeof(RECT)); memset(&This->pos_rect, 0, sizeof(RECT));
memset(&This->clip_rect, 0, sizeof(RECT)); memset(&This->clip_rect, 0, sizeof(RECT));
memset(&This->frameinfo, 0, sizeof(OLEINPLACEFRAMEINFO)); memset(&This->frameinfo, 0, sizeof(OLEINPLACEFRAMEINFO));
This->extent.cx = 1323;
This->extent.cy = 529;
} }
void WebBrowser_OleObject_Destroy(WebBrowser *This) void WebBrowser_OleObject_Destroy(WebBrowser *This)
......
...@@ -119,6 +119,7 @@ typedef struct { ...@@ -119,6 +119,7 @@ typedef struct {
RECT pos_rect; RECT pos_rect;
RECT clip_rect; RECT clip_rect;
OLEINPLACEFRAMEINFO frameinfo; OLEINPLACEFRAMEINFO frameinfo;
SIZEL extent;
HWND shell_embedding_hwnd; HWND shell_embedding_hwnd;
......
...@@ -828,6 +828,70 @@ static void test_GetControlInfo(IUnknown *unk) ...@@ -828,6 +828,70 @@ static void test_GetControlInfo(IUnknown *unk)
IOleControl_Release(control); IOleControl_Release(control);
} }
static void test_Extent(IUnknown *unk)
{
IOleObject *oleobj;
SIZE size;
HRESULT hres;
hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
ok(hres == S_OK, "Could not get IOleObkect: %08lx\n", hres);
if(FAILED(hres))
return;
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, DVASPECT_CONTENT, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 1323 && size.cy == 529, "size = {%ld %ld}\n", size.cx, size.cy);
size.cx = 800;
size.cy = 700;
hres = IOleObject_SetExtent(oleobj, DVASPECT_CONTENT, &size);
ok(hres == S_OK, "SetExtent failed: %08lx\n", hres);
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, DVASPECT_CONTENT, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 800 && size.cy == 700, "size = {%ld %ld}\n", size.cx, size.cy);
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, 0, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 800 && size.cy == 700, "size = {%ld %ld}\n", size.cx, size.cy);
size.cx = 900;
size.cy = 800;
hres = IOleObject_SetExtent(oleobj, 0, &size);
ok(hres == S_OK, "SetExtent failed: %08lx\n", hres);
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, 0, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 900 && size.cy == 800, "size = {%ld %ld}\n", size.cx, size.cy);
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, 0xdeadbeef, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 900 && size.cy == 800, "size = {%ld %ld}\n", size.cx, size.cy);
size.cx = 1000;
size.cy = 900;
hres = IOleObject_SetExtent(oleobj, 0xdeadbeef, &size);
ok(hres == S_OK, "SetExtent failed: %08lx\n", hres);
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, 0xdeadbeef, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 1000 && size.cy == 900, "size = {%ld %ld}\n", size.cx, size.cy);
size.cx = size.cy = 0xdeadbeef;
hres = IOleObject_GetExtent(oleobj, DVASPECT_CONTENT, &size);
ok(hres == S_OK, "GetExtent failed: %08lx\n", hres);
ok(size.cx == 1000 && size.cy == 900, "size = {%ld %ld}\n", size.cx, size.cy);
IOleObject_Release(oleobj);
}
static void test_WebBrowser(void) static void test_WebBrowser(void)
{ {
IUnknown *unk = NULL; IUnknown *unk = NULL;
...@@ -842,6 +906,7 @@ static void test_WebBrowser(void) ...@@ -842,6 +906,7 @@ static void test_WebBrowser(void)
test_ClassInfo(unk); test_ClassInfo(unk);
test_ClientSite(unk, &ClientSite); test_ClientSite(unk, &ClientSite);
test_Extent(unk);
test_DoVerb(unk); test_DoVerb(unk);
test_ClientSite(unk, NULL); test_ClientSite(unk, NULL);
test_ie_funcs(unk); test_ie_funcs(unk);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment