From: Jactry Zeng <jzeng(a)codeweavers.com> --- dlls/shell32/tests/shlview.c | 76 ++++++++++++++---------------------- 1 file changed, 30 insertions(+), 46 deletions(-) diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c index d25d626f829..9f85ba0459d 100644 --- a/dlls/shell32/tests/shlview.c +++ b/dlls/shell32/tests/shlview.c @@ -619,6 +619,22 @@ static const IShellBrowserVtbl shellbrowservtbl = { static IShellBrowser test_shellbrowser = { &shellbrowservtbl }; +static void create_interfaces(IShellFolder **desktop, IShellView **view) +{ + HRESULT hr; + + hr = SHGetDesktopFolder(desktop); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + hr = IShellFolder_CreateViewObject(*desktop, NULL, &IID_IShellView, (void **)view); + ok(hr == S_OK, "Got hr %#lx.\n", hr); +} + +static void destroy_interfaces(IShellFolder *desktop, IShellView *view) +{ + IShellFolder_Release(desktop); + IShellView_Release(view); +} + static void test_CreateViewWindow(void) { IShellFolder *desktop; @@ -631,11 +647,7 @@ static void test_CreateViewWindow(void) ULONG ref1, ref2; IUnknown *unk; - hr = SHGetDesktopFolder(&desktop); - ok(hr == S_OK, "got (0x%08lx)\n", hr); - - hr = IShellFolder_CreateViewObject(desktop, NULL, &IID_IShellView, (void**)&view); - ok(hr == S_OK, "got (0x%08lx)\n", hr); + create_interfaces(&desktop, &view); hr = IShellView_QueryInterface(view, &IID_CDefView, (void **)&unk); ok(hr == S_OK, "got (0x%08lx)\n", hr); @@ -719,18 +731,13 @@ static void test_IFolderView(void) POINT pt; RECT r; - hr = SHGetDesktopFolder(&desktop); - ok(hr == S_OK, "got (0x%08lx)\n", hr); - - hr = IShellFolder_CreateViewObject(desktop, NULL, &IID_IShellView, (void**)&view); - ok(hr == S_OK, "got (0x%08lx)\n", hr); + create_interfaces(&desktop, &view); hr = IShellView_QueryInterface(view, &IID_IFolderView, (void**)&fv); if (hr != S_OK) { win_skip("IFolderView not supported by desktop folder\n"); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); return; } @@ -772,8 +779,7 @@ if (0) win_skip("Failed to subclass ListView control\n"); IShellBrowser_Release(browser); IFolderView_Release(fv); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); return; } @@ -863,8 +869,7 @@ if (0) IShellBrowser_Release(browser); IFolderView_Release(fv); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); } static void test_GetItemObject(void) @@ -874,11 +879,7 @@ static void test_GetItemObject(void) IUnknown *unk; HRESULT hr; - hr = SHGetDesktopFolder(&desktop); - ok(hr == S_OK, "got (0x%08lx)\n", hr); - - hr = IShellFolder_CreateViewObject(desktop, NULL, &IID_IShellView, (void**)&view); - ok(hr == S_OK, "got (0x%08lx)\n", hr); + create_interfaces(&desktop, &view); /* from documentation three interfaces are supported for SVGIO_BACKGROUND: IContextMenu, IDispatch, IPersistHistory */ @@ -900,8 +901,7 @@ static void test_GetItemObject(void) hr = IShellView_GetItemObject(view, SVGIO_BACKGROUND, &IID_IPersist, (void**)&unk); ok(hr == E_NOINTERFACE || broken(hr == E_NOTIMPL) /* W2K */, "got (0x%08lx)\n", hr); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); } static void test_IShellFolderView(void) @@ -913,18 +913,13 @@ static void test_IShellFolderView(void) UINT i; HRESULT hr; - hr = SHGetDesktopFolder(&desktop); - ok(hr == S_OK, "got (0x%08lx)\n", hr); - - hr = IShellFolder_CreateViewObject(desktop, NULL, &IID_IShellView, (void**)&view); - ok(hr == S_OK, "got (0x%08lx)\n", hr); + create_interfaces(&desktop, &view); hr = IShellView_QueryInterface(view, &IID_IShellFolderView, (void**)&folderview); if (hr != S_OK) { win_skip("IShellView doesn't provide IShellFolderView on this platform\n"); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); return; } @@ -955,8 +950,7 @@ static void test_IShellFolderView(void) IShellFolderView_Release(folderview); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); } static void test_IOleWindow(void) @@ -966,11 +960,7 @@ static void test_IOleWindow(void) IOleWindow *wnd; HRESULT hr; - hr = SHGetDesktopFolder(&desktop); - ok(hr == S_OK, "got (0x%08lx)\n", hr); - - hr = IShellFolder_CreateViewObject(desktop, NULL, &IID_IShellView, (void**)&view); - ok(hr == S_OK, "got (0x%08lx)\n", hr); + create_interfaces(&desktop, &view); hr = IShellView_QueryInterface(view, &IID_IOleWindow, (void**)&wnd); ok(hr == E_NOINTERFACE, "got (0x%08lx)\n", hr); @@ -981,8 +971,7 @@ static void test_IOleWindow(void) hr = IShellView_ContextSensitiveHelp(view, FALSE); ok(hr == E_NOTIMPL, "got (0x%08lx)\n", hr); - IShellView_Release(view); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, view); } static const struct message folderview_setcurrentviewmode1_2_prevista[] = { @@ -1088,11 +1077,7 @@ static void test_GetSetCurrentViewMode(void) static const int vista_res[11] = {0, 1, 5, 3, 4, 5, 6, 7, 7, 0, 0}; static const int win7_res[11] = {1, 1, 1, 3, 4, 1, 6, 1, 8, 8, 8}; - hr = SHGetDesktopFolder(&desktop); - ok(hr == S_OK, "got (0x%08lx)\n", hr); - - hr = IShellFolder_CreateViewObject(desktop, NULL, &IID_IShellView, (void**)&sview); - ok(hr == S_OK, "got (0x%08lx)\n", hr); + create_interfaces(&desktop, &sview); hr = IShellView_QueryInterface(sview, &IID_IFolderView, (void **)&fview); ok(hr == S_OK, "Got hr %#lx.\n", hr); @@ -1290,8 +1275,7 @@ static void test_GetSetCurrentViewMode(void) IShellBrowser_Release(browser); IShellView_DestroyViewWindow(sview); - IShellView_Release(sview); - IShellFolder_Release(desktop); + destroy_interfaces(desktop, sview); } static void test_IOleCommandTarget(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2621