HTTP_DealWithProxy: Only add http:// to proxy string when needed.
[wine/multimedia.git] / dlls / mshtml / document.c
blobce9e74e64d1c52bf5bb22e22284a776b51af0927
1 /*
2 * HTML Document class
4 * Copyright 2003 Mike McCormack
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include "config.h"
23 #include <stdarg.h>
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winuser.h"
28 #include "winnls.h"
29 #include "docobj.h"
30 #include "ole2.h"
31 #include "uuids.h"
32 #include "urlmon.h"
33 #include "oleidl.h"
34 #include "objidl.h"
36 #include "wine/debug.h"
38 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
40 typedef struct _HTMLDocument_impl {
41 ICOM_VTABLE(IPersistMoniker) *IPersistMoniker_vtbl;
42 ICOM_VTABLE(IPersistFile) *IPersistFile_vtbl;
43 ICOM_VTABLE(IPersist) *IPersist_vtbl;
44 ICOM_VTABLE(IOleObject) *IOleObject_vtbl;
45 ICOM_VTABLE(IViewObject) *IViewObject_vtbl;
46 ICOM_VTABLE(IOleDocument) *IOleDocument_vtbl;
47 ULONG ref_count;
48 IOleClientSite *site;
49 } HTMLDocument_impl;
52 static ULONG WINAPI HTMLDocument_AddRef(HTMLDocument_impl *This)
54 return ++This->ref_count;
57 static ULONG WINAPI HTMLDocument_Release(HTMLDocument_impl *This)
59 ULONG count;
61 count = --This->ref_count ;
62 if( !count )
63 HeapFree( GetProcessHeap(), 0, This );
65 return count;
68 static HRESULT WINAPI HTMLDocument_QueryInterface(
69 HTMLDocument_impl *This, REFIID riid, LPVOID *ppv)
71 TRACE("%p %s %p\n", This, debugstr_guid(riid), ppv);
73 if( IsEqualGUID( riid, &IID_IUnknown ) )
75 TRACE("returning IUnknown\n");
76 HTMLDocument_AddRef(This);
77 *ppv = This;
78 return S_OK;
80 if( IsEqualGUID( riid, &IID_IPersistMoniker ) )
82 TRACE("returning IPersistMoniker\n");
83 HTMLDocument_AddRef(This);
84 *ppv = This;
85 return S_OK;
87 if( IsEqualGUID( riid, &IID_IPersistFile ) )
89 TRACE("returning IPersistFile\n");
90 HTMLDocument_AddRef(This);
91 *ppv = &(This->IPersistFile_vtbl);
92 return S_OK;
94 if( IsEqualGUID( riid, &IID_IOleObject ) )
96 TRACE("returning IOleObject\n");
97 HTMLDocument_AddRef(This);
98 *ppv = &(This->IOleObject_vtbl);
99 return S_OK;
101 if( IsEqualGUID( riid, &IID_IPersist ) )
103 TRACE("returning IPersist\n");
104 HTMLDocument_AddRef(This);
105 *ppv = &(This->IPersist_vtbl);
106 return S_OK;
108 if( IsEqualGUID( riid, &IID_IViewObject ) )
110 TRACE("returning IViewObject\n");
111 HTMLDocument_AddRef(This);
112 *ppv = &(This->IViewObject_vtbl);
113 return S_OK;
115 if( IsEqualGUID( riid, &IID_IOleDocument ) )
117 TRACE("returning IOleDocument\n");
118 HTMLDocument_AddRef(This);
119 *ppv = &(This->IOleDocument_vtbl);
120 return S_OK;
122 if( IsEqualGUID( riid, &IID_IDispatch ) )
124 TRACE("returning IDispatch\n");
126 if( IsEqualGUID( riid, &IID_IOleCommandTarget ) )
128 TRACE("returning IOleCommandTarget\n");
130 return E_NOINTERFACE;
133 static HRESULT WINAPI fnIPersistMoniker_QueryInterface(
134 IPersistMoniker *iface, REFIID riid, LPVOID *ppv)
136 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
137 return HTMLDocument_QueryInterface(This, riid, ppv);
140 static ULONG WINAPI fnIPersistMoniker_AddRef(IPersistMoniker *iface)
142 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
143 return HTMLDocument_AddRef(This);
146 static ULONG WINAPI fnIPersistMoniker_Release(IPersistMoniker *iface)
148 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
149 return HTMLDocument_Release(This);
152 static HRESULT WINAPI fnIPersistMoniker_GetClassID(IPersistMoniker *iface,
153 CLSID *pClassID )
155 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
156 FIXME("%p\n", This);
157 return E_NOTIMPL;
160 static HRESULT WINAPI fnIPersistMoniker_IsDirty(IPersistMoniker *iface )
162 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
163 FIXME("%p\n", This);
164 return E_NOTIMPL;
167 static HRESULT WINAPI fnIPersistMoniker_Load(IPersistMoniker *iface,
168 BOOL fFullyAvailable, IMoniker *pimkName, LPBC pibc, DWORD grfMode )
170 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
171 IStream *stm;
172 HRESULT r;
173 unsigned char buffer[0x201];
174 ULONG count;
176 TRACE("%p %d %p %p %08lx\n", This,
177 fFullyAvailable, pimkName, pibc, grfMode);
179 r = IMoniker_BindToStorage( pimkName, pibc, NULL,
180 &IID_IStream, (LPVOID*) &stm );
181 if( FAILED( r ) )
183 TRACE("IMoniker_BindToStorage failed %08lx\n", r);
184 return r;
187 while( 1 )
189 r = IStream_Read( stm, buffer, sizeof buffer-1, &count);
190 if( FAILED( r ) )
191 break;
192 if( count == 0 )
193 break;
194 buffer[count]=0;
195 TRACE("%s\n",buffer);
198 IStream_Release( stm );
200 return S_OK;
203 static HRESULT WINAPI fnIPersistMoniker_Save(IPersistMoniker *iface,
204 IMoniker *pinkName, LPBC pibc, BOOL fRemember )
206 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
207 FIXME("%p %p %p %d\n", This, pinkName, pibc, fRemember);
208 return E_NOTIMPL;
211 static HRESULT WINAPI fnIPersistMoniker_SaveCompleted(IPersistMoniker *iface,
212 IMoniker *pinkName, LPBC pibc )
214 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
215 FIXME("%p %p %p\n", This, pinkName, pibc);
216 return E_NOTIMPL;
219 static HRESULT WINAPI fnIPersistMoniker_GetCurMoniker(IPersistMoniker *iface,
220 IMoniker **pinkName )
222 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
223 FIXME("%p\n", This);
224 return E_NOTIMPL;
227 static ICOM_VTABLE(IPersistMoniker) IPersistMoniker_vtbl =
229 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
230 fnIPersistMoniker_QueryInterface,
231 fnIPersistMoniker_AddRef,
232 fnIPersistMoniker_Release,
233 fnIPersistMoniker_GetClassID,
234 fnIPersistMoniker_IsDirty,
235 fnIPersistMoniker_Load,
236 fnIPersistMoniker_Save,
237 fnIPersistMoniker_SaveCompleted,
238 fnIPersistMoniker_GetCurMoniker
241 static ULONG WINAPI fnIPersistFile_AddRef(IPersistFile *iface)
243 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
244 return HTMLDocument_AddRef(This);
247 static ULONG WINAPI fnIPersistFile_Release(IPersistFile *iface)
249 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
250 return HTMLDocument_Release(This);
253 static HRESULT WINAPI fnIPersistFile_QueryInterface(
254 IPersistFile *iface, REFIID riid, LPVOID *ppv)
256 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
257 return HTMLDocument_QueryInterface(This, riid, ppv);
260 static HRESULT WINAPI fnIPersistFile_GetClassID(IPersistFile *iface,
261 CLSID *pClassID )
263 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
265 TRACE("%p\n", This);
267 memcpy( pClassID, &CLSID_HTMLDocument, sizeof CLSID_HTMLDocument);
268 return S_OK;
271 static HRESULT WINAPI fnIPersistFile_IsDirty(IPersistFile *iface )
273 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
274 FIXME("%p\n",This);
275 return E_NOTIMPL;
278 static HRESULT WINAPI fnIPersistFile_Load(IPersistFile *iface,
279 LPCOLESTR pszFileName, DWORD grfMode )
281 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
282 FIXME("%p %s %08lx\n", This, debugstr_w(pszFileName), grfMode);
283 return E_NOTIMPL;
286 static HRESULT WINAPI fnIPersistFile_Save(IPersistFile *iface,
287 LPCOLESTR pszFileName, BOOL fRemember )
289 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
290 FIXME("%p %s %d\n", This, debugstr_w(pszFileName), fRemember);
291 return E_NOTIMPL;
294 static HRESULT WINAPI fnIPersistFile_SaveCompleted(IPersistFile *iface,
295 LPCOLESTR pszFileName )
297 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
298 FIXME("%p %s\n", This, debugstr_w(pszFileName));
299 return E_NOTIMPL;
302 static HRESULT WINAPI fnIPersistFile_GetCurFile(IPersistFile *iface,
303 LPOLESTR* ppszFileName)
305 ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
306 FIXME("%p %p\n",This,ppszFileName);
307 return E_NOTIMPL;
310 static ICOM_VTABLE(IPersistFile) IPersistFile_vtbl =
312 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
313 fnIPersistFile_QueryInterface,
314 fnIPersistFile_AddRef,
315 fnIPersistFile_Release,
316 fnIPersistFile_GetClassID,
317 fnIPersistFile_IsDirty,
318 fnIPersistFile_Load,
319 fnIPersistFile_Save,
320 fnIPersistFile_SaveCompleted,
321 fnIPersistFile_GetCurFile,
324 static ULONG WINAPI fnIOleObject_AddRef(IOleObject *iface)
326 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
327 return HTMLDocument_AddRef(This);
330 static ULONG WINAPI fnIOleObject_Release(IOleObject *iface)
332 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
333 return HTMLDocument_Release(This);
336 static HRESULT WINAPI fnIOleObject_QueryInterface(
337 IOleObject *iface, REFIID riid, LPVOID *ppv)
339 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
340 return HTMLDocument_QueryInterface(This, riid, ppv);
343 static HRESULT WINAPI fnIOleObject_SetClientSite(IOleObject *iface,
344 IOleClientSite *pClientSite)
346 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
348 TRACE("%p %p\n",This, pClientSite);
350 if( This->site )
351 IOleClientSite_Release( This->site );
352 if( pClientSite )
353 IOleClientSite_AddRef(pClientSite);
354 This->site = pClientSite;
356 return S_OK;
359 static HRESULT WINAPI fnIOleObject_GetClientSite(IOleObject *iface,
360 IOleClientSite **ppClientSite)
362 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
364 TRACE("%p\n",This);
366 if( This->site )
367 IOleClientSite_AddRef( This->site );
368 *ppClientSite = This->site;
370 return S_OK;
373 static HRESULT WINAPI fnIOleObject_SetHostNames(IOleObject *iface,
374 LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
376 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
377 TRACE("%p\n",This);
378 return E_NOTIMPL;
381 static HRESULT WINAPI fnIOleObject_Close(IOleObject *iface,
382 DWORD dwSaveOption)
384 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
385 TRACE("%p\n",This);
386 return E_NOTIMPL;
389 static HRESULT WINAPI fnIOleObject_SetMoniker(IOleObject *iface,
390 DWORD dwWhichMoniker, IMoniker *pmk)
392 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
393 TRACE("%p\n",This);
394 return E_NOTIMPL;
397 static HRESULT WINAPI fnIOleObject_GetMoniker(IOleObject *iface,
398 DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
400 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
401 TRACE("%p\n",This);
402 return E_NOTIMPL;
405 static HRESULT WINAPI fnIOleObject_InitFromData(IOleObject *iface,
406 IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved)
408 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
409 TRACE("%p\n",This);
410 return E_NOTIMPL;
413 static HRESULT WINAPI fnIOleObject_GetClipboardData(IOleObject *iface,
414 DWORD dwReserved, IDataObject **ppDataObject)
416 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
417 TRACE("%p\n",This);
418 return E_NOTIMPL;
421 static HRESULT WINAPI fnIOleObject_DoVerb(IOleObject *iface,
422 LONG iVerb, struct tagMSG *lpmsg, IOleClientSite *pActiveSite,
423 LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
425 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
427 TRACE("%p %ld %p %p %ld %p %p\n", This,
428 iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect);
430 switch( iVerb )
432 case OLEIVERB_SHOW:
433 TRACE("OLEIVERB_SHOW r = (%ld,%ld)-(%ld,%ld)\n",
434 lprcPosRect->left, lprcPosRect->top,
435 lprcPosRect->right, lprcPosRect->bottom );
436 break;
439 /*return E_NOTIMPL; */
440 return S_OK;
443 static HRESULT WINAPI fnIOleObject_EnumVerbs(IOleObject *iface,
444 IEnumOLEVERB **ppEnumOleVerb)
446 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
447 TRACE("%p\n",This);
448 return E_NOTIMPL;
451 static HRESULT WINAPI fnIOleObject_Update(IOleObject *iface)
453 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
454 TRACE("%p\n",This);
455 return E_NOTIMPL;
458 static HRESULT WINAPI fnIOleObject_IsUpToDate(IOleObject *iface)
460 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
461 TRACE("%p\n",This);
462 return E_NOTIMPL;
465 static HRESULT WINAPI fnIOleObject_GetUserClassID(IOleObject *iface,
466 CLSID *pClsid)
468 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
469 TRACE("%p\n",This);
470 return E_NOTIMPL;
473 static HRESULT WINAPI fnIOleObject_GetUserType(IOleObject *iface,
474 DWORD dwFormOfType, LPOLESTR *pszUserType)
476 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
477 TRACE("%p\n",This);
478 return E_NOTIMPL;
481 static HRESULT WINAPI fnIOleObject_SetExtent(IOleObject *iface,
482 DWORD dwDrawAspect, SIZEL *psizel)
484 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
485 TRACE("%p\n",This);
486 return E_NOTIMPL;
489 static HRESULT WINAPI fnIOleObject_GetExtent(IOleObject *iface,
490 DWORD dwDrawAspect, SIZEL *psizel)
492 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
493 TRACE("%p\n",This);
494 return E_NOTIMPL;
497 static HRESULT WINAPI fnIOleObject_Advise(IOleObject *iface,
498 IAdviseSink *pAdvSink, DWORD *pdwConnection)
500 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
501 TRACE("%p\n",This);
502 return E_NOTIMPL;
505 static HRESULT WINAPI fnIOleObject_Unadvise(IOleObject *iface,
506 DWORD dwConnection)
508 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
509 TRACE("%p\n",This);
510 return E_NOTIMPL;
513 static HRESULT WINAPI fnIOleObject_EnumAdvise(IOleObject *iface,
514 IEnumSTATDATA **ppenumAdvise)
516 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
517 TRACE("%p\n",This);
518 return E_NOTIMPL;
521 static HRESULT WINAPI fnIOleObject_GetMiscStatus(IOleObject *iface,
522 DWORD dwAspect, DWORD *pdwStatus)
524 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
525 TRACE("%p\n",This);
526 return E_NOTIMPL;
529 static HRESULT WINAPI fnIOleObject_SetColorScheme(IOleObject *iface,
530 struct tagLOGPALETTE *pLogpal)
532 ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
533 TRACE("%p\n",This);
534 return E_NOTIMPL;
537 static ICOM_VTABLE(IOleObject) IOleObject_vtbl =
539 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
540 fnIOleObject_QueryInterface,
541 fnIOleObject_AddRef,
542 fnIOleObject_Release,
543 fnIOleObject_SetClientSite,
544 fnIOleObject_GetClientSite,
545 fnIOleObject_SetHostNames,
546 fnIOleObject_Close,
547 fnIOleObject_SetMoniker,
548 fnIOleObject_GetMoniker,
549 fnIOleObject_InitFromData,
550 fnIOleObject_GetClipboardData,
551 fnIOleObject_DoVerb,
552 fnIOleObject_EnumVerbs,
553 fnIOleObject_Update,
554 fnIOleObject_IsUpToDate,
555 fnIOleObject_GetUserClassID,
556 fnIOleObject_GetUserType,
557 fnIOleObject_SetExtent,
558 fnIOleObject_GetExtent,
559 fnIOleObject_Advise,
560 fnIOleObject_Unadvise,
561 fnIOleObject_EnumAdvise,
562 fnIOleObject_GetMiscStatus,
563 fnIOleObject_SetColorScheme,
566 static ULONG WINAPI fnIPersist_AddRef(IPersist *iface)
568 ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
569 return HTMLDocument_AddRef(This);
572 static ULONG WINAPI fnIPersist_Release(IPersist *iface)
574 ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
575 return HTMLDocument_Release(This);
578 static HRESULT WINAPI fnIPersist_QueryInterface(
579 IPersist *iface, REFIID riid, LPVOID *ppv)
581 ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
582 return HTMLDocument_QueryInterface(This, riid, ppv);
585 static HRESULT WINAPI fnIPersist_GetClassID(
586 IPersist *iface, CLSID * pClassID)
588 ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
589 TRACE("%p %p\n", This, pClassID );
590 memcpy( pClassID, &CLSID_HTMLDocument, sizeof CLSID_HTMLDocument);
591 return S_OK;
594 static ICOM_VTABLE(IPersist) IPersist_vtbl =
596 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
597 fnIPersist_QueryInterface,
598 fnIPersist_AddRef,
599 fnIPersist_Release,
600 fnIPersist_GetClassID,
603 static ULONG WINAPI fnIViewObject_AddRef(IViewObject *iface)
605 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
606 return HTMLDocument_AddRef(This);
609 static ULONG WINAPI fnIViewObject_Release(IViewObject *iface)
611 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
612 return HTMLDocument_Release(This);
615 static HRESULT WINAPI fnIViewObject_QueryInterface(
616 IViewObject *iface, REFIID riid, LPVOID *ppv)
618 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
619 return HTMLDocument_QueryInterface(This, riid, ppv);
622 static HRESULT WINAPI fnIViewObject_Draw( IViewObject *iface,
623 DWORD dwDrawAspect, LONG lindex, void *pvAspect,
624 DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw,
625 LPCRECTL lprcBounds, LPCRECTL lprcWBounds,
626 BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
627 DWORD dwContinue)
629 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
630 FIXME("%p\n",This);
631 return E_NOTIMPL;
634 static HRESULT WINAPI fnIViewObject_GetColorSet( IViewObject *iface,
635 DWORD dwDrawAspect, LONG lindex, void *pvAspect,
636 DVTARGETDEVICE *ptd, HDC hicTargetDevice,
637 struct tagLOGPALETTE **ppColorSet)
639 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
640 FIXME("%p\n",This);
641 return E_NOTIMPL;
644 static HRESULT WINAPI fnIViewObject_Freeze( IViewObject *iface,
645 DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze)
647 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
648 FIXME("%p\n",This);
649 return E_NOTIMPL;
652 static HRESULT WINAPI fnIViewObject_Unfreeze( IViewObject *iface,
653 DWORD dwFreeze)
655 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
656 FIXME("%p\n",This);
657 return E_NOTIMPL;
660 static HRESULT WINAPI fnIViewObject_SetAdvise( IViewObject *iface,
661 DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
663 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
664 FIXME("%p\n",This);
665 return E_NOTIMPL;
668 static HRESULT WINAPI fnIViewObject_GetAdvise( IViewObject *iface,
669 DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
671 ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
672 FIXME("%p\n",This);
673 return E_NOTIMPL;
677 static ICOM_VTABLE(IViewObject) IViewObject_vtbl =
679 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
680 fnIViewObject_QueryInterface,
681 fnIViewObject_AddRef,
682 fnIViewObject_Release,
683 fnIViewObject_Draw,
684 fnIViewObject_GetColorSet,
685 fnIViewObject_Freeze,
686 fnIViewObject_Unfreeze,
687 fnIViewObject_SetAdvise,
688 fnIViewObject_GetAdvise,
691 static ULONG WINAPI fnIOleDocument_AddRef(IOleDocument *iface)
693 ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
694 return HTMLDocument_AddRef(This);
697 static ULONG WINAPI fnIOleDocument_Release(IOleDocument *iface)
699 ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
700 return HTMLDocument_Release(This);
703 static HRESULT WINAPI fnIOleDocument_QueryInterface(
704 IOleDocument *iface, REFIID riid, LPVOID *ppv)
706 ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
707 return HTMLDocument_QueryInterface(This, riid, ppv);
710 static HRESULT WINAPI fnIOleDocument_CreateView(IOleDocument *iface,
711 IOleInPlaceSite *pIPSite, IStream *pstm, DWORD dwReserved,
712 IOleDocumentView **ppView)
714 ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
715 TRACE("%p\n",This);
716 return E_NOTIMPL;
719 static HRESULT WINAPI fnIOleDocument_GetDocMiscStatus(IOleDocument *iface,
720 DWORD *pdwStatus)
722 ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
723 TRACE("%p\n",This);
724 return E_NOTIMPL;
727 static HRESULT WINAPI fnIOleDocument_EnumViews(IOleDocument *iface,
728 IEnumOleDocumentViews **ppEnum, IOleDocumentView **ppView)
730 ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
731 TRACE("%p\n",This);
732 return E_NOTIMPL;
735 static ICOM_VTABLE(IOleDocument) IOleDocument_vtbl =
737 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
738 fnIOleDocument_QueryInterface,
739 fnIOleDocument_AddRef,
740 fnIOleDocument_Release,
741 fnIOleDocument_CreateView,
742 fnIOleDocument_GetDocMiscStatus,
743 fnIOleDocument_EnumViews,
746 HRESULT HTMLDocument_create(IUnknown *pUnkOuter, LPVOID *ppObj)
748 HTMLDocument_impl *This;
750 TRACE("%p %p\n",pUnkOuter,ppObj);
752 This = HeapAlloc(GetProcessHeap(), 0, sizeof (HTMLDocument_impl));
753 This->IPersistMoniker_vtbl = &IPersistMoniker_vtbl;
754 This->IPersistFile_vtbl = &IPersistFile_vtbl;
755 This->IOleObject_vtbl = &IOleObject_vtbl;
756 This->IPersist_vtbl = &IPersist_vtbl;
757 This->IViewObject_vtbl = &IViewObject_vtbl;
758 This->IOleDocument_vtbl = &IOleDocument_vtbl;
759 This->ref_count = 1;
760 This->site = NULL;
762 *ppObj = (LPVOID) This;
764 TRACE("(%p) <- %p\n", ppObj, This);
766 return S_OK;