explorerframe/tests: COM cleanup for INameSpaceTreeControlEventsImpl.
This commit is contained in:
parent
e53582fdc1
commit
d15f5722cb
|
@ -21,6 +21,7 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue