Module: wine Branch: master Commit: 6cf4060aff60d0c6b9afbe612336563626285570 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6cf4060aff60d0c6b9afbe6123...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Oct 13 14:51:18 2008 -0500
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 8d6564d..baa9cce 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 58b9594..a3108d4 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);