Stub implementation od IPersist, IPersistMoniker, IPersistFile,
[wine] / dlls / mshtml / htmldoc.c
1 /*
2  * Copyright 2005 Jacek Caban
3  *
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.
8  *
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.
13  *
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #include "config.h"
20
21 #include <stdarg.h>
22 #include <stdio.h>
23
24 #define COBJMACROS
25
26 #include "windef.h"
27 #include "winbase.h"
28 #include "winuser.h"
29 #include "ole2.h"
30
31 #include "mshtml.h"
32 #include "mshtmdid.h"
33
34 #include "wine/debug.h"
35
36 #include "mshtml_private.h"
37
38 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
39
40 static HRESULT WINAPI HTMLDocument_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject)
41 {
42     HTMLDocument *This = (HTMLDocument*)iface;
43
44     *ppvObject = NULL;
45     if(IsEqualGUID(&IID_IUnknown, riid)) {
46         TRACE("(%p)->(IID_IUnknown, %p)\n", This, ppvObject);
47         *ppvObject = HTMLDOC(This);
48     }else if(IsEqualGUID(&IID_IDispatch, riid)) {
49         TRACE("(%p)->(IID_IDispatch, %p)\n", This, ppvObject);
50         *ppvObject = HTMLDOC(This);
51     }else if(IsEqualGUID(&IID_IHTMLDocument, riid)) {
52         TRACE("(%p)->(IID_IHTMLDocument, %p)\n", This, ppvObject);
53         *ppvObject = HTMLDOC(This);
54     }else if(IsEqualGUID(&IID_IHTMLDocument2, riid)) {
55         TRACE("(%p)->(IID_IDocument2, %p)\n", This, ppvObject);
56         *ppvObject = HTMLDOC(This);
57     }else if(IsEqualGUID(&IID_IPersist, riid)) {
58         TRACE("(%p)->(IID_IPersist, %p)\n", This, ppvObject);
59         *ppvObject = PERSIST(This);
60     }else if(IsEqualGUID(&IID_IPersistMoniker, riid)) {
61         TRACE("(%p)->(IID_IPersistMoniker, %p)\n", This, ppvObject);
62         *ppvObject = PERSISTMON(This);
63     }else if(IsEqualGUID(&IID_IPersistFile, riid)) {
64         TRACE("(%p)->(IID_IPersistFile, %p)\n", This, ppvObject);
65         *ppvObject = PERSISTFILE(This);
66     }else if(IsEqualGUID(&IID_IMonikerProp, riid)) {
67         TRACE("(%p)->(IID_IMonikerProp, %p)\n", This, ppvObject);
68         *ppvObject = MONPROP(This);
69     }
70
71     if(*ppvObject) {
72         IHTMLDocument2_AddRef(iface);
73         return S_OK;
74     }
75
76     FIXME("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppvObject);
77     return E_NOINTERFACE;
78 }
79
80 static ULONG WINAPI HTMLDocument_AddRef(IHTMLDocument2 *iface)
81 {
82     HTMLDocument *This = (HTMLDocument*)iface;
83     ULONG ref = InterlockedIncrement(&This->ref);
84     TRACE("(%p) ref = %lu\n", This, ref);
85     return ref;
86 }
87
88 static ULONG WINAPI HTMLDocument_Release(IHTMLDocument2 *iface)
89 {
90     HTMLDocument *This = (HTMLDocument*)iface;
91     ULONG ref = InterlockedDecrement(&This->ref);
92
93     TRACE("(%p) ref = %lu\n", This, ref);
94
95     if(!ref)
96         HeapFree(GetProcessHeap(), 0, This);
97
98     return ref;
99 }
100
101 static HRESULT WINAPI HTMLDocument_GetTypeInfoCount(IHTMLDocument2 *iface, UINT *pctinfo)
102 {
103     FIXME("(%p)->(%p)\n", iface, pctinfo);
104     return E_NOTIMPL;
105 }
106
107 static HRESULT WINAPI HTMLDocument_GetTypeInfo(IHTMLDocument2 *iface, UINT iTInfo,
108                                                 LCID lcid, ITypeInfo **ppTInfo)
109 {
110     FIXME("(%p)->(%u %lu %p)\n", iface, iTInfo, lcid, ppTInfo);
111     return E_NOTIMPL;
112 }
113
114 static HRESULT WINAPI HTMLDocument_GetIDsOfNames(IHTMLDocument2 *iface, REFIID riid,
115                                                 LPOLESTR *rgszNames, UINT cNames,
116                                                 LCID lcid, DISPID *rgDispId)
117 {
118     FIXME("(%p)->(%s %p %u %lu %p)\n", iface, debugstr_guid(riid), rgszNames, cNames,
119                                         lcid, rgDispId);
120     return E_NOTIMPL;
121 }
122
123 static HRESULT WINAPI HTMLDocument_Invoke(IHTMLDocument2 *iface, DISPID dispIdMember,
124                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
125                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
126 {
127     FIXME("(%p)->(%ld %s %ld %d %p %p %p %p)\n", iface, dispIdMember, debugstr_guid(riid),
128                                   lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
129     return E_NOTIMPL;
130 }
131
132 static HRESULT WINAPI HTMLDocument_get_Script(IHTMLDocument2 *iface, IDispatch **p)
133 {
134     FIXME("(%p)->(%p)\n", iface, p);
135     return E_NOTIMPL;
136 }
137
138 static HRESULT WINAPI HTMLDocument_get_all(IHTMLDocument2 *iface, IHTMLElementCollection **p)
139 {
140     FIXME("(%p)->(%p)\n", iface, p);
141     return E_NOTIMPL;
142 }
143
144 static HRESULT WINAPI HTMLDocument_get_body(IHTMLDocument2 *iface, IHTMLElement **p)
145 {
146     FIXME("(%p)->(%p)\n", iface, p);
147     return E_NOTIMPL;
148 }
149
150 static HRESULT WINAPI HTMLDocument_get_activeElement(IHTMLDocument2 *iface, IHTMLElement **p)
151 {
152     FIXME("(%p)->(%p)\n", iface, p);
153     return E_NOTIMPL;
154 }
155
156 static HRESULT WINAPI HTMLDocument_get_images(IHTMLDocument2 *iface, IHTMLElementCollection **p)
157 {
158     FIXME("(%p)->(%p)\n", iface, p);
159     return E_NOTIMPL;
160 }
161
162 static HRESULT WINAPI HTMLDocument_get_applets(IHTMLDocument2 *iface, IHTMLElementCollection **p)
163 {
164     FIXME("(%p)->(%p)\n", iface, p);
165     return E_NOTIMPL;
166 }
167
168 static HRESULT WINAPI HTMLDocument_get_links(IHTMLDocument2 *iface, IHTMLElementCollection **p)
169 {
170     FIXME("(%p)->(%p)\n", iface, p);
171     return E_NOTIMPL;
172 }
173
174 static HRESULT WINAPI HTMLDocument_get_forms(IHTMLDocument2 *iface, IHTMLElementCollection **p)
175 {
176     FIXME("(%p)->(%p)\n", iface, p);
177     return E_NOTIMPL;
178 }
179
180 static HRESULT WINAPI HTMLDocument_get_anchors(IHTMLDocument2 *iface, IHTMLElementCollection **p)
181 {
182     FIXME("(%p)->(%p)\n", iface, p);
183     return E_NOTIMPL;
184 }
185
186 static HRESULT WINAPI HTMLDocument_put_title(IHTMLDocument2 *iface, BSTR v)
187 {
188     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
189     return E_NOTIMPL;
190 }
191
192 static HRESULT WINAPI HTMLDocument_get_title(IHTMLDocument2 *iface, BSTR *p)
193 {
194     FIXME("(%p)->(%p)\n", iface, p);
195     return E_NOTIMPL;
196 }
197
198 static HRESULT WINAPI HTMLDocument_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
199 {
200     FIXME("(%p)->(%p)\n", iface, p);
201     return E_NOTIMPL;
202 }
203
204 static HRESULT WINAPI HTMLDocument_put_designMode(IHTMLDocument2 *iface, BSTR v)
205 {
206     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
207     return E_NOTIMPL;
208 }
209
210 static HRESULT WINAPI HTMLDocument_get_designMode(IHTMLDocument2 *iface, BSTR *p)
211 {
212     FIXME("(%p)->(%p)\n", iface, p);
213     return E_NOTIMPL;
214 }
215
216 static HRESULT WINAPI HTMLDocument_get_selection(IHTMLDocument2 *iface, IHTMLSelectionObject **p)
217 {
218     FIXME("(%p)->(%p)\n", iface, p);
219     return E_NOTIMPL;
220 }
221
222 static HRESULT WINAPI HTMLDocument_get_readyState(IHTMLDocument2 *iface, BSTR *p)
223 {
224     FIXME("(%p)->(%p)\n", iface, p);
225     return E_NOTIMPL;
226 }
227
228 static HRESULT WINAPI HTMLDocument_get_frames(IHTMLDocument2 *iface, IHTMLFramesCollection2 **p)
229 {
230     FIXME("(%p)->(%p)\n", iface, p);
231     return E_NOTIMPL;
232 }
233
234 static HRESULT WINAPI HTMLDocument_get_embeds(IHTMLDocument2 *iface, IHTMLElementCollection **p)
235 {
236     FIXME("(%p)->(%p)\n", iface, p);
237     return E_NOTIMPL;
238 }
239
240 static HRESULT WINAPI HTMLDocument_get_plugins(IHTMLDocument2 *iface, IHTMLElementCollection **p)
241 {
242     FIXME("(%p)->(%p)\n", iface, p);
243     return E_NOTIMPL;
244 }
245
246 static HRESULT WINAPI HTMLDocument_put_alinkColor(IHTMLDocument2 *iface, VARIANT v)
247 {
248     FIXME("(%p)\n", iface);
249     return E_NOTIMPL;
250 }
251
252 static HRESULT WINAPI HTMLDocument_get_alinkColor(IHTMLDocument2 *iface, VARIANT *p)
253 {
254     FIXME("(%p)->(%p)\n", iface, p);
255     return E_NOTIMPL;
256 }
257
258 static HRESULT WINAPI HTMLDocument_put_bgColor(IHTMLDocument2 *iface, VARIANT v)
259 {
260     FIXME("(%p)\n", iface);
261     return E_NOTIMPL;
262 }
263
264 static HRESULT WINAPI HTMLDocument_get_bgColor(IHTMLDocument2 *iface, VARIANT *p)
265 {
266     FIXME("(%p)->(%p)\n", iface, p);
267     return E_NOTIMPL;
268 }
269
270 static HRESULT WINAPI HTMLDocument_put_fgColor(IHTMLDocument2 *iface, VARIANT v)
271 {
272     FIXME("(%p)\n", iface);
273     return E_NOTIMPL;
274 }
275
276 static HRESULT WINAPI HTMLDocument_get_fgColor(IHTMLDocument2 *iface, VARIANT *p)
277 {
278     FIXME("(%p)->(%p)\n", iface, p);
279     return E_NOTIMPL;
280 }
281
282 static HRESULT WINAPI HTMLDocument_put_linkColor(IHTMLDocument2 *iface, VARIANT v)
283 {
284     FIXME("(%p)->()\n", iface);
285     return E_NOTIMPL;
286 }
287
288 static HRESULT WINAPI HTMLDocument_get_linkColor(IHTMLDocument2 *iface, VARIANT *p)
289 {
290     FIXME("(%p)->(%p)\n", iface, p);
291     return E_NOTIMPL;
292 }
293
294 static HRESULT WINAPI HTMLDocument_put_vlinkColor(IHTMLDocument2 *iface, VARIANT v)
295 {
296     FIXME("(%p)\n", iface);
297     return E_NOTIMPL;
298 }
299
300 static HRESULT WINAPI HTMLDocument_get_vlinkColor(IHTMLDocument2 *iface, VARIANT *p)
301 {
302     FIXME("(%p)->(%p)\n", iface, p);
303     return E_NOTIMPL;
304 }
305
306 static HRESULT WINAPI HTMLDocument_get_referrer(IHTMLDocument2 *iface, BSTR *p)
307 {
308     FIXME("(%p)->(%p)\n", iface, p);
309     return E_NOTIMPL;
310 }
311
312 static HRESULT WINAPI HTMLDocument_get_location(IHTMLDocument2 *iface, IHTMLLocation **p)
313 {
314     FIXME("(%p)->(%p)\n", iface, p);
315     return E_NOTIMPL;
316 }
317
318 static HRESULT WINAPI HTMLDocument_get_lastModified(IHTMLDocument2 *iface, BSTR *p)
319 {
320     FIXME("(%p)->(%p)\n", iface, p);
321     return E_NOTIMPL;
322 }
323
324 static HRESULT WINAPI HTMLDocument_put_URL(IHTMLDocument2 *iface, BSTR v)
325 {
326     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
327     return E_NOTIMPL;
328 }
329
330 static HRESULT WINAPI HTMLDocument_get_URL(IHTMLDocument2 *iface, BSTR *p)
331 {
332     FIXME("(%p)->(%p)\n", iface, p);
333     return E_NOTIMPL;
334 }
335
336 static HRESULT WINAPI HTMLDocument_put_domain(IHTMLDocument2 *iface, BSTR v)
337 {
338     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
339     return E_NOTIMPL;
340 }
341
342 static HRESULT WINAPI HTMLDocument_get_domain(IHTMLDocument2 *iface, BSTR *p)
343 {
344     FIXME("(%p)->(%p)\n", iface, p);
345     return E_NOTIMPL;
346 }
347
348 static HRESULT WINAPI HTMLDocument_put_cookie(IHTMLDocument2 *iface, BSTR v)
349 {
350     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
351     return E_NOTIMPL;
352 }
353
354 static HRESULT WINAPI HTMLDocument_get_cookie(IHTMLDocument2 *iface, BSTR *p)
355 {
356     FIXME("(%p)->(%p)\n", iface, p);
357     return E_NOTIMPL;
358 }
359
360 static HRESULT WINAPI HTMLDocument_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)
361 {
362     FIXME("(%p)->(%x)\n", iface, v);
363     return E_NOTIMPL;
364 }
365
366 static HRESULT WINAPI HTMLDocument_get_expando(IHTMLDocument2 *iface, VARIANT_BOOL *p)
367 {
368     FIXME("(%p)->(%p)\n", iface, p);
369     return E_NOTIMPL;
370 }
371
372 static HRESULT WINAPI HTMLDocument_put_charset(IHTMLDocument2 *iface, BSTR v)
373 {
374     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
375     return E_NOTIMPL;
376 }
377
378 static HRESULT WINAPI HTMLDocument_get_charset(IHTMLDocument2 *iface, BSTR *p)
379 {
380     FIXME("(%p)->(%p)\n", iface, p);
381     return E_NOTIMPL;
382 }
383
384 static HRESULT WINAPI HTMLDocument_put_defaultCharset(IHTMLDocument2 *iface, BSTR v)
385 {
386     FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
387     return E_NOTIMPL;
388 }
389
390 static HRESULT WINAPI HTMLDocument_get_defaultCharset(IHTMLDocument2 *iface, BSTR *p)
391 {
392     FIXME("(%p)->(%p)\n", iface, p);
393     return E_NOTIMPL;
394 }
395
396 static HRESULT WINAPI HTMLDocument_get_mimeType(IHTMLDocument2 *iface, BSTR *p)
397 {
398     FIXME("(%p)->(%p)\n", iface, p);
399     return E_NOTIMPL;
400 }
401
402 static HRESULT WINAPI HTMLDocument_get_fileSize(IHTMLDocument2 *iface, BSTR *p)
403 {
404     FIXME("(%p)->(%p)\n", iface, p);
405     return E_NOTIMPL;
406 }
407
408 static HRESULT WINAPI HTMLDocument_get_fileCreatedDate(IHTMLDocument2 *iface, BSTR *p)
409 {
410     FIXME("(%p)->(%p)\n", iface, p);
411     return E_NOTIMPL;
412 }
413
414 static HRESULT WINAPI HTMLDocument_get_fileModifiedDate(IHTMLDocument2 *iface, BSTR *p)
415 {
416     FIXME("(%p)->(%p)\n", iface, p);
417     return E_NOTIMPL;
418 }
419
420 static HRESULT WINAPI HTMLDocument_get_fileUpdatedDate(IHTMLDocument2 *iface, BSTR *p)
421 {
422     FIXME("(%p)->(%p)\n", iface, p);
423     return E_NOTIMPL;
424 }
425
426 static HRESULT WINAPI HTMLDocument_get_security(IHTMLDocument2 *iface, BSTR *p)
427 {
428     FIXME("(%p)->(%p)\n", iface, p);
429     return E_NOTIMPL;
430 }
431
432 static HRESULT WINAPI HTMLDocument_get_protocol(IHTMLDocument2 *iface, BSTR *p)
433 {
434     FIXME("(%p)->(%p)\n", iface, p);
435     return E_NOTIMPL;
436 }
437
438 static HRESULT WINAPI HTMLDocument_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
439 {
440     FIXME("(%p)->(%p)\n", iface, p);
441     return E_NOTIMPL;
442 }
443
444 static HRESULT WINAPI HTMLDocument_write(IHTMLDocument2 *iface, SAFEARRAY *psarray)
445 {
446     FIXME("(%p)->(%p)\n", iface, psarray);
447     return E_NOTIMPL;
448 }
449
450 static HRESULT WINAPI HTMLDocument_writeln(IHTMLDocument2 *iface, SAFEARRAY *psarray)
451 {
452     FIXME("(%p)->(%p)\n", iface, psarray);
453     return E_NOTIMPL;
454 }
455
456 static HRESULT WINAPI HTMLDocument_open(IHTMLDocument2 *iface, BSTR url, VARIANT name,
457                         VARIANT features, VARIANT replace, IDispatch **pomWindowResult)
458 {
459     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(url), pomWindowResult);
460     return E_NOTIMPL;
461 }
462
463 static HRESULT WINAPI HTMLDocument_close(IHTMLDocument2 *iface)
464 {
465     FIXME("(%p)\n", iface);
466     return E_NOTIMPL;
467 }
468
469 static HRESULT WINAPI HTMLDocument_clear(IHTMLDocument2 *iface)
470 {
471     FIXME("(%p)\n", iface);
472     return E_NOTIMPL;
473 }
474
475 static HRESULT WINAPI HTMLDocument_queryCommandSupported(IHTMLDocument2 *iface, BSTR cmdID,
476                                                         VARIANT_BOOL *pfRet)
477 {
478     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
479     return E_NOTIMPL;
480 }
481
482 static HRESULT WINAPI HTMLDocument_queryCommandEnabled(IHTMLDocument2 *iface, BSTR cmdID,
483                                                         VARIANT_BOOL *pfRet)
484 {
485     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
486     return E_NOTIMPL;
487 }
488
489 static HRESULT WINAPI HTMLDocument_queryCommandState(IHTMLDocument2 *iface, BSTR cmdID,
490                                                         VARIANT_BOOL *pfRet)
491 {
492     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
493     return E_NOTIMPL;
494 }
495
496 static HRESULT WINAPI HTMLDocument_queryCommandIndeterm(IHTMLDocument2 *iface, BSTR cmdID,
497                                                         VARIANT_BOOL *pfRet)
498 {
499     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
500     return E_NOTIMPL;
501 }
502
503 static HRESULT WINAPI HTMLDocument_queryCommandText(IHTMLDocument2 *iface, BSTR cmdID,
504                                                         BSTR *pfRet)
505 {
506     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
507     return E_NOTIMPL;
508 }
509
510 static HRESULT WINAPI HTMLDocument_queryCommandValue(IHTMLDocument2 *iface, BSTR cmdID,
511                                                         VARIANT *pfRet)
512 {
513     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
514     return E_NOTIMPL;
515 }
516
517 static HRESULT WINAPI HTMLDocument_execCommand(IHTMLDocument2 *iface, BSTR cmdID,
518                                 VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL *pfRet)
519 {
520     FIXME("(%p)->(%s %x %p)\n", iface, debugstr_w(cmdID), showUI, pfRet);
521     return E_NOTIMPL;
522 }
523
524 static HRESULT WINAPI HTMLDocument_execCommandShowHelp(IHTMLDocument2 *iface, BSTR cmdID,
525                                                         VARIANT_BOOL *pfRet)
526 {
527     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
528     return E_NOTIMPL;
529 }
530
531 static HRESULT WINAPI HTMLDocument_createElement(IHTMLDocument2 *iface, BSTR eTag,
532                                                     IHTMLElement **newElem)
533 {
534     FIXME("(%p)->(%s %p)\n", iface, debugstr_w(eTag), newElem);
535     return E_NOTIMPL;
536 }
537
538 static HRESULT WINAPI HTMLDocument_put_onhelp(IHTMLDocument2 *iface, VARIANT v)
539 {
540     FIXME("(%p)\n", iface);
541     return E_NOTIMPL;
542 }
543
544 static HRESULT WINAPI HTMLDocument_get_onhelp(IHTMLDocument2 *iface, VARIANT *p)
545 {
546     FIXME("(%p)->(%p)\n", iface, p);
547     return E_NOTIMPL;
548 }
549
550 static HRESULT WINAPI HTMLDocument_put_onclick(IHTMLDocument2 *iface, VARIANT v)
551 {
552     FIXME("(%p)\n", iface);
553     return E_NOTIMPL;
554 }
555
556 static HRESULT WINAPI HTMLDocument_get_onclick(IHTMLDocument2 *iface, VARIANT *p)
557 {
558     FIXME("(%p)->(%p)\n", iface, p);
559     return E_NOTIMPL;
560 }
561
562 static HRESULT WINAPI HTMLDocument_put_ondblclick(IHTMLDocument2 *iface, VARIANT v)
563 {
564     FIXME("(%p)\n", iface);
565     return E_NOTIMPL;
566 }
567
568 static HRESULT WINAPI HTMLDocument_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p)
569 {
570     FIXME("(%p)->(%p)\n", iface, p);
571     return E_NOTIMPL;
572 }
573
574 static HRESULT WINAPI HTMLDocument_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
575 {
576     FIXME("(%p)\n", iface);
577     return E_NOTIMPL;
578 }
579
580 static HRESULT WINAPI HTMLDocument_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
581 {
582     FIXME("(%p)->(%p)\n", iface, p);
583     return E_NOTIMPL;
584 }
585
586 static HRESULT WINAPI HTMLDocument_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
587 {
588     FIXME("(%p)\n", iface);
589     return E_NOTIMPL;
590 }
591
592 static HRESULT WINAPI HTMLDocument_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
593 {
594     FIXME("(%p)->(%p)\n", iface, p);
595     return E_NOTIMPL;
596 }
597
598 static HRESULT WINAPI HTMLDocument_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
599 {
600     FIXME("(%p)\n", iface);
601     return E_NOTIMPL;
602 }
603
604 static HRESULT WINAPI HTMLDocument_get_onkeypress(IHTMLDocument2 *iface, VARIANT *p)
605 {
606     FIXME("(%p)->(%p)\n", iface, p);
607     return E_NOTIMPL;
608 }
609
610 static HRESULT WINAPI HTMLDocument_put_onmouseup(IHTMLDocument2 *iface, VARIANT v)
611 {
612     FIXME("(%p)\n", iface);
613     return E_NOTIMPL;
614 }
615
616 static HRESULT WINAPI HTMLDocument_get_onmouseup(IHTMLDocument2 *iface, VARIANT *p)
617 {
618     FIXME("(%p)->(%p)\n", iface, p);
619     return E_NOTIMPL;
620 }
621
622 static HRESULT WINAPI HTMLDocument_put_onmousedown(IHTMLDocument2 *iface, VARIANT v)
623 {
624     FIXME("(%p)\n", iface);
625     return E_NOTIMPL;
626 }
627
628 static HRESULT WINAPI HTMLDocument_get_onmousedown(IHTMLDocument2 *iface, VARIANT *p)
629 {
630     FIXME("(%p)->(%p)\n", iface, p);
631     return E_NOTIMPL;
632 }
633
634 static HRESULT WINAPI HTMLDocument_put_onmousemove(IHTMLDocument2 *iface, VARIANT v)
635 {
636     FIXME("(%p)\n", iface);
637     return E_NOTIMPL;
638 }
639
640 static HRESULT WINAPI HTMLDocument_get_onmousemove(IHTMLDocument2 *iface, VARIANT *p)
641 {
642     FIXME("(%p)->(%p)\n", iface, p);
643     return E_NOTIMPL;
644 }
645
646 static HRESULT WINAPI HTMLDocument_put_onmouseout(IHTMLDocument2 *iface, VARIANT v)
647 {
648     FIXME("(%p)\n", iface);
649     return E_NOTIMPL;
650 }
651
652 static HRESULT WINAPI HTMLDocument_get_onmouseout(IHTMLDocument2 *iface, VARIANT *p)
653 {
654     FIXME("(%p)->(%p)\n", iface, p);
655     return E_NOTIMPL;
656 }
657
658 static HRESULT WINAPI HTMLDocument_put_onmouseover(IHTMLDocument2 *iface, VARIANT v)
659 {
660     FIXME("(%p)\n", iface);
661     return E_NOTIMPL;
662 }
663
664 static HRESULT WINAPI HTMLDocument_get_onmouseover(IHTMLDocument2 *iface, VARIANT *p)
665 {
666     FIXME("(%p)->(%p)\n", iface, p);
667     return E_NOTIMPL;
668 }
669
670 static HRESULT WINAPI HTMLDocument_put_onreadystatechange(IHTMLDocument2 *iface, VARIANT v)
671 {
672     FIXME("(%p)\n", iface);
673     return E_NOTIMPL;
674 }
675
676 static HRESULT WINAPI HTMLDocument_get_onreadystatechange(IHTMLDocument2 *iface, VARIANT *p)
677 {
678     FIXME("(%p)->(%p)\n", iface, p);
679     return E_NOTIMPL;
680 }
681
682 static HRESULT WINAPI HTMLDocument_put_onafterupdate(IHTMLDocument2 *iface, VARIANT v)
683 {
684     FIXME("(%p)\n", iface);
685     return E_NOTIMPL;
686 }
687
688 static HRESULT WINAPI HTMLDocument_get_onafterupdate(IHTMLDocument2 *iface, VARIANT *p)
689 {
690     FIXME("(%p)->(%p)\n", iface, p);
691     return E_NOTIMPL;
692 }
693
694 static HRESULT WINAPI HTMLDocument_put_onrowexit(IHTMLDocument2 *iface, VARIANT v)
695 {
696     FIXME("(%p)\n", iface);
697     return E_NOTIMPL;
698 }
699
700 static HRESULT WINAPI HTMLDocument_get_onrowexit(IHTMLDocument2 *iface, VARIANT *p)
701 {
702     FIXME("(%p)->(%p)\n", iface, p);
703     return E_NOTIMPL;
704 }
705
706 static HRESULT WINAPI HTMLDocument_put_onrowenter(IHTMLDocument2 *iface, VARIANT v)
707 {
708     FIXME("(%p)\n", iface);
709     return E_NOTIMPL;
710 }
711
712 static HRESULT WINAPI HTMLDocument_get_onrowenter(IHTMLDocument2 *iface, VARIANT *p)
713 {
714     FIXME("(%p)->(%p)\n", iface, p);
715     return E_NOTIMPL;
716 }
717
718 static HRESULT WINAPI HTMLDocument_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
719 {
720     FIXME("(%p)\n", iface);
721     return E_NOTIMPL;
722 }
723
724 static HRESULT WINAPI HTMLDocument_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
725 {
726     FIXME("(%p)->(%p)\n", iface, p);
727     return E_NOTIMPL;
728 }
729
730 static HRESULT WINAPI HTMLDocument_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
731 {
732     FIXME("(%p)\n", iface);
733     return E_NOTIMPL;
734 }
735
736 static HRESULT WINAPI HTMLDocument_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
737 {
738     FIXME("(%p)->(%p)\n", iface, p);
739     return E_NOTIMPL;
740 }
741
742 static HRESULT WINAPI HTMLDocument_elementFromPoint(IHTMLDocument2 *iface, long x, long y,
743                                                         IHTMLElement **elementHit)
744 {
745     FIXME("(%p)->(%ld %ld %p)\n", iface, x, y, elementHit);
746     return E_NOTIMPL;
747 }
748
749 static HRESULT WINAPI HTMLDocument_get_parentWindow(IHTMLDocument2 *iface, IHTMLWindow2 **p)
750 {
751     FIXME("(%p)->(%p)\n", iface, p);
752     return E_NOTIMPL;
753 }
754
755 static HRESULT WINAPI HTMLDocument_get_styleSheets(IHTMLDocument2 *iface,
756                                                     IHTMLStyleSheetsCollection **p)
757 {
758     FIXME("(%p)->(%p)\n", iface, p);
759     return E_NOTIMPL;
760 }
761
762 static HRESULT WINAPI HTMLDocument_put_onbeforeupdate(IHTMLDocument2 *iface, VARIANT v)
763 {
764     FIXME("(%p)\n", iface);
765     return E_NOTIMPL;
766 }
767
768 static HRESULT WINAPI HTMLDocument_get_onbeforeupdate(IHTMLDocument2 *iface, VARIANT *p)
769 {
770     FIXME("(%p)->(%p)\n", iface, p);
771     return E_NOTIMPL;
772 }
773
774 static HRESULT WINAPI HTMLDocument_put_onerrorupdate(IHTMLDocument2 *iface, VARIANT v)
775 {
776     FIXME("(%p)\n", iface);
777     return E_NOTIMPL;
778 }
779
780 static HRESULT WINAPI HTMLDocument_get_onerrorupdate(IHTMLDocument2 *iface, VARIANT *p)
781 {
782     FIXME("(%p)->(%p)\n", iface, p);
783     return E_NOTIMPL;
784 }
785
786 static HRESULT WINAPI HTMLDocument_toString(IHTMLDocument2 *iface, BSTR *String)
787 {
788     FIXME("(%p)->(%p)\n", iface, String);
789     return E_NOTIMPL;
790 }
791
792 static HRESULT WINAPI HTMLDocument_createStyleSheet(IHTMLDocument2 *iface, BSTR bstrHref,
793                                             long lIndex, IHTMLStyleSheet **ppnewStyleSheet)
794 {
795     FIXME("(%p)->(%s %ld %p)\n", iface, debugstr_w(bstrHref), lIndex, ppnewStyleSheet);
796     return E_NOTIMPL;
797 }
798
799 static IHTMLDocument2Vtbl HTMLDocumentVtbl = {
800     HTMLDocument_QueryInterface,
801     HTMLDocument_AddRef,
802     HTMLDocument_Release,
803     HTMLDocument_GetTypeInfoCount,
804     HTMLDocument_GetTypeInfo,
805     HTMLDocument_GetIDsOfNames,
806     HTMLDocument_Invoke,
807     HTMLDocument_get_Script,
808     HTMLDocument_get_all,
809     HTMLDocument_get_body,
810     HTMLDocument_get_activeElement,
811     HTMLDocument_get_images,
812     HTMLDocument_get_applets,
813     HTMLDocument_get_links,
814     HTMLDocument_get_forms,
815     HTMLDocument_get_anchors,
816     HTMLDocument_put_title,
817     HTMLDocument_get_title,
818     HTMLDocument_get_scripts,
819     HTMLDocument_put_designMode,
820     HTMLDocument_get_designMode,
821     HTMLDocument_get_selection,
822     HTMLDocument_get_readyState,
823     HTMLDocument_get_frames,
824     HTMLDocument_get_embeds,
825     HTMLDocument_get_plugins,
826     HTMLDocument_put_alinkColor,
827     HTMLDocument_get_alinkColor,
828     HTMLDocument_put_bgColor,
829     HTMLDocument_get_bgColor,
830     HTMLDocument_put_fgColor,
831     HTMLDocument_get_fgColor,
832     HTMLDocument_put_linkColor,
833     HTMLDocument_get_linkColor,
834     HTMLDocument_put_vlinkColor,
835     HTMLDocument_get_vlinkColor,
836     HTMLDocument_get_referrer,
837     HTMLDocument_get_location,
838     HTMLDocument_get_lastModified,
839     HTMLDocument_put_URL,
840     HTMLDocument_get_URL,
841     HTMLDocument_put_domain,
842     HTMLDocument_get_domain,
843     HTMLDocument_put_cookie,
844     HTMLDocument_get_cookie,
845     HTMLDocument_put_expando,
846     HTMLDocument_get_expando,
847     HTMLDocument_put_charset,
848     HTMLDocument_get_charset,
849     HTMLDocument_put_defaultCharset,
850     HTMLDocument_get_defaultCharset,
851     HTMLDocument_get_mimeType,
852     HTMLDocument_get_fileSize,
853     HTMLDocument_get_fileCreatedDate,
854     HTMLDocument_get_fileModifiedDate,
855     HTMLDocument_get_fileUpdatedDate,
856     HTMLDocument_get_security,
857     HTMLDocument_get_protocol,
858     HTMLDocument_get_nameProp,
859     HTMLDocument_write,
860     HTMLDocument_writeln,
861     HTMLDocument_open,
862     HTMLDocument_close,
863     HTMLDocument_clear,
864     HTMLDocument_queryCommandSupported,
865     HTMLDocument_queryCommandEnabled,
866     HTMLDocument_queryCommandState,
867     HTMLDocument_queryCommandIndeterm,
868     HTMLDocument_queryCommandText,
869     HTMLDocument_queryCommandValue,
870     HTMLDocument_execCommand,
871     HTMLDocument_execCommandShowHelp,
872     HTMLDocument_createElement,
873     HTMLDocument_put_onhelp,
874     HTMLDocument_get_onhelp,
875     HTMLDocument_put_onclick,
876     HTMLDocument_get_onclick,
877     HTMLDocument_put_ondblclick,
878     HTMLDocument_get_ondblclick,
879     HTMLDocument_put_onkeyup,
880     HTMLDocument_get_onkeyup,
881     HTMLDocument_put_onkeydown,
882     HTMLDocument_get_onkeydown,
883     HTMLDocument_put_onkeypress,
884     HTMLDocument_get_onkeypress,
885     HTMLDocument_put_onmouseup,
886     HTMLDocument_get_onmouseup,
887     HTMLDocument_put_onmousedown,
888     HTMLDocument_get_onmousedown,
889     HTMLDocument_put_onmousemove,
890     HTMLDocument_get_onmousemove,
891     HTMLDocument_put_onmouseout,
892     HTMLDocument_get_onmouseout,
893     HTMLDocument_put_onmouseover,
894     HTMLDocument_get_onmouseover,
895     HTMLDocument_put_onreadystatechange,
896     HTMLDocument_get_onreadystatechange,
897     HTMLDocument_put_onafterupdate,
898     HTMLDocument_get_onafterupdate,
899     HTMLDocument_put_onrowexit,
900     HTMLDocument_get_onrowexit,
901     HTMLDocument_put_onrowenter,
902     HTMLDocument_get_onrowenter,
903     HTMLDocument_put_ondragstart,
904     HTMLDocument_get_ondragstart,
905     HTMLDocument_put_onselectstart,
906     HTMLDocument_get_onselectstart,
907     HTMLDocument_elementFromPoint,
908     HTMLDocument_get_parentWindow,
909     HTMLDocument_get_styleSheets,
910     HTMLDocument_put_onbeforeupdate,
911     HTMLDocument_get_onbeforeupdate,
912     HTMLDocument_put_onerrorupdate,
913     HTMLDocument_get_onerrorupdate,
914     HTMLDocument_toString,
915     HTMLDocument_createStyleSheet
916 };
917
918 HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
919 {
920     HTMLDocument *ret;
921     HRESULT hres;
922
923     TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppvObject);
924
925     ret = HeapAlloc(GetProcessHeap(), 0, sizeof(HTMLDocument));
926     ret->lpHTMLDocument2Vtbl = &HTMLDocumentVtbl;
927     ret->ref = 0;
928
929     hres = IHTMLDocument_QueryInterface(HTMLDOC(ret), riid, ppvObject);
930     if(FAILED(hres))
931         HeapFree(GetProcessHeap(), 0, ret);
932
933     HTMLDocument_Persist_Init(ret);
934
935     return hres;
936 }