Gabriel Ivăncescu : mshtml: Restructure element getAttribute.
Alexandre Julliard
julliard at winehq.org
Wed Dec 1 15:23:51 CST 2021
Module: wine
Branch: master
Commit: 368199c640f275453389205edd6c7f9ac2d08839
URL: https://source.winehq.org/git/wine.git/?a=commit;h=368199c640f275453389205edd6c7f9ac2d08839
Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date: Wed Dec 1 15:41:50 2021 +0200
mshtml: Restructure element getAttribute.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mshtml/htmlelem.c | 42 ++++++++++++++++++++----------------------
1 file changed, 20 insertions(+), 22 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index aa532098717..24301294144 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -1158,6 +1158,9 @@ static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttr
LONG lFlags, VARIANT *AttributeValue)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
+ compat_mode_t compat_mode = dispex_compat_mode(&This->node.event_target.dispex);
+ nsAString name_str, value_str;
+ nsresult nsres;
DISPID dispid;
HRESULT hres;
@@ -1166,33 +1169,28 @@ static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttr
if(lFlags & ~(ATTRFLAG_CASESENSITIVE|ATTRFLAG_ASSTRING))
FIXME("Unsupported flags %x\n", lFlags);
- if(This->dom_element && dispex_compat_mode(&This->node.event_target.dispex) >= COMPAT_MODE_IE8) {
- nsAString name_str, value_str;
- nsresult nsres;
-
- nsAString_InitDepend(&name_str, strAttributeName);
- nsAString_InitDepend(&value_str, NULL);
- nsres = nsIDOMElement_GetAttribute(This->dom_element, &name_str, &value_str);
- nsAString_Finish(&name_str);
- return return_nsstr_variant(nsres, &value_str, 0, AttributeValue);
- }
+ 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, &dispid);
+ if(FAILED(hres)) {
+ V_VT(AttributeValue) = VT_NULL;
+ return (hres == DISP_E_UNKNOWNNAME) ? S_OK : hres;
+ }
- hres = IDispatchEx_GetDispID(&This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
- lFlags&ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive, &dispid);
- if(hres == DISP_E_UNKNOWNNAME) {
- V_VT(AttributeValue) = VT_NULL;
- return S_OK;
- }
+ hres = get_elem_attr_value_by_dispid(This, dispid, AttributeValue);
+ if(FAILED(hres))
+ return hres;
- if(FAILED(hres)) {
- V_VT(AttributeValue) = VT_NULL;
+ if(lFlags & ATTRFLAG_ASSTRING)
+ hres = attr_value_to_string(AttributeValue);
return hres;
}
- hres = get_elem_attr_value_by_dispid(This, dispid, AttributeValue);
- if(SUCCEEDED(hres) && (lFlags & ATTRFLAG_ASSTRING))
- hres = attr_value_to_string(AttributeValue);
- return hres;
+ nsAString_InitDepend(&name_str, strAttributeName);
+ nsAString_InitDepend(&value_str, NULL);
+ nsres = nsIDOMElement_GetAttribute(This->dom_element, &name_str, &value_str);
+ nsAString_Finish(&name_str);
+ return return_nsstr_variant(nsres, &value_str, 0, AttributeValue);
}
static HRESULT WINAPI HTMLElement_removeAttribute(IHTMLElement *iface, BSTR strAttributeName,
More information about the wine-cvs
mailing list