mshtml: Restructure element removeAttribute.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Gabriel Ivăncescu 2021-12-01 15:41:51 +02:00 committed by Alexandre Julliard
parent 368199c640
commit d224a2a881
1 changed files with 30 additions and 29 deletions

View File

@ -1197,46 +1197,47 @@ static HRESULT WINAPI HTMLElement_removeAttribute(IHTMLElement *iface, BSTR strA
LONG lFlags, VARIANT_BOOL *pfSuccess)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
compat_mode_t compat_mode = dispex_compat_mode(&This->node.event_target.dispex);
DISPID id;
HRESULT hres;
TRACE("(%p)->(%s %x %p)\n", This, debugstr_w(strAttributeName), lFlags, pfSuccess);
if(dispex_compat_mode(&This->node.event_target.dispex) >= COMPAT_MODE_IE8) {
*pfSuccess = element_has_attribute(This, strAttributeName);
if(*pfSuccess)
return element_remove_attribute(This, strAttributeName);
return S_OK;
}
hres = IDispatchEx_GetDispID(&This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
lFlags&ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive, &id);
if(hres == DISP_E_UNKNOWNNAME) {
*pfSuccess = VARIANT_FALSE;
return S_OK;
}
if(FAILED(hres))
return hres;
if(id == DISPID_IHTMLELEMENT_STYLE) {
IHTMLStyle *style;
TRACE("Special case: style\n");
hres = IHTMLElement_get_style(&This->IHTMLElement_iface, &style);
if(compat_mode < COMPAT_MODE_IE8 || !This->dom_element) {
hres = IDispatchEx_GetDispID(&This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
lFlags&ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive, &id);
if(hres == DISP_E_UNKNOWNNAME) {
*pfSuccess = VARIANT_FALSE;
return S_OK;
}
if(FAILED(hres))
return hres;
hres = IHTMLStyle_put_cssText(style, NULL);
IHTMLStyle_Release(style);
if(FAILED(hres))
return hres;
if(id == DISPID_IHTMLELEMENT_STYLE) {
IHTMLStyle *style;
*pfSuccess = VARIANT_TRUE;
return S_OK;
TRACE("Special case: style\n");
hres = IHTMLElement_get_style(&This->IHTMLElement_iface, &style);
if(FAILED(hres))
return hres;
hres = IHTMLStyle_put_cssText(style, NULL);
IHTMLStyle_Release(style);
if(FAILED(hres))
return hres;
*pfSuccess = VARIANT_TRUE;
return S_OK;
}
return remove_attribute(&This->node.event_target.dispex, id, pfSuccess);
}
return remove_attribute(&This->node.event_target.dispex, id, pfSuccess);
*pfSuccess = element_has_attribute(This, strAttributeName);
if(*pfSuccess)
return element_remove_attribute(This, strAttributeName);
return S_OK;
}
static HRESULT WINAPI HTMLElement_put_className(IHTMLElement *iface, BSTR v)