From d15f5722cbca155b02dd35834d9343b3055cb87b Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Wed, 29 Dec 2010 02:53:01 +0100 Subject: [PATCH] explorerframe/tests: COM cleanup for INameSpaceTreeControlEventsImpl. --- dlls/explorerframe/tests/nstc.c | 103 ++++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 30 deletions(-) diff --git a/dlls/explorerframe/tests/nstc.c b/dlls/explorerframe/tests/nstc.c index e4d84435b3c..4b23c95ea6d 100644 --- a/dlls/explorerframe/tests/nstc.c +++ b/dlls/explorerframe/tests/nstc.c @@ -21,6 +21,7 @@ #include #define COBJMACROS +#define CONST_VTABLE #include "shlobj.h" #include "wine/test.h" @@ -67,25 +68,28 @@ enum { OnItemClick = 0, OnPropertyItemCommit, OnItemStateChanging, OnItemStateCh LastEvent }; typedef struct { - const INameSpaceTreeControlEventsVtbl *lpVtbl; + INameSpaceTreeControlEvents INameSpaceTreeControlEvents_iface; UINT qi_called_count; /* Keep track of calls to QueryInterface */ BOOL qi_enable_events; /* If FALSE, QueryInterface returns only E_NOINTERFACE */ UINT count[LastEvent]; /* Keep track of calls to all On* functions. */ LONG ref; } INameSpaceTreeControlEventsImpl; -#define NSTCE_IMPL(iface) \ - ((INameSpaceTreeControlEventsImpl*)iface) +static inline INameSpaceTreeControlEventsImpl *impl_from_INameSpaceTreeControlEvents(INameSpaceTreeControlEvents *iface) +{ + return CONTAINING_RECORD(iface, INameSpaceTreeControlEventsImpl, INameSpaceTreeControlEvents_iface); +} static HRESULT WINAPI NSTCEvents_fnQueryInterface( INameSpaceTreeControlEvents* iface, REFIID riid, void **ppvObject) { - NSTCE_IMPL(iface)->qi_called_count++; + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); - if(NSTCE_IMPL(iface)->qi_enable_events && - IsEqualIID(riid, &IID_INameSpaceTreeControlEvents)) + This->qi_called_count++; + + if(This->qi_enable_events && IsEqualIID(riid, &IID_INameSpaceTreeControlEvents)) { IUnknown_AddRef(iface); *ppvObject = iface; @@ -98,13 +102,17 @@ static HRESULT WINAPI NSTCEvents_fnQueryInterface( static ULONG WINAPI NSTCEvents_fnAddRef( INameSpaceTreeControlEvents* iface) { - return InterlockedIncrement(&NSTCE_IMPL(iface)->ref); + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + + return InterlockedIncrement(&This->ref); } static ULONG WINAPI NSTCEvents_fnRelease( INameSpaceTreeControlEvents* iface) { - return InterlockedDecrement(&NSTCE_IMPL(iface)->ref); + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + + return InterlockedDecrement(&This->ref); } static HRESULT WINAPI NSTCEvents_fnOnItemClick( @@ -113,8 +121,10 @@ static HRESULT WINAPI NSTCEvents_fnOnItemClick( NSTCEHITTEST nstceHitTest, NSTCECLICKTYPE nstceClickType) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnItemClick]++; + This->count[OnItemClick]++; return E_NOTIMPL; } @@ -122,8 +132,10 @@ static HRESULT WINAPI NSTCEvents_fnOnPropertyItemCommit( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnPropertyItemCommit]++; + This->count[OnPropertyItemCommit]++; return E_NOTIMPL; } @@ -133,8 +145,10 @@ static HRESULT WINAPI NSTCEvents_fnOnItemStateChanging( NSTCITEMSTATE nstcisMask, NSTCITEMSTATE nstcisState) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnItemStateChanging]++; + This->count[OnItemStateChanging]++; return E_NOTIMPL; } @@ -144,8 +158,10 @@ static HRESULT WINAPI NSTCEvents_fnOnItemStateChanged( NSTCITEMSTATE nstcisMask, NSTCITEMSTATE nstcisState) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnItemStateChanged]++; + This->count[OnItemStateChanged]++; return E_NOTIMPL; } @@ -153,6 +169,8 @@ static HRESULT WINAPI NSTCEvents_fnOnSelectionChanged( INameSpaceTreeControlEvents* iface, IShellItemArray *psiaSelection) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psiaSelection != NULL, "IShellItemArray was NULL.\n"); if(psiaSelection) { @@ -162,7 +180,7 @@ static HRESULT WINAPI NSTCEvents_fnOnSelectionChanged( ok(hr == S_OK, "Got 0x%08x\n", hr); ok(count == 1, "Got count 0x%x\n", count); } - NSTCE_IMPL(iface)->count[OnSelectionChanged]++; + This->count[OnSelectionChanged]++; return E_NOTIMPL; } @@ -172,7 +190,9 @@ static HRESULT WINAPI NSTCEvents_fnOnKeyboardInput( WPARAM wParam, LPARAM lParam) { - NSTCE_IMPL(iface)->count[OnKeyboardInput]++; + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + + This->count[OnKeyboardInput]++; ok(wParam == 0x1234, "Got unexpected wParam %lx\n", wParam); ok(lParam == 0x1234, "Got unexpected lParam %lx\n", lParam); return E_NOTIMPL; @@ -182,8 +202,10 @@ static HRESULT WINAPI NSTCEvents_fnOnBeforeExpand( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnBeforeExpand]++; + This->count[OnBeforeExpand]++; return E_NOTIMPL; } @@ -191,8 +213,10 @@ static HRESULT WINAPI NSTCEvents_fnOnAfterExpand( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnAfterExpand]++; + This->count[OnAfterExpand]++; return E_NOTIMPL; } @@ -200,8 +224,10 @@ static HRESULT WINAPI NSTCEvents_fnOnBeginLabelEdit( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnBeginLabelEdit]++; + This->count[OnBeginLabelEdit]++; return E_NOTIMPL; } @@ -209,8 +235,10 @@ static HRESULT WINAPI NSTCEvents_fnOnEndLabelEdit( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnEndLabelEdit]++; + This->count[OnEndLabelEdit]++; return E_NOTIMPL; } @@ -220,8 +248,10 @@ static HRESULT WINAPI NSTCEvents_fnOnGetToolTip( LPWSTR pszTip, int cchTip) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnGetToolTip]++; + This->count[OnGetToolTip]++; return E_NOTIMPL; } @@ -229,8 +259,10 @@ static HRESULT WINAPI NSTCEvents_fnOnBeforeItemDelete( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnBeforeItemDelete]++; + This->count[OnBeforeItemDelete]++; return E_NOTIMPL; } @@ -239,8 +271,10 @@ static HRESULT WINAPI NSTCEvents_fnOnItemAdded( IShellItem *psi, BOOL fIsRoot) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnItemAdded]++; + This->count[OnItemAdded]++; return S_OK; } @@ -249,8 +283,10 @@ static HRESULT WINAPI NSTCEvents_fnOnItemDeleted( IShellItem *psi, BOOL fIsRoot) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnItemDeleted]++; + This->count[OnItemDeleted]++; return S_OK; } @@ -260,7 +296,9 @@ static HRESULT WINAPI NSTCEvents_fnOnBeforeContextMenu( REFIID riid, void **ppv) { - NSTCE_IMPL(iface)->count[OnBeforeContextMenu]++; + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + + This->count[OnBeforeContextMenu]++; return E_NOTIMPL; } @@ -271,7 +309,9 @@ static HRESULT WINAPI NSTCEvents_fnOnAfterContextMenu( REFIID riid, void **ppv) { - NSTCE_IMPL(iface)->count[OnAfterContextMenu]++; + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + + This->count[OnAfterContextMenu]++; return E_NOTIMPL; } @@ -279,8 +319,10 @@ static HRESULT WINAPI NSTCEvents_fnOnBeforeStateImageChange( INameSpaceTreeControlEvents* iface, IShellItem *psi) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnBeforeStateImageChange]++; + This->count[OnBeforeStateImageChange]++; return E_NOTIMPL; } @@ -290,8 +332,10 @@ static HRESULT WINAPI NSTCEvents_fnOnGetDefaultIconIndex( int *piDefaultIcon, int *piOpenIcon) { + INameSpaceTreeControlEventsImpl *This = impl_from_INameSpaceTreeControlEvents(iface); + ok(psi != NULL, "NULL IShellItem\n"); - NSTCE_IMPL(iface)->count[OnGetDefaultIconIndex]++; + This->count[OnGetDefaultIconIndex]++; return E_NOTIMPL; } @@ -318,13 +362,12 @@ static const INameSpaceTreeControlEventsVtbl vt_NSTCEvents = { NSTCEvents_fnOnBeforeStateImageChange, NSTCEvents_fnOnGetDefaultIconIndex }; -#undef NSTCE_IMPL static INameSpaceTreeControlEventsImpl *create_nstc_events(void) { INameSpaceTreeControlEventsImpl *This; This = HeapAlloc(GetProcessHeap(), 0, sizeof(INameSpaceTreeControlEventsImpl)); - This->lpVtbl = &vt_NSTCEvents; + This->INameSpaceTreeControlEvents_iface.lpVtbl = &vt_NSTCEvents; This->ref = 1; return This; @@ -1755,10 +1798,10 @@ static void test_events(void) /* Create two instances of INameSpaceTreeControlEvents */ pnstceimpl = create_nstc_events(); - pnstce = (INameSpaceTreeControlEvents*)pnstceimpl; + pnstce = &pnstceimpl->INameSpaceTreeControlEvents_iface; ZeroMemory(&pnstceimpl->count, sizeof(UINT)*LastEvent); pnstceimpl2 = create_nstc_events(); - pnstce2 = (INameSpaceTreeControlEvents*)pnstceimpl2; + pnstce2 = &pnstceimpl2->INameSpaceTreeControlEvents_iface; if(0) {