mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-21 10:54:10 +00:00
uiautomationcore/tests: Expand UiaHostProviderFromHwnd tests.
Signed-off-by: Connor McAdams <cmcadams@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b5f4511b8e
commit
2e7b6da243
|
@ -1,5 +1,5 @@
|
||||||
TESTDLL = uiautomationcore.dll
|
TESTDLL = uiautomationcore.dll
|
||||||
IMPORTS = uiautomationcore user32 ole32
|
IMPORTS = uiautomationcore user32 ole32 oleaut32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
uiautomation.c
|
uiautomation.c
|
||||||
|
|
|
@ -34,9 +34,12 @@ static LRESULT WINAPI test_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPAR
|
||||||
static void test_UiaHostProviderFromHwnd(void)
|
static void test_UiaHostProviderFromHwnd(void)
|
||||||
{
|
{
|
||||||
IRawElementProviderSimple *p, *p2;
|
IRawElementProviderSimple *p, *p2;
|
||||||
|
enum ProviderOptions prov_opt;
|
||||||
WNDCLASSA cls;
|
WNDCLASSA cls;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
|
VARIANT v;
|
||||||
|
int i;
|
||||||
|
|
||||||
cls.style = 0;
|
cls.style = 0;
|
||||||
cls.lpfnWndProc = test_wnd_proc;
|
cls.lpfnWndProc = test_wnd_proc;
|
||||||
|
@ -61,6 +64,9 @@ static void test_UiaHostProviderFromHwnd(void)
|
||||||
ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
|
ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
|
||||||
ok(p == NULL, "Unexpected instance.\n");
|
ok(p == NULL, "Unexpected instance.\n");
|
||||||
|
|
||||||
|
hr = UiaHostProviderFromHwnd(hwnd, NULL);
|
||||||
|
ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
|
||||||
|
|
||||||
p = NULL;
|
p = NULL;
|
||||||
hr = UiaHostProviderFromHwnd(hwnd, &p);
|
hr = UiaHostProviderFromHwnd(hwnd, &p);
|
||||||
ok(hr == S_OK, "Failed to get host provider, hr %#x.\n", hr);
|
ok(hr == S_OK, "Failed to get host provider, hr %#x.\n", hr);
|
||||||
|
@ -75,9 +81,54 @@ static void test_UiaHostProviderFromHwnd(void)
|
||||||
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
ok(p2 == NULL, "Unexpected instance.\n");
|
ok(p2 == NULL, "Unexpected instance.\n");
|
||||||
|
|
||||||
|
hr = IRawElementProviderSimple_GetPropertyValue(p, UIA_NativeWindowHandlePropertyId, &v);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v));
|
||||||
|
ok(V_I4(&v) == HandleToUlong(hwnd), "V_I4(&v) = %#x, expected %#x\n", V_I4(&v), HandleToUlong(hwnd));
|
||||||
|
|
||||||
|
hr = IRawElementProviderSimple_GetPropertyValue(p, UIA_ProviderDescriptionPropertyId, &v);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok(V_VT(&v) == VT_BSTR, "V_VT(&v) = %d\n", V_VT(&v));
|
||||||
|
VariantClear(&v);
|
||||||
|
|
||||||
|
/* No patterns are implemented on the HWND Host provider. */
|
||||||
|
for (i = UIA_InvokePatternId; i < (UIA_CustomNavigationPatternId + 1); i++)
|
||||||
|
{
|
||||||
|
IUnknown *unk;
|
||||||
|
|
||||||
|
unk = (void *)0xdeadbeef;
|
||||||
|
hr = IRawElementProviderSimple_GetPatternProvider(p, i, &unk);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x, %d.\n", hr, i);
|
||||||
|
ok(!unk, "Pattern %d returned %p\n", i, unk);
|
||||||
|
}
|
||||||
|
|
||||||
|
hr = IRawElementProviderSimple_get_ProviderOptions(p, &prov_opt);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok((prov_opt == ProviderOptions_ServerSideProvider) ||
|
||||||
|
broken(prov_opt == ProviderOptions_ClientSideProvider), /* Windows < 10 1507 */
|
||||||
|
"Unexpected provider options %#x\n", prov_opt);
|
||||||
|
|
||||||
|
/* Test behavior post Window destruction. */
|
||||||
|
DestroyWindow(hwnd);
|
||||||
|
|
||||||
|
hr = IRawElementProviderSimple_GetPropertyValue(p, UIA_NativeWindowHandlePropertyId, &v);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v));
|
||||||
|
ok(V_I4(&v) == HandleToUlong(hwnd), "V_I4(&v) = %#x, expected %#x\n", V_I4(&v), HandleToUlong(hwnd));
|
||||||
|
|
||||||
|
hr = IRawElementProviderSimple_GetPropertyValue(p, UIA_ProviderDescriptionPropertyId, &v);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok(V_VT(&v) == VT_BSTR, "V_VT(&v) = %d\n", V_VT(&v));
|
||||||
|
VariantClear(&v);
|
||||||
|
|
||||||
|
hr = IRawElementProviderSimple_get_ProviderOptions(p, &prov_opt);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok((prov_opt == ProviderOptions_ServerSideProvider) ||
|
||||||
|
broken(prov_opt == ProviderOptions_ClientSideProvider), /* Windows < 10 1507 */
|
||||||
|
"Unexpected provider options %#x\n", prov_opt);
|
||||||
|
|
||||||
IRawElementProviderSimple_Release(p);
|
IRawElementProviderSimple_Release(p);
|
||||||
|
|
||||||
DestroyWindow(hwnd);
|
|
||||||
UnregisterClassA("HostProviderFromHwnd class", NULL);
|
UnregisterClassA("HostProviderFromHwnd class", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue