From 6cf4060aff60d0c6b9afbe612336563626285570 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 13 Oct 2008 14:51:18 -0500 Subject: [PATCH] mshtml: Added IHTMLStyle::put_top(VT_NULL) implementation. --- dlls/mshtml/htmlstyle.c | 28 +++++++++++++++++++--------- dlls/mshtml/tests/dom.c | 11 +++++++++++ 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 8d6564d0eb6..baa9ccee3af 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -221,6 +221,24 @@ HRESULT set_nsstyle_attr(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, LPCW return S_OK; } +static HRESULT set_nsstyle_attr_var(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, VARIANT *value, DWORD flags) +{ + switch(V_VT(value)) { + case VT_NULL: + return set_nsstyle_attr(nsstyle, sid, emptyW, flags); + + case VT_BSTR: + return set_nsstyle_attr(nsstyle, sid, V_BSTR(value), flags); + + default: + FIXME("not implemented vt %d\n", V_VT(value)); + return E_NOTIMPL; + + } + + return S_OK; +} + static inline HRESULT set_style_attr(HTMLStyle *This, styleid_t sid, LPCWSTR value, DWORD flags) { return set_nsstyle_attr(This->nsstyle, sid, value, flags); @@ -1581,15 +1599,7 @@ static HRESULT WINAPI HTMLStyle_put_top(IHTMLStyle *iface, VARIANT v) TRACE("(%p)->(%s)\n", This, debugstr_variant(&v)); - switch(V_VT(&v)) { - case VT_BSTR: - return set_style_attr(This, STYLEID_TOP, V_BSTR(&v), 0); - default: - FIXME("unimplemented vt %d\n", V_VT(&v)); - return E_NOTIMPL; - } - - return S_OK; + return set_nsstyle_attr_var(This->nsstyle, STYLEID_TOP, &v, 0); } static HRESULT WINAPI HTMLStyle_get_top(IHTMLStyle *iface, VARIANT *p) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 58b9594c988..a3108d46d32 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -2359,6 +2359,17 @@ static void test_default_style(IHTMLStyle *style) ok(!strcmp_wa(V_BSTR(&v), "3px"), "V_BSTR(v) = %s\n", dbgstr_w(V_BSTR(&v))); VariantClear(&v); + V_VT(&v) = VT_NULL; + hres = IHTMLStyle_put_top(style, v); + ok(hres == S_OK, "put_top failed: %08x\n", hres); + + V_VT(&v) = VT_EMPTY; + hres = IHTMLStyle_get_top(style, &v); + ok(hres == S_OK, "get_top failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(v)=%d\n", V_VT(&v)); + ok(!V_BSTR(&v), "V_BSTR(v) != NULL\n"); + VariantClear(&v); + V_VT(&v) = VT_EMPTY; hres = IHTMLStyle_get_height(style, &v); ok(hres == S_OK, "get_height failed: %08x\n", hres);