[PATCH 0/3] MR9591: comdlg32/tests: Add a helper to check for supported interfaces.
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9591
From: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/comdlg32/tests/itemdlg.c | 84 ++++++++++++----------------------- 1 file changed, 29 insertions(+), 55 deletions(-) diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c index f1d0a62525e..8e9f30d1857 100644 --- a/dlls/comdlg32/tests/itemdlg.c +++ b/dlls/comdlg32/tests/itemdlg.c @@ -41,6 +41,21 @@ static HRESULT (WINAPI *pSHCreateShellItem)(LPCITEMIDLIST,IShellFolder*,LPCITEMI static HRESULT (WINAPI *pSHGetIDListFromObject)(IUnknown*, PIDLIST_ABSOLUTE*); static HRESULT (WINAPI *pSHCreateItemFromParsingName)(PCWSTR,IBindCtx*,REFIID,void**); +#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c) +static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported) +{ + IUnknown *iface = iface_ptr; + HRESULT hr, expected_hr; + IUnknown *unk; + + expected_hr = supported ? S_OK : E_NOINTERFACE; + + hr = IUnknown_QueryInterface(iface, iid, (void **)&unk); + ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); +} + static void init_function_pointers(void) { HMODULE hmod = GetModuleHandleA("shell32.dll"); @@ -334,7 +349,6 @@ static IFileDialogEvents *IFileDialogEvents_Constructor(void) static BOOL test_instantiation(void) { - IFileDialog *pfd; IFileOpenDialog *pfod; IFileSaveDialog *pfsd; IServiceProvider *psp; @@ -353,9 +367,13 @@ static BOOL test_instantiation(void) } ok(hr == S_OK, "got 0x%08lx.\n", hr); - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileDialog, (void**)&pfd); - ok(hr == S_OK, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IFileDialog_Release(pfd); + check_interface(pfod, &IID_IFileDialog, TRUE); + check_interface(pfod, &IID_IExplorerBrowserEvents, TRUE); + check_interface(pfod, &IID_ICommDlgBrowser3, TRUE); + check_interface(pfod, &IID_IFileSaveDialog, FALSE); + check_interface(pfod, &IID_IFileDialogEvents, FALSE); + check_interface(pfod, &IID_IExplorerBrowser, FALSE); + check_interface(pfod, &IID_IShellBrowser, FALSE); hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileDialogCustomize, (void**)&punk); ok(hr == S_OK, "got 0x%08lx.\n", hr); @@ -366,10 +384,6 @@ static BOOL test_instantiation(void) IUnknown_Release(punk); IUnknown_Release(unk2); - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileSaveDialog, (void**)&pfsd); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IFileSaveDialog_Release(pfsd); - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IServiceProvider, (void**)&psp); ok(hr == S_OK, "got 0x%08lx.\n", hr); if(SUCCEEDED(hr)) @@ -402,26 +416,6 @@ static BOOL test_instantiation(void) IServiceProvider_Release(psp); } - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IFileDialogEvents, (void**)&punk); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IExplorerBrowser, (void**)&punk); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IExplorerBrowserEvents, (void**)&punk); - ok(hr == S_OK, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileOpenDialog_QueryInterface(pfod, &IID_ICommDlgBrowser3, (void**)&punk); - ok(hr == S_OK, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IShellBrowser, (void**)&punk); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - hr = IFileOpenDialog_QueryInterface(pfod, &IID_IOleWindow, (void**)&pow); ok(hr == S_OK, "got 0x%08lx.\n", hr); if(SUCCEEDED(hr)) @@ -460,9 +454,13 @@ static BOOL test_instantiation(void) } ok(hr == S_OK, "got 0x%08lx.\n", hr); - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileDialog, (void**)&pfd); - ok(hr == S_OK, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IFileDialog_Release(pfd); + check_interface(pfsd, &IID_IFileDialog, TRUE); + check_interface(pfsd, &IID_IExplorerBrowserEvents, TRUE); + check_interface(pfsd, &IID_ICommDlgBrowser3, TRUE); + check_interface(pfsd, &IID_IFileOpenDialog, FALSE); + check_interface(pfsd, &IID_IFileDialogEvents, FALSE); + check_interface(pfsd, &IID_IExplorerBrowser, FALSE); + check_interface(pfsd, &IID_IShellBrowser, FALSE); hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileDialogCustomize, (void**)&punk); ok(hr == S_OK, "got 0x%08lx.\n", hr); @@ -473,30 +471,6 @@ static BOOL test_instantiation(void) IUnknown_Release(punk); IUnknown_Release(unk2); - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileOpenDialog, (void**)&pfod); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IFileOpenDialog_Release(pfod); - - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IFileDialogEvents, (void**)&punk); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IFileDialog_Release(pfd); - - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IExplorerBrowser, (void**)&punk); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IExplorerBrowserEvents, (void**)&punk); - ok(hr == S_OK, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_ICommDlgBrowser3, (void**)&punk); - ok(hr == S_OK, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IShellBrowser, (void**)&punk); - ok(hr == E_NOINTERFACE, "got 0x%08lx.\n", hr); - if(SUCCEEDED(hr)) IUnknown_Release(punk); - hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IOleWindow, (void**)&pow); ok(hr == S_OK, "got 0x%08lx.\n", hr); if(SUCCEEDED(hr)) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9591
From: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/comdlg32/tests/itemdlg.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c index 8e9f30d1857..2230b9ca320 100644 --- a/dlls/comdlg32/tests/itemdlg.c +++ b/dlls/comdlg32/tests/itemdlg.c @@ -367,6 +367,8 @@ static BOOL test_instantiation(void) } ok(hr == S_OK, "got 0x%08lx.\n", hr); + todo_wine + check_interface(pfod, &IID_IModalWindow, TRUE); check_interface(pfod, &IID_IFileDialog, TRUE); check_interface(pfod, &IID_IExplorerBrowserEvents, TRUE); check_interface(pfod, &IID_ICommDlgBrowser3, TRUE); @@ -454,6 +456,8 @@ static BOOL test_instantiation(void) } ok(hr == S_OK, "got 0x%08lx.\n", hr); + todo_wine + check_interface(pfsd, &IID_IModalWindow, TRUE); check_interface(pfsd, &IID_IFileDialog, TRUE); check_interface(pfsd, &IID_IExplorerBrowserEvents, TRUE); check_interface(pfsd, &IID_ICommDlgBrowser3, TRUE); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9591
From: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/comdlg32/itemdlg.c | 1 + dlls/comdlg32/tests/itemdlg.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dlls/comdlg32/itemdlg.c b/dlls/comdlg32/itemdlg.c index 85ebd5cbee1..830d88bb661 100644 --- a/dlls/comdlg32/itemdlg.c +++ b/dlls/comdlg32/itemdlg.c @@ -2420,6 +2420,7 @@ static HRESULT WINAPI IFileDialog2_fnQueryInterface(IFileDialog2 *iface, *ppvObject = NULL; if(IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IModalWindow) || IsEqualGUID(riid, &IID_IFileDialog) || IsEqualGUID(riid, &IID_IFileDialog2)) { diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c index 2230b9ca320..e31ce3592c3 100644 --- a/dlls/comdlg32/tests/itemdlg.c +++ b/dlls/comdlg32/tests/itemdlg.c @@ -367,7 +367,6 @@ static BOOL test_instantiation(void) } ok(hr == S_OK, "got 0x%08lx.\n", hr); - todo_wine check_interface(pfod, &IID_IModalWindow, TRUE); check_interface(pfod, &IID_IFileDialog, TRUE); check_interface(pfod, &IID_IExplorerBrowserEvents, TRUE); @@ -456,7 +455,6 @@ static BOOL test_instantiation(void) } ok(hr == S_OK, "got 0x%08lx.\n", hr); - todo_wine check_interface(pfsd, &IID_IModalWindow, TRUE); check_interface(pfsd, &IID_IFileDialog, TRUE); check_interface(pfsd, &IID_IExplorerBrowserEvents, TRUE); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9591
This merge request was approved by Esme Povirk. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9591
participants (3)
-
Esme Povirk (@madewokherd) -
Nikolay Sivov -
Nikolay Sivov (@nsivov)