[PATCH 1/2] uxtheme/tests: Add dialog procedure message tests.

Zhiyi Zhang wine at gitlab.winehq.org
Tue Jun 28 22:18:54 CDT 2022


From: Zhiyi Zhang <zzhang at codeweavers.com>

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
 dlls/uxtheme/tests/system.c | 64 +++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/dlls/uxtheme/tests/system.c b/dlls/uxtheme/tests/system.c
index aa566f554ff..4301a0f76f2 100644
--- a/dlls/uxtheme/tests/system.c
+++ b/dlls/uxtheme/tests/system.c
@@ -1614,6 +1614,37 @@ static const struct message empty_seq[] =
     {0}
 };
 
+static const struct message wm_erasebkgnd_seq[] =
+{
+    {WM_ERASEBKGND, sent},
+    {WM_CTLCOLORDLG, sent},
+    {0}
+};
+
+static const struct message wm_ctlcolormsgbox_seq[] =
+{
+    {WM_CTLCOLORMSGBOX, sent},
+    {0}
+};
+
+static const struct message wm_ctlcolorbtn_seq[] =
+{
+    {WM_CTLCOLORBTN, sent},
+    {0}
+};
+
+static const struct message wm_ctlcolordlg_seq[] =
+{
+    {WM_CTLCOLORDLG, sent},
+    {0}
+};
+
+static const struct message wm_ctlcolorstatic_seq[] =
+{
+    {WM_CTLCOLORSTATIC, sent},
+    {0}
+};
+
 static HWND dialog_child;
 static DWORD dialog_init_flag;
 static BOOL handle_WM_ERASEBKGND;
@@ -1673,6 +1704,7 @@ static void test_EnableThemeDialogTexture(void)
     HBRUSH brush, brush2;
     HDC child_hdc, hdc;
     LOGBRUSH log_brush;
+    char buffer[32];
     ULONG_PTR proc;
     WNDCLASSA cls;
     HTHEME theme;
@@ -1779,6 +1811,20 @@ static void test_EnableThemeDialogTexture(void)
         {{WC_SCROLLBARA}},
     };
 
+    static const struct message_test
+    {
+        UINT msg;
+        const struct message *msg_seq;
+    }
+    message_tests[] =
+    {
+        {WM_ERASEBKGND, wm_erasebkgnd_seq},
+        {WM_CTLCOLORMSGBOX, wm_ctlcolormsgbox_seq},
+        {WM_CTLCOLORBTN, wm_ctlcolorbtn_seq},
+        {WM_CTLCOLORDLG, wm_ctlcolordlg_seq},
+        {WM_CTLCOLORSTATIC, wm_ctlcolorstatic_seq},
+    };
+
     if (!IsThemeActive())
     {
         skip("Theming is inactive.\n");
@@ -2260,6 +2306,24 @@ static void test_EnableThemeDialogTexture(void)
     DestroyWindow(hwnd2);
     DestroyWindow(hwnd);
 
+    /* Test that application dialog procedures should be called only once for each message */
+    dialog = CreateDialogIndirectParamA(NULL, &temp.template, GetDesktopWindow(),
+                                        test_EnableThemeDialogTexture_proc,
+                                        (LPARAM)&param);
+    ok(dialog != NULL, "CreateDialogIndirectParamA failed, error %ld.\n", GetLastError());
+    child = dialog_child;
+    ok(child != NULL, "Failed to get child control, error %ld.\n", GetLastError());
+    child_hdc = GetDC(child);
+    for (i = 0; i < ARRAY_SIZE(message_tests); ++i)
+    {
+        sprintf(buffer, "message %#x\n", message_tests[i].msg);
+        flush_sequences(sequences, NUM_MSG_SEQUENCES);
+        SendMessageW(dialog, message_tests[i].msg, (WPARAM)child_hdc, (LPARAM)child);
+        ok_sequence(sequences, PARENT_SEQ_INDEX, message_tests[i].msg_seq, buffer, TRUE);
+    }
+    ReleaseDC(child, child_hdc);
+    EndDialog(dialog, 0);
+
     UnregisterClassA(cls.lpszClassName, GetModuleHandleA(NULL));
 }
 
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/335



More information about the wine-devel mailing list