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)->(%s)\n", This
, debugstr_variant(&v
));
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 HTMLDOMAttribute
*attr
;
126 TRACE("(%p)->(%s %p)\n", This
, debugstr_w(bstrattrName
), ppattribute
);
128 hres
= HTMLDOMAttribute_Create(bstrattrName
, NULL
, 0, &attr
);
132 *ppattribute
= &attr
->IHTMLDOMAttribute_iface
;
136 static HRESULT WINAPI
HTMLDocument5_createComment(IHTMLDocument5
*iface
, BSTR bstrdata
,
137 IHTMLDOMNode
**ppRetNode
)
139 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
140 nsIDOMComment
*nscomment
;
146 TRACE("(%p)->(%s %p)\n", This
, debugstr_w(bstrdata
), ppRetNode
);
148 if(!This
->doc_node
->nsdoc
) {
149 WARN("NULL nsdoc\n");
153 nsAString_InitDepend(&str
, bstrdata
);
154 nsres
= nsIDOMHTMLDocument_CreateComment(This
->doc_node
->nsdoc
, &str
, &nscomment
);
155 nsAString_Finish(&str
);
156 if(NS_FAILED(nsres
)) {
157 ERR("CreateTextNode failed: %08x\n", nsres
);
161 hres
= HTMLCommentElement_Create(This
->doc_node
, (nsIDOMNode
*)nscomment
, &elem
);
162 nsIDOMComment_Release(nscomment
);
166 *ppRetNode
= &elem
->node
.IHTMLDOMNode_iface
;
170 static HRESULT WINAPI
HTMLDocument5_put_onfocusin(IHTMLDocument5
*iface
, VARIANT v
)
172 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
173 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
177 static HRESULT WINAPI
HTMLDocument5_get_onfocusin(IHTMLDocument5
*iface
, VARIANT
*p
)
179 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
180 FIXME("(%p)->(%p)\n", This
, p
);
184 static HRESULT WINAPI
HTMLDocument5_put_onfocusout(IHTMLDocument5
*iface
, VARIANT v
)
186 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
187 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
191 static HRESULT WINAPI
HTMLDocument5_get_onfocusout(IHTMLDocument5
*iface
, VARIANT
*p
)
193 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
194 FIXME("(%p)->(%p)\n", This
, p
);
198 static HRESULT WINAPI
HTMLDocument5_put_onactivate(IHTMLDocument5
*iface
, VARIANT v
)
200 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
201 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
205 static HRESULT WINAPI
HTMLDocument5_get_onactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
207 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
208 FIXME("(%p)->(%p)\n", This
, p
);
212 static HRESULT WINAPI
HTMLDocument5_put_ondeactivate(IHTMLDocument5
*iface
, VARIANT v
)
214 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
215 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
219 static HRESULT WINAPI
HTMLDocument5_get_ondeactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
221 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
222 FIXME("(%p)->(%p)\n", This
, p
);
226 static HRESULT WINAPI
HTMLDocument5_put_onbeforeactivate(IHTMLDocument5
*iface
, VARIANT v
)
228 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
229 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
233 static HRESULT WINAPI
HTMLDocument5_get_onbeforeactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
235 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
236 FIXME("(%p)->(%p)\n", This
, p
);
240 static HRESULT WINAPI
HTMLDocument5_put_onbeforedeactivate(IHTMLDocument5
*iface
, VARIANT v
)
242 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
243 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
247 static HRESULT WINAPI
HTMLDocument5_get_onbeforedeactivate(IHTMLDocument5
*iface
, VARIANT
*p
)
249 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
250 FIXME("(%p)->(%p)\n", This
, p
);
254 static HRESULT WINAPI
HTMLDocument5_get_compatMode(IHTMLDocument5
*iface
, BSTR
*p
)
256 HTMLDocument
*This
= impl_from_IHTMLDocument5(iface
);
258 const PRUnichar
*mode
;
260 TRACE("(%p)->(%p)\n", This
, p
);
262 if(!This
->doc_node
->nsdoc
) {
263 WARN("NULL nsdoc\n");
267 nsAString_Init(&mode_str
, NULL
);
268 nsIDOMHTMLDocument_GetCompatMode(This
->doc_node
->nsdoc
, &mode_str
);
270 nsAString_GetData(&mode_str
, &mode
);
271 *p
= SysAllocString(mode
);
272 nsAString_Finish(&mode_str
);
277 static const IHTMLDocument5Vtbl HTMLDocument5Vtbl
= {
278 HTMLDocument5_QueryInterface
,
279 HTMLDocument5_AddRef
,
280 HTMLDocument5_Release
,
281 HTMLDocument5_GetTypeInfoCount
,
282 HTMLDocument5_GetTypeInfo
,
283 HTMLDocument5_GetIDsOfNames
,
284 HTMLDocument5_Invoke
,
285 HTMLDocument5_put_onmousewheel
,
286 HTMLDocument5_get_onmousewheel
,
287 HTMLDocument5_get_doctype
,
288 HTMLDocument5_get_implementation
,
289 HTMLDocument5_createAttribute
,
290 HTMLDocument5_createComment
,
291 HTMLDocument5_put_onfocusin
,
292 HTMLDocument5_get_onfocusin
,
293 HTMLDocument5_put_onfocusout
,
294 HTMLDocument5_get_onfocusout
,
295 HTMLDocument5_put_onactivate
,
296 HTMLDocument5_get_onactivate
,
297 HTMLDocument5_put_ondeactivate
,
298 HTMLDocument5_get_ondeactivate
,
299 HTMLDocument5_put_onbeforeactivate
,
300 HTMLDocument5_get_onbeforeactivate
,
301 HTMLDocument5_put_onbeforedeactivate
,
302 HTMLDocument5_get_onbeforedeactivate
,
303 HTMLDocument5_get_compatMode
306 static inline HTMLDocument
*impl_from_IHTMLDocument6(IHTMLDocument6
*iface
)
308 return CONTAINING_RECORD(iface
, HTMLDocument
, IHTMLDocument6_iface
);
311 static HRESULT WINAPI
HTMLDocument6_QueryInterface(IHTMLDocument6
*iface
,
312 REFIID riid
, void **ppv
)
314 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
315 return htmldoc_query_interface(This
, riid
, ppv
);
318 static ULONG WINAPI
HTMLDocument6_AddRef(IHTMLDocument6
*iface
)
320 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
321 return htmldoc_addref(This
);
324 static ULONG WINAPI
HTMLDocument6_Release(IHTMLDocument6
*iface
)
326 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
327 return htmldoc_release(This
);
330 static HRESULT WINAPI
HTMLDocument6_GetTypeInfoCount(IHTMLDocument6
*iface
, UINT
*pctinfo
)
332 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
333 return IDispatchEx_GetTypeInfoCount(&This
->IDispatchEx_iface
, pctinfo
);
336 static HRESULT WINAPI
HTMLDocument6_GetTypeInfo(IHTMLDocument6
*iface
, UINT iTInfo
,
337 LCID lcid
, ITypeInfo
**ppTInfo
)
339 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
340 return IDispatchEx_GetTypeInfo(&This
->IDispatchEx_iface
, iTInfo
, lcid
, ppTInfo
);
343 static HRESULT WINAPI
HTMLDocument6_GetIDsOfNames(IHTMLDocument6
*iface
, REFIID riid
,
344 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
346 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
347 return IDispatchEx_GetIDsOfNames(&This
->IDispatchEx_iface
, riid
, rgszNames
, cNames
, lcid
,
351 static HRESULT WINAPI
HTMLDocument6_Invoke(IHTMLDocument6
*iface
, DISPID dispIdMember
,
352 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
353 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
355 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
356 return IDispatchEx_Invoke(&This
->IDispatchEx_iface
, dispIdMember
, riid
, lcid
, wFlags
,
357 pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
360 static HRESULT WINAPI
HTMLDocument6_get_compatible(IHTMLDocument6
*iface
,
361 IHTMLDocumentCompatibleInfoCollection
**p
)
363 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
364 FIXME("(%p)->(%p)\n", This
, p
);
368 static HRESULT WINAPI
HTMLDocument6_get_documentMode(IHTMLDocument6
*iface
,
371 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
372 FIXME("(%p)->(%p)\n", This
, p
);
376 static HRESULT WINAPI
HTMLDocument6_get_onstorage(IHTMLDocument6
*iface
,
379 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
380 FIXME("(%p)->(%p)\n", This
, p
);
384 static HRESULT WINAPI
HTMLDocument6_put_onstorage(IHTMLDocument6
*iface
, VARIANT v
)
386 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
387 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
391 static HRESULT WINAPI
HTMLDocument6_get_onstoragecommit(IHTMLDocument6
*iface
,
394 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
395 FIXME("(%p)->(%p)\n", This
, p
);
399 static HRESULT WINAPI
HTMLDocument6_put_onstoragecommit(IHTMLDocument6
*iface
, VARIANT v
)
401 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
402 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
406 static HRESULT WINAPI
HTMLDocument6_getElementById(IHTMLDocument6
*iface
,
407 BSTR bstrId
, IHTMLElement2
**p
)
409 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
410 FIXME("(%p)->(%s %p)\n", This
, debugstr_w(bstrId
), p
);
414 static HRESULT WINAPI
HTMLDocument6_updateSettings(IHTMLDocument6
*iface
)
416 HTMLDocument
*This
= impl_from_IHTMLDocument6(iface
);
417 FIXME("(%p)->()\n", This
);
421 static const IHTMLDocument6Vtbl HTMLDocument6Vtbl
= {
422 HTMLDocument6_QueryInterface
,
423 HTMLDocument6_AddRef
,
424 HTMLDocument6_Release
,
425 HTMLDocument6_GetTypeInfoCount
,
426 HTMLDocument6_GetTypeInfo
,
427 HTMLDocument6_GetIDsOfNames
,
428 HTMLDocument6_Invoke
,
429 HTMLDocument6_get_compatible
,
430 HTMLDocument6_get_documentMode
,
431 HTMLDocument6_put_onstorage
,
432 HTMLDocument6_get_onstorage
,
433 HTMLDocument6_put_onstoragecommit
,
434 HTMLDocument6_get_onstoragecommit
,
435 HTMLDocument6_getElementById
,
436 HTMLDocument6_updateSettings
439 void HTMLDocument_HTMLDocument5_Init(HTMLDocument
*This
)
441 This
->IHTMLDocument5_iface
.lpVtbl
= &HTMLDocument5Vtbl
;
442 This
->IHTMLDocument6_iface
.lpVtbl
= &HTMLDocument6Vtbl
;