From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 16 ++++++++-------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 4 ++++ 3 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index ba30eb41f53..c0ad93facb3 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -1802,17 +1802,17 @@ static const dispex_static_data_vtbl_t HTMLEventObj_dispex_vtbl = { .unlink = HTMLEventObj_unlink };
-static const tid_t HTMLEventObj_iface_tids[] = { +static const tid_t MSEventObj_iface_tids[] = { IHTMLEventObj5_tid, IHTMLEventObj_tid, 0 };
-static dispex_static_data_t HTMLEventObj_dispex = { - "MSEventObj", - &HTMLEventObj_dispex_vtbl, - DispCEventObj_tid, - HTMLEventObj_iface_tids +dispex_static_data_t MSEventObj_dispex = { + .id = PROT_MSEventObj, + .vtbl = &HTMLEventObj_dispex_vtbl, + .disp_tid = DispCEventObj_tid, + .iface_tids = MSEventObj_iface_tids, };
static HTMLEventObj *alloc_event_obj(DOMEvent *event, HTMLInnerWindow *script_global) @@ -1832,9 +1832,9 @@ static HTMLEventObj *alloc_event_obj(DOMEvent *event, HTMLInnerWindow *script_gl event_obj->event = event; if(event) { IDOMEvent_AddRef(&event->IDOMEvent_iface); - init_dispatch_with_owner(&event_obj->dispex, &HTMLEventObj_dispex, &event->dispex); + init_dispatch_with_owner(&event_obj->dispex, &MSEventObj_dispex, &event->dispex); }else { - init_dispatch(&event_obj->dispex, &HTMLEventObj_dispex, script_global, + init_dispatch(&event_obj->dispex, &MSEventObj_dispex, script_global, dispex_compat_mode(&script_global->event_target.dispex)); } return event_obj; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 6a3d1e5c639..f600917187b 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -448,6 +448,7 @@ typedef struct { X(MSCSSProperties) \ X(MSCSSRuleList) \ X(MSCurrentStyleCSSProperties) \ + X(MSEventObj) \ X(MSStyleCSSProperties) \ X(MutationObserver) \ X(Navigator) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index c2230f61ce2..a4893e8f71e 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3237,4 +3237,8 @@ sync_test("prototypes", function() { check(CSSRule.prototype, Object.prototype, "css rule prototype"); check(document.body.getBoundingClientRect(), ClientRect.prototype, "rect"); check(ClientRect.prototype, Object.prototype, "rect prototype"); + if(v < 11) { + check(document.createEventObject(), MSEventObj.prototype, "event obj"); + check(MSEventObj.prototype, Object.prototype, "event obj prototype"); + } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 16 ++++++++-------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index c0ad93facb3..ed7c4d6ce45 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3576,16 +3576,16 @@ static const dispex_static_data_vtbl_t DOMEvent_dispex_vtbl = { .unlink = DOMEvent_unlink };
-static const tid_t DOMEvent_iface_tids[] = { +static const tid_t Event_iface_tids[] = { IDOMEvent_tid, 0 };
-static dispex_static_data_t DOMEvent_dispex = { - "Event", - &DOMEvent_dispex_vtbl, - DispDOMEvent_tid, - DOMEvent_iface_tids +dispex_static_data_t Event_dispex = { + .id = PROT_Event, + .vtbl = &DOMEvent_dispex_vtbl, + .disp_tid = DispDOMEvent_tid, + .iface_tids = Event_iface_tids, };
static const dispex_static_data_vtbl_t DOMUIEvent_dispex_vtbl = { @@ -3667,7 +3667,7 @@ static dispex_static_data_t DOMPageTransitionEvent_dispex = { "PageTransitionEvent", &DOMPageTransitionEvent_dispex_vtbl, DispDOMEvent_tid, - DOMEvent_iface_tids, + Event_iface_tids, DOMPageTransitionEvent_init_dispex_info };
@@ -3786,7 +3786,7 @@ static void fill_parent_ui_event(nsIDOMEvent *nsevent, DOMUIEvent *ui_event) static DOMEvent *generic_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - return event_ctor(sizeof(DOMEvent), &DOMEvent_dispex, nsevent, event_id, script_global, compat_mode); + return event_ctor(sizeof(DOMEvent), &Event_dispex, nsevent, event_id, script_global, compat_mode); }
static DOMEvent *ui_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index f600917187b..96a2cac4070 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -417,6 +417,7 @@ typedef struct { X(Document) \ X(DocumentType) \ X(Element) \ + X(Event) \ X(HTMLAnchorElement) \ X(HTMLAreaElement) \ X(HTMLBodyElement) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index a4893e8f71e..f192393ac34 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3241,4 +3241,6 @@ sync_test("prototypes", function() { check(document.createEventObject(), MSEventObj.prototype, "event obj"); check(MSEventObj.prototype, Object.prototype, "event obj prototype"); } + check(document.createEvent("Event"), Event.prototype, "event"); + check(Event.prototype, Object.prototype, "event prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index ed7c4d6ce45..63ce57fce50 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3595,17 +3595,18 @@ static const dispex_static_data_vtbl_t DOMUIEvent_dispex_vtbl = { .unlink = DOMUIEvent_unlink };
-static const tid_t DOMUIEvent_iface_tids[] = { +static const tid_t UIEvent_iface_tids[] = { IDOMEvent_tid, IDOMUIEvent_tid, 0 };
-static dispex_static_data_t DOMUIEvent_dispex = { - "UIEvent", - &DOMUIEvent_dispex_vtbl, - DispDOMUIEvent_tid, - DOMUIEvent_iface_tids +dispex_static_data_t UIEvent_dispex = { + .id = PROT_UIEvent, + .prototype_id = PROT_Event, + .vtbl = &DOMUIEvent_dispex_vtbl, + .disp_tid = DispDOMUIEvent_tid, + .iface_tids = UIEvent_iface_tids, };
static const dispex_static_data_vtbl_t DOMMouseEvent_dispex_vtbl = { @@ -3792,7 +3793,7 @@ static DOMEvent *generic_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t static DOMEvent *ui_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMUIEvent *ui_event = event_ctor(sizeof(DOMUIEvent), &DOMUIEvent_dispex, nsevent, event_id, script_global, compat_mode); + DOMUIEvent *ui_event = event_ctor(sizeof(DOMUIEvent), &UIEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!ui_event) return NULL; ui_event->IDOMUIEvent_iface.lpVtbl = &DOMUIEventVtbl; ui_event->nsevent = iface; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 96a2cac4070..3a684bc3f96 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -464,6 +464,7 @@ typedef struct { X(StyleSheet) \ X(StyleSheetList) \ X(Text) \ + X(UIEvent) \ X(Window) \ X(XMLHttpRequest)
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index f192393ac34..240a8abba36 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3243,4 +3243,6 @@ sync_test("prototypes", function() { } check(document.createEvent("Event"), Event.prototype, "event"); check(Event.prototype, Object.prototype, "event prototype"); + check(document.createEvent("UIEvent"), UIEvent.prototype, "UI event"); + check(UIEvent.prototype, Event.prototype, "UI event prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 63ce57fce50..bb72f8bd46c 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3616,18 +3616,19 @@ static const dispex_static_data_vtbl_t DOMMouseEvent_dispex_vtbl = { .unlink = DOMMouseEvent_unlink };
-static const tid_t DOMMouseEvent_iface_tids[] = { +static const tid_t MouseEvent_iface_tids[] = { IDOMEvent_tid, IDOMUIEvent_tid, IDOMMouseEvent_tid, 0 };
-static dispex_static_data_t DOMMouseEvent_dispex = { - "MouseEvent", - &DOMMouseEvent_dispex_vtbl, - DispDOMMouseEvent_tid, - DOMMouseEvent_iface_tids +dispex_static_data_t MouseEvent_dispex = { + .id = PROT_MouseEvent, + .prototype_id = PROT_UIEvent, + .vtbl = &DOMMouseEvent_dispex_vtbl, + .disp_tid = DispDOMMouseEvent_tid, + .iface_tids = MouseEvent_iface_tids, };
static const dispex_static_data_vtbl_t DOMKeyboardEvent_dispex_vtbl = { @@ -3803,7 +3804,7 @@ static DOMEvent *ui_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t even static DOMEvent *mouse_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMMouseEvent *mouse_event = event_ctor(sizeof(DOMMouseEvent), &DOMMouseEvent_dispex, nsevent, event_id, script_global, compat_mode); + DOMMouseEvent *mouse_event = event_ctor(sizeof(DOMMouseEvent), &MouseEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!mouse_event) return NULL; mouse_event->IDOMMouseEvent_iface.lpVtbl = &DOMMouseEventVtbl; mouse_event->nsevent = iface; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 3a684bc3f96..a628171af93 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -451,6 +451,7 @@ typedef struct { X(MSCurrentStyleCSSProperties) \ X(MSEventObj) \ X(MSStyleCSSProperties) \ + X(MouseEvent) \ X(MutationObserver) \ X(Navigator) \ X(Node) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 240a8abba36..16287ee5ecb 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3245,4 +3245,6 @@ sync_test("prototypes", function() { check(Event.prototype, Object.prototype, "event prototype"); check(document.createEvent("UIEvent"), UIEvent.prototype, "UI event"); check(UIEvent.prototype, Event.prototype, "UI event prototype"); + check(document.createEvent("MouseEvent"), MouseEvent.prototype, "mouse event"); + check(MouseEvent.prototype, UIEvent.prototype, "mouse event prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index bb72f8bd46c..bfd07c37a78 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3638,18 +3638,19 @@ static const dispex_static_data_vtbl_t DOMKeyboardEvent_dispex_vtbl = { .unlink = DOMKeyboardEvent_unlink };
-static const tid_t DOMKeyboardEvent_iface_tids[] = { +static const tid_t KeyboardEvent_iface_tids[] = { IDOMEvent_tid, IDOMUIEvent_tid, IDOMKeyboardEvent_tid, 0 };
-static dispex_static_data_t DOMKeyboardEvent_dispex = { - "KeyboardEvent", - &DOMKeyboardEvent_dispex_vtbl, - DispDOMKeyboardEvent_tid, - DOMKeyboardEvent_iface_tids +dispex_static_data_t KeyboardEvent_dispex = { + .id = PROT_KeyboardEvent, + .prototype_id = PROT_UIEvent, + .vtbl = &DOMKeyboardEvent_dispex_vtbl, + .disp_tid = DispDOMKeyboardEvent_tid, + .iface_tids = KeyboardEvent_iface_tids, };
static void DOMPageTransitionEvent_init_dispex_info(dispex_data_t *info, compat_mode_t mode) @@ -3815,7 +3816,7 @@ static DOMEvent *mouse_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t e static DOMEvent *keyboard_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMKeyboardEvent *keyboard_event = event_ctor(sizeof(DOMKeyboardEvent), &DOMKeyboardEvent_dispex, nsevent, event_id, script_global, + DOMKeyboardEvent *keyboard_event = event_ctor(sizeof(DOMKeyboardEvent), &KeyboardEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!keyboard_event) return NULL; keyboard_event->IDOMKeyboardEvent_iface.lpVtbl = &DOMKeyboardEventVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index a628171af93..fb3c08e0b07 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -446,6 +446,7 @@ typedef struct { X(HTMLTableRowElement) \ X(HTMLTextAreaElement) \ X(HTMLTitleElement) \ + X(KeyboardEvent) \ X(MSCSSProperties) \ X(MSCSSRuleList) \ X(MSCurrentStyleCSSProperties) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 16287ee5ecb..b648bf82b5f 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3247,4 +3247,6 @@ sync_test("prototypes", function() { check(UIEvent.prototype, Event.prototype, "UI event prototype"); check(document.createEvent("MouseEvent"), MouseEvent.prototype, "mouse event"); check(MouseEvent.prototype, UIEvent.prototype, "mouse event prototype"); + check(document.createEvent("KeyboardEvent"), KeyboardEvent.prototype, "keyboard event"); + check(KeyboardEvent.prototype, UIEvent.prototype, "keyboard event prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 4 ++++ 3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index bfd07c37a78..274dcb7e0dd 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3666,12 +3666,13 @@ static const dispex_static_data_vtbl_t DOMPageTransitionEvent_dispex_vtbl = { .unlink = DOMEvent_unlink };
-static dispex_static_data_t DOMPageTransitionEvent_dispex = { - "PageTransitionEvent", - &DOMPageTransitionEvent_dispex_vtbl, - DispDOMEvent_tid, - Event_iface_tids, - DOMPageTransitionEvent_init_dispex_info +dispex_static_data_t PageTransitionEvent_dispex = { + .id = PROT_PageTransitionEvent, + .prototype_id = PROT_Event, + .vtbl = &DOMPageTransitionEvent_dispex_vtbl, + .disp_tid = DispDOMEvent_tid, + .iface_tids = Event_iface_tids, + .init_info = DOMPageTransitionEvent_init_dispex_info, };
static const dispex_static_data_vtbl_t DOMCustomEvent_dispex_vtbl = { @@ -3828,7 +3829,7 @@ static DOMEvent *keyboard_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_ static DOMEvent *page_transition_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMPageTransitionEvent *page_transition_event = event_ctor(sizeof(DOMCustomEvent), &DOMPageTransitionEvent_dispex, nsevent, event_id, + DOMPageTransitionEvent *page_transition_event = event_ctor(sizeof(DOMCustomEvent), &PageTransitionEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!page_transition_event) return NULL; page_transition_event->IWinePageTransitionEvent_iface.lpVtbl = &DOMPageTransitionEventVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index fb3c08e0b07..34d8e3736a8 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -456,6 +456,7 @@ typedef struct { X(MutationObserver) \ X(Navigator) \ X(Node) \ + X(PageTransitionEvent) \ X(SVGCircleElement) \ X(SVGElement) \ X(SVGSVGElement) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index b648bf82b5f..fcaab3d53a0 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3249,4 +3249,8 @@ sync_test("prototypes", function() { check(MouseEvent.prototype, UIEvent.prototype, "mouse event prototype"); check(document.createEvent("KeyboardEvent"), KeyboardEvent.prototype, "keyboard event"); check(KeyboardEvent.prototype, UIEvent.prototype, "keyboard event prototype"); + if(v >= 11) { + check(document.createEvent("PageTransitionEvent"), PageTransitionEvent.prototype, "page transition event"); + check(PageTransitionEvent.prototype, Event.prototype, "page transition event prototype"); + } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 274dcb7e0dd..8839580cfd8 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3682,17 +3682,18 @@ static const dispex_static_data_vtbl_t DOMCustomEvent_dispex_vtbl = { .unlink = DOMCustomEvent_unlink };
-static const tid_t DOMCustomEvent_iface_tids[] = { +static const tid_t CustomEvent_iface_tids[] = { IDOMEvent_tid, IDOMCustomEvent_tid, 0 };
-static dispex_static_data_t DOMCustomEvent_dispex = { - "CustomEvent", - &DOMCustomEvent_dispex_vtbl, - DispDOMCustomEvent_tid, - DOMCustomEvent_iface_tids +dispex_static_data_t CustomEvent_dispex = { + .id = PROT_CustomEvent, + .prototype_id = PROT_Event, + .vtbl = &DOMCustomEvent_dispex_vtbl, + .disp_tid = DispDOMCustomEvent_tid, + .iface_tids = CustomEvent_iface_tids, };
static const dispex_static_data_vtbl_t DOMMessageEvent_dispex_vtbl = { @@ -3839,7 +3840,7 @@ static DOMEvent *page_transition_event_ctor(void *iface, nsIDOMEvent *nsevent, e static DOMEvent *custom_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMCustomEvent *custom_event = event_ctor(sizeof(DOMCustomEvent), &DOMCustomEvent_dispex, nsevent, event_id, script_global, + DOMCustomEvent *custom_event = event_ctor(sizeof(DOMCustomEvent), &CustomEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!custom_event) return NULL; custom_event->IDOMCustomEvent_iface.lpVtbl = &DOMCustomEventVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 34d8e3736a8..8cecd6162b8 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -413,6 +413,7 @@ typedef struct { X(CSSStyleSheet) \ X(CharacterData) \ X(ClientRect) \ + X(CustomEvent) \ X(DOMImplementation) \ X(Document) \ X(DocumentType) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index fcaab3d53a0..d735f88778a 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3253,4 +3253,6 @@ sync_test("prototypes", function() { check(document.createEvent("PageTransitionEvent"), PageTransitionEvent.prototype, "page transition event"); check(PageTransitionEvent.prototype, Event.prototype, "page transition event prototype"); } + check(document.createEvent("CustomEvent"), CustomEvent.prototype, "custom event"); + check(CustomEvent.prototype, Event.prototype, "custom event prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 20 ++++++++------------ dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 8839580cfd8..019da7b5ca4 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3703,17 +3703,13 @@ static const dispex_static_data_vtbl_t DOMMessageEvent_dispex_vtbl = { .unlink = DOMMessageEvent_unlink };
-static const tid_t DOMMessageEvent_iface_tids[] = { - IDOMEvent_tid, - 0 -}; - -static dispex_static_data_t DOMMessageEvent_dispex = { - "MessageEvent", - &DOMMessageEvent_dispex_vtbl, - DispDOMMessageEvent_tid, - DOMMessageEvent_iface_tids, - DOMMessageEvent_init_dispex_info +dispex_static_data_t MessageEvent_dispex = { + .id = PROT_MessageEvent, + .prototype_id = PROT_Event, + .vtbl = &DOMMessageEvent_dispex_vtbl, + .disp_tid = DispDOMMessageEvent_tid, + .iface_tids = Event_iface_tids, + .init_info = DOMMessageEvent_init_dispex_info, };
static const dispex_static_data_vtbl_t DOMProgressEvent_dispex_vtbl = { @@ -3863,7 +3859,7 @@ static DOMEvent *progress_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_ static DOMEvent *message_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMMessageEvent *message_event = event_ctor(sizeof(DOMMessageEvent), &DOMMessageEvent_dispex, nsevent, event_id, script_global, + DOMMessageEvent *message_event = event_ctor(sizeof(DOMMessageEvent), &MessageEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!message_event) return NULL; message_event->IDOMMessageEvent_iface.lpVtbl = &DOMMessageEventVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 8cecd6162b8..c2a7f78e5dc 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -453,6 +453,7 @@ typedef struct { X(MSCurrentStyleCSSProperties) \ X(MSEventObj) \ X(MSStyleCSSProperties) \ + X(MessageEvent) \ X(MouseEvent) \ X(MutationObserver) \ X(Navigator) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index d735f88778a..2a26d720185 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3255,4 +3255,6 @@ sync_test("prototypes", function() { } check(document.createEvent("CustomEvent"), CustomEvent.prototype, "custom event"); check(CustomEvent.prototype, Event.prototype, "custom event prototype"); + check(document.createEvent("MessageEvent"), MessageEvent.prototype, "message event"); + check(MessageEvent.prototype, Event.prototype, "message event prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 4 ++++ 3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 019da7b5ca4..86886f2ccc5 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3719,17 +3719,18 @@ static const dispex_static_data_vtbl_t DOMProgressEvent_dispex_vtbl = { .unlink = DOMProgressEvent_unlink };
-static const tid_t DOMProgressEvent_iface_tids[] = { +static const tid_t ProgressEvent_iface_tids[] = { IDOMEvent_tid, IDOMProgressEvent_tid, 0 };
-static dispex_static_data_t DOMProgressEvent_dispex = { - "ProgressEvent", - &DOMProgressEvent_dispex_vtbl, - DispDOMProgressEvent_tid, - DOMProgressEvent_iface_tids +dispex_static_data_t ProgressEvent_dispex = { + .id = PROT_ProgressEvent, + .prototype_id = PROT_Event, + .vtbl = &DOMProgressEvent_dispex_vtbl, + .disp_tid = DispDOMProgressEvent_tid, + .iface_tids = ProgressEvent_iface_tids, };
static const dispex_static_data_vtbl_t DOMStorageEvent_dispex_vtbl = { @@ -3849,7 +3850,7 @@ static DOMEvent *progress_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_ { DOMProgressEvent *progress_event;
- if(!(progress_event = event_ctor(sizeof(DOMProgressEvent), &DOMProgressEvent_dispex, nsevent, event_id, script_global, compat_mode))) + if(!(progress_event = event_ctor(sizeof(DOMProgressEvent), &ProgressEvent_dispex, nsevent, event_id, script_global, compat_mode))) return NULL; progress_event->IDOMProgressEvent_iface.lpVtbl = &DOMProgressEventVtbl; progress_event->nsevent = iface; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index c2a7f78e5dc..069ccfc4813 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -459,6 +459,7 @@ typedef struct { X(Navigator) \ X(Node) \ X(PageTransitionEvent) \ + X(ProgressEvent) \ X(SVGCircleElement) \ X(SVGElement) \ X(SVGSVGElement) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 2a26d720185..0129e41bcbd 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3257,4 +3257,8 @@ sync_test("prototypes", function() { check(CustomEvent.prototype, Event.prototype, "custom event prototype"); check(document.createEvent("MessageEvent"), MessageEvent.prototype, "message event"); check(MessageEvent.prototype, Event.prototype, "message event prototype"); + if(v >= 10) { + check(document.createEvent("ProgressEvent"), ProgressEvent.prototype, "progress event"); + check(ProgressEvent.prototype, Event.prototype, "progress event prototype"); + } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlevent.c | 15 ++++++++------- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 86886f2ccc5..222a3cca9b5 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3740,17 +3740,18 @@ static const dispex_static_data_vtbl_t DOMStorageEvent_dispex_vtbl = { .unlink = DOMEvent_unlink };
-static const tid_t DOMStorageEvent_iface_tids[] = { +static const tid_t StorageEvent_iface_tids[] = { IDOMEvent_tid, IDOMStorageEvent_tid, 0 };
-static dispex_static_data_t DOMStorageEvent_dispex = { - "StorageEvent", - &DOMStorageEvent_dispex_vtbl, - DispDOMStorageEvent_tid, - DOMStorageEvent_iface_tids +dispex_static_data_t StorageEvent_dispex = { + .id = PROT_StorageEvent, + .prototype_id = PROT_Event, + .vtbl = &DOMStorageEvent_dispex_vtbl, + .disp_tid = DispDOMStorageEvent_tid, + .iface_tids = StorageEvent_iface_tids, };
static void *event_ctor(unsigned size, dispex_static_data_t *dispex_data, nsIDOMEvent *nsevent, eventid_t event_id, @@ -3870,7 +3871,7 @@ static DOMEvent *message_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t static DOMEvent *storage_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, HTMLInnerWindow *script_global, compat_mode_t compat_mode) { - DOMStorageEvent *storage_event = event_ctor(sizeof(DOMStorageEvent), &DOMStorageEvent_dispex, nsevent, event_id, script_global, + DOMStorageEvent *storage_event = event_ctor(sizeof(DOMStorageEvent), &StorageEvent_dispex, nsevent, event_id, script_global, compat_mode); if(!storage_event) return NULL; storage_event->IDOMStorageEvent_iface.lpVtbl = &DOMStorageEventVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 069ccfc4813..b98671188be 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -467,6 +467,7 @@ typedef struct { X(SVGTextContentElement) \ X(SVGTextPositioningElement) \ X(Storage) \ + X(StorageEvent) \ X(StyleSheet) \ X(StyleSheetList) \ X(Text) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 0129e41bcbd..18749938658 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3261,4 +3261,6 @@ sync_test("prototypes", function() { check(document.createEvent("ProgressEvent"), ProgressEvent.prototype, "progress event"); check(ProgressEvent.prototype, Event.prototype, "progress event prototype"); } + check(document.createEvent("StorageEvent"), StorageEvent.prototype, "storage event"); + check(StorageEvent.prototype, Event.prototype, "storage event prototype"); });
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=147683
Your paranoid android.
=== w10pro64_en_AE_u8 (32 bit report) ===
mshtml: htmldoc.c:353: Test failed: expected Exec_SETTITLE
=== w1064v1507 (32 bit report) ===
mshtml: script.c:1223: Test failed: L"/index.html?dom.js:document_lastModified: lastModified too far from navigationStart: 1143"