2 * Copyright 2006 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
28 #include "wine/debug.h"
29 #include "wine/unicode.h"
31 #include "mshtml_private.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(mshtml
);
35 struct HTMLStyleSheet
{
36 const IHTMLStyleSheetVtbl
*lpHTMLStyleSheetVtbl
;
40 nsIDOMCSSStyleSheet
*nsstylesheet
;
43 struct HTMLStyleSheetsCollection
{
45 const IHTMLStyleSheetsCollectionVtbl
*lpHTMLStyleSheetsCollectionVtbl
;
49 nsIDOMStyleSheetList
*nslist
;
52 struct HTMLStyleSheetRulesCollection
{
53 const IHTMLStyleSheetRulesCollectionVtbl
*lpHTMLStyleSheetRulesCollectionVtbl
;
57 nsIDOMCSSRuleList
*nslist
;
60 #define HTMLSTYLESHEET(x) ((IHTMLStyleSheet*) &(x)->lpHTMLStyleSheetVtbl)
61 #define HTMLSTYLESHEETSCOL(x) ((IHTMLStyleSheetsCollection*) &(x)->lpHTMLStyleSheetsCollectionVtbl)
62 #define HTMLSTYLERULESCOL(x) ((IHTMLStyleSheetRulesCollection*) &(x)->lpHTMLStyleSheetRulesCollectionVtbl)
64 #define HTMLSTYLERULESCOL_THIS(iface) \
65 DEFINE_THIS(HTMLStyleSheetRulesCollection, HTMLStyleSheetRulesCollection, iface)
67 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_QueryInterface(IHTMLStyleSheetRulesCollection
*iface
,
68 REFIID riid
, void **ppv
)
70 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
72 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
73 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
74 *ppv
= HTMLSTYLERULESCOL(This
);
75 }else if(IsEqualGUID(&IID_IHTMLStyleSheetRulesCollection
, riid
)) {
76 TRACE("(%p)->(IID_IHTMLStyleSheetRulesCollection %p)\n", This
, ppv
);
77 *ppv
= HTMLSTYLERULESCOL(This
);
81 IUnknown_AddRef((IUnknown
*)*ppv
);
85 FIXME("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
89 static ULONG WINAPI
HTMLStyleSheetRulesCollection_AddRef(IHTMLStyleSheetRulesCollection
*iface
)
91 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
92 LONG ref
= InterlockedIncrement(&This
->ref
);
94 TRACE("(%p) ref=%d\n", This
, ref
);
99 static ULONG WINAPI
HTMLStyleSheetRulesCollection_Release(IHTMLStyleSheetRulesCollection
*iface
)
101 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
102 LONG ref
= InterlockedDecrement(&This
->ref
);
104 TRACE("(%p) ref=%d\n", This
, ref
);
108 nsIDOMCSSRuleList_Release(This
->nslist
);
115 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_GetTypeInfoCount(
116 IHTMLStyleSheetRulesCollection
*iface
, UINT
*pctinfo
)
118 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
119 FIXME("(%p)->(%p)\n", This
, pctinfo
);
123 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_GetTypeInfo(IHTMLStyleSheetRulesCollection
*iface
,
124 UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
)
126 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
127 FIXME("(%p)->(%u %u %p)\n", This
, iTInfo
, lcid
, ppTInfo
);
131 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_GetIDsOfNames(IHTMLStyleSheetRulesCollection
*iface
,
132 REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
134 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
135 FIXME("(%p)->(%s %p %u %u %p)\n", This
, debugstr_guid(riid
), rgszNames
, cNames
,
140 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_Invoke(IHTMLStyleSheetRulesCollection
*iface
,
141 DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
142 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
144 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
145 FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This
, dispIdMember
, debugstr_guid(riid
),
146 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
150 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_get_length(IHTMLStyleSheetRulesCollection
*iface
,
153 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
156 TRACE("(%p)->(%p)\n", This
, p
);
161 nsres
= nsIDOMCSSRuleList_GetLength(This
->nslist
, &len
);
163 ERR("GetLength failed: %08x\n", nsres
);
170 static HRESULT WINAPI
HTMLStyleSheetRulesCollection_item(IHTMLStyleSheetRulesCollection
*iface
,
171 LONG index
, IHTMLStyleSheetRule
**ppHTMLStyleSheetRule
)
173 HTMLStyleSheetRulesCollection
*This
= HTMLSTYLERULESCOL_THIS(iface
);
174 FIXME("(%p)->(%d %p)\n", This
, index
, ppHTMLStyleSheetRule
);
178 #undef HTMLSTYLERULECOL_THIS
180 static const IHTMLStyleSheetRulesCollectionVtbl HTMLStyleSheetRulesCollectionVtbl
= {
181 HTMLStyleSheetRulesCollection_QueryInterface
,
182 HTMLStyleSheetRulesCollection_AddRef
,
183 HTMLStyleSheetRulesCollection_Release
,
184 HTMLStyleSheetRulesCollection_GetTypeInfoCount
,
185 HTMLStyleSheetRulesCollection_GetTypeInfo
,
186 HTMLStyleSheetRulesCollection_GetIDsOfNames
,
187 HTMLStyleSheetRulesCollection_Invoke
,
188 HTMLStyleSheetRulesCollection_get_length
,
189 HTMLStyleSheetRulesCollection_item
192 static IHTMLStyleSheetRulesCollection
*HTMLStyleSheetRulesCollection_Create(nsIDOMCSSRuleList
*nslist
)
194 HTMLStyleSheetRulesCollection
*ret
;
196 ret
= heap_alloc(sizeof(*ret
));
197 ret
->lpHTMLStyleSheetRulesCollectionVtbl
= &HTMLStyleSheetRulesCollectionVtbl
;
199 ret
->nslist
= nslist
;
202 nsIDOMCSSRuleList_AddRef(nslist
);
204 return HTMLSTYLERULESCOL(ret
);
207 #define HTMLSTYLESHEETSCOL_THIS(iface) \
208 DEFINE_THIS(HTMLStyleSheetsCollection, HTMLStyleSheetsCollection, iface)
210 static HRESULT WINAPI
HTMLStyleSheetsCollection_QueryInterface(IHTMLStyleSheetsCollection
*iface
,
211 REFIID riid
, void **ppv
)
213 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
217 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
218 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
219 *ppv
= HTMLSTYLESHEETSCOL(This
);
220 }else if(IsEqualGUID(&IID_IDispatch
, riid
)) {
221 TRACE("(%p)->(IID_IDispatch %p)\n", This
, ppv
);
222 *ppv
= HTMLSTYLESHEETSCOL(This
);
223 }else if(IsEqualGUID(&IID_IHTMLStyleSheetsCollection
, riid
)) {
224 TRACE("(%p)->(IID_IHTMLStyleSheetsCollection %p)\n", This
, ppv
);
225 *ppv
= HTMLSTYLESHEETSCOL(This
);
226 }else if(dispex_query_interface(&This
->dispex
, riid
, ppv
)) {
227 return *ppv
? S_OK
: E_NOINTERFACE
;
231 IUnknown_AddRef((IUnknown
*)*ppv
);
235 WARN("unsupported %s\n", debugstr_guid(riid
));
236 return E_NOINTERFACE
;
239 static ULONG WINAPI
HTMLStyleSheetsCollection_AddRef(IHTMLStyleSheetsCollection
*iface
)
241 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
242 LONG ref
= InterlockedIncrement(&This
->ref
);
244 TRACE("(%p) ref=%d\n", This
, ref
);
249 static ULONG WINAPI
HTMLStyleSheetsCollection_Release(IHTMLStyleSheetsCollection
*iface
)
251 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
252 LONG ref
= InterlockedDecrement(&This
->ref
);
254 TRACE("(%p) ref=%d\n", This
, ref
);
258 nsIDOMStyleSheetList_Release(This
->nslist
);
265 static HRESULT WINAPI
HTMLStyleSheetsCollection_GetTypeInfoCount(IHTMLStyleSheetsCollection
*iface
,
268 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
269 return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This
->dispex
), pctinfo
);
272 static HRESULT WINAPI
HTMLStyleSheetsCollection_GetTypeInfo(IHTMLStyleSheetsCollection
*iface
,
273 UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
)
275 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
276 return IDispatchEx_GetTypeInfo(DISPATCHEX(&This
->dispex
), iTInfo
, lcid
, ppTInfo
);
279 static HRESULT WINAPI
HTMLStyleSheetsCollection_GetIDsOfNames(IHTMLStyleSheetsCollection
*iface
,
280 REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
282 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
283 return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This
->dispex
), riid
, rgszNames
, cNames
, lcid
, rgDispId
);
286 static HRESULT WINAPI
HTMLStyleSheetsCollection_Invoke(IHTMLStyleSheetsCollection
*iface
,
287 DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
288 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
290 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
291 return IDispatchEx_Invoke(DISPATCHEX(&This
->dispex
), dispIdMember
, riid
, lcid
,
292 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
295 static HRESULT WINAPI
HTMLStyleSheetsCollection_get_length(IHTMLStyleSheetsCollection
*iface
,
298 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
301 TRACE("(%p)->(%p)\n", This
, p
);
304 nsIDOMStyleSheetList_GetLength(This
->nslist
, &len
);
310 static HRESULT WINAPI
HTMLStyleSheetsCollection_get__newEnum(IHTMLStyleSheetsCollection
*iface
,
313 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
314 FIXME("(%p)->(%p)\n", This
, p
);
318 static HRESULT WINAPI
HTMLStyleSheetsCollection_item(IHTMLStyleSheetsCollection
*iface
,
319 VARIANT
*pvarIndex
, VARIANT
*pvarResult
)
321 HTMLStyleSheetsCollection
*This
= HTMLSTYLESHEETSCOL_THIS(iface
);
323 TRACE("(%p)->(%p %p)\n", This
, pvarIndex
, pvarResult
);
325 switch(V_VT(pvarIndex
)) {
327 nsIDOMStyleSheet
*nsstylesheet
;
330 TRACE("index=%d\n", V_I4(pvarIndex
));
332 nsres
= nsIDOMStyleSheetList_Item(This
->nslist
, V_I4(pvarIndex
), &nsstylesheet
);
333 if(NS_FAILED(nsres
) || !nsstylesheet
) {
334 WARN("Item failed: %08x\n", nsres
);
335 V_VT(pvarResult
) = VT_EMPTY
;
339 V_VT(pvarResult
) = VT_DISPATCH
;
340 V_DISPATCH(pvarResult
) = (IDispatch
*)HTMLStyleSheet_Create(nsstylesheet
);
346 FIXME("id=%s not implemented\n", debugstr_w(V_BSTR(pvarResult
)));
350 WARN("Invalid vt=%d\n", V_VT(pvarIndex
));
356 #undef HTMLSTYLESHEETSCOL_THIS
358 static const IHTMLStyleSheetsCollectionVtbl HTMLStyleSheetsCollectionVtbl
= {
359 HTMLStyleSheetsCollection_QueryInterface
,
360 HTMLStyleSheetsCollection_AddRef
,
361 HTMLStyleSheetsCollection_Release
,
362 HTMLStyleSheetsCollection_GetTypeInfoCount
,
363 HTMLStyleSheetsCollection_GetTypeInfo
,
364 HTMLStyleSheetsCollection_GetIDsOfNames
,
365 HTMLStyleSheetsCollection_Invoke
,
366 HTMLStyleSheetsCollection_get_length
,
367 HTMLStyleSheetsCollection_get__newEnum
,
368 HTMLStyleSheetsCollection_item
371 static const tid_t HTMLStyleSheetsCollection_iface_tids
[] = {
372 IHTMLStyleSheetsCollection_tid
,
375 static dispex_static_data_t HTMLStyleSheetsCollection_dispex
= {
377 DispHTMLStyleSheetsCollection_tid
,
379 HTMLStyleSheetsCollection_iface_tids
382 IHTMLStyleSheetsCollection
*HTMLStyleSheetsCollection_Create(nsIDOMStyleSheetList
*nslist
)
384 HTMLStyleSheetsCollection
*ret
= heap_alloc(sizeof(HTMLStyleSheetsCollection
));
386 ret
->lpHTMLStyleSheetsCollectionVtbl
= &HTMLStyleSheetsCollectionVtbl
;
390 nsIDOMStyleSheetList_AddRef(nslist
);
391 ret
->nslist
= nslist
;
393 init_dispex(&ret
->dispex
, (IUnknown
*)HTMLSTYLESHEETSCOL(ret
), &HTMLStyleSheetsCollection_dispex
);
395 return HTMLSTYLESHEETSCOL(ret
);
398 #define HTMLSTYLESHEET_THIS(iface) DEFINE_THIS(HTMLStyleSheet, HTMLStyleSheet, iface)
400 static HRESULT WINAPI
HTMLStyleSheet_QueryInterface(IHTMLStyleSheet
*iface
, REFIID riid
, void **ppv
)
402 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
406 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
407 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
408 *ppv
= HTMLSTYLESHEET(This
);
409 }else if(IsEqualGUID(&IID_IDispatch
, riid
)) {
410 TRACE("(%p)->(IID_IDispatch %p)\n", This
, ppv
);
411 *ppv
= HTMLSTYLESHEET(This
);
412 }else if(IsEqualGUID(&IID_IHTMLStyleSheet
, riid
)) {
413 TRACE("(%p)->(IID_IHTMLStyleSheet %p)\n", This
, ppv
);
414 *ppv
= HTMLSTYLESHEET(This
);
418 IUnknown_AddRef((IUnknown
*)*ppv
);
422 WARN("unsupported %s\n", debugstr_guid(riid
));
423 return E_NOINTERFACE
;
426 static ULONG WINAPI
HTMLStyleSheet_AddRef(IHTMLStyleSheet
*iface
)
428 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
429 LONG ref
= InterlockedIncrement(&This
->ref
);
431 TRACE("(%p) ref=%d\n", This
, ref
);
436 static ULONG WINAPI
HTMLStyleSheet_Release(IHTMLStyleSheet
*iface
)
438 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
439 LONG ref
= InterlockedDecrement(&This
->ref
);
441 TRACE("(%p) ref=%d\n", This
, ref
);
449 static HRESULT WINAPI
HTMLStyleSheet_GetTypeInfoCount(IHTMLStyleSheet
*iface
, UINT
*pctinfo
)
451 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
452 FIXME("(%p)->(%p)\n", This
, pctinfo
);
456 static HRESULT WINAPI
HTMLStyleSheet_GetTypeInfo(IHTMLStyleSheet
*iface
, UINT iTInfo
,
457 LCID lcid
, ITypeInfo
**ppTInfo
)
459 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
460 FIXME("(%p)->(%u %u %p)\n", This
, iTInfo
, lcid
, ppTInfo
);
464 static HRESULT WINAPI
HTMLStyleSheet_GetIDsOfNames(IHTMLStyleSheet
*iface
, REFIID riid
,
465 LPOLESTR
*rgszNames
, UINT cNames
,
466 LCID lcid
, DISPID
*rgDispId
)
468 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
469 FIXME("(%p)->(%s %p %u %u %p)\n", This
, debugstr_guid(riid
), rgszNames
, cNames
,
474 static HRESULT WINAPI
HTMLStyleSheet_Invoke(IHTMLStyleSheet
*iface
, DISPID dispIdMember
,
475 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
476 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
478 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
479 FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This
, dispIdMember
, debugstr_guid(riid
),
480 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
484 static HRESULT WINAPI
HTMLStyleSheet_put_title(IHTMLStyleSheet
*iface
, BSTR v
)
486 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
487 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
491 static HRESULT WINAPI
HTMLStyleSheet_get_title(IHTMLStyleSheet
*iface
, BSTR
*p
)
493 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
494 FIXME("(%p)->(%p)\n", This
, p
);
498 static HRESULT WINAPI
HTMLStyleSheet_get_parentStyleSheet(IHTMLStyleSheet
*iface
,
501 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
502 FIXME("(%p)->(%p)\n", This
, p
);
506 static HRESULT WINAPI
HTMLStyleSheet_get_owningElement(IHTMLStyleSheet
*iface
, IHTMLElement
**p
)
508 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
509 FIXME("(%p)->(%p)\n", This
, p
);
513 static HRESULT WINAPI
HTMLStyleSheet_put_disabled(IHTMLStyleSheet
*iface
, VARIANT_BOOL v
)
515 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
516 FIXME("(%p)->(%x)\n", This
, v
);
520 static HRESULT WINAPI
HTMLStyleSheet_get_disabled(IHTMLStyleSheet
*iface
, VARIANT_BOOL
*p
)
522 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
523 FIXME("(%p)->(%p)\n", This
, p
);
527 static HRESULT WINAPI
HTMLStyleSheet_get_readOnly(IHTMLStyleSheet
*iface
, VARIANT_BOOL
*p
)
529 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
530 FIXME("(%p)->(%p)\n", This
, p
);
534 static HRESULT WINAPI
HTMLStyleSheet_get_imports(IHTMLStyleSheet
*iface
,
535 IHTMLStyleSheetsCollection
**p
)
537 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
538 FIXME("(%p)->(%p)\n", This
, p
);
542 static HRESULT WINAPI
HTMLStyleSheet_put_href(IHTMLStyleSheet
*iface
, BSTR v
)
544 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
545 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
549 static HRESULT WINAPI
HTMLStyleSheet_get_href(IHTMLStyleSheet
*iface
, BSTR
*p
)
551 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
552 FIXME("(%p)->(%p)\n", This
, p
);
556 static HRESULT WINAPI
HTMLStyleSheet_get_type(IHTMLStyleSheet
*iface
, BSTR
*p
)
558 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
559 FIXME("(%p)->(%p)\n", This
, p
);
563 static HRESULT WINAPI
HTMLStyleSheet_get_id(IHTMLStyleSheet
*iface
, BSTR
*p
)
565 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
566 FIXME("(%p)->(%p)\n", This
, p
);
570 static HRESULT WINAPI
HTMLStyleSheet_addImport(IHTMLStyleSheet
*iface
, BSTR bstrURL
,
571 LONG lIndex
, LONG
*plIndex
)
573 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
574 FIXME("(%p)->(%s %d %p)\n", This
, debugstr_w(bstrURL
), lIndex
, plIndex
);
578 static HRESULT WINAPI
HTMLStyleSheet_addRule(IHTMLStyleSheet
*iface
, BSTR bstrSelector
,
579 BSTR bstrStyle
, LONG lIndex
, LONG
*plIndex
)
581 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
582 FIXME("(%p)->(%s %s %d %p)\n", This
, debugstr_w(bstrSelector
), debugstr_w(bstrStyle
),
587 static HRESULT WINAPI
HTMLStyleSheet_removeImport(IHTMLStyleSheet
*iface
, LONG lIndex
)
589 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
590 FIXME("(%p)->(%d)\n", This
, lIndex
);
594 static HRESULT WINAPI
HTMLStyleSheet_removeRule(IHTMLStyleSheet
*iface
, LONG lIndex
)
596 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
597 FIXME("(%p)->(%d)\n", This
, lIndex
);
601 static HRESULT WINAPI
HTMLStyleSheet_put_media(IHTMLStyleSheet
*iface
, BSTR v
)
603 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
604 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
608 static HRESULT WINAPI
HTMLStyleSheet_get_media(IHTMLStyleSheet
*iface
, BSTR
*p
)
610 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
611 FIXME("(%p)->(%p)\n", This
, p
);
615 static HRESULT WINAPI
HTMLStyleSheet_put_cssText(IHTMLStyleSheet
*iface
, BSTR v
)
617 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
618 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
622 static HRESULT WINAPI
HTMLStyleSheet_get_cssText(IHTMLStyleSheet
*iface
, BSTR
*p
)
624 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
625 FIXME("(%p)->(%p)\n", This
, p
);
629 static HRESULT WINAPI
HTMLStyleSheet_get_rules(IHTMLStyleSheet
*iface
,
630 IHTMLStyleSheetRulesCollection
**p
)
632 HTMLStyleSheet
*This
= HTMLSTYLESHEET_THIS(iface
);
633 nsIDOMCSSRuleList
*nslist
= NULL
;
636 TRACE("(%p)->(%p)\n", This
, p
);
638 /* Gecko has buggy security checks and GetCssRules will fail. We have a correct
639 * implementation and it will work when the bug will be fixed in Gecko. */
640 nsres
= nsIDOMCSSStyleSheet_GetCssRules(This
->nsstylesheet
, &nslist
);
642 WARN("GetCssRules failed: %08x\n", nsres
);
644 *p
= HTMLStyleSheetRulesCollection_Create(nslist
);
648 static const IHTMLStyleSheetVtbl HTMLStyleSheetVtbl
= {
649 HTMLStyleSheet_QueryInterface
,
650 HTMLStyleSheet_AddRef
,
651 HTMLStyleSheet_Release
,
652 HTMLStyleSheet_GetTypeInfoCount
,
653 HTMLStyleSheet_GetTypeInfo
,
654 HTMLStyleSheet_GetIDsOfNames
,
655 HTMLStyleSheet_Invoke
,
656 HTMLStyleSheet_put_title
,
657 HTMLStyleSheet_get_title
,
658 HTMLStyleSheet_get_parentStyleSheet
,
659 HTMLStyleSheet_get_owningElement
,
660 HTMLStyleSheet_put_disabled
,
661 HTMLStyleSheet_get_disabled
,
662 HTMLStyleSheet_get_readOnly
,
663 HTMLStyleSheet_get_imports
,
664 HTMLStyleSheet_put_href
,
665 HTMLStyleSheet_get_href
,
666 HTMLStyleSheet_get_type
,
667 HTMLStyleSheet_get_id
,
668 HTMLStyleSheet_addImport
,
669 HTMLStyleSheet_addRule
,
670 HTMLStyleSheet_removeImport
,
671 HTMLStyleSheet_removeRule
,
672 HTMLStyleSheet_put_media
,
673 HTMLStyleSheet_get_media
,
674 HTMLStyleSheet_put_cssText
,
675 HTMLStyleSheet_get_cssText
,
676 HTMLStyleSheet_get_rules
679 IHTMLStyleSheet
*HTMLStyleSheet_Create(nsIDOMStyleSheet
*nsstylesheet
)
681 HTMLStyleSheet
*ret
= heap_alloc(sizeof(HTMLStyleSheet
));
684 ret
->lpHTMLStyleSheetVtbl
= &HTMLStyleSheetVtbl
;
686 ret
->nsstylesheet
= NULL
;
689 nsres
= nsIDOMStyleSheet_QueryInterface(nsstylesheet
, &IID_nsIDOMCSSStyleSheet
,
690 (void**)&ret
->nsstylesheet
);
692 ERR("Could not get nsICSSStyleSheet interface: %08x\n", nsres
);
695 return HTMLSTYLESHEET(ret
);