Module: wine Branch: master Commit: b947229fa92e53aa7fa2f6c9b57cdfdd868164cf URL: https://source.winehq.org/git/wine.git/?a=commit;h=b947229fa92e53aa7fa2f6c9b...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Feb 12 23:29:04 2018 +0100
mshtml: Added support for non-HTML elements.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/htmlelem.c | 27 ++++++++++++++------------- dlls/mshtml/mshtml_private.h | 5 ++--- 2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index cc6f542..06e91bc 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -5570,7 +5570,6 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMElement *n assert((nsIDOMNode*)html_element == This->node.nsnode); nsIDOMHTMLElement_Release(html_element); } - This->nselem = This->html_element; }
ConnectionPointContainer_Init(&This->cp_container, (IUnknown*)&This->IHTMLElement_iface, This->node.vtbl->cpc_entries); @@ -5578,24 +5577,26 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMElement *n
HRESULT HTMLElement_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, BOOL use_generic, HTMLElement **ret) { - nsIDOMHTMLElement *nselem; - nsAString class_name_str; - const PRUnichar *class_name; + nsIDOMElement *nselem; + nsAString tag_name_str; + const PRUnichar *tag_name; const tag_desc_t *tag; HTMLElement *elem; nsresult nsres; HRESULT hres;
- nsres = nsIDOMNode_QueryInterface(nsnode, &IID_nsIDOMHTMLElement, (void**)&nselem); - if(NS_FAILED(nsres)) + nsres = nsIDOMNode_QueryInterface(nsnode, &IID_nsIDOMElement, (void**)&nselem); + if(NS_FAILED(nsres)) { + ERR("no nsIDOMElement iface\n"); return E_FAIL; + }
- nsAString_Init(&class_name_str, NULL); - nsIDOMHTMLElement_GetTagName(nselem, &class_name_str); + nsAString_Init(&tag_name_str, NULL); + nsIDOMElement_GetTagName(nselem, &tag_name_str);
- nsAString_GetData(&class_name_str, &class_name); + nsAString_GetData(&tag_name_str, &tag_name);
- tag = get_tag_desc(class_name); + tag = get_tag_desc(tag_name); if(tag) { hres = tag->constructor(doc, (nsIDOMElement*)nselem, &elem); }else if(use_generic) { @@ -5611,10 +5612,10 @@ HRESULT HTMLElement_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, BOOL use_g } }
- TRACE("%s ret %p\n", debugstr_w(class_name), elem); + TRACE("%s ret %p\n", debugstr_w(tag_name), elem);
- nsIDOMHTMLElement_Release(nselem); - nsAString_Finish(&class_name_str); + nsIDOMElement_Release(nselem); + nsAString_Finish(&tag_name_str); if(FAILED(hres)) return hres;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index a0d9221..de200cf 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -779,9 +779,8 @@ typedef struct { IElementTraversal IElementTraversal_iface; IProvideMultipleClassInfo IProvideMultipleClassInfo_iface;
- nsIDOMHTMLElement *nselem; - nsIDOMElement *dom_element; - nsIDOMHTMLElement *html_element; + nsIDOMElement *dom_element; /* NULL for legacy comments represented as HTML elements */ + nsIDOMHTMLElement *html_element; /* NULL for non-HTML elements (like SVG elements) */ HTMLStyle *style; HTMLStyle *runtime_style; HTMLAttributeCollection *attrs;