Jacek Caban : mshtml: Added new helper for GetAttribute based getters and use it in IHTMLMetaElement implementation.

Alexandre Julliard julliard at winehq.org
Wed Jun 11 13:36:21 CDT 2014


Module: wine
Branch: master
Commit: b79ef6769bb841d34cfdb876e41ed93b14c724b3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b79ef6769bb841d34cfdb876e41ed93b14c724b3

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue May 27 11:29:04 2014 +0200

mshtml: Added new helper for GetAttribute based getters and use it in IHTMLMetaElement implementation.

---

 dlls/mshtml/htmlelem.c       |   17 +++++++++++++++++
 dlls/mshtml/htmlmeta.c       |   30 +++---------------------------
 dlls/mshtml/mshtml_private.h |    1 +
 3 files changed, 21 insertions(+), 27 deletions(-)

diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 6a9d396..8e246fe 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -175,6 +175,23 @@ nsresult get_elem_attr_value(nsIDOMHTMLElement *nselem, const WCHAR *name, nsASt
     return NS_OK;
 }
 
+HRESULT elem_string_attr_getter(HTMLElement *elem, const WCHAR *name, BSTR *p)
+{
+    const PRUnichar *val;
+    nsAString val_str;
+    nsresult nsres;
+
+    nsres = get_elem_attr_value(elem->nselem, name, &val_str, &val);
+    if(NS_FAILED(nsres))
+        return E_FAIL;
+
+    TRACE("%s: returning %s\n", debugstr_w(name), debugstr_w(val));
+
+    *p = SysAllocString(val);
+    nsAString_Finish(&val_str);
+    return *p ? S_OK : E_OUTOFMEMORY;
+}
+
 typedef struct
 {
     DispatchEx dispex;
diff --git a/dlls/mshtml/htmlmeta.c b/dlls/mshtml/htmlmeta.c
index b4ff82e..e9783c8 100644
--- a/dlls/mshtml/htmlmeta.c
+++ b/dlls/mshtml/htmlmeta.c
@@ -104,19 +104,11 @@ static HRESULT WINAPI HTMLMetaElement_put_httpEquiv(IHTMLMetaElement *iface, BST
 static HRESULT WINAPI HTMLMetaElement_get_httpEquiv(IHTMLMetaElement *iface, BSTR *p)
 {
     HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
-    nsAString httpequiv_str, val_str;
-    nsresult nsres;
-
     static const PRUnichar httpEquivW[] = {'h','t','t','p','-','e','q','u','i','v',0};
 
     TRACE("(%p)->(%p)\n", This, p);
 
-    nsAString_InitDepend(&httpequiv_str, httpEquivW);
-    nsAString_Init(&val_str, NULL);
-    nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &httpequiv_str, &val_str);
-    nsAString_Finish(&httpequiv_str);
-
-    return return_nsstr(nsres, &val_str, p);
+    return elem_string_attr_getter(&This->element, httpEquivW, p);
 }
 
 static HRESULT WINAPI HTMLMetaElement_put_content(IHTMLMetaElement *iface, BSTR v)
@@ -129,19 +121,11 @@ static HRESULT WINAPI HTMLMetaElement_put_content(IHTMLMetaElement *iface, BSTR
 static HRESULT WINAPI HTMLMetaElement_get_content(IHTMLMetaElement *iface, BSTR *p)
 {
     HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
-    nsAString content_str, val_str;
-    nsresult nsres;
-
     static const PRUnichar contentW[] = {'c','o','n','t','e','n','t',0};
 
     TRACE("(%p)->(%p)\n", This, p);
 
-    nsAString_InitDepend(&content_str, contentW);
-    nsAString_Init(&val_str, NULL);
-    nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &content_str, &val_str);
-    nsAString_Finish(&content_str);
-
-    return return_nsstr(nsres, &val_str, p);
+    return elem_string_attr_getter(&This->element, contentW, p);
 }
 
 static HRESULT WINAPI HTMLMetaElement_put_name(IHTMLMetaElement *iface, BSTR v)
@@ -154,19 +138,11 @@ static HRESULT WINAPI HTMLMetaElement_put_name(IHTMLMetaElement *iface, BSTR v)
 static HRESULT WINAPI HTMLMetaElement_get_name(IHTMLMetaElement *iface, BSTR *p)
 {
     HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
-    nsAString name_str, val_str;
-    nsresult nsres;
-
     static const PRUnichar nameW[] = {'n','a','m','e',0};
 
     TRACE("(%p)->(%p)\n", This, p);
 
-    nsAString_InitDepend(&name_str, nameW);
-    nsAString_Init(&val_str, NULL);
-    nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &name_str, &val_str);
-    nsAString_Finish(&name_str);
-
-    return return_nsstr(nsres, &val_str, p);
+    return elem_string_attr_getter(&This->element, nameW, p);
 }
 
 static HRESULT WINAPI HTMLMetaElement_put_url(IHTMLMetaElement *iface, BSTR v)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 3181ee2..8be7141 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -960,6 +960,7 @@ IHTMLElementCollection *create_collection_from_nodelist(HTMLDocumentNode*,nsIDOM
 IHTMLElementCollection *create_collection_from_htmlcol(HTMLDocumentNode*,nsIDOMHTMLCollection*) DECLSPEC_HIDDEN;
 
 nsresult get_elem_attr_value(nsIDOMHTMLElement*,const WCHAR*,nsAString*,const PRUnichar**) DECLSPEC_HIDDEN;
+HRESULT elem_string_attr_getter(HTMLElement*,const WCHAR*,BSTR*) DECLSPEC_HIDDEN;
 
 /* commands */
 typedef struct {




More information about the wine-cvs mailing list