Gabriel Ivăncescu : mshtml: Implement childElementCount for Elements.

Alexandre Julliard julliard at winehq.org
Wed Jul 27 16:17:08 CDT 2022


Module: wine
Branch: master
Commit: b4adbb4dc08d385e3c490496b1652431df617557
URL:    https://gitlab.winehq.org/wine/wine/-/commit/b4adbb4dc08d385e3c490496b1652431df617557

Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date:   Wed Jul 27 21:33:35 2022 +0300

mshtml: Implement childElementCount for Elements.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>

---

 dlls/mshtml/htmlelem.c   | 11 +++++++++--
 dlls/mshtml/tests/dom.js |  3 +++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 76de1a0337c..826d131df77 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -6611,8 +6611,15 @@ static HRESULT WINAPI ElementTraversal_get_nextElementSibling(IElementTraversal
 static HRESULT WINAPI ElementTraversal_get_childElementCount(IElementTraversal *iface, LONG *p)
 {
     HTMLElement *This = impl_from_IElementTraversal(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    UINT32 count = 0;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    if(This->dom_element)
+        nsIDOMElement_GetChildElementCount(This->dom_element, &count);
+
+    *p = count;
+    return S_OK;
 }
 
 static const IElementTraversalVtbl ElementTraversalVtbl = {
diff --git a/dlls/mshtml/tests/dom.js b/dlls/mshtml/tests/dom.js
index 93b4dc196ec..231633b0712 100644
--- a/dlls/mshtml/tests/dom.js
+++ b/dlls/mshtml/tests/dom.js
@@ -90,6 +90,7 @@ sync_test("textContent", function() {
 sync_test("ElementTraversal", function() {
     var div = document.createElement("div");
     div.innerHTML = "abc<b>bold</b><script>/* */</script><div>text</div>def";
+    ok(div.childElementCount === 3, "div.childElementCount = " + div.childElementCount);
     ok(div.firstElementChild.outerHTML === "<b>bold</b>",
             "div.firstElementChild.outerHTML = " + div.firstElementChild.outerHTML);
     ok(div.lastElementChild.outerHTML === "<div>text</div>",
@@ -104,9 +105,11 @@ sync_test("ElementTraversal", function() {
             "div.firstElementChild.previousElementSibling = " + div.firstElementChild.previousElementSibling);
 
     div.innerHTML = "abc";
+    ok(div.childElementCount === 0, "div.childElementCount = " + div.childElementCount);
     ok(div.firstElementChild === null, "div.firstElementChild = " + div.firstElementChild);
     ok(div.lastElementChild === null, "div.lastElementChild = " + div.lastElementChild);
 
+    ok(!("childElementCount" in document), "childElementCount found in document");
     ok(!("firstElementChild" in document), "firstElementChild found in document");
     ok(!("nextElementSibling" in document), "nextElementSibling found in document");
 });




More information about the wine-cvs mailing list