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