Module: wine Branch: master Commit: 39bc0bcf2551030d9d76a6a178ef52d5a40cc22d URL: http://source.winehq.org/git/wine.git/?a=commit;h=39bc0bcf2551030d9d76a6a178...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Jul 23 14:04:19 2012 +0200
mshtml: Added IHTMLFrameBase::frameBorder implementation.
---
dlls/mshtml/htmlframebase.c | 42 ++++++++++++++++++++++++++++++++++++++---- dlls/mshtml/tests/dom.c | 13 +++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/htmlframebase.c b/dlls/mshtml/htmlframebase.c index a5344ec..bc00761 100644 --- a/dlls/mshtml/htmlframebase.c +++ b/dlls/mshtml/htmlframebase.c @@ -190,15 +190,49 @@ static HRESULT WINAPI HTMLFrameBase_get_border(IHTMLFrameBase *iface, VARIANT *p static HRESULT WINAPI HTMLFrameBase_put_frameBorder(IHTMLFrameBase *iface, BSTR v) { HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(v)); - return E_NOTIMPL; + nsAString nsstr; + nsresult nsres; + + TRACE("(%p)->(%s)\n", This, debugstr_w(v)); + + if(!This->nsframe && !This->nsiframe) { + ERR("No attached ns frame object\n"); + return E_UNEXPECTED; + } + + nsAString_InitDepend(&nsstr, v); + if(This->nsframe) + nsres = nsIDOMHTMLFrameElement_SetFrameBorder(This->nsframe, &nsstr); + else + nsres = nsIDOMHTMLIFrameElement_SetFrameBorder(This->nsiframe, &nsstr); + nsAString_Finish(&nsstr); + if(NS_FAILED(nsres)) { + ERR("SetFrameBorder failed: %08x\n", nsres); + return E_FAIL; + } + + return S_OK; }
static HRESULT WINAPI HTMLFrameBase_get_frameBorder(IHTMLFrameBase *iface, BSTR *p) { HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + nsAString nsstr; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + if(!This->nsframe && !This->nsiframe) { + ERR("No attached ns frame object\n"); + return E_UNEXPECTED; + } + + nsAString_Init(&nsstr, NULL); + if(This->nsframe) + nsres = nsIDOMHTMLFrameElement_GetFrameBorder(This->nsframe, &nsstr); + else + nsres = nsIDOMHTMLIFrameElement_GetFrameBorder(This->nsiframe, &nsstr); + return return_nsstr(nsres, &nsstr, p); }
static HRESULT WINAPI HTMLFrameBase_put_frameSpacing(IHTMLFrameBase *iface, VARIANT v) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index eef5114..8907a98 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -4239,6 +4239,19 @@ static void test_framebase(IUnknown *unk) ok(!strcmp_wa(str, "no"), "get_scrolling should have given 'no', gave: %s\n", wine_dbgstr_w(str)); SysFreeString(str);
+ hres = IHTMLFrameBase_get_frameBorder(fbase, &str); + ok(hres == S_OK, "get_frameBorder failed: %08x\n", hres); + ok(!str, "frameBorder = %s\n", wine_dbgstr_w(str)); + + str = a2bstr("1"); + hres = IHTMLFrameBase_put_frameBorder(fbase, str); + ok(hres == S_OK, "put_frameBorder failed: %08x\n", hres); + SysFreeString(str); + + hres = IHTMLFrameBase_get_frameBorder(fbase, &str); + ok(hres == S_OK, "get_frameBorder failed: %08x\n", hres); + ok(!strcmp_wa(str, "1"), "frameBorder = %s, expected "1"\n", wine_dbgstr_w(str)); + IHTMLFrameBase_Release(fbase); }