From a9ebca282baeae17f5cb63c5b4ace1e22781ab1c Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Sun, 24 Jun 2007 09:18:41 +0100 Subject: [PATCH] mshtml: Implement HTMLElement_setAttribute. --- dlls/mshtml/htmlelem.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 516a0d0393b..ccdad8c8d15 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -135,8 +135,40 @@ static HRESULT WINAPI HTMLElement_setAttribute(IHTMLElement *iface, BSTR strAttr VARIANT AttributeValue, LONG lFlags) { HTMLElement *This = HTMLELEM_THIS(iface); - FIXME("(%p)->(%s . %08x)\n", This, debugstr_w(strAttributeName), lFlags); - return E_NOTIMPL; + nsAString attr_str; + nsAString value_str; + nsresult nsres; + HRESULT hres; + VARIANT AttributeValueChanged; + + WARN("(%p)->(%s . %08x)\n", This, debugstr_w(strAttributeName), lFlags); + + VariantInit(&AttributeValueChanged); + + hres = VariantChangeType(&AttributeValueChanged, &AttributeValue, 0, VT_BSTR); + if (FAILED(hres)) { + WARN("couldn't convert input attribute value %d to VT_BSTR\n", V_VT(&AttributeValue)); + return hres; + } + + nsAString_Init(&attr_str, strAttributeName); + nsAString_Init(&value_str, V_BSTR(&AttributeValueChanged)); + + TRACE("setting %s to %s\n", debugstr_w(strAttributeName), + debugstr_w(V_BSTR(&AttributeValueChanged))); + + nsres = nsIDOMHTMLElement_SetAttribute(This->nselem, &attr_str, &value_str); + nsAString_Finish(&attr_str); + nsAString_Finish(&value_str); + + if(NS_SUCCEEDED(nsres)) { + hres = S_OK; + }else { + ERR("SetAttribute failed: %08x\n", nsres); + hres = E_FAIL; + } + + return hres; } static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttributeName,