From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/svg.c | 28 ++++++++++++++++------------ dlls/mshtml/tests/documentmode.js | 8 +++++++- 3 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 9696e4d5df5..3218582347b 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -441,6 +441,8 @@ typedef struct { X(MutationObserver) \ X(Navigator) \ X(Node) \ + X(SVGElement) \ + X(SVGSVGElement) \ X(Storage) \ X(Window) \ X(XMLHttpRequest) diff --git a/dlls/mshtml/svg.c b/dlls/mshtml/svg.c index c72046f1e3f..524a2aed62a 100644 --- a/dlls/mshtml/svg.c +++ b/dlls/mshtml/svg.c @@ -156,12 +156,14 @@ static const event_target_vtbl_t SVGElement_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static dispex_static_data_t SVGElement_dispex = { - "HTMLUnknownElement", - &SVGElement_event_target_vtbl.dispex_vtbl, - DispHTMLUnknownElement_tid, - HTMLElement_iface_tids, - HTMLElement_init_dispex_info +dispex_static_data_t SVGElement_dispex = { + .name = "SVGElement", + .id = PROT_SVGElement, + .prototype_id = PROT_Element, + .vtbl = &SVGElement_event_target_vtbl.dispex_vtbl, + .disp_tid = DispHTMLUnknownElement_tid, + .iface_tids = HTMLElement_iface_tids, + .init_info = HTMLElement_init_dispex_info, };
static void init_svg_element(SVGElement *svg_element, HTMLDocumentNode *doc, nsIDOMSVGElement *nselem, dispex_static_data_t *dispex_data) @@ -656,12 +658,14 @@ static const event_target_vtbl_t SVGSVGElement_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static dispex_static_data_t SVGSVGElement_dispex = { - "HTMLUnknownElement", - &SVGSVGElement_event_target_vtbl.dispex_vtbl, - DispHTMLUnknownElement_tid, - HTMLElement_iface_tids, - HTMLElement_init_dispex_info +dispex_static_data_t SVGSVGElement_dispex = { + .name = "SVGSVGElement", + .id = PROT_SVGSVGElement, + .prototype_id = PROT_SVGElement, + .vtbl = &SVGSVGElement_event_target_vtbl.dispex_vtbl, + .disp_tid = DispHTMLUnknownElement_tid, + .iface_tids = HTMLElement_iface_tids, + .init_info = HTMLElement_init_dispex_info, };
static HRESULT create_viewport_element(HTMLDocumentNode *doc, nsIDOMSVGElement *nselem, HTMLElement **elem) diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index ecf6e826ade..f3e8b99a6bd 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -19,6 +19,8 @@ var compat_version; var tests = [];
+var svg_ns = "http://www.w3.org/2000/svg"; + ok(performance.timing.navigationStart > 0, "navigationStart <= 0"); ok(performance.timing.fetchStart == performance.timing.navigationStart, "fetchStart != navigationStart"); ok(performance.timing.domainLookupStart >= performance.timing.fetchStart, "domainLookupStart < fetchStart"); @@ -347,6 +349,8 @@ sync_test("builtin_toString", function() { if(v >= 9) { document.body.innerHTML = "<!--...-->"; test("comment", document.body.firstChild, "Comment"); + + test("SVGSVGElement", document.createElementNS(svg_ns, "svg"), "SVGSVGElement"); } });
@@ -2228,7 +2232,6 @@ sync_test("elem_attrNS", function() { if(v < 9) return; /* not available */
var specialspace_ns = "http://www.mozilla.org/ns/specialspace"; - var svg_ns = "http://www.w3.org/2000/svg";
var elem = document.createElement("div"), r;
@@ -3195,4 +3198,7 @@ sync_test("prototypes", function() { check(HTMLTableCellElement.prototype, HTMLElement.prototype, "table cell prototype"); check(document.createElement("textarea"), HTMLTextAreaElement.prototype, "textarea element"); check(HTMLTextAreaElement.prototype, HTMLElement.prototype, "textarea element prototype"); + check(document.createElementNS(svg_ns, "svg"), SVGSVGElement.prototype, "svg:svg element"); + check(SVGSVGElement.prototype, SVGElement.prototype, "svg:svg element prototype"); + check(SVGElement.prototype, Element.prototype, "svg element prototype"); });