Gabriel Ivăncescu : mshtml: Implement proper value for WineDOMTokenList.
Alexandre Julliard
julliard at winehq.org
Fri Oct 1 18:02:23 CDT 2021
Module: wine
Branch: master
Commit: 31883ce4ac5231ba528f09b6b4f04067cde40bf9
URL: https://source.winehq.org/git/wine.git/?a=commit;h=31883ce4ac5231ba528f09b6b4f04067cde40bf9
Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date: Fri Oct 1 16:12:43 2021 +0300
mshtml: Implement proper value for WineDOMTokenList.
It returns the classes as specified in className.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mshtml/htmlelem.c | 32 +++++++++++++++++++++++++++++++-
dlls/mshtml/tests/dom.js | 4 ++++
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index d9554f4668d..4e5aba7c344 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -6624,12 +6624,42 @@ static const IWineDOMTokenListVtbl WineDOMTokenListVtbl = {
token_list_remove,
};
+static inline struct token_list *token_list_from_DispatchEx(DispatchEx *iface)
+{
+ return CONTAINING_RECORD(iface, struct token_list, dispex);
+}
+
+static HRESULT token_list_value(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *params,
+ VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
+{
+ struct token_list *token_list = token_list_from_DispatchEx(dispex);
+ HRESULT hres;
+
+ switch(flags) {
+ case DISPATCH_PROPERTYGET:
+ hres = IHTMLElement_get_className(token_list->element, &V_BSTR(res));
+ if(FAILED(hres))
+ return hres;
+ V_VT(res) = VT_BSTR;
+ break;
+ default:
+ FIXME("Unimplemented flags %x\n", flags);
+ return E_NOTIMPL;
+ }
+
+ return S_OK;
+}
+
+static const dispex_static_data_vtbl_t token_list_dispex_vtbl = {
+ token_list_value
+};
+
static const tid_t token_list_iface_tids[] = {
IWineDOMTokenList_tid,
0
};
static dispex_static_data_t token_list_dispex = {
- NULL,
+ &token_list_dispex_vtbl,
IWineDOMTokenList_tid,
token_list_iface_tids
};
diff --git a/dlls/mshtml/tests/dom.js b/dlls/mshtml/tests/dom.js
index 0085b40efed..efbab663902 100644
--- a/dlls/mshtml/tests/dom.js
+++ b/dlls/mshtml/tests/dom.js
@@ -527,6 +527,7 @@ sync_test("classList", function() {
classList.add("c");
ok(elem.className === "a b c 4", "(2) Expected className 'a b c 4', got " + elem.className);
+ ok(("" + classList) === "a b c 4", "Expected classList value 'a b c 4', got " + classList);
var exception = false
@@ -605,4 +606,7 @@ sync_test("classList", function() {
classList.remove("b");
ok(elem.className === "", "remove: expected className '', got " + elem.className);
+
+ elem.className = " testclass foobar ";
+ ok(("" + classList) === " testclass foobar ", "Expected classList value ' testclass foobar ', got " + classList);
});
More information about the wine-cvs
mailing list