From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlstylesheet.c | 78 ++++++------------------------------ 1 file changed, 13 insertions(+), 65 deletions(-)
diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c index fb9d71f894f..9210f80eab5 100644 --- a/dlls/mshtml/htmlstylesheet.c +++ b/dlls/mshtml/htmlstylesheet.c @@ -48,12 +48,8 @@ struct HTMLStyleSheetsCollection { };
typedef struct { - IEnumVARIANT IEnumVARIANT_iface; - - LONG ref; - + CollectionEnum colenum; ULONG iter; - HTMLStyleSheetsCollection *col; } HTMLStyleSheetsCollectionEnum;
struct HTMLStyleSheetRulesCollection { @@ -401,57 +397,18 @@ static HRESULT create_style_sheet_rules_collection(nsIDOMCSSRuleList *nslist, Di
static inline HTMLStyleSheetsCollectionEnum *HTMLStyleSheetsCollectionEnum_from_IEnumVARIANT(IEnumVARIANT *iface) { - return CONTAINING_RECORD(iface, HTMLStyleSheetsCollectionEnum, IEnumVARIANT_iface); -} - -static HRESULT WINAPI HTMLStyleSheetsCollectionEnum_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppv) -{ - HTMLStyleSheetsCollectionEnum *This = HTMLStyleSheetsCollectionEnum_from_IEnumVARIANT(iface); - - TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(riid, &IID_IUnknown)) { - *ppv = &This->IEnumVARIANT_iface; - }else if(IsEqualGUID(riid, &IID_IEnumVARIANT)) { - *ppv = &This->IEnumVARIANT_iface; - }else { - FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - *ppv = NULL; - return E_NOINTERFACE; - } - - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; -} - -static ULONG WINAPI HTMLStyleSheetsCollectionEnum_AddRef(IEnumVARIANT *iface) -{ - HTMLStyleSheetsCollectionEnum *This = HTMLStyleSheetsCollectionEnum_from_IEnumVARIANT(iface); - LONG ref = InterlockedIncrement(&This->ref); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return CONTAINING_RECORD(iface, HTMLStyleSheetsCollectionEnum, colenum.IEnumVARIANT_iface); }
-static ULONG WINAPI HTMLStyleSheetsCollectionEnum_Release(IEnumVARIANT *iface) +static inline HTMLStyleSheetsCollection *HTMLStyleSheetsCollection_from_DispatchEx(DispatchEx *iface) { - HTMLStyleSheetsCollectionEnum *This = HTMLStyleSheetsCollectionEnum_from_IEnumVARIANT(iface); - LONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p) ref=%ld\n", This, ref); - - if(!ref) { - IHTMLStyleSheetsCollection_Release(&This->col->IHTMLStyleSheetsCollection_iface); - free(This); - } - - return ref; + return CONTAINING_RECORD(iface, HTMLStyleSheetsCollection, dispex); }
static HRESULT WINAPI HTMLStyleSheetsCollectionEnum_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched) { HTMLStyleSheetsCollectionEnum *This = HTMLStyleSheetsCollectionEnum_from_IEnumVARIANT(iface); + HTMLStyleSheetsCollection *col = HTMLStyleSheetsCollection_from_DispatchEx(This->colenum.disp); VARIANT index; HRESULT hres; ULONG num, i; @@ -459,13 +416,13 @@ static HRESULT WINAPI HTMLStyleSheetsCollectionEnum_Next(IEnumVARIANT *iface, UL
TRACE("(%p)->(%lu %p %p)\n", This, celt, rgVar, pCeltFetched);
- nsIDOMStyleSheetList_GetLength(This->col->nslist, &len); + nsIDOMStyleSheetList_GetLength(col->nslist, &len); num = min(len - This->iter, celt); V_VT(&index) = VT_I4;
for(i = 0; i < num; i++) { V_I4(&index) = This->iter + i; - hres = IHTMLStyleSheetsCollection_item(&This->col->IHTMLStyleSheetsCollection_iface, &index, &rgVar[i]); + hres = IHTMLStyleSheetsCollection_item(&col->IHTMLStyleSheetsCollection_iface, &index, &rgVar[i]); if(FAILED(hres)) { while(i--) VariantClear(&rgVar[i]); @@ -482,11 +439,12 @@ static HRESULT WINAPI HTMLStyleSheetsCollectionEnum_Next(IEnumVARIANT *iface, UL static HRESULT WINAPI HTMLStyleSheetsCollectionEnum_Skip(IEnumVARIANT *iface, ULONG celt) { HTMLStyleSheetsCollectionEnum *This = HTMLStyleSheetsCollectionEnum_from_IEnumVARIANT(iface); + HTMLStyleSheetsCollection *col = HTMLStyleSheetsCollection_from_DispatchEx(This->colenum.disp); UINT32 len;
TRACE("(%p)->(%lu)\n", This, celt);
- nsIDOMStyleSheetList_GetLength(This->col->nslist, &len); + nsIDOMStyleSheetList_GetLength(col->nslist, &len); if(This->iter + celt > len) { This->iter = len; return S_FALSE; @@ -514,9 +472,9 @@ static HRESULT WINAPI HTMLStyleSheetsCollectionEnum_Clone(IEnumVARIANT *iface, I }
static const IEnumVARIANTVtbl HTMLStyleSheetsCollectionEnumVtbl = { - HTMLStyleSheetsCollectionEnum_QueryInterface, - HTMLStyleSheetsCollectionEnum_AddRef, - HTMLStyleSheetsCollectionEnum_Release, + CollectionEnum_QueryInterface, + CollectionEnum_AddRef, + CollectionEnum_Release, HTMLStyleSheetsCollectionEnum_Next, HTMLStyleSheetsCollectionEnum_Skip, HTMLStyleSheetsCollectionEnum_Reset, @@ -558,14 +516,9 @@ static HRESULT WINAPI HTMLStyleSheetsCollection_get__newEnum(IHTMLStyleSheetsCol if(!ret) return E_OUTOFMEMORY;
- ret->IEnumVARIANT_iface.lpVtbl = &HTMLStyleSheetsCollectionEnumVtbl; - ret->ref = 1; ret->iter = 0;
- HTMLStyleSheetsCollection_AddRef(&This->IHTMLStyleSheetsCollection_iface); - ret->col = This; - - *p = (IUnknown*)&ret->IEnumVARIANT_iface; + *p = CollectionEnum_init(&ret->colenum, &This->dispex, &HTMLStyleSheetsCollectionEnumVtbl); return S_OK; }
@@ -626,11 +579,6 @@ static const IHTMLStyleSheetsCollectionVtbl HTMLStyleSheetsCollectionVtbl = { HTMLStyleSheetsCollection_item };
-static inline HTMLStyleSheetsCollection *HTMLStyleSheetsCollection_from_DispatchEx(DispatchEx *iface) -{ - return CONTAINING_RECORD(iface, HTMLStyleSheetsCollection, dispex); -} - static void *HTMLStyleSheetsCollection_query_interface(DispatchEx *dispex, REFIID riid) { HTMLStyleSheetsCollection *This = HTMLStyleSheetsCollection_from_DispatchEx(dispex);