mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 08:50:49 +00:00
oleacc: Add IAccessible refcount tests.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
3dbfe812b6
commit
32cd910bde
|
@ -100,6 +100,7 @@ static struct Accessible
|
||||||
{
|
{
|
||||||
IAccessible IAccessible_iface;
|
IAccessible IAccessible_iface;
|
||||||
IOleWindow IOleWindow_iface;
|
IOleWindow IOleWindow_iface;
|
||||||
|
LONG ref;
|
||||||
|
|
||||||
IAccessible *parent;
|
IAccessible *parent;
|
||||||
HWND acc_hwnd;
|
HWND acc_hwnd;
|
||||||
|
@ -140,12 +141,14 @@ static HRESULT WINAPI Accessible_QueryInterface(
|
||||||
|
|
||||||
static ULONG WINAPI Accessible_AddRef(IAccessible *iface)
|
static ULONG WINAPI Accessible_AddRef(IAccessible *iface)
|
||||||
{
|
{
|
||||||
return 2;
|
struct Accessible *This = impl_from_Accessible(iface);
|
||||||
|
return InterlockedIncrement(&This->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI Accessible_Release(IAccessible *iface)
|
static ULONG WINAPI Accessible_Release(IAccessible *iface)
|
||||||
{
|
{
|
||||||
return 1;
|
struct Accessible *This = impl_from_Accessible(iface);
|
||||||
|
return InterlockedDecrement(&This->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI Accessible_GetTypeInfoCount(
|
static HRESULT WINAPI Accessible_GetTypeInfoCount(
|
||||||
|
@ -226,9 +229,11 @@ static HRESULT WINAPI Accessible_get_accChild(IAccessible *iface,
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
case 3:
|
case 3:
|
||||||
*ppdispChild = (IDispatch*)&Accessible_child.IAccessible_iface;
|
*ppdispChild = (IDispatch*)&Accessible_child.IAccessible_iface;
|
||||||
|
IDispatch_AddRef(*ppdispChild);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
case 4:
|
case 4:
|
||||||
*ppdispChild = (IDispatch*)&Accessible_child.IAccessible_iface;
|
*ppdispChild = (IDispatch*)&Accessible_child.IAccessible_iface;
|
||||||
|
IDispatch_AddRef(*ppdispChild);
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
default:
|
default:
|
||||||
ok(0, "unexpected call\n");
|
ok(0, "unexpected call\n");
|
||||||
|
@ -464,6 +469,7 @@ static struct Accessible Accessible =
|
||||||
{
|
{
|
||||||
{ &AccessibleVtbl },
|
{ &AccessibleVtbl },
|
||||||
{ &OleWindowVtbl },
|
{ &OleWindowVtbl },
|
||||||
|
1,
|
||||||
NULL,
|
NULL,
|
||||||
0, 0
|
0, 0
|
||||||
};
|
};
|
||||||
|
@ -471,6 +477,7 @@ static struct Accessible Accessible_child =
|
||||||
{
|
{
|
||||||
{ &AccessibleVtbl },
|
{ &AccessibleVtbl },
|
||||||
{ &OleWindowVtbl },
|
{ &OleWindowVtbl },
|
||||||
|
1,
|
||||||
&Accessible.IAccessible_iface,
|
&Accessible.IAccessible_iface,
|
||||||
0, 0
|
0, 0
|
||||||
};
|
};
|
||||||
|
@ -906,6 +913,8 @@ static void test_AccessibleObjectFromEvent(void)
|
||||||
IAccessible_Release(acc);
|
IAccessible_Release(acc);
|
||||||
|
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
|
ok(Accessible.ref == 1, "Accessible.ref = %ld\n", Accessible.ref);
|
||||||
|
ok(Accessible_child.ref == 1, "Accessible.ref = %ld\n", Accessible_child.ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_GetProcessHandleFromHwnd(void)
|
static void test_GetProcessHandleFromHwnd(void)
|
||||||
|
@ -1014,6 +1023,9 @@ static void test_AccessibleChildren(IAccessible *acc)
|
||||||
IDispatch_Release(V_DISPATCH(children+1));
|
IDispatch_Release(V_DISPATCH(children+1));
|
||||||
}
|
}
|
||||||
ok(V_VT(children+2) == VT_EMPTY, "V_VT(children+2) = %d\n", V_VT(children+2));
|
ok(V_VT(children+2) == VT_EMPTY, "V_VT(children+2) = %d\n", V_VT(children+2));
|
||||||
|
|
||||||
|
ok(Accessible.ref == 1, "Accessible.ref = %ld\n", Accessible.ref);
|
||||||
|
ok(Accessible_child.ref == 1, "Accessible.ref = %ld\n", Accessible_child.ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define check_acc_state(acc, state) _check_acc_state(__LINE__, acc, state)
|
#define check_acc_state(acc, state) _check_acc_state(__LINE__, acc, state)
|
||||||
|
@ -2003,6 +2015,8 @@ static void test_WindowFromAccessibleObject(void)
|
||||||
CHECK_CALLED(Accessible_child_get_accParent);
|
CHECK_CALLED(Accessible_child_get_accParent);
|
||||||
|
|
||||||
Accessible.ow_hwnd = NULL;
|
Accessible.ow_hwnd = NULL;
|
||||||
|
ok(Accessible.ref == 1, "Accessible.ref = %ld\n", Accessible.ref);
|
||||||
|
ok(Accessible_child.ref == 1, "Accessible.ref = %ld\n", Accessible_child.ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
START_TEST(main)
|
START_TEST(main)
|
||||||
|
|
Loading…
Reference in a new issue