From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index b98671188be..405f16184f9 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -466,6 +466,7 @@ typedef struct { X(SVGTSpanElement) \ X(SVGTextContentElement) \ X(SVGTextPositioningElement) \ + X(Screen) \ X(Storage) \ X(StorageEvent) \ X(StyleSheet) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 043709d6de8..7b63ff85ff3 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -416,15 +416,15 @@ static const dispex_static_data_vtbl_t HTMLScreen_dispex_vtbl = { .destructor = HTMLScreen_destructor, };
-static const tid_t HTMLScreen_iface_tids[] = { +static const tid_t Screen_iface_tids[] = { IHTMLScreen_tid, 0 }; -static dispex_static_data_t HTMLScreen_dispex = { - "Screen", - &HTMLScreen_dispex_vtbl, - DispHTMLScreen_tid, - HTMLScreen_iface_tids +dispex_static_data_t Screen_dispex = { + .id = PROT_Screen, + .vtbl = &HTMLScreen_dispex_vtbl, + .disp_tid = DispHTMLScreen_tid, + .iface_tids = Screen_iface_tids, };
HRESULT create_html_screen(HTMLInnerWindow *window, IHTMLScreen **ret) @@ -437,7 +437,7 @@ HRESULT create_html_screen(HTMLInnerWindow *window, IHTMLScreen **ret)
screen->IHTMLScreen_iface.lpVtbl = &HTMLSreenVtbl;
- init_dispatch(&screen->dispex, &HTMLScreen_dispex, window, + init_dispatch(&screen->dispex, &Screen_dispex, window, dispex_compat_mode(&window->event_target.dispex));
*ret = &screen->IHTMLScreen_iface; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 18749938658..0232e41e843 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3263,4 +3263,6 @@ sync_test("prototypes", function() { } check(document.createEvent("StorageEvent"), StorageEvent.prototype, "storage event"); check(StorageEvent.prototype, Event.prototype, "storage event prototype"); + check(screen, Screen.prototype, "screen"); + check(Screen.prototype, Object.prototype, "screen prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 405f16184f9..00bc833b32b 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -447,6 +447,7 @@ typedef struct { X(HTMLTableRowElement) \ X(HTMLTextAreaElement) \ X(HTMLTitleElement) \ + X(History) \ X(KeyboardEvent) \ X(MSCSSProperties) \ X(MSCSSRuleList) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 7b63ff85ff3..249c1ab8fe5 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -549,15 +549,15 @@ static const dispex_static_data_vtbl_t OmHistory_dispex_vtbl = { .unlink = OmHistory_unlink, };
-static const tid_t OmHistory_iface_tids[] = { +static const tid_t History_iface_tids[] = { IOmHistory_tid, 0 }; -static dispex_static_data_t OmHistory_dispex = { - "History", - &OmHistory_dispex_vtbl, - DispHTMLHistory_tid, - OmHistory_iface_tids +dispex_static_data_t History_dispex = { + .id = PROT_History, + .vtbl = &OmHistory_dispex_vtbl, + .disp_tid = DispHTMLHistory_tid, + .iface_tids = History_iface_tids, };
@@ -569,7 +569,7 @@ HRESULT create_history(HTMLInnerWindow *window, OmHistory **ret) if(!history) return E_OUTOFMEMORY;
- init_dispatch(&history->dispex, &OmHistory_dispex, window, + init_dispatch(&history->dispex, &History_dispex, window, dispex_compat_mode(&window->event_target.dispex)); history->IOmHistory_iface.lpVtbl = &OmHistoryVtbl;
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 0232e41e843..400c321a4de 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3265,4 +3265,6 @@ sync_test("prototypes", function() { check(StorageEvent.prototype, Event.prototype, "storage event prototype"); check(screen, Screen.prototype, "screen"); check(Screen.prototype, Object.prototype, "screen prototype"); + check(history, History.prototype, "history"); + check(History.prototype, Object.prototype, "history prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 4 ++++ 3 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 00bc833b32b..6e02639d3ba 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -460,6 +460,7 @@ typedef struct { X(Navigator) \ X(Node) \ X(PageTransitionEvent) \ + X(PluginArray) \ X(ProgressEvent) \ X(SVGCircleElement) \ X(SVGElement) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 249c1ab8fe5..844da74b480 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -664,15 +664,15 @@ static const dispex_static_data_vtbl_t HTMLPluginsCollection_dispex_vtbl = { .unlink = HTMLPluginsCollection_unlink };
-static const tid_t HTMLPluginsCollection_iface_tids[] = { +static const tid_t PluginArray_iface_tids[] = { IHTMLPluginsCollection_tid, 0 }; -static dispex_static_data_t HTMLPluginsCollection_dispex = { - "PluginArray", - &HTMLPluginsCollection_dispex_vtbl, - DispCPlugins_tid, - HTMLPluginsCollection_iface_tids +dispex_static_data_t PluginArray_dispex = { + .id = PROT_PluginArray, + .vtbl = &HTMLPluginsCollection_dispex_vtbl, + .disp_tid = DispCPlugins_tid, + .iface_tids = PluginArray_iface_tids, };
static HRESULT create_plugins_collection(OmNavigator *navigator, HTMLPluginsCollection **ret) @@ -686,7 +686,7 @@ static HRESULT create_plugins_collection(OmNavigator *navigator, HTMLPluginsColl col->IHTMLPluginsCollection_iface.lpVtbl = &HTMLPluginsCollectionVtbl; col->navigator = navigator;
- init_dispatch_with_owner(&col->dispex, &HTMLPluginsCollection_dispex, &navigator->dispex); + init_dispatch_with_owner(&col->dispex, &PluginArray_dispex, &navigator->dispex);
*ret = col; return S_OK; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 400c321a4de..1c1c0c1e882 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3267,4 +3267,8 @@ sync_test("prototypes", function() { check(Screen.prototype, Object.prototype, "screen prototype"); check(history, History.prototype, "history"); check(History.prototype, Object.prototype, "history prototype"); + if(v >= 11 /* todo_wine */) { + check(navigator.plugins, PluginArray.prototype, "plugins"); + check(PluginArray.prototype, Object.prototype, "plugins prototype"); + } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 6e02639d3ba..65d76b13a9c 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -455,6 +455,7 @@ typedef struct { X(MSEventObj) \ X(MSStyleCSSProperties) \ X(MessageEvent) \ + X(MimeTypeArray) \ X(MouseEvent) \ X(MutationObserver) \ X(Navigator) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 844da74b480..7ed9f74dfc7 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -765,15 +765,15 @@ static const dispex_static_data_vtbl_t HTMLMimeTypesCollection_dispex_vtbl = { .unlink = HTMLMimeTypesCollection_unlink };
-static const tid_t HTMLMimeTypesCollection_iface_tids[] = { +static const tid_t MimeTypeArray_iface_tids[] = { IHTMLMimeTypesCollection_tid, 0 }; -static dispex_static_data_t HTMLMimeTypesCollection_dispex = { - "MimeTypeArray", - &HTMLMimeTypesCollection_dispex_vtbl, - IHTMLMimeTypesCollection_tid, - HTMLMimeTypesCollection_iface_tids +dispex_static_data_t MimeTypeArray_dispex = { + .id = PROT_MimeTypeArray, + .vtbl = &HTMLMimeTypesCollection_dispex_vtbl, + .disp_tid = IHTMLMimeTypesCollection_tid, + .iface_tids = MimeTypeArray_iface_tids, };
static HRESULT create_mime_types_collection(OmNavigator *navigator, HTMLMimeTypesCollection **ret) @@ -787,7 +787,7 @@ static HRESULT create_mime_types_collection(OmNavigator *navigator, HTMLMimeType col->IHTMLMimeTypesCollection_iface.lpVtbl = &HTMLMimeTypesCollectionVtbl; col->navigator = navigator;
- init_dispatch_with_owner(&col->dispex, &HTMLMimeTypesCollection_dispex, &navigator->dispex); + init_dispatch_with_owner(&col->dispex, &MimeTypeArray_dispex, &navigator->dispex);
*ret = col; return S_OK; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 1c1c0c1e882..964083ca1c4 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3270,5 +3270,7 @@ sync_test("prototypes", function() { if(v >= 11 /* todo_wine */) { check(navigator.plugins, PluginArray.prototype, "plugins"); check(PluginArray.prototype, Object.prototype, "plugins prototype"); + check(navigator.mimeTypes, MimeTypeArray.prototype, "mimeTypes"); + check(MimeTypeArray.prototype, Object.prototype, "mimeTypes prototype"); } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 65d76b13a9c..25cc0e1ce84 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -461,6 +461,7 @@ typedef struct { X(Navigator) \ X(Node) \ X(PageTransitionEvent) \ + X(PerformanceTiming) \ X(PluginArray) \ X(ProgressEvent) \ X(SVGCircleElement) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 7ed9f74dfc7..681f1926bfa 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1521,15 +1521,15 @@ static const dispex_static_data_vtbl_t HTMLPerformanceTiming_dispex_vtbl = { .unlink = HTMLPerformanceTiming_unlink };
-static const tid_t HTMLPerformanceTiming_iface_tids[] = { +static const tid_t PerformanceTiming_iface_tids[] = { IHTMLPerformanceTiming_tid, 0 }; -static dispex_static_data_t HTMLPerformanceTiming_dispex = { - "PerformanceTiming", - &HTMLPerformanceTiming_dispex_vtbl, - IHTMLPerformanceTiming_tid, - HTMLPerformanceTiming_iface_tids +dispex_static_data_t PerformanceTiming_dispex = { + .id = PROT_PerformanceTiming, + .vtbl = &HTMLPerformanceTiming_dispex_vtbl, + .disp_tid = IHTMLPerformanceTiming_tid, + .iface_tids = PerformanceTiming_iface_tids, };
typedef struct { @@ -1714,7 +1714,7 @@ static HRESULT WINAPI HTMLPerformance_get_timing(IHTMLPerformance *iface, IHTMLP timing->window = This->window; IHTMLWindow2_AddRef(&This->window->base.IHTMLWindow2_iface);
- init_dispatch(&timing->dispex, &HTMLPerformanceTiming_dispex, This->window, + init_dispatch(&timing->dispex, &PerformanceTiming_dispex, This->window, dispex_compat_mode(&This->dispex));
This->timing = &timing->IHTMLPerformanceTiming_iface; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 964083ca1c4..8c425db8e34 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3273,4 +3273,6 @@ sync_test("prototypes", function() { check(navigator.mimeTypes, MimeTypeArray.prototype, "mimeTypes"); check(MimeTypeArray.prototype, Object.prototype, "mimeTypes prototype"); } + check(performance.timing, PerformanceTiming.prototype, "timing"); + check(PerformanceTiming.prototype, Object.prototype, "timing prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 25cc0e1ce84..7ccc7fb163f 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -461,6 +461,7 @@ typedef struct { X(Navigator) \ X(Node) \ X(PageTransitionEvent) \ + X(PerformanceNavigation) \ X(PerformanceTiming) \ X(PluginArray) \ X(ProgressEvent) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 681f1926bfa..35357f32312 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1642,15 +1642,15 @@ static const dispex_static_data_vtbl_t HTMLPerformanceNavigation_dispex_vtbl = { .unlink = HTMLPerformanceNavigation_unlink };
-static const tid_t HTMLPerformanceNavigation_iface_tids[] = { +static const tid_t PerformanceNavigation_iface_tids[] = { IHTMLPerformanceNavigation_tid, 0 }; -static dispex_static_data_t HTMLPerformanceNavigation_dispex = { - "PerformanceNavigation", - &HTMLPerformanceNavigation_dispex_vtbl, - IHTMLPerformanceNavigation_tid, - HTMLPerformanceNavigation_iface_tids +dispex_static_data_t PerformanceNavigation_dispex = { + .id = PROT_PerformanceNavigation, + .vtbl = &HTMLPerformanceNavigation_dispex_vtbl, + .disp_tid = IHTMLPerformanceNavigation_tid, + .iface_tids = PerformanceNavigation_iface_tids, };
typedef struct { @@ -1687,7 +1687,7 @@ static HRESULT WINAPI HTMLPerformance_get_navigation(IHTMLPerformance *iface, navigation->window = This->window; IHTMLWindow2_AddRef(&This->window->base.IHTMLWindow2_iface);
- init_dispatch(&navigation->dispex, &HTMLPerformanceNavigation_dispex, This->window, + init_dispatch(&navigation->dispex, &PerformanceNavigation_dispex, This->window, dispex_compat_mode(&This->dispex));
This->navigation = &navigation->IHTMLPerformanceNavigation_iface; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 8c425db8e34..a5743717060 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3275,4 +3275,6 @@ sync_test("prototypes", function() { } check(performance.timing, PerformanceTiming.prototype, "timing"); check(PerformanceTiming.prototype, Object.prototype, "timing prototype"); + check(performance.navigation, PerformanceNavigation.prototype, "navigation"); + check(PerformanceNavigation.prototype, Object.prototype, "navigation prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 14 +++++++------- dlls/mshtml/tests/documentmode.js | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 7ccc7fb163f..7dbfd4ecec8 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -461,6 +461,7 @@ typedef struct { X(Navigator) \ X(Node) \ X(PageTransitionEvent) \ + X(Performance) \ X(PerformanceNavigation) \ X(PerformanceTiming) \ X(PluginArray) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 35357f32312..d781d17eefb 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1805,15 +1805,15 @@ static const dispex_static_data_vtbl_t HTMLPerformance_dispex_vtbl = { .unlink = HTMLPerformance_unlink };
-static const tid_t HTMLPerformance_iface_tids[] = { +static const tid_t Performance_iface_tids[] = { IHTMLPerformance_tid, 0 }; -static dispex_static_data_t HTMLPerformance_dispex = { - "Performance", - &HTMLPerformance_dispex_vtbl, - IHTMLPerformance_tid, - HTMLPerformance_iface_tids +dispex_static_data_t Performance_dispex = { + .id = PROT_Performance, + .vtbl = &HTMLPerformance_dispex_vtbl, + .disp_tid = IHTMLPerformance_tid, + .iface_tids = Performance_iface_tids, };
HRESULT create_performance(HTMLInnerWindow *window, IHTMLPerformance **ret) @@ -1829,7 +1829,7 @@ HRESULT create_performance(HTMLInnerWindow *window, IHTMLPerformance **ret) performance->window = window; IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
- init_dispatch(&performance->dispex, &HTMLPerformance_dispex, window, compat_mode); + init_dispatch(&performance->dispex, &Performance_dispex, window, compat_mode);
*ret = &performance->IHTMLPerformance_iface; return S_OK; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index a5743717060..1677a682146 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3277,4 +3277,6 @@ sync_test("prototypes", function() { check(PerformanceTiming.prototype, Object.prototype, "timing prototype"); check(performance.navigation, PerformanceNavigation.prototype, "navigation"); check(PerformanceNavigation.prototype, Object.prototype, "navigation prototype"); + check(performance, Performance.prototype, "performance"); + check(Performance.prototype, Object.prototype, "performance prototype"); });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmlwindow.c | 4 +++- dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/omnavigator.c | 15 ++++++++------- dlls/mshtml/tests/documentmode.js | 6 ++++++ 4 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index ea1f7f4b278..30ad3e0fd0d 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -3810,10 +3810,12 @@ static HRESULT HTMLWindow_find_dispid(DispatchEx *dispex, const WCHAR *name, DWO sizeof(constructor_names[0]), cmp_name); if(constr_name) { prototype_id_t id = constr_name - constructor_names + 1; + compat_mode_t compat_mode = dispex_compat_mode(dispex); DispatchEx *constr; VARIANT v;
- if(dispex_compat_mode(dispex) >= object_descriptors[id]->min_compat_mode) { + if(compat_mode >= object_descriptors[id]->min_compat_mode && + (!object_descriptors[id]->max_compat_mode || compat_mode <= object_descriptors[id]->max_compat_mode)) { hres = get_constructor(This, id, &constr); if(FAILED(hres)) return hres; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 7dbfd4ecec8..9c38b407451 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -453,6 +453,7 @@ typedef struct { X(MSCSSRuleList) \ X(MSCurrentStyleCSSProperties) \ X(MSEventObj) \ + X(MSNamespaceInfoCollection) \ X(MSStyleCSSProperties) \ X(MessageEvent) \ X(MimeTypeArray) \ @@ -505,6 +506,7 @@ typedef struct { prototype_id_t constructor_id; UINT32 js_flags; compat_mode_t min_compat_mode; + compat_mode_t max_compat_mode; char prototype_name[64]; } dispex_static_data_t;
diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index d781d17eefb..e9988b6c9c4 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1910,15 +1910,16 @@ static const dispex_static_data_vtbl_t HTMLNamespaceCollection_dispex_vtbl = { .destructor = HTMLNamespaceCollection_destructor, };
-static const tid_t HTMLNamespaceCollection_iface_tids[] = { +static const tid_t MSNamespaceInfoCollection_iface_tids[] = { IHTMLNamespaceCollection_tid, 0 }; -static dispex_static_data_t HTMLNamespaceCollection_dispex = { - "MSNamespaceInfoCollection", - &HTMLNamespaceCollection_dispex_vtbl, - DispHTMLNamespaceCollection_tid, - HTMLNamespaceCollection_iface_tids +dispex_static_data_t MSNamespaceInfoCollection_dispex = { + .id = PROT_MSNamespaceInfoCollection, + .vtbl = &HTMLNamespaceCollection_dispex_vtbl, + .disp_tid = DispHTMLNamespaceCollection_tid, + .iface_tids = MSNamespaceInfoCollection_iface_tids, + .max_compat_mode = COMPAT_MODE_IE9, };
HRESULT create_namespace_collection(HTMLDocumentNode *doc, IHTMLNamespaceCollection **ret) @@ -1929,7 +1930,7 @@ HRESULT create_namespace_collection(HTMLDocumentNode *doc, IHTMLNamespaceCollect return E_OUTOFMEMORY;
namespaces->IHTMLNamespaceCollection_iface.lpVtbl = &HTMLNamespaceCollectionVtbl; - init_dispatch(&namespaces->dispex, &HTMLNamespaceCollection_dispex, doc->script_global, + init_dispatch(&namespaces->dispex, &MSNamespaceInfoCollection_dispex, doc->script_global, dispex_compat_mode(&doc->node.event_target.dispex)); *ret = &namespaces->IHTMLNamespaceCollection_iface; return S_OK; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 1677a682146..2e463f231f5 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3279,4 +3279,10 @@ sync_test("prototypes", function() { check(PerformanceNavigation.prototype, Object.prototype, "navigation prototype"); check(performance, Performance.prototype, "performance"); check(Performance.prototype, Object.prototype, "performance prototype"); + if(v < 10) { + check(document.namespaces, MSNamespaceInfoCollection.prototype, "namespaces"); + check(MSNamespaceInfoCollection.prototype, Object.prototype, "namespaces prototype"); + }else { + ok(!("MSNamespaceInfoCollection" in window), "MSNamespaceInfoCollection found in window"); + } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 17 +++++++++-------- dlls/mshtml/tests/documentmode.js | 6 ++++++ 3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 9c38b407451..0e4ea54278f 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(Console) \ X(CustomEvent) \ X(DOMImplementation) \ X(Document) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index e9988b6c9c4..f36f6aa60b4 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2107,20 +2107,21 @@ static void console_destructor(DispatchEx *dispex) free(console); }
-static const dispex_static_data_vtbl_t console_dispex_vtbl = { +static const dispex_static_data_vtbl_t Console_dispex_vtbl = { .query_interface = console_query_interface, .destructor = console_destructor, };
-static const tid_t console_iface_tids[] = { +static const tid_t Console_iface_tids[] = { IWineMSHTMLConsole_tid, 0 }; -static dispex_static_data_t console_dispex = { - "Console", - &console_dispex_vtbl, - IWineMSHTMLConsole_tid, - console_iface_tids +dispex_static_data_t Console_dispex = { + .id = PROT_Console, + .vtbl = &Console_dispex_vtbl, + .disp_tid = IWineMSHTMLConsole_tid, + .iface_tids = Console_iface_tids, + .min_compat_mode = COMPAT_MODE_IE10, };
void create_console(HTMLInnerWindow *window, IWineMSHTMLConsole **ret) @@ -2135,7 +2136,7 @@ void create_console(HTMLInnerWindow *window, IWineMSHTMLConsole **ret) }
obj->IWineMSHTMLConsole_iface.lpVtbl = &WineMSHTMLConsoleVtbl; - init_dispatch(&obj->dispex, &console_dispex, window, dispex_compat_mode(&window->event_target.dispex)); + init_dispatch(&obj->dispex, &Console_dispex, window, dispex_compat_mode(&window->event_target.dispex));
*ret = &obj->IWineMSHTMLConsole_iface; } diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 2e463f231f5..8e36648a5a3 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3285,4 +3285,10 @@ sync_test("prototypes", function() { }else { ok(!("MSNamespaceInfoCollection" in window), "MSNamespaceInfoCollection found in window"); } + if(v >= 10) { + check(console, Console.prototype, "console"); + check(Console.prototype, Object.prototype, "console prototype"); + }else { + ok(!("Console" in window), "Console found in window"); + } });
From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/omnavigator.c | 33 ++++++++++++++++--------------- dlls/mshtml/tests/documentmode.js | 6 ++++++ 3 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 0e4ea54278f..39820527546 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -456,6 +456,7 @@ typedef struct { X(MSEventObj) \ X(MSNamespaceInfoCollection) \ X(MSStyleCSSProperties) \ + X(MediaQueryList) \ X(MessageEvent) \ X(MimeTypeArray) \ X(MouseEvent) \ diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index f36f6aa60b4..6b255d4cd54 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2354,7 +2354,7 @@ static inline struct media_query_list *media_query_list_from_DispatchEx(Dispatch return CONTAINING_RECORD(iface, struct media_query_list, dispex); }
-static void *media_query_list_query_interface(DispatchEx *dispex, REFIID riid) +static void *MediaQueryList_query_interface(DispatchEx *dispex, REFIID riid) { struct media_query_list *media_query_list = media_query_list_from_DispatchEx(dispex);
@@ -2364,7 +2364,7 @@ static void *media_query_list_query_interface(DispatchEx *dispex, REFIID riid) return NULL; }
-static void media_query_list_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) +static void MediaQueryList_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { struct media_query_list *media_query_list = media_query_list_from_DispatchEx(dispex); struct media_query_list_listener *listener; @@ -2375,7 +2375,7 @@ static void media_query_list_traverse(DispatchEx *dispex, nsCycleCollectionTrave note_cc_edge((nsISupports*)media_query_list->nsquerylist, "nsquerylist", cb); }
-static void media_query_list_unlink(DispatchEx *dispex) +static void MediaQueryList_unlink(DispatchEx *dispex) { struct media_query_list *media_query_list = media_query_list_from_DispatchEx(dispex);
@@ -2389,29 +2389,30 @@ static void media_query_list_unlink(DispatchEx *dispex) unlink_ref(&media_query_list->nsquerylist); }
-static void media_query_list_destructor(DispatchEx *dispex) +static void MediaQueryList_destructor(DispatchEx *dispex) { struct media_query_list *media_query_list = media_query_list_from_DispatchEx(dispex); nsIDOMMediaQueryListListener_Release(&media_query_list->callback->nsIDOMMediaQueryListListener_iface); free(media_query_list); }
-static const dispex_static_data_vtbl_t media_query_list_dispex_vtbl = { - .query_interface = media_query_list_query_interface, - .destructor = media_query_list_destructor, - .traverse = media_query_list_traverse, - .unlink = media_query_list_unlink +static const dispex_static_data_vtbl_t MediaQueryList_dispex_vtbl = { + .query_interface = MediaQueryList_query_interface, + .destructor = MediaQueryList_destructor, + .traverse = MediaQueryList_traverse, + .unlink = MediaQueryList_unlink };
-static const tid_t media_query_list_iface_tids[] = { +static const tid_t MediaQueryList_iface_tids[] = { IWineMSHTMLMediaQueryList_tid, 0 }; -static dispex_static_data_t media_query_list_dispex = { - "MediaQueryList", - &media_query_list_dispex_vtbl, - IWineMSHTMLMediaQueryList_tid, - media_query_list_iface_tids +dispex_static_data_t MediaQueryList_dispex = { + .id = PROT_MediaQueryList, + .vtbl = &MediaQueryList_dispex_vtbl, + .disp_tid = IWineMSHTMLMediaQueryList_tid, + .iface_tids = MediaQueryList_iface_tids, + .min_compat_mode = COMPAT_MODE_IE10, };
HRESULT create_media_query_list(HTMLInnerWindow *window, BSTR media_query, IDispatch **ret) @@ -2452,7 +2453,7 @@ HRESULT create_media_query_list(HTMLInnerWindow *window, BSTR media_query, IDisp
media_query_list->IWineMSHTMLMediaQueryList_iface.lpVtbl = &media_query_list_vtbl; list_init(&media_query_list->listeners); - init_dispatch(&media_query_list->dispex, &media_query_list_dispex, window, + init_dispatch(&media_query_list->dispex, &MediaQueryList_dispex, window, dispex_compat_mode(&window->event_target.dispex));
*ret = (IDispatch*)&media_query_list->IWineMSHTMLMediaQueryList_iface; diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 8e36648a5a3..7626f439d29 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3291,4 +3291,10 @@ sync_test("prototypes", function() { }else { ok(!("Console" in window), "Console found in window"); } + if(v >= 10) { + check(window.matchMedia("(hover:hover)"), MediaQueryList.prototype, "media query"); + check(MediaQueryList.prototype, Object.prototype, "media query prototype"); + }else { + ok(!("MediaQueryList" in window), "MediaQueryList found in window"); + } });