Fix a test failure, silence/remove some FIXMEs, and return S_OK from a stub.
From: Connor McAdams cmcadams@codeweavers.com
The MSAA to UIA event bridge is now partially implemented.
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/uiautomationcore/uia_client.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/dlls/uiautomationcore/uia_client.c b/dlls/uiautomationcore/uia_client.c index 22cce1324e8..baadecd56d0 100644 --- a/dlls/uiautomationcore/uia_client.c +++ b/dlls/uiautomationcore/uia_client.c @@ -1909,7 +1909,6 @@ static HRESULT WINAPI uia_provider_attach_event(IWineUiaProvider *iface, LONG_PT if (!prov->return_nested_node && SUCCEEDED(IRawElementProviderFragmentRoot_QueryInterface(elroot, &IID_IProxyProviderWinEventHandler, (void **)&winevent_handler))) { - FIXME("MSAA to UIA event bridge currently unimplemented\n"); hr = uia_event_add_win_event_hwnd(event, prov->hwnd); if (FAILED(hr)) WARN("Failed to add hwnd for win_event, hr %#lx\n", hr);
From: Connor McAdams cmcadams@codeweavers.com
Win10v1709 doesn't respond to EVENT_OBJECT_DESTROY for COM focus event handlers.
Signed-off-by: Connor McAdams cmcadams@codeweavers.com Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55807 --- dlls/uiautomationcore/tests/uiautomation.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/uiautomationcore/tests/uiautomation.c b/dlls/uiautomationcore/tests/uiautomation.c index b527e5bf98d..9210583062f 100644 --- a/dlls/uiautomationcore/tests/uiautomation.c +++ b/dlls/uiautomationcore/tests/uiautomation.c @@ -15713,13 +15713,18 @@ static void test_uia_com_event_handler_event_advisement(IUIAutomation *uia_iface set_uia_hwnd_expects(0, 1, 1, 2, 0); /* Only Win11 sends WM_GETOBJECT 2 times. */
NotifyWinEvent(EVENT_OBJECT_FOCUS, test_child_hwnd, OBJID_CLIENT, CHILDID_SELF); - ok(msg_wait_for_all_events(method_event, 1, 2000) != WAIT_TIMEOUT, "Wait for method_event(s) timed out.\n"); + wait_res = msg_wait_for_all_events(method_event, 1, 2000); + ok(wait_res != WAIT_TIMEOUT || broken(wait_res == WAIT_TIMEOUT), /* Win10v1709 */ + "Wait for method_event(s) timed out.\n"); if (wait_for_clientside_callbacks(2000)) trace("Kept getting callbacks up until timeout\n");
set_provider_method_event_data(&Provider2, NULL, -1); check_uia_hwnd_expects_at_most(0, 1, 1, 2, 0); CHECK_CALLED_AT_MOST(child_winproc_GETOBJECT_UiaRoot, 3); - test_provider_event_advise_added(&Provider2, UIA_AutomationFocusChangedEventId, FALSE); + if (!winetest_platform_is_wine && (wait_res == WAIT_TIMEOUT)) /* Win10v1709 */ + test_provider_event_advise_added(&Provider2, 0, FALSE); + else + test_provider_event_advise_added(&Provider2, UIA_AutomationFocusChangedEventId, FALSE); test_provider_event_advise_added(&Provider_hwnd3, 0, FALSE); test_provider_event_advise_added(&Provider_nc3, 0, FALSE);
From: Connor McAdams cmcadams@codeweavers.com
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/uiautomationcore/uia_client.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/uiautomationcore/uia_client.c b/dlls/uiautomationcore/uia_client.c index baadecd56d0..df9b2b283e0 100644 --- a/dlls/uiautomationcore/uia_client.c +++ b/dlls/uiautomationcore/uia_client.c @@ -3131,6 +3131,7 @@ HRESULT WINAPI UiaHUiaNodeFromVariant(VARIANT *in_val, HUIANODE *huianode) static SAFEARRAY WINAPI *default_uia_provider_callback(HWND hwnd, enum ProviderType prov_type) { IRawElementProviderSimple *elprov = NULL; + static BOOL fixme_once; SAFEARRAY *sa = NULL; HRESULT hr;
@@ -3153,7 +3154,8 @@ static SAFEARRAY WINAPI *default_uia_provider_callback(HWND hwnd, enum ProviderT }
case ProviderType_NonClientArea: - FIXME("Default ProviderType_NonClientArea provider unimplemented.\n"); + if (!fixme_once++) + FIXME("Default ProviderType_NonClientArea provider unimplemented.\n"); break;
case ProviderType_BaseHwnd: @@ -3238,6 +3240,7 @@ exit:
static HRESULT uia_get_providers_for_hwnd(struct uia_node *node) { + static BOOL fixme_once; HRESULT hr;
hr = uia_get_provider_from_hwnd(node); @@ -3251,7 +3254,7 @@ static HRESULT uia_get_providers_for_hwnd(struct uia_node *node) return hr; }
- if (!node->prov[PROV_TYPE_OVERRIDE]) + if (!node->prov[PROV_TYPE_OVERRIDE] && !fixme_once++) FIXME("Override provider callback currently unimplemented.\n");
if (!node->prov[PROV_TYPE_NONCLIENT])
From: Connor McAdams cmcadams@codeweavers.com
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/uiautomationcore/uia_provider.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/uiautomationcore/uia_provider.c b/dlls/uiautomationcore/uia_provider.c index 917d21d8a82..4ecef2a4752 100644 --- a/dlls/uiautomationcore/uia_provider.c +++ b/dlls/uiautomationcore/uia_provider.c @@ -1897,7 +1897,7 @@ static HRESULT WINAPI base_hwnd_fragment_get_FragmentRoot(IRawElementProviderFra { FIXME("%p, %p: stub!\n", iface, ret_val); *ret_val = NULL; - return E_NOTIMPL; + return S_OK; }
static const IRawElementProviderFragmentVtbl base_hwnd_fragment_vtbl = {
This merge request was approved by Esme Povirk.