From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/dispex.c | 8 ++++++++ dlls/mshtml/tests/documentmode.js | 12 ++++++++++++ 2 files changed, 20 insertions(+)
diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index 111f3377ff9..b7284c8b935 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -2007,6 +2007,14 @@ BOOL dispex_builtin_is_noattr(DispatchEx *dispex, DISPID id) hres = get_builtin_func(dispex->info, id, &func); assert(SUCCEEDED(hres));
+ if(func->func_disp_idx >= 0 && dispex->dynamic_data && dispex->dynamic_data->func_disps) { + func_obj_entry_t *entry = dispex->dynamic_data->func_disps + func->func_disp_idx; + + if(entry->func_obj && (V_VT(&entry->val) != VT_DISPATCH || + V_DISPATCH(&entry->val) != (IDispatch*)&entry->func_obj->dispex.IWineJSDispatchHost_iface)) + return FALSE; + } + return func->noattr; }
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 13772b52606..f42e67c7014 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -642,6 +642,8 @@ sync_test("attr_props", function() {
elem.setAttribute("test", "wine"); elem.setAttribute("z-index", "foobar"); + elem.setAttribute("innerText", "test"); + elem.setAttribute("removeAttribute", "funcattr");
attr = elem.getAttributeNode("test"); test_attr(true, true); @@ -649,6 +651,16 @@ sync_test("attr_props", function() { attr = elem.getAttributeNode("z-index"); test_attr(true, true);
+ attr = elem.getAttributeNode("innerText"); + if(v < 8) + ok(attr === null, "innerText attr != null"); + else + todo_wine_if(v === 8). + ok(attr !== null, "innerText attr = null"); + + attr = elem.getAttributeNode("removeAttribute"); + ok(attr !== null, "removeAttribute attr = null"); + attr = elem.getAttributeNode("tabIndex"); if(v < 8) test_attr(false, false);