Jacek Caban : mshtml: Added support for non-HTML elements.

Alexandre Julliard julliard at winehq.org
Tue Feb 13 13:57:55 CST 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Feb 12 23:29:04 2018 +0100

mshtml: Added support for non-HTML elements.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;




More information about the wine-cvs mailing list