From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53847 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51537 --- dlls/win32u/tests/win32u.c | 49 +++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/dlls/win32u/tests/win32u.c b/dlls/win32u/tests/win32u.c index 87419f6fadb..0187d52ea9d 100644 --- a/dlls/win32u/tests/win32u.c +++ b/dlls/win32u/tests/win32u.c @@ -24,7 +24,6 @@ #include "winbase.h" #include "ntuser.h"
- static void test_NtUserEnumDisplayDevices(void) { NTSTATUS ret; @@ -822,6 +821,43 @@ static void test_inter_process_child( HWND hwnd ) PostMessageA( hwnd, WM_USER, 0, 0 ); }
+static void test_NtUserEnableMouseInPointer_process( const char *arg ) +{ + DWORD enable = strtoul( arg, 0, 10 ); + BOOL ret; + + ret = NtUserEnableMouseInPointer( enable ); + todo_wine + ok( ret, "NtUserEnableMouseInPointer failed, error %lu\n", GetLastError() ); + + SetLastError( 0xdeadbeef ); + ret = NtUserEnableMouseInPointer( !enable ); + ok( !ret, "NtUserEnableMouseInPointer succeeded\n" ); + todo_wine + ok( GetLastError() == ERROR_ACCESS_DENIED, "got error %lu\n", GetLastError() ); + + ret = NtUserEnableMouseInPointer( enable ); + todo_wine + ok( ret, "NtUserEnableMouseInPointer failed, error %lu\n", GetLastError() ); +} + +static void test_NtUserEnableMouseInPointer( char **argv, BOOL enable ) +{ + STARTUPINFOA startup = {.cb = sizeof(STARTUPINFOA)}; + PROCESS_INFORMATION info = {0}; + char cmdline[MAX_PATH * 2]; + BOOL ret; + + sprintf( cmdline, "%s %s NtUserEnableMouseInPointer %u", argv[0], argv[1], enable ); + ret = CreateProcessA( NULL, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &startup, &info ); + ok( ret, "CreateProcessA failed, error %lu\n", GetLastError() ); + if (!ret) return; + + wait_child_process( info.hProcess ); + CloseHandle( info.hThread ); + CloseHandle( info.hProcess ); +} + START_TEST(win32u) { char **argv; @@ -837,6 +873,14 @@ START_TEST(win32u) return; }
+ if (argc > 3 && !strcmp( argv[2], "NtUserEnableMouseInPointer" )) + { + winetest_push_context( "enable %s", argv[3] ); + test_NtUserEnableMouseInPointer_process( argv[3] ); + winetest_pop_context(); + return; + } + test_NtUserEnumDisplayDevices(); test_window_props(); test_class(); @@ -851,4 +895,7 @@ START_TEST(win32u)
test_NtUserCloseWindowStation(); test_NtUserDisplayConfigGetDeviceInfo(); + + test_NtUserEnableMouseInPointer( argv, FALSE ); + test_NtUserEnableMouseInPointer( argv, TRUE ); }