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
31 #include "wine/debug.h"
33 #include "mshtml_private.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(mshtml
);
37 static inline HTMLDocument
*impl_from_IHTMLDocument5(IHTMLDocument5
*iface
)
39 return CONTAINING_RECORD(iface
, HTMLDocument
, IHTMLDocument5_iface
);
42 static HRESULT WINAPI
HTMLDocument5_QueryInterface(IHTMLDocument5
*iface
,
43 REFIID riid
, void **ppv
)
45 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
46 return htmldoc_query_interface(This
, riid
, ppv
);
49 static ULONG WINAPI
HTMLDocument5_AddRef(IHTMLDocument5
*iface
)
51 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
52 return htmldoc_addref(This
);
55 static ULONG WINAPI
HTMLDocument5_Release(IHTMLDocument5
*iface
)
57 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
58 return htmldoc_release(This
);
61 static HRESULT WINAPI
HTMLDocument5_GetTypeInfoCount(IHTMLDocument5
*iface
, UINT
*pctinfo
)
63 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
64 return IDispatchEx_GetTypeInfoCount(&This
->IDispatchEx_iface
, pctinfo
);
67 static HRESULT WINAPI
HTMLDocument5_GetTypeInfo(IHTMLDocument5
*iface
, UINT iTInfo
,
68 LCID lcid
, ITypeInfo
**ppTInfo
)
70 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
71 return IDispatchEx_GetTypeInfo(&This
->IDispatchEx_iface
, iTInfo
, lcid
, ppTInfo
);
74 static HRESULT WINAPI
HTMLDocument5_GetIDsOfNames(IHTMLDocument5
*iface
, REFIID riid
,
75 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
77 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
78 return IDispatchEx_GetIDsOfNames(&This
->IDispatchEx_iface
, riid
, rgszNames
, cNames
, lcid
,
82 static HRESULT WINAPI
HTMLDocument5_Invoke(IHTMLDocument5
*iface
, DISPID dispIdMember
,
83 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
84 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
86 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
87 return IDispatchEx_Invoke(&This
->IDispatchEx_iface
, dispIdMember
, riid
, lcid
, wFlags
,
88 pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
91 static HRESULT WINAPI
HTMLDocument5_put_onmousewheel(IHTMLDocument5
*iface
, VARIANT v
)
93 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
94 FIXME("(%p)->(v)\n", This
);
98 static HRESULT WINAPI
HTMLDocument5_get_onmousewheel(IHTMLDocument5
*iface
, VARIANT
*p
)
100 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
101 FIXME("(%p)->(%p)\n", This
, p
);
105 static HRESULT WINAPI
HTMLDocument5_get_doctype(IHTMLDocument5
*iface
, IHTMLDOMNode
**p
)
107 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
108 FIXME("(%p)->(%p)\n", This
, p
);
112 static HRESULT WINAPI
HTMLDocument5_get_implementation(IHTMLDocument5
*iface
, IHTMLDOMImplementation
**p
)
114 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
115 FIXME("(%p)->(%p)\n", This
, p
);
119 static HRESULT WINAPI
HTMLDocument5_createAttribute(IHTMLDocument5
*iface
, BSTR bstrattrName
,
120 IHTMLDOMAttribute
**ppattribute
)
122 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
123 FIXME("(%p)->(%s %p)\n", This
, debugstr_w(bstrattrName
), ppattribute
);
127 static HRESULT WINAPI
HTMLDocument5_createComment(IHTMLDocument5
*iface
, BSTR bstrdata
,
128 IHTMLDOMNode
**ppRetNode
)
130 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
131 nsIDOMComment
*nscomment
;
137 TRACE("(%p)->(%s %p)\n", This
, debugstr_w(bstrdata
), ppRetNode
);
139 if(!This
->doc_node
->nsdoc
) {
140 WARN("NULL nsdoc\n");
144 nsAString_InitDepend(&str
, bstrdata
);
145 nsres
= nsIDOMHTMLDocument_CreateComment(This
->doc_node
->nsdoc
, &str
, &nscomment
);
146 nsAString_Finish(&str
);
147 if(NS_FAILED(nsres
)) {
148 ERR("CreateTextNode failed: %08x\n", nsres
);
152 hres
= HTMLCommentElement_Create(This
->doc_node
, (nsIDOMNode
*)nscomment
, &elem
);
153 nsIDOMElement_Release(nscomment
);
157 *ppRetNode
= &elem
->node
.IHTMLDOMNode_iface
;
158 IHTMLDOMNode_AddRef(&elem
->node
.IHTMLDOMNode_iface
);
162 static HRESULT WINAPI
HTMLDocument5_put_onfocusin(IHTMLDocument5
*iface
, VARIANT v
)
164 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
165 FIXME("(%p)->(v)\n", This
);
169 static HRESULT WINAPI
HTMLDocument5_get_onfocusin(IHTMLDocument5
*iface
, VARIANT
*p
)
171 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
172 FIXME("(%p)->(%p)\n", This
, p
);
176 static HRESULT WINAPI
HTMLDocument5_put_onfocusout(IHTMLDocument5
*iface
, VARIANT v
)
178 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
179 FIXME("(%p)->(v)\n", This
);
183 static HRESULT WINAPI
HTMLDocument5_get_onfocusout(IHTMLDocument5
*iface
, VARIANT
*p
)
185 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
186 FIXME("(%p)->(%p)\n", This
, p
);
190 static HRESULT WINAPI
HTMLDocument5_put_onactivate(IHTMLDocument5
*iface
, VARIANT v
)
192 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
193 FIXME("(%p)->(v)\n", This
);
197 static HRESULT WINAPI
HTMLDocument5_get_onactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
199 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
200 FIXME("(%p)->(%p)\n", This
, p
);
204 static HRESULT WINAPI
HTMLDocument5_put_ondeactivate(IHTMLDocument5
*iface
, VARIANT v
)
206 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
207 FIXME("(%p)->(v)\n", This
);
211 static HRESULT WINAPI
HTMLDocument5_get_ondeactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
213 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
214 FIXME("(%p)->(%p)\n", This
, p
);
218 static HRESULT WINAPI
HTMLDocument5_put_onbeforeactivate(IHTMLDocument5
*iface
, VARIANT v
)
220 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
221 FIXME("(%p)->(v)\n", This
);
225 static HRESULT WINAPI
HTMLDocument5_get_onbeforeactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
227 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
228 FIXME("(%p)->(%p)\n", This
, p
);
232 static HRESULT WINAPI
HTMLDocument5_put_onbeforedeactivate(IHTMLDocument5
*iface
, VARIANT v
)
234 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
235 FIXME("(%p)->(v)\n", This
);
239 static HRESULT WINAPI
HTMLDocument5_get_onbeforedeactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
241 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
242 FIXME("(%p)->(%p)\n", This
, p
);
246 static HRESULT WINAPI
HTMLDocument5_get_compatMode(IHTMLDocument5
*iface
, BSTR
*p
)
248 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
249 nsIDOMNSHTMLDocument
*nshtmldoc
;
251 const PRUnichar
*mode
;
254 TRACE("(%p)->(%p)\n", This
, p
);
256 if(!This
->doc_node
->nsdoc
) {
257 WARN("NULL nsdoc\n");
261 nsres
= nsIDOMHTMLDocument_QueryInterface(This
->doc_node
->nsdoc
, &IID_nsIDOMNSHTMLDocument
, (void**)&nshtmldoc
);
262 if(NS_FAILED(nsres
)) {
263 ERR("Could not get nsIDOMNSHTMLDocument: %08x\n", nsres
);
267 nsAString_Init(&mode_str
, NULL
);
268 nsIDOMNSHTMLDocument_GetCompatMode(nshtmldoc
, &mode_str
);
269 nsIDOMNSHTMLDocument_Release(nshtmldoc
);
271 nsAString_GetData(&mode_str
, &mode
);
272 *p
= SysAllocString(mode
);
273 nsAString_Finish(&mode_str
);
278 static const IHTMLDocument5Vtbl HTMLDocument5Vtbl
= {
279 HTMLDocument5_QueryInterface
,
280 HTMLDocument5_AddRef
,
281 HTMLDocument5_Release
,
282 HTMLDocument5_GetTypeInfoCount
,
283 HTMLDocument5_GetTypeInfo
,
284 HTMLDocument5_GetIDsOfNames
,
285 HTMLDocument5_Invoke
,
286 HTMLDocument5_put_onmousewheel
,
287 HTMLDocument5_get_onmousewheel
,
288 HTMLDocument5_get_doctype
,
289 HTMLDocument5_get_implementation
,
290 HTMLDocument5_createAttribute
,
291 HTMLDocument5_createComment
,
292 HTMLDocument5_put_onfocusin
,
293 HTMLDocument5_get_onfocusin
,
294 HTMLDocument5_put_onfocusout
,
295 HTMLDocument5_get_onfocusout
,
296 HTMLDocument5_put_onactivate
,
297 HTMLDocument5_get_onactivate
,
298 HTMLDocument5_put_ondeactivate
,
299 HTMLDocument5_get_ondeactivate
,
300 HTMLDocument5_put_onbeforeactivate
,
301 HTMLDocument5_get_onbeforeactivate
,
302 HTMLDocument5_put_onbeforedeactivate
,
303 HTMLDocument5_get_onbeforedeactivate
,
304 HTMLDocument5_get_compatMode
307 static inline HTMLDocument
*impl_from_IHTMLDocument6(IHTMLDocument6
*iface
)
309 return CONTAINING_RECORD(iface
, HTMLDocument
, IHTMLDocument6_iface
);
312 static HRESULT WINAPI
HTMLDocument6_QueryInterface(IHTMLDocument6
*iface
,
313 REFIID riid
, void **ppv
)
315 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
316 return htmldoc_query_interface(This
, riid
, ppv
);
319 static ULONG WINAPI
HTMLDocument6_AddRef(IHTMLDocument6
*iface
)
321 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
322 return htmldoc_addref(This
);
325 static ULONG WINAPI
HTMLDocument6_Release(IHTMLDocument6
*iface
)
327 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
328 return htmldoc_release(This
);
331 static HRESULT WINAPI
HTMLDocument6_GetTypeInfoCount(IHTMLDocument6
*iface
, UINT
*pctinfo
)
333 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
334 return IDispatchEx_GetTypeInfoCount(&This
->IDispatchEx_iface
, pctinfo
);
337 static HRESULT WINAPI
HTMLDocument6_GetTypeInfo(IHTMLDocument6
*iface
, UINT iTInfo
,
338 LCID lcid
, ITypeInfo
**ppTInfo
)
340 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
341 return IDispatchEx_GetTypeInfo(&This
->IDispatchEx_iface
, iTInfo
, lcid
, ppTInfo
);
344 static HRESULT WINAPI
HTMLDocument6_GetIDsOfNames(IHTMLDocument6
*iface
, REFIID riid
,
345 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
347 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
348 return IDispatchEx_GetIDsOfNames(&This
->IDispatchEx_iface
, riid
, rgszNames
, cNames
, lcid
,
352 static HRESULT WINAPI
HTMLDocument6_Invoke(IHTMLDocument6
*iface
, DISPID dispIdMember
,
353 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
354 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
356 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
357 return IDispatchEx_Invoke(&This
->IDispatchEx_iface
, dispIdMember
, riid
, lcid
, wFlags
,
358 pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
361 static HRESULT WINAPI
HTMLDocument6_get_compatible(IHTMLDocument6
*iface
,
362 IHTMLDocumentCompatibleInfoCollection
**p
)
364 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
365 FIXME("(%p)->(%p)\n", This
, p
);
369 static HRESULT WINAPI
HTMLDocument6_get_documentMode(IHTMLDocument6
*iface
,
372 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
373 FIXME("(%p)->(%p)\n", This
, p
);
377 static HRESULT WINAPI
HTMLDocument6_get_onstorage(IHTMLDocument6
*iface
,
380 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
381 FIXME("(%p)->(%p)\n", This
, p
);
385 static HRESULT WINAPI
HTMLDocument6_put_onstorage(IHTMLDocument6
*iface
,
388 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
389 FIXME("(%p)->(v)\n", This
);
393 static HRESULT WINAPI
HTMLDocument6_get_onstoragecommit(IHTMLDocument6
*iface
,
396 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
397 FIXME("(%p)->(%p)\n", This
, p
);
401 static HRESULT WINAPI
HTMLDocument6_put_onstoragecommit(IHTMLDocument6
*iface
,
404 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
405 FIXME("(%p)->(v)\n", This
);
409 static HRESULT WINAPI
HTMLDocument6_getElementById(IHTMLDocument6
*iface
,
410 BSTR bstrId
, IHTMLElement2
**p
)
412 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
413 FIXME("(%p)->(%s %p)\n", This
, debugstr_w(bstrId
), p
);
417 static HRESULT WINAPI
HTMLDocument6_updateSettings(IHTMLDocument6
*iface
)
419 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
420 FIXME("(%p)->()\n", This
);
424 static const IHTMLDocument6Vtbl HTMLDocument6Vtbl
= {
425 HTMLDocument6_QueryInterface
,
426 HTMLDocument6_AddRef
,
427 HTMLDocument6_Release
,
428 HTMLDocument6_GetTypeInfoCount
,
429 HTMLDocument6_GetTypeInfo
,
430 HTMLDocument6_GetIDsOfNames
,
431 HTMLDocument6_Invoke
,
432 HTMLDocument6_get_compatible
,
433 HTMLDocument6_get_documentMode
,
434 HTMLDocument6_put_onstorage
,
435 HTMLDocument6_get_onstorage
,
436 HTMLDocument6_put_onstoragecommit
,
437 HTMLDocument6_get_onstoragecommit
,
438 HTMLDocument6_getElementById
,
439 HTMLDocument6_updateSettings
442 void HTMLDocument_HTMLDocument5_Init(HTMLDocument
*This
)
444 This
->IHTMLDocument5_iface
.lpVtbl
= &HTMLDocument5Vtbl
;
445 This
->IHTMLDocument6_iface
.lpVtbl
= &HTMLDocument6Vtbl
;