msxml3: Corrected Entity Reference Test.
[wine.git] / dlls / mshtml / htmltable.c
blobffef38af33671c46183002981364e7113f199d01
1 /*
2 * Copyright 2007 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <stdio.h>
24 #define COBJMACROS
26 #include "windef.h"
27 #include "winbase.h"
28 #include "winuser.h"
29 #include "winnls.h"
30 #include "ole2.h"
32 #include "wine/debug.h"
34 #include "mshtml_private.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
38 typedef struct {
39 HTMLElement element;
41 const IHTMLTableVtbl *lpHTMLTableVtbl;
43 ConnectionPoint cp;
44 } HTMLTable;
46 #define HTMLTABLE(x) ((IHTMLTable*) &(x)->lpHTMLTableVtbl)
48 #define HTMLTABLE_THIS(iface) DEFINE_THIS(HTMLTable, HTMLTable, iface)
50 static HRESULT WINAPI HTMLTable_QueryInterface(IHTMLTable *iface,
51 REFIID riid, void **ppv)
53 HTMLTable *This = HTMLTABLE_THIS(iface);
55 return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
58 static ULONG WINAPI HTMLTable_AddRef(IHTMLTable *iface)
60 HTMLTable *This = HTMLTABLE_THIS(iface);
62 return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node));
65 static ULONG WINAPI HTMLTable_Release(IHTMLTable *iface)
67 HTMLTable *This = HTMLTABLE_THIS(iface);
69 return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node));
72 static HRESULT WINAPI HTMLTable_GetTypeInfoCount(IHTMLTable *iface, UINT *pctinfo)
74 HTMLTable *This = HTMLTABLE_THIS(iface);
75 FIXME("(%p)->(%p)\n", This, pctinfo);
76 return E_NOTIMPL;
79 static HRESULT WINAPI HTMLTable_GetTypeInfo(IHTMLTable *iface, UINT iTInfo,
80 LCID lcid, ITypeInfo **ppTInfo)
82 HTMLTable *This = HTMLTABLE_THIS(iface);
83 FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
84 return E_NOTIMPL;
87 static HRESULT WINAPI HTMLTable_GetIDsOfNames(IHTMLTable *iface, REFIID riid,
88 LPOLESTR *rgszNames, UINT cNames,
89 LCID lcid, DISPID *rgDispId)
91 HTMLTable *This = HTMLTABLE_THIS(iface);
92 FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
93 lcid, rgDispId);
94 return E_NOTIMPL;
97 static HRESULT WINAPI HTMLTable_Invoke(IHTMLTable *iface, DISPID dispIdMember,
98 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
99 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
101 HTMLTable *This = HTMLTABLE_THIS(iface);
102 FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
103 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
104 return E_NOTIMPL;
107 static HRESULT WINAPI HTMLTable_put_cols(IHTMLTable *iface, long v)
109 HTMLTable *This = HTMLTABLE_THIS(iface);
110 FIXME("(%p)->(%ld)\n", This, v);
111 return E_NOTIMPL;
114 static HRESULT WINAPI HTMLTable_get_cols(IHTMLTable *iface, long *p)
116 HTMLTable *This = HTMLTABLE_THIS(iface);
117 FIXME("(%p)->(%p)\n", This, p);
118 return E_NOTIMPL;
121 static HRESULT WINAPI HTMLTable_put_border(IHTMLTable *iface, VARIANT v)
123 HTMLTable *This = HTMLTABLE_THIS(iface);
124 FIXME("(%p)->(v)\n", This);
125 return E_NOTIMPL;
128 static HRESULT WINAPI HTMLTable_get_border(IHTMLTable *iface, VARIANT *p)
130 HTMLTable *This = HTMLTABLE_THIS(iface);
131 FIXME("(%p)->(%p)\n", This, p);
132 return E_NOTIMPL;
135 static HRESULT WINAPI HTMLTable_put_frame(IHTMLTable *iface, BSTR v)
137 HTMLTable *This = HTMLTABLE_THIS(iface);
138 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
139 return E_NOTIMPL;
142 static HRESULT WINAPI HTMLTable_get_frame(IHTMLTable *iface, BSTR *p)
144 HTMLTable *This = HTMLTABLE_THIS(iface);
145 FIXME("(%p)->(%p)\n", This, p);
146 return E_NOTIMPL;
149 static HRESULT WINAPI HTMLTable_put_rules(IHTMLTable *iface, BSTR v)
151 HTMLTable *This = HTMLTABLE_THIS(iface);
152 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
153 return E_NOTIMPL;
156 static HRESULT WINAPI HTMLTable_get_rules(IHTMLTable *iface, BSTR *p)
158 HTMLTable *This = HTMLTABLE_THIS(iface);
159 FIXME("(%p)->(%p)\n", This, p);
160 return E_NOTIMPL;
163 static HRESULT WINAPI HTMLTable_put_cellSpacing(IHTMLTable *iface, VARIANT v)
165 HTMLTable *This = HTMLTABLE_THIS(iface);
166 FIXME("(%p)->(v)\n", This);
167 return E_NOTIMPL;
170 static HRESULT WINAPI HTMLTable_get_cellSpacing(IHTMLTable *iface, VARIANT *p)
172 HTMLTable *This = HTMLTABLE_THIS(iface);
173 FIXME("(%p)->(%p)\n", This, p);
174 return E_NOTIMPL;
177 static HRESULT WINAPI HTMLTable_put_cellPadding(IHTMLTable *iface, VARIANT v)
179 HTMLTable *This = HTMLTABLE_THIS(iface);
180 FIXME("(%p)->(v)\n", This);
181 return E_NOTIMPL;
184 static HRESULT WINAPI HTMLTable_get_cellPadding(IHTMLTable *iface, VARIANT *p)
186 HTMLTable *This = HTMLTABLE_THIS(iface);
187 FIXME("(%p)->(%p)\n", This, p);
188 return E_NOTIMPL;
191 static HRESULT WINAPI HTMLTable_put_background(IHTMLTable *iface, BSTR v)
193 HTMLTable *This = HTMLTABLE_THIS(iface);
194 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
195 return E_NOTIMPL;
198 static HRESULT WINAPI HTMLTable_get_background(IHTMLTable *iface, BSTR *p)
200 HTMLTable *This = HTMLTABLE_THIS(iface);
201 FIXME("(%p)->(%p)\n", This, p);
202 return E_NOTIMPL;
205 static HRESULT WINAPI HTMLTable_put_bgColor(IHTMLTable *iface, VARIANT v)
207 HTMLTable *This = HTMLTABLE_THIS(iface);
208 FIXME("(%p)->(v)\n", This);
209 return E_NOTIMPL;
212 static HRESULT WINAPI HTMLTable_get_bgColor(IHTMLTable *iface, VARIANT *p)
214 HTMLTable *This = HTMLTABLE_THIS(iface);
215 FIXME("(%p)->(%p)\n", This, p);
216 return E_NOTIMPL;
219 static HRESULT WINAPI HTMLTable_put_borderColor(IHTMLTable *iface, VARIANT v)
221 HTMLTable *This = HTMLTABLE_THIS(iface);
222 FIXME("(%p)->(v)\n", This);
223 return E_NOTIMPL;
226 static HRESULT WINAPI HTMLTable_get_borderColor(IHTMLTable *iface, VARIANT *p)
228 HTMLTable *This = HTMLTABLE_THIS(iface);
229 FIXME("(%p)->(%p)\n", This, p);
230 return E_NOTIMPL;
233 static HRESULT WINAPI HTMLTable_put_borderColorLight(IHTMLTable *iface, VARIANT v)
235 HTMLTable *This = HTMLTABLE_THIS(iface);
236 FIXME("(%p)->(v)\n", This);
237 return E_NOTIMPL;
240 static HRESULT WINAPI HTMLTable_get_borderColorLight(IHTMLTable *iface, VARIANT *p)
242 HTMLTable *This = HTMLTABLE_THIS(iface);
243 FIXME("(%p)->(%p)\n", This, p);
244 return E_NOTIMPL;
247 static HRESULT WINAPI HTMLTable_put_borderColorDark(IHTMLTable *iface, VARIANT v)
249 HTMLTable *This = HTMLTABLE_THIS(iface);
250 FIXME("(%p)->(v)\n", This);
251 return E_NOTIMPL;
254 static HRESULT WINAPI HTMLTable_get_borderColorDark(IHTMLTable *iface, VARIANT *p)
256 HTMLTable *This = HTMLTABLE_THIS(iface);
257 FIXME("(%p)->(%p)\n", This, p);
258 return E_NOTIMPL;
261 static HRESULT WINAPI HTMLTable_put_align(IHTMLTable *iface, BSTR v)
263 HTMLTable *This = HTMLTABLE_THIS(iface);
264 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
265 return E_NOTIMPL;
268 static HRESULT WINAPI HTMLTable_get_align(IHTMLTable *iface, BSTR *p)
270 HTMLTable *This = HTMLTABLE_THIS(iface);
271 FIXME("(%p)->(%p)\n", This, p);
272 return E_NOTIMPL;
275 static HRESULT WINAPI HTMLTable_refresh(IHTMLTable *iface)
277 HTMLTable *This = HTMLTABLE_THIS(iface);
278 FIXME("(%p)\n", This);
279 return E_NOTIMPL;
282 static HRESULT WINAPI HTMLTable_get_rows(IHTMLTable *iface, IHTMLElementCollection **p)
284 HTMLTable *This = HTMLTABLE_THIS(iface);
285 FIXME("(%p)->(%p)\n", This, p);
286 return E_NOTIMPL;
289 static HRESULT WINAPI HTMLTable_put_width(IHTMLTable *iface, VARIANT v)
291 HTMLTable *This = HTMLTABLE_THIS(iface);
292 FIXME("(%p)->(v)\n", This);
293 return E_NOTIMPL;
296 static HRESULT WINAPI HTMLTable_get_width(IHTMLTable *iface, VARIANT *p)
298 HTMLTable *This = HTMLTABLE_THIS(iface);
299 FIXME("(%p)->(%p)\n", This, p);
300 return E_NOTIMPL;
303 static HRESULT WINAPI HTMLTable_put_height(IHTMLTable *iface, VARIANT v)
305 HTMLTable *This = HTMLTABLE_THIS(iface);
306 FIXME("(%p)->(v)\n", This);
307 return E_NOTIMPL;
310 static HRESULT WINAPI HTMLTable_get_height(IHTMLTable *iface, VARIANT *p)
312 HTMLTable *This = HTMLTABLE_THIS(iface);
313 FIXME("(%p)->(%p)\n", This, p);
314 return E_NOTIMPL;
317 static HRESULT WINAPI HTMLTable_put_dataPageSize(IHTMLTable *iface, long v)
319 HTMLTable *This = HTMLTABLE_THIS(iface);
320 FIXME("(%p)->(%ld)\n", This, v);
321 return E_NOTIMPL;
324 static HRESULT WINAPI HTMLTable_get_dataPageSize(IHTMLTable *iface, long *p)
326 HTMLTable *This = HTMLTABLE_THIS(iface);
327 FIXME("(%p)->(%p)\n", This, p);
328 return E_NOTIMPL;
331 static HRESULT WINAPI HTMLTable_nextPage(IHTMLTable *iface)
333 HTMLTable *This = HTMLTABLE_THIS(iface);
334 FIXME("(%p)\n", This);
335 return E_NOTIMPL;
338 static HRESULT WINAPI HTMLTable_previousPage(IHTMLTable *iface)
340 HTMLTable *This = HTMLTABLE_THIS(iface);
341 FIXME("(%p)\n", This);
342 return E_NOTIMPL;
345 static HRESULT WINAPI HTMLTable_get_tHead(IHTMLTable *iface, IHTMLTableSection **p)
347 HTMLTable *This = HTMLTABLE_THIS(iface);
348 FIXME("(%p)->(%p)\n", This, p);
349 return E_NOTIMPL;
352 static HRESULT WINAPI HTMLTable_get_tFoot(IHTMLTable *iface, IHTMLTableSection **p)
354 HTMLTable *This = HTMLTABLE_THIS(iface);
355 FIXME("(%p)->(%p)\n", This, p);
356 return E_NOTIMPL;
359 static HRESULT WINAPI HTMLTable_get_tBodies(IHTMLTable *iface, IHTMLElementCollection **p)
361 HTMLTable *This = HTMLTABLE_THIS(iface);
362 FIXME("(%p)->(%p)\n", This, p);
363 return E_NOTIMPL;
366 static HRESULT WINAPI HTMLTable_get_caption(IHTMLTable *iface, IHTMLTableCaption **p)
368 HTMLTable *This = HTMLTABLE_THIS(iface);
369 FIXME("(%p)->(%p)\n", This, p);
370 return E_NOTIMPL;
373 static HRESULT WINAPI HTMLTable_createTHead(IHTMLTable *iface, IDispatch **head)
375 HTMLTable *This = HTMLTABLE_THIS(iface);
376 FIXME("(%p)->(%p)\n", This, head);
377 return E_NOTIMPL;
380 static HRESULT WINAPI HTMLTable_deleteTHead(IHTMLTable *iface)
382 HTMLTable *This = HTMLTABLE_THIS(iface);
383 FIXME("(%p)\n", This);
384 return E_NOTIMPL;
387 static HRESULT WINAPI HTMLTable_createTFoot(IHTMLTable *iface, IDispatch **foot)
389 HTMLTable *This = HTMLTABLE_THIS(iface);
390 FIXME("(%p)->(%p)\n", This, foot);
391 return E_NOTIMPL;
394 static HRESULT WINAPI HTMLTable_deleteTFoot(IHTMLTable *iface)
396 HTMLTable *This = HTMLTABLE_THIS(iface);
397 FIXME("(%p)\n", This);
398 return E_NOTIMPL;
401 static HRESULT WINAPI HTMLTable_createCaption(IHTMLTable *iface, IHTMLTableCaption **caption)
403 HTMLTable *This = HTMLTABLE_THIS(iface);
404 FIXME("(%p)->(%p)\n", This, caption);
405 return E_NOTIMPL;
408 static HRESULT WINAPI HTMLTable_deleteCaption(IHTMLTable *iface)
410 HTMLTable *This = HTMLTABLE_THIS(iface);
411 FIXME("(%p)\n", This);
412 return E_NOTIMPL;
415 static HRESULT WINAPI HTMLTable_insertRow(IHTMLTable *iface, long index, IDispatch **row)
417 HTMLTable *This = HTMLTABLE_THIS(iface);
418 FIXME("(%p)->(%ld %p)\n", This, index, row);
419 return E_NOTIMPL;
422 static HRESULT WINAPI HTMLTable_deleteRow(IHTMLTable *iface, long index)
424 HTMLTable *This = HTMLTABLE_THIS(iface);
425 FIXME("(%p)->(%ld)\n", This, index);
426 return E_NOTIMPL;
429 static HRESULT WINAPI HTMLTable_get_readyState(IHTMLTable *iface, BSTR *p)
431 HTMLTable *This = HTMLTABLE_THIS(iface);
432 FIXME("(%p)->(%p)\n", This, p);
433 return E_NOTIMPL;
436 static HRESULT WINAPI HTMLTable_put_onreadystatechange(IHTMLTable *iface, VARIANT v)
438 HTMLTable *This = HTMLTABLE_THIS(iface);
439 FIXME("(%p)->(v)\n", This);
440 return E_NOTIMPL;
443 static HRESULT WINAPI HTMLTable_get_onreadystatechange(IHTMLTable *iface, VARIANT *p)
445 HTMLTable *This = HTMLTABLE_THIS(iface);
446 FIXME("(%p)->(%p)\n", This, p);
447 return E_NOTIMPL;
450 #undef HTMLTABLE_THIS
452 static const IHTMLTableVtbl HTMLTableVtbl = {
453 HTMLTable_QueryInterface,
454 HTMLTable_AddRef,
455 HTMLTable_Release,
456 HTMLTable_GetTypeInfoCount,
457 HTMLTable_GetTypeInfo,
458 HTMLTable_GetIDsOfNames,
459 HTMLTable_Invoke,
460 HTMLTable_put_cols,
461 HTMLTable_get_cols,
462 HTMLTable_put_border,
463 HTMLTable_get_border,
464 HTMLTable_put_frame,
465 HTMLTable_get_frame,
466 HTMLTable_put_rules,
467 HTMLTable_get_rules,
468 HTMLTable_put_cellSpacing,
469 HTMLTable_get_cellSpacing,
470 HTMLTable_put_cellPadding,
471 HTMLTable_get_cellPadding,
472 HTMLTable_put_background,
473 HTMLTable_get_background,
474 HTMLTable_put_bgColor,
475 HTMLTable_get_bgColor,
476 HTMLTable_put_borderColor,
477 HTMLTable_get_borderColor,
478 HTMLTable_put_borderColorLight,
479 HTMLTable_get_borderColorLight,
480 HTMLTable_put_borderColorDark,
481 HTMLTable_get_borderColorDark,
482 HTMLTable_put_align,
483 HTMLTable_get_align,
484 HTMLTable_refresh,
485 HTMLTable_get_rows,
486 HTMLTable_put_width,
487 HTMLTable_get_width,
488 HTMLTable_put_height,
489 HTMLTable_get_height,
490 HTMLTable_put_dataPageSize,
491 HTMLTable_get_dataPageSize,
492 HTMLTable_nextPage,
493 HTMLTable_previousPage,
494 HTMLTable_get_tHead,
495 HTMLTable_get_tFoot,
496 HTMLTable_get_tBodies,
497 HTMLTable_get_caption,
498 HTMLTable_createTHead,
499 HTMLTable_deleteTHead,
500 HTMLTable_createTFoot,
501 HTMLTable_deleteTFoot,
502 HTMLTable_createCaption,
503 HTMLTable_deleteCaption,
504 HTMLTable_insertRow,
505 HTMLTable_deleteRow,
506 HTMLTable_get_readyState,
507 HTMLTable_put_onreadystatechange,
508 HTMLTable_get_onreadystatechange
511 #define HTMLTABLE_NODE_THIS(iface) DEFINE_THIS2(HTMLTable, element.node, iface)
513 static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
515 HTMLTable *This = HTMLTABLE_NODE_THIS(iface);
517 *ppv = NULL;
519 if(IsEqualGUID(&IID_IUnknown, riid)) {
520 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
521 *ppv = HTMLTABLE(This);
522 }else if(IsEqualGUID(&IID_IDispatch, riid)) {
523 TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
524 *ppv = HTMLTABLE(This);
525 }else if(IsEqualGUID(&IID_IHTMLTable, riid)) {
526 TRACE("(%p)->(IID_IHTMLTable %p)\n", This, ppv);
527 *ppv = HTMLTABLE(This);
530 if(*ppv) {
531 IUnknown_AddRef((IUnknown*)*ppv);
532 return S_OK;
535 return HTMLElement_QI(&This->element.node, riid, ppv);
538 static void HTMLTable_destructor(HTMLDOMNode *iface)
540 HTMLTable *This = HTMLTABLE_NODE_THIS(iface);
541 HTMLElement_destructor(&This->element.node);
544 #undef HTMLTABLE_NODE_THIS
546 static const NodeImplVtbl HTMLTableImplVtbl = {
547 HTMLTable_QI,
548 HTMLTable_destructor
551 HTMLElement *HTMLTable_Create(nsIDOMHTMLElement *nselem)
553 HTMLTable *ret = heap_alloc(sizeof(HTMLTable));
555 HTMLElement_Init(&ret->element);
557 ret->element.node.vtbl = &HTMLTableImplVtbl;
558 ret->lpHTMLTableVtbl = &HTMLTableVtbl;
560 ConnectionPoint_Init(&ret->cp, &ret->element.cp_container, &DIID_HTMLTableEvents);
562 return &ret->element;