Jacek Caban : mshtml: Implement IHTMLElement6::msMatchesSelector.

Alexandre Julliard julliard at winehq.org
Fri Mar 29 16:27:42 CDT 2019


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Mar 29 15:34:52 2019 +0100

mshtml: Implement IHTMLElement6::msMatchesSelector.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlelem.c        | 23 +++++++++++++++++++++--
 dlls/mshtml/tests/elements.js |  2 ++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index c628a18..a469380 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -4514,8 +4514,27 @@ static HRESULT WINAPI HTMLElement6_getElementsByClassName(IHTMLElement6 *iface,
 static HRESULT WINAPI HTMLElement6_msMatchesSelector(IHTMLElement6 *iface, BSTR v, VARIANT_BOOL *pfMatches)
 {
     HTMLElement *This = impl_from_IHTMLElement6(iface);
-    FIXME("(%p)->(%s %p)\n", This, debugstr_w(v), pfMatches);
-    return E_NOTIMPL;
+    nsAString nsstr;
+    cpp_bool b;
+    nsresult nsres;
+
+    TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pfMatches);
+
+    if(!This->dom_element) {
+        FIXME("No dom element\n");
+        return E_UNEXPECTED;
+    }
+
+    nsAString_InitDepend(&nsstr, v);
+    nsres = nsIDOMElement_MozMatchesSelector(This->dom_element, &nsstr, &b);
+    nsAString_Finish(&nsstr);
+    if(NS_FAILED(nsres)) {
+        WARN("MozMatchesSelector failed: %08x\n", nsres);
+        return map_nsresult(nsres);
+    }
+
+    *pfMatches = b;
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLElement6_put_onabort(IHTMLElement6 *iface, VARIANT v)
diff --git a/dlls/mshtml/tests/elements.js b/dlls/mshtml/tests/elements.js
index 1df2b07..1423e3b 100644
--- a/dlls/mshtml/tests/elements.js
+++ b/dlls/mshtml/tests/elements.js
@@ -207,6 +207,8 @@ function test_query_selector() {
     ok(e.tagName === "DIV", "e.tagName = " + e.tagName);
     e = document.body.querySelector(".class1");
     ok(e.tagName === "DIV", "e.tagName = " + e.tagName);
+    ok(e.msMatchesSelector(".class1") === true, "msMatchesSelector returned " + e.msMatchesSelector(".class1"));
+    ok(e.msMatchesSelector(".class2") === false, "msMatchesSelector returned " + e.msMatchesSelector(".class2"));
 
     e = document.querySelector("a");
     ok(e.tagName === "A", "e.tagName = " + e.tagName);




More information about the wine-cvs mailing list