From: Jacek Caban jacek@codeweavers.com
--- dlls/mshtml/htmltable.c | 40 +++++++++++++++++-------------- dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/tests/documentmode.js | 4 ++++ 3 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/dlls/mshtml/htmltable.c b/dlls/mshtml/htmltable.c index 19d03387539..be79b82e5fb 100644 --- a/dlls/mshtml/htmltable.c +++ b/dlls/mshtml/htmltable.c @@ -804,7 +804,7 @@ static const NodeImplVtbl HTMLTableRowImplVtbl = { .get_attr_col = HTMLElement_get_attr_col, };
-static const event_target_vtbl_t HTMLTableRow_event_target_vtbl = { +static const event_target_vtbl_t HTMLTableRowElement_event_target_vtbl = { { HTMLELEMENT_DISPEX_VTBL_ENTRIES, .query_interface= HTMLTableRow_query_interface, @@ -816,18 +816,20 @@ static const event_target_vtbl_t HTMLTableRow_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static const tid_t HTMLTableRow_iface_tids[] = { +static const tid_t HTMLTableRowElement_iface_tids[] = { HTMLELEMENT_TIDS, IHTMLTableRow_tid, 0 };
-static dispex_static_data_t HTMLTableRow_dispex = { - "HTMLTableRowElement", - &HTMLTableRow_event_target_vtbl.dispex_vtbl, - DispHTMLTableRow_tid, - HTMLTableRow_iface_tids, - HTMLElement_init_dispex_info +dispex_static_data_t HTMLTableRowElement_dispex = { + .name = "HTMLTableRowElement", + .id = PROT_HTMLTableRowElement, + .prototype_id = PROT_HTMLElement, + .vtbl = &HTMLTableRowElement_event_target_vtbl.dispex_vtbl, + .disp_tid = DispHTMLTableRow_tid, + .iface_tids = HTMLTableRowElement_iface_tids, + .init_info = HTMLElement_init_dispex_info, };
HRESULT HTMLTableRow_Create(HTMLDocumentNode *doc, nsIDOMElement *nselem, HTMLElement **elem) @@ -842,7 +844,7 @@ HRESULT HTMLTableRow_Create(HTMLDocumentNode *doc, nsIDOMElement *nselem, HTMLEl ret->IHTMLTableRow_iface.lpVtbl = &HTMLTableRowVtbl; ret->element.node.vtbl = &HTMLTableRowImplVtbl;
- HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableRow_dispex); + HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableRowElement_dispex);
nsres = nsIDOMElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableRowElement, (void**)&ret->nsrow); assert(nsres == NS_OK); @@ -1655,7 +1657,7 @@ static const NodeImplVtbl HTMLTableImplVtbl = { .get_attr_col = HTMLElement_get_attr_col, };
-static const event_target_vtbl_t HTMLTable_event_target_vtbl = { +static const event_target_vtbl_t HTMLTableElement_event_target_vtbl = { { HTMLELEMENT_DISPEX_VTBL_ENTRIES, .query_interface= HTMLTable_query_interface, @@ -1667,7 +1669,7 @@ static const event_target_vtbl_t HTMLTable_event_target_vtbl = { .handle_event = HTMLElement_handle_event };
-static const tid_t HTMLTable_iface_tids[] = { +static const tid_t HTMLTableElement_iface_tids[] = { HTMLELEMENT_TIDS, IHTMLTable_tid, IHTMLTable2_tid, @@ -1675,12 +1677,14 @@ static const tid_t HTMLTable_iface_tids[] = { 0 };
-static dispex_static_data_t HTMLTable_dispex = { - "HTMLTableElement", - &HTMLTable_event_target_vtbl.dispex_vtbl, - DispHTMLTable_tid, - HTMLTable_iface_tids, - HTMLElement_init_dispex_info +dispex_static_data_t HTMLTableElement_dispex = { + .name = "HTMLTableElement", + .id = PROT_HTMLTableElement, + .prototype_id = PROT_HTMLElement, + .vtbl = &HTMLTableElement_event_target_vtbl.dispex_vtbl, + .disp_tid = DispHTMLTable_tid, + .iface_tids = HTMLTableElement_iface_tids, + .init_info = HTMLElement_init_dispex_info, };
HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMElement *nselem, HTMLElement **elem) @@ -1697,7 +1701,7 @@ HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMElement *nselem, HTMLEleme ret->IHTMLTable2_iface.lpVtbl = &HTMLTable2Vtbl; ret->IHTMLTable3_iface.lpVtbl = &HTMLTable3Vtbl;
- HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex); + HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableElement_dispex);
nsres = nsIDOMElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable); assert(nsres == NS_OK); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 40bde4fd98e..f8c16162862 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -432,6 +432,8 @@ typedef struct { X(HTMLScriptElement) \ X(HTMLSelectElement) \ X(HTMLStyleElement) \ + X(HTMLTableElement) \ + X(HTMLTableRowElement) \ X(HTMLTitleElement) \ X(MutationObserver) \ X(Navigator) \ diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index a5703358b93..c170addbad4 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -3186,4 +3186,8 @@ sync_test("prototypes", function() { check(HTMLSelectElement.prototype, HTMLElement.prototype, "select element prototype"); check(document.createElement("style"), HTMLStyleElement.prototype, "style element"); check(HTMLStyleElement.prototype, HTMLElement.prototype, "style element prototype"); + check(document.createElement("table"), HTMLTableElement.prototype, "table element"); + check(HTMLTableElement.prototype, HTMLElement.prototype, "table element prototype"); + check(document.createElement("tr"), HTMLTableRowElement.prototype, "tr element"); + check(HTMLTableRowElement.prototype, HTMLElement.prototype, "tr element prototype"); });