ReactOS  0.4.14-dev-114-gc8cbd56
ebrowser.c File Reference
#include <stdio.h>
#include "shlobj.h"
#include "shlwapi.h"
#include "wine/heap.h"
#include "wine/test.h"
#include "initguid.h"
#include "mshtml.h"
Include dependency graph for ebrowser.c:

Go to the source code of this file.

Classes

struct  IExplorerBrowserEventsImpl
 
struct  IExplorerPaneVisibilityImpl
 
struct  ICommDlgBrowser3Impl
 
struct  IServiceProviderImpl
 
struct  IServiceProviderImpl::services
 

Macros

#define COBJMACROS
 
#define CONST_VTABLE
 
#define test_qinterface(iid, exp)
 
#define test_browse_pidl(peb, ebev, pidl, uFlags, hr, p, cr, f, co)   test_browse_pidl_(peb, ebev, pidl, uFlags, hr, p, cr, f, co, __FILE__, __LINE__)
 
#define test_browse_pidl_sb(peb, ebev, pidl, uFlags, hr, p, cr, f, co)   test_browse_pidl_sb_(peb, ebev, pidl, uFlags, hr, p, cr, f, co, __FILE__, __LINE__)
 
#define test_gcv(iid, exp)
 

Functions

 DEFINE_GUID (IID_IBrowserSettings, 0xDD1E21CC, 0xE2C7, 0x402C, 0xBF, 0x05, 0x10, 0x32, 0x8D, 0x3F, 0x6B, 0xAD)
 
 DEFINE_GUID (IID_IShellBrowserService, 0xDFBC7E30, 0xF9E5, 0x455F, 0x88, 0xF8, 0xFA, 0x98, 0xC1, 0xE4, 0x94, 0xCA)
 
 DEFINE_GUID (IID_IShellTaskScheduler, 0x6CCB7BE0, 0x6807, 0x11D0, 0xB8, 0x10, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC)
 
 DEFINE_GUID (IID_IBrowserWithActivationNotification, 0x6DB89131, 0x7B4C, 0x4E1C, 0x8B, 0x01, 0x5D, 0x31, 0x2C, 0x9C, 0x73, 0x88)
 
 DEFINE_GUID (IID_ILayoutModifier, 0x90B4135A, 0x95BA, 0x46EA, 0x8C, 0xAA, 0xE0, 0x5B, 0x45, 0xCD, 0x80, 0x1E)
 
 DEFINE_GUID (CLSID_Desktop, 0x00021400, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)
 
 DEFINE_GUID (IID_IFileDialogPrivate, 0xAC92FFC5, 0xF0E9, 0x455A, 0x90, 0x6B, 0x4A, 0x83, 0xE7, 0x4A, 0x80, 0x3B)
 
 DEFINE_GUID (IID_IWebbrowserApp, 0x0002df05, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)
 
 DEFINE_GUID (IID_IBrowserSettings_Vista, 0xF81B80BC, 0x29D1, 0x4734, 0xB5, 0x15, 0x77, 0x24, 0xBF, 0xF1, 0x60, 0x01)
 
 DEFINE_GUID (IID_IFolderTypeModifier, 0x04BA120E, 0xAD52, 0x4A2D, 0x98, 0x07, 0x2D, 0xA1, 0x78, 0xD0, 0xC3, 0xE1)
 
 DEFINE_GUID (IID_IShellBrowserService_Vista, 0xF5A24314, 0x5B8B, 0x44FA, 0xBC, 0x2E, 0x31, 0x28, 0x55, 0x44, 0xB5, 0x20)
 
 DEFINE_GUID (IID_IFileDialogPrivate_Vista, 0x2539E31C, 0x857F, 0x43C4, 0x88, 0x72, 0x45, 0xBD, 0x6A, 0x02, 0x48, 0x92)
 
 DEFINE_GUID (SID_SMenuBandParent, 0x8C278EEC, 0x3EAB, 0x11D1, 0x8C, 0xB0, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0)
 
 DEFINE_GUID (SID_SMenuPopup, 0xD1E7AFEB, 0x6A2E, 0x11D0, 0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4)
 
 DEFINE_GUID (IID_IShellMenu, 0xEE1F7637, 0xE138, 0x11D1, 0x83, 0x79, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0)
 
 DEFINE_GUID (IID_UnknownInterface1, 0x3934E4C2, 0x8143, 0x4E4C, 0xA1, 0xDC, 0x71, 0x8F, 0x85, 0x63, 0xF3, 0x37)
 
 DEFINE_GUID (IID_UnknownInterface2, 0x3E24A11C, 0x15B2, 0x4F71, 0xB8, 0x1E, 0x00, 0x8F, 0x77, 0x99, 0x8E, 0x9F)
 
 DEFINE_GUID (IID_UnknownInterface3, 0xE38FE0F3, 0x3DB0, 0x47EE, 0xA3, 0x14, 0x25, 0xCF, 0x7F, 0x4B, 0xF5, 0x21)
 
 DEFINE_GUID (IID_UnknownInterface4, 0xFAD451C2, 0xAF58, 0x4161, 0xB9, 0xFF, 0x57, 0xAF, 0xBB, 0xED, 0x0A, 0xD2)
 
 DEFINE_GUID (IID_UnknownInterface5, 0xF80C2137, 0x5829, 0x4CE9, 0x9F, 0x81, 0xA9, 0x5E, 0x15, 0x9D, 0xD8, 0xD5)
 
 DEFINE_GUID (IID_UnknownInterface6, 0xD7F81F62, 0x491F, 0x49BC, 0x89, 0x1D, 0x56, 0x65, 0x08, 0x5D, 0xF9, 0x69)
 
 DEFINE_GUID (IID_UnknownInterface7, 0x68A4FDBA, 0xA48A, 0x4A86, 0xA3, 0x29, 0x1B, 0x69, 0xB9, 0xB1, 0x9E, 0x89)
 
 DEFINE_GUID (IID_UnknownInterface8, 0xD3B1CAF5, 0xEC4F, 0x4B2E, 0xBC, 0xB0, 0x60, 0xD7, 0x15, 0xC9, 0x3C, 0xB2)
 
 DEFINE_GUID (IID_UnknownInterface9, 0x9536CA39, 0x1ACB, 0x4AE6, 0xAD, 0x27, 0x24, 0x03, 0xD0, 0x4C, 0xA2, 0x8F)
 
 DEFINE_GUID (IID_UnknownInterface10, 0xB722BE00, 0x4E68, 0x101B, 0xA2, 0xBC, 0x00, 0xAA, 0x00, 0x40, 0x47, 0x70)
 
 DEFINE_GUID (IID_UnknownInterface11, 0x691ecf9f, 0x6b9c, 0x4311, 0xa1, 0x7b, 0xad, 0x15, 0x4c, 0x30, 0xe9, 0x1f)
 
 DEFINE_GUID (IID_UnknownInterface12, 0x7e3159f5, 0x21ca, 0x4ec2, 0x8f, 0xbe, 0x66, 0x2d, 0x08, 0x2c, 0xa3, 0xeb)
 
 DEFINE_GUID (IID_UnknownInterface13, 0xa36a3ace, 0x8332, 0x45ce, 0xaa, 0x29, 0x50, 0x3c, 0xb7, 0x6b, 0x25, 0x87)
 
 DEFINE_GUID (IID_UnknownInterface14, 0x16770868, 0x239c, 0x445b, 0xa0, 0x1d, 0xf2, 0x6c, 0x7f, 0xbb, 0xf2, 0x6c)
 
 DEFINE_GUID (IID_UnknownInterface15, 0x05a89298, 0x6246, 0x4c63, 0xbb, 0x0d, 0x9b, 0xda, 0xf1, 0x40, 0xbf, 0x3b)
 
 DEFINE_GUID (IID_UnknownInterface16, 0x35094a87, 0x8bb1, 0x4237, 0x96, 0xc6, 0xc4, 0x17, 0xee, 0xbd, 0xb0, 0x78)
 
 DEFINE_GUID (IID_UnknownInterface17, 0x3d5d8c60, 0x21e4, 0x4b03, 0x83, 0xb8, 0xc7, 0x3f, 0x8c, 0x94, 0x00, 0x78)
 
 DEFINE_GUID (IID_UnknownInterface18, 0x1fc45c07, 0x9e35, 0x4276, 0xad, 0x7f, 0x08, 0x60, 0x3a, 0xa0, 0xf6, 0x0f)
 
 DEFINE_GUID (IID_UnknownInterface19, 0xacd9b67a, 0xceab, 0x4c6c, 0x90, 0xa1, 0xe8, 0x57, 0xc6, 0x59, 0xe3, 0x9d)
 
 DEFINE_GUID (IID_UnknownInterface20, 0xd0fe6f62, 0xdea4, 0x46c9, 0x9d, 0xae, 0x36, 0xcb, 0x13, 0x99, 0x78, 0xfa)
 
 DEFINE_GUID (IID_UnknownInterface21, 0x732c1ccd, 0xbc5c, 0x4065, 0x88, 0xcb, 0xfb, 0x5b, 0xce, 0xa7, 0x1f, 0x66)
 
 DEFINE_GUID (IID_UnknownInterface22, 0xc13b3d3a, 0x10d6, 0x43f5, 0x98, 0xdb, 0xb7, 0xdd, 0xd9, 0x87, 0xb3, 0x3d)
 
 DEFINE_GUID (IID_UnknownInterface23, 0x2e228ba3, 0xea25, 0x4378, 0x97, 0xb6, 0xd5, 0x74, 0xfa, 0xeb, 0xa3, 0x56)
 
 DEFINE_GUID (IID_UnknownInterface24, 0xd56a2092, 0x7dbf, 0x4144, 0xa1, 0x10, 0xc2, 0x96, 0x3a, 0x70, 0x98, 0x32)
 
static HRESULT (WINAPI *pSHCreateShellItem)(LPCITEMIDLIST
 
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF *static void init_function_pointers (void)
 
static HRESULT ebrowser_instantiate (IExplorerBrowser **peb)
 
static HRESULT ebrowser_initialize (IExplorerBrowser *peb)
 
static HRESULT ebrowser_browse_to_desktop (IExplorerBrowser *peb)
 
static void process_msgs (void)
 
static IExplorerBrowserEventsImplimpl_from_IExplorerBrowserEvents (IExplorerBrowserEvents *iface)
 
static HRESULT WINAPI IExplorerBrowserEvents_fnQueryInterface (IExplorerBrowserEvents *iface, REFIID riid, void **ppvObj)
 
static ULONG WINAPI IExplorerBrowserEvents_fnAddRef (IExplorerBrowserEvents *iface)
 
static ULONG WINAPI IExplorerBrowserEvents_fnRelease (IExplorerBrowserEvents *iface)
 
static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationPending (IExplorerBrowserEvents *iface, PCIDLIST_ABSOLUTE pidlFolder)
 
static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationComplete (IExplorerBrowserEvents *iface, PCIDLIST_ABSOLUTE pidlFolder)
 
static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationFailed (IExplorerBrowserEvents *iface, PCIDLIST_ABSOLUTE pidlFolder)
 
static HRESULT WINAPI IExplorerBrowserEvents_fnOnViewCreated (IExplorerBrowserEvents *iface, IShellView *psv)
 
static IExplorerPaneVisibilityImplimpl_from_IExplorerPaneVisibility (IExplorerPaneVisibility *iface)
 
static HRESULT WINAPI IExplorerPaneVisibility_fnQueryInterface (IExplorerPaneVisibility *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI IExplorerPaneVisibility_fnAddRef (IExplorerPaneVisibility *iface)
 
static ULONG WINAPI IExplorerPaneVisibility_fnRelease (IExplorerPaneVisibility *iface)
 
static HRESULT WINAPI IExplorerPaneVisibility_fnGetPaneState (IExplorerPaneVisibility *iface, REFEXPLORERPANE ep, EXPLORERPANESTATE *peps)
 
static IExplorerPaneVisibilityImplcreate_explorerpanevisibility (void)
 
static ICommDlgBrowser3Implimpl_from_ICommDlgBrowser3 (ICommDlgBrowser3 *iface)
 
static HRESULT WINAPI ICommDlgBrowser3_fnQueryInterface (ICommDlgBrowser3 *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI ICommDlgBrowser3_fnAddRef (ICommDlgBrowser3 *iface)
 
static ULONG WINAPI ICommDlgBrowser3_fnRelease (ICommDlgBrowser3 *iface)
 
static HRESULT WINAPI ICommDlgBrowser3_fnOnDefaultCommand (ICommDlgBrowser3 *iface, IShellView *shv)
 
static HRESULT WINAPI ICommDlgBrowser3_fnOnStateChange (ICommDlgBrowser3 *iface, IShellView *shv, ULONG uChange)
 
static HRESULT WINAPI ICommDlgBrowser3_fnIncludeObject (ICommDlgBrowser3 *iface, IShellView *shv, LPCITEMIDLIST pidl)
 
static HRESULT WINAPI ICommDlgBrowser3_fnNotify (ICommDlgBrowser3 *iface, IShellView *ppshv, DWORD dwNotifyType)
 
static HRESULT WINAPI ICommDlgBrowser3_fnGetDefaultMenuText (ICommDlgBrowser3 *iface, IShellView *ppshv, LPWSTR pszText, int cchMax)
 
static HRESULT WINAPI ICommDlgBrowser3_fnGetViewFlags (ICommDlgBrowser3 *iface, DWORD *pdwFlags)
 
static HRESULT WINAPI ICommDlgBrowser3_fnOnColumnClicked (ICommDlgBrowser3 *iface, IShellView *ppshv, int iColumn)
 
static HRESULT WINAPI ICommDlgBrowser3_fnGetCurrentFilter (ICommDlgBrowser3 *iface, LPWSTR pszFileSpec, int cchFileSpec)
 
static HRESULT WINAPI ICommDlgBrowser3_fnOnPreviewCreated (ICommDlgBrowser3 *iface, IShellView *ppshv)
 
static ICommDlgBrowser3Implcreate_commdlgbrowser3 (void)
 
static IServiceProviderImplimpl_from_IServiceProvider (IServiceProvider *iface)
 
static HRESULT WINAPI IServiceProvider_fnQueryInterface (IServiceProvider *iface, REFIID riid, LPVOID *ppvObj)
 
static ULONG WINAPI IServiceProvider_fnAddRef (IServiceProvider *iface)
 
static ULONG WINAPI IServiceProvider_fnRelease (IServiceProvider *iface)
 
static HRESULT WINAPI IServiceProvider_fnQueryService (IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
 
static IServiceProviderImplcreate_serviceprovider (void)
 
static void test_QueryInterface (void)
 
static void test_SB_misc (void)
 
static void test_initialization (void)
 
static void test_SetSite (void)
 
static void test_basics (void)
 
static void test_Advise (void)
 
static LPWSTR myPathAddBackslashW (LPWSTR lpszPath)
 
static void test_browse_pidl_ (IExplorerBrowser *peb, IExplorerBrowserEventsImpl *ebev, LPITEMIDLIST pidl, UINT uFlags, HRESULT hr_exp, UINT pending, UINT created, UINT failed, UINT completed, const char *file, int line)
 
static void test_browse_pidl_sb_ (IExplorerBrowser *peb, IExplorerBrowserEventsImpl *ebev, LPITEMIDLIST pidl, UINT uFlags, HRESULT hr_exp, UINT pending, UINT created, UINT failed, UINT completed, const char *file, int line)
 
static void test_navigation (void)
 
static void test_GetCurrentView (void)
 
static void test_InputObject (void)
 
static BOOL test_instantiate_control (void)
 
static void setup_window (void)
 
 START_TEST (ebrowser)
 

Variables

static HWND hwnd
 
static IShellFolder LPCITEMIDLIST
 
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
 
static IExplorerBrowserEventsImpl ebev
 
static const IExplorerBrowserEventsVtbl ebevents
 
static const IExplorerPaneVisibilityVtbl epvvt
 
static const ICommDlgBrowser3Vtbl cdbvtbl
 
static const IServiceProviderVtbl spvtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 23 of file ebrowser.c.

◆ CONST_VTABLE

#define CONST_VTABLE

Definition at line 24 of file ebrowser.c.

◆ test_browse_pidl

#define test_browse_pidl (   peb,
  ebev,
  pidl,
  uFlags,
  hr,
  p,
  cr,
  f,
  co 
)    test_browse_pidl_(peb, ebev, pidl, uFlags, hr, p, cr, f, co, __FILE__, __LINE__)

Definition at line 1364 of file ebrowser.c.

◆ test_browse_pidl_sb

#define test_browse_pidl_sb (   peb,
  ebev,
  pidl,
  uFlags,
  hr,
  p,
  cr,
  f,
  co 
)    test_browse_pidl_sb_(peb, ebev, pidl, uFlags, hr, p, cr, f, co, __FILE__, __LINE__)

Definition at line 1394 of file ebrowser.c.

◆ test_gcv

#define test_gcv (   iid,
  exp 
)
Value:
do { \
hr = IExplorerBrowser_GetCurrentView(peb, &iid, (void**)&punk); \
ok(hr == exp, "(%s:)Expected (0x%08x), got: (0x%08x)\n", \
#iid ,exp, hr); \
if(SUCCEEDED(hr)) IUnknown_Release(punk); \
} while(0)
HRESULT hr
Definition: shlfolder.c:183
DWORD exp
Definition: msg.c:15681
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ test_qinterface

#define test_qinterface (   iid,
  exp 
)
Value:
do { \
hr = IExplorerBrowser_QueryInterface(peb, &iid, (void**)&punk); \
ok(hr == exp, "(%s:)Expected (0x%08x), got (0x%08x)\n", \
#iid, exp, hr); \
if(SUCCEEDED(hr)) IUnknown_Release(punk); \
} while(0)
HRESULT hr
Definition: shlfolder.c:183
DWORD exp
Definition: msg.c:15681
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Function Documentation

◆ create_commdlgbrowser3()

static ICommDlgBrowser3Impl* create_commdlgbrowser3 ( void  )
static

Definition at line 439 of file ebrowser.c.

440 {
442 
443  cdb = heap_alloc_zero(sizeof(*cdb));
444  cdb->ICommDlgBrowser3_iface.lpVtbl = &cdbvtbl;
445  cdb->ref = 1;
446 
447  return cdb;
448 }
ICommDlgBrowser3 ICommDlgBrowser3_iface
Definition: ebrowser.c:301
static const ICommDlgBrowser3Vtbl cdbvtbl
Definition: ebrowser.c:423

Referenced by test_SetSite().

◆ create_explorerpanevisibility()

static IExplorerPaneVisibilityImpl* create_explorerpanevisibility ( void  )
static

Definition at line 285 of file ebrowser.c.

286 {
288 
289  epv = heap_alloc_zero(sizeof(*epv));
290  epv->IExplorerPaneVisibility_iface.lpVtbl = &epvvt;
291  epv->ref = 1;
292 
293  return epv;
294 }
static const IExplorerPaneVisibilityVtbl epvvt
Definition: ebrowser.c:277
IExplorerPaneVisibility IExplorerPaneVisibility_iface
Definition: ebrowser.c:212

Referenced by test_SetSite().

◆ create_serviceprovider()

static IServiceProviderImpl* create_serviceprovider ( void  )
static

Definition at line 550 of file ebrowser.c.

551 {
552  IServiceProviderImpl *sp = heap_alloc(sizeof(*sp));
553  sp->IServiceProvider_iface.lpVtbl = &spvtbl;
554  sp->ref = 1;
555  return sp;
556 }
static const IServiceProviderVtbl spvtbl
Definition: ebrowser.c:542
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
static const WCHAR sp[]
Definition: suminfo.c:288

Referenced by test_SetSite().

◆ DEFINE_GUID() [1/39]

DEFINE_GUID ( IID_IBrowserSettings  ,
0xDD1E21CC  ,
0xE2C7  ,
0x402C  ,
0xBF  ,
0x05  ,
0x10  ,
0x32  ,
0x8D  ,
0x3F  ,
0x6B  ,
0xAD   
)

◆ DEFINE_GUID() [2/39]

DEFINE_GUID ( IID_IShellBrowserService  ,
0xDFBC7E30  ,
0xF9E5  ,
0x455F  ,
0x88  ,
0xF8  ,
0xFA  ,
0x98  ,
0xC1  ,
0xE4  ,
0x94  ,
0xCA   
)

◆ DEFINE_GUID() [3/39]

DEFINE_GUID ( IID_IShellTaskScheduler  ,
0x6CCB7BE0  ,
0x6807  ,
0x11D0  ,
0xB8  ,
0x10  ,
0x00  ,
0xC0  ,
0x4F  ,
0xD7  ,
0x06  ,
0xEC   
)

◆ DEFINE_GUID() [4/39]

DEFINE_GUID ( IID_IBrowserWithActivationNotification  ,
0x6DB89131  ,
0x7B4C  ,
0x4E1C  ,
0x8B  ,
0x01  ,
0x5D  ,
0x31  ,
0x2C  ,
0x9C  ,
0x73  ,
0x88   
)

◆ DEFINE_GUID() [5/39]

DEFINE_GUID ( IID_ILayoutModifier  ,
0x90B4135A  ,
0x95BA  ,
0x46EA  ,
0x8C  ,
0xAA  ,
0xE0  ,
0x5B  ,
0x45  ,
0xCD  ,
0x80  ,
0x1E   
)

◆ DEFINE_GUID() [6/39]

DEFINE_GUID ( CLSID_Desktop  ,
0x00021400  ,
0x0000  ,
0x0000  ,
0xC0  ,
0x00  ,
0x00  ,
0x00  ,
0x00  ,
0x00  ,
0x00  ,
0x46   
)

◆ DEFINE_GUID() [7/39]

DEFINE_GUID ( IID_IFileDialogPrivate  ,
0xAC92FFC5  ,
0xF0E9  ,
0x455A  ,
0x90  ,
0x6B  ,
0x4A  ,
0x83  ,
0xE7  ,
0x4A  ,
0x80  ,
0x3B   
)

◆ DEFINE_GUID() [8/39]

DEFINE_GUID ( IID_IWebbrowserApp  ,
0x0002df05  ,
0x0000  ,
0x0000  ,
0xc0  ,
0x00  ,
0x00  ,
0x00  ,
0x00  ,
0x00  ,
0x00  ,
0x46   
)

◆ DEFINE_GUID() [9/39]

DEFINE_GUID ( IID_IBrowserSettings_Vista  ,
0xF81B80BC  ,
0x29D1  ,
0x4734  ,
0xB5  ,
0x15  ,
0x77  ,
0x24  ,
0xBF  ,
0xF1  ,
0x60  ,
0x01   
)

◆ DEFINE_GUID() [10/39]

DEFINE_GUID ( IID_IFolderTypeModifier  ,
0x04BA120E  ,
0xAD52  ,
0x4A2D  ,
0x98  ,
0x07  ,
0x2D  ,
0xA1  ,
0x78  ,
0xD0  ,
0xC3  ,
0xE1   
)

◆ DEFINE_GUID() [11/39]

DEFINE_GUID ( IID_IShellBrowserService_Vista  ,
0xF5A24314  ,
0x5B8B  ,
0x44FA  ,
0xBC  ,
0x2E  ,
0x31  ,
0x28  ,
0x55  ,
0x44  ,
0xB5  ,
0x20   
)

◆ DEFINE_GUID() [12/39]

DEFINE_GUID ( IID_IFileDialogPrivate_Vista  ,
0x2539E31C  ,
0x857F  ,
0x43C4  ,
0x88  ,
0x72  ,
0x45  ,
0xBD  ,
0x6A  ,
0x02  ,
0x48  ,
0x92   
)

◆ DEFINE_GUID() [13/39]

DEFINE_GUID ( SID_SMenuBandParent  ,
0x8C278EEC  ,
0x3EAB  ,
0x11D1  ,
0x8C  ,
0xB0  ,
0x00  ,
0xC0  ,
0x4F  ,
0xD9  ,
0x18  ,
0xD0   
)

◆ DEFINE_GUID() [14/39]

DEFINE_GUID ( SID_SMenuPopup  ,
0xD1E7AFEB  ,
0x6A2E  ,
0x11D0  ,
0x8C  ,
0x78  ,
0x00  ,
0xC0  ,
0x4F  ,
0xD9  ,
0x18  ,
0xB4   
)

◆ DEFINE_GUID() [15/39]

DEFINE_GUID ( IID_IShellMenu  ,
0xEE1F7637  ,
0xE138  ,
0x11D1  ,
0x83  ,
0x79  ,
0x00  ,
0xC0  ,
0x4F  ,
0xD9  ,
0x18  ,
0xD0   
)

◆ DEFINE_GUID() [16/39]

DEFINE_GUID ( IID_UnknownInterface1  ,
0x3934E4C2  ,
0x8143  ,
0x4E4C  ,
0xA1  ,
0xDC  ,
0x71  ,
0x8F  ,
0x85  ,
0x63  ,
0xF3  ,
0x37   
)

◆ DEFINE_GUID() [17/39]

DEFINE_GUID ( IID_UnknownInterface2  ,
0x3E24A11C  ,
0x15B2  ,
0x4F71  ,
0xB8  ,
0x1E  ,
0x00  ,
0x8F  ,
0x77  ,
0x99  ,
0x8E  ,
0x9F   
)

◆ DEFINE_GUID() [18/39]

DEFINE_GUID ( IID_UnknownInterface3  ,
0xE38FE0F3  ,
0x3DB0  ,
0x47EE  ,
0xA3  ,
0x14  ,
0x25  ,
0xCF  ,
0x7F  ,
0x4B  ,
0xF5  ,
0x21   
)

◆ DEFINE_GUID() [19/39]

DEFINE_GUID ( IID_UnknownInterface4  ,
0xFAD451C2  ,
0xAF58  ,
0x4161  ,
0xB9  ,
0xFF  ,
0x57  ,
0xAF  ,
0xBB  ,
0xED  ,
0x0A  ,
0xD2   
)

◆ DEFINE_GUID() [20/39]

DEFINE_GUID ( IID_UnknownInterface5  ,
0xF80C2137  ,
0x5829  ,
0x4CE9  ,
0x9F  ,
0x81  ,
0xA9  ,
0x5E  ,
0x15  ,
0x9D  ,
0xD8  ,
0xD5   
)

◆ DEFINE_GUID() [21/39]

DEFINE_GUID ( IID_UnknownInterface6  ,
0xD7F81F62  ,
0x491F  ,
0x49BC  ,
0x89  ,
0x1D  ,
0x56  ,
0x65  ,
0x08  ,
0x5D  ,
0xF9  ,
0x69   
)

◆ DEFINE_GUID() [22/39]

DEFINE_GUID ( IID_UnknownInterface7  ,
0x68A4FDBA  ,
0xA48A  ,
0x4A86  ,
0xA3  ,
0x29  ,
0x1B  ,
0x69  ,
0xB9  ,
0xB1  ,
0x9E  ,
0x89   
)

◆ DEFINE_GUID() [23/39]

DEFINE_GUID ( IID_UnknownInterface8  ,
0xD3B1CAF5  ,
0xEC4F  ,
0x4B2E  ,
0xBC  ,
0xB0  ,
0x60  ,
0xD7  ,
0x15  ,
0xC9  ,
0x3C  ,
0xB2   
)

◆ DEFINE_GUID() [24/39]

DEFINE_GUID ( IID_UnknownInterface9  ,
0x9536CA39  ,
0x1ACB  ,
0x4AE6  ,
0xAD  ,
0x27  ,
0x24  ,
0x03  ,
0xD0  ,
0x4C  ,
0xA2  ,
0x8F   
)

◆ DEFINE_GUID() [25/39]

DEFINE_GUID ( IID_UnknownInterface10  ,
0xB722BE00  ,
0x4E68  ,
0x101B  ,
0xA2  ,
0xBC  ,
0x00  ,
0xAA  ,
0x00  ,
0x40  ,
0x47  ,
0x70   
)

◆ DEFINE_GUID() [26/39]

DEFINE_GUID ( IID_UnknownInterface11  ,
0x691ecf9f  ,
0x6b9c  ,
0x4311  ,
0xa1  ,
0x7b  ,
0xad  ,
0x15  ,
0x4c  ,
0x30  ,
0xe9  ,
0x1f   
)

◆ DEFINE_GUID() [27/39]

DEFINE_GUID ( IID_UnknownInterface12  ,
0x7e3159f5  ,
0x21ca  ,
0x4ec2  ,
0x8f  ,
0xbe  ,
0x66  ,
0x2d  ,
0x08  ,
0x2c  ,
0xa3  ,
0xeb   
)

◆ DEFINE_GUID() [28/39]

DEFINE_GUID ( IID_UnknownInterface13  ,
0xa36a3ace  ,
0x8332  ,
0x45ce  ,
0xaa  ,
0x29  ,
0x50  ,
0x3c  ,
0xb7  ,
0x6b  ,
0x25  ,
0x87   
)

◆ DEFINE_GUID() [29/39]

DEFINE_GUID ( IID_UnknownInterface14  ,
0x16770868  ,
0x239c  ,
0x445b  ,
0xa0  ,
0x1d  ,
0xf2  ,
0x6c  ,
0x7f  ,
0xbb  ,
0xf2  ,
0x6c   
)

◆ DEFINE_GUID() [30/39]

DEFINE_GUID ( IID_UnknownInterface15  ,
0x05a89298  ,
0x6246  ,
0x4c63  ,
0xbb  ,
0x0d  ,
0x9b  ,
0xda  ,
0xf1  ,
0x40  ,
0xbf  ,
0x3b   
)

◆ DEFINE_GUID() [31/39]

DEFINE_GUID ( IID_UnknownInterface16  ,
0x35094a87  ,
0x8bb1  ,
0x4237  ,
0x96  ,
0xc6  ,
0xc4  ,
0x17  ,
0xee  ,
0xbd  ,
0xb0  ,
0x78   
)

◆ DEFINE_GUID() [32/39]

DEFINE_GUID ( IID_UnknownInterface17  ,
0x3d5d8c60  ,
0x21e4  ,
0x4b03  ,
0x83  ,
0xb8  ,
0xc7  ,
0x3f  ,
0x8c  ,
0x94  ,
0x00  ,
0x78   
)

◆ DEFINE_GUID() [33/39]

DEFINE_GUID ( IID_UnknownInterface18  ,
0x1fc45c07  ,
0x9e35  ,
0x4276  ,
0xad  ,
0x7f  ,
0x08  ,
0x60  ,
0x3a  ,
0xa0  ,
0xf6  ,
0x0f   
)

◆ DEFINE_GUID() [34/39]

DEFINE_GUID ( IID_UnknownInterface19  ,
0xacd9b67a  ,
0xceab  ,
0x4c6c  ,
0x90  ,
0xa1  ,
0xe8  ,
0x57  ,
0xc6  ,
0x59  ,
0xe3  ,
0x9d   
)

◆ DEFINE_GUID() [35/39]

DEFINE_GUID ( IID_UnknownInterface20  ,
0xd0fe6f62  ,
0xdea4  ,
0x46c9  ,
0x9d  ,
0xae  ,
0x36  ,
0xcb  ,
0x13  ,
0x99  ,
0x78  ,
0xfa   
)

◆ DEFINE_GUID() [36/39]

DEFINE_GUID ( IID_UnknownInterface21  ,
0x732c1ccd  ,
0xbc5c  ,
0x4065  ,
0x88  ,
0xcb  ,
0xfb  ,
0x5b  ,
0xce  ,
0xa7  ,
0x1f  ,
0x66   
)

◆ DEFINE_GUID() [37/39]

DEFINE_GUID ( IID_UnknownInterface22  ,
0xc13b3d3a  ,
0x10d6  ,
0x43f5  ,
0x98  ,
0xdb  ,
0xb7  ,
0xdd  ,
0xd9  ,
0x87  ,
0xb3  ,
0x3d   
)

◆ DEFINE_GUID() [38/39]

DEFINE_GUID ( IID_UnknownInterface23  ,
0x2e228ba3  ,
0xea25  ,
0x4378  ,
0x97  ,
0xb6  ,
0xd5  ,
0x74  ,
0xfa  ,
0xeb  ,
0xa3  ,
0x56   
)

◆ DEFINE_GUID() [39/39]

DEFINE_GUID ( IID_UnknownInterface24  ,
0xd56a2092  ,
0x7dbf  ,
0x4144  ,
0xa1  ,
0x10  ,
0xc2  ,
0x96  ,
0x3a  ,
0x70  ,
0x98  ,
0x32   
)

◆ ebrowser_browse_to_desktop()

static HRESULT ebrowser_browse_to_desktop ( IExplorerBrowser peb)
static

Definition at line 110 of file ebrowser.c.

111 {
112  LPITEMIDLIST pidl_desktop;
113  HRESULT hr;
115  hr = IExplorerBrowser_BrowseToIDList(peb, pidl_desktop, 0);
116  ILFree(pidl_desktop);
117  return hr;
118 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:925
HRESULT hr
Definition: shlfolder.c:183
#define CSIDL_DESKTOP
Definition: shlobj.h:2003
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:2687
LONG HRESULT
Definition: typedefs.h:77
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

Referenced by test_Advise(), test_GetCurrentView(), test_SB_misc(), and test_SetSite().

◆ ebrowser_initialize()

static HRESULT ebrowser_initialize ( IExplorerBrowser peb)
static

Definition at line 103 of file ebrowser.c.

104 {
105  RECT rc;
106  SetRect(&rc, 0, 0, 500, 500);
107  return IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
108 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by test_Advise(), test_basics(), test_GetCurrentView(), test_navigation(), test_SB_misc(), and test_SetSite().

◆ ebrowser_instantiate()

static HRESULT ebrowser_instantiate ( IExplorerBrowser **  peb)
static

Definition at line 97 of file ebrowser.c.

98 {
99  return CoCreateInstance(&CLSID_ExplorerBrowser, NULL, CLSCTX_INPROC_SERVER,
100  &IID_IExplorerBrowser, (void**)peb);
101 }
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3234

Referenced by test_Advise(), test_basics(), test_GetCurrentView(), test_initialization(), test_InputObject(), test_instantiate_control(), test_navigation(), test_QueryInterface(), test_SB_misc(), and test_SetSite().

◆ HRESULT()

static HRESULT ( WINAPI pSHCreateShellItem)
static

◆ ICommDlgBrowser3_fnAddRef()

static ULONG WINAPI ICommDlgBrowser3_fnAddRef ( ICommDlgBrowser3 iface)
static

Definition at line 320 of file ebrowser.c.

321 {
323  return InterlockedIncrement(&This->ref);
324 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define InterlockedIncrement
Definition: armddk.h:53

◆ ICommDlgBrowser3_fnGetCurrentFilter()

static HRESULT WINAPI ICommDlgBrowser3_fnGetCurrentFilter ( ICommDlgBrowser3 iface,
LPWSTR  pszFileSpec,
int  cchFileSpec 
)
static

Definition at line 404 of file ebrowser.c.

408 {
410  This->GetCurrentFilter++;
411  return E_NOTIMPL;
412 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnGetDefaultMenuText()

static HRESULT WINAPI ICommDlgBrowser3_fnGetDefaultMenuText ( ICommDlgBrowser3 iface,
IShellView ppshv,
LPWSTR  pszText,
int  cchMax 
)
static

Definition at line 374 of file ebrowser.c.

379 {
381  This->GetDefaultMenuText++;
382  return E_NOTIMPL;
383 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnGetViewFlags()

static HRESULT WINAPI ICommDlgBrowser3_fnGetViewFlags ( ICommDlgBrowser3 iface,
DWORD pdwFlags 
)
static

Definition at line 385 of file ebrowser.c.

388 {
390  This->GetViewFlags++;
391  return E_NOTIMPL;
392 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnIncludeObject()

static HRESULT WINAPI ICommDlgBrowser3_fnIncludeObject ( ICommDlgBrowser3 iface,
IShellView shv,
LPCITEMIDLIST  pidl 
)
static

Definition at line 354 of file ebrowser.c.

358 {
360  This->IncludeObject++;
361  return S_OK;
362 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define S_OK
Definition: intsafe.h:59

◆ ICommDlgBrowser3_fnNotify()

static HRESULT WINAPI ICommDlgBrowser3_fnNotify ( ICommDlgBrowser3 iface,
IShellView ppshv,
DWORD  dwNotifyType 
)
static

Definition at line 364 of file ebrowser.c.

368 {
370  This->Notify++;
371  return E_NOTIMPL;
372 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnOnColumnClicked()

static HRESULT WINAPI ICommDlgBrowser3_fnOnColumnClicked ( ICommDlgBrowser3 iface,
IShellView ppshv,
int  iColumn 
)
static

Definition at line 394 of file ebrowser.c.

398 {
400  This->OnColumnClicked++;
401  return E_NOTIMPL;
402 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnOnDefaultCommand()

static HRESULT WINAPI ICommDlgBrowser3_fnOnDefaultCommand ( ICommDlgBrowser3 iface,
IShellView shv 
)
static

Definition at line 337 of file ebrowser.c.

338 {
340  This->OnDefaultCommand++;
341  return E_NOTIMPL;
342 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnOnPreviewCreated()

static HRESULT WINAPI ICommDlgBrowser3_fnOnPreviewCreated ( ICommDlgBrowser3 iface,
IShellView ppshv 
)
static

Definition at line 414 of file ebrowser.c.

417 {
419  This->OnPreviewCreated++;
420  return E_NOTIMPL;
421 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnOnStateChange()

static HRESULT WINAPI ICommDlgBrowser3_fnOnStateChange ( ICommDlgBrowser3 iface,
IShellView shv,
ULONG  uChange 
)
static

Definition at line 344 of file ebrowser.c.

348 {
350  This->OnStateChange++;
351  return E_NOTIMPL;
352 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ICommDlgBrowser3_fnQueryInterface()

static HRESULT WINAPI ICommDlgBrowser3_fnQueryInterface ( ICommDlgBrowser3 iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 313 of file ebrowser.c.

314 {
315  ok(0, "unexpected %s\n", wine_dbgstr_guid(riid));
316  *ppvObj = NULL;
317  return E_NOINTERFACE;
318 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
const char * wine_dbgstr_guid(const GUID *guid)
smooth NULL
Definition: ftsmooth.c:416
#define ok(value,...)
Definition: atltest.h:57

◆ ICommDlgBrowser3_fnRelease()

static ULONG WINAPI ICommDlgBrowser3_fnRelease ( ICommDlgBrowser3 iface)
static

Definition at line 326 of file ebrowser.c.

327 {
330 
331  if(!ref)
332  heap_free(This);
333 
334  return ref;
335 }
static ICommDlgBrowser3Impl * impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:308
Definition: send.c:47
GLenum GLint ref
Definition: glext.h:6028
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

◆ IExplorerBrowserEvents_fnAddRef()

static ULONG WINAPI IExplorerBrowserEvents_fnAddRef ( IExplorerBrowserEvents *  iface)
static

Definition at line 154 of file ebrowser.c.

155 {
157  return InterlockedIncrement(&This->ref);
158 }
static IExplorerBrowserEventsImpl * impl_from_IExplorerBrowserEvents(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:142
#define InterlockedIncrement
Definition: armddk.h:53

◆ IExplorerBrowserEvents_fnOnNavigationComplete()

static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationComplete ( IExplorerBrowserEvents *  iface,
PCIDLIST_ABSOLUTE  pidlFolder 
)
static

Definition at line 174 of file ebrowser.c.

176 {
178  This->completed++;
179  return S_OK;
180 }
static IExplorerBrowserEventsImpl * impl_from_IExplorerBrowserEvents(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:142
#define S_OK
Definition: intsafe.h:59

◆ IExplorerBrowserEvents_fnOnNavigationFailed()

static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationFailed ( IExplorerBrowserEvents *  iface,
PCIDLIST_ABSOLUTE  pidlFolder 
)
static

Definition at line 181 of file ebrowser.c.

183 {
185  This->failed++;
186  return S_OK;
187 }
static IExplorerBrowserEventsImpl * impl_from_IExplorerBrowserEvents(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:142
#define S_OK
Definition: intsafe.h:59

◆ IExplorerBrowserEvents_fnOnNavigationPending()

static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationPending ( IExplorerBrowserEvents *  iface,
PCIDLIST_ABSOLUTE  pidlFolder 
)
static

Definition at line 166 of file ebrowser.c.

168 {
170  This->pending++;
171  return S_OK;
172 }
static IExplorerBrowserEventsImpl * impl_from_IExplorerBrowserEvents(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:142
#define S_OK
Definition: intsafe.h:59

◆ IExplorerBrowserEvents_fnOnViewCreated()

static HRESULT WINAPI IExplorerBrowserEvents_fnOnViewCreated ( IExplorerBrowserEvents *  iface,
IShellView psv 
)
static

Definition at line 188 of file ebrowser.c.

190 {
192  This->created++;
193  return S_OK;
194 }
static IExplorerBrowserEventsImpl * impl_from_IExplorerBrowserEvents(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:142
#define S_OK
Definition: intsafe.h:59

◆ IExplorerBrowserEvents_fnQueryInterface()

static HRESULT WINAPI IExplorerBrowserEvents_fnQueryInterface ( IExplorerBrowserEvents *  iface,
REFIID  riid,
void **  ppvObj 
)
static

Definition at line 147 of file ebrowser.c.

149 {
150  ok(0, "Never called.\n");
151  return E_NOINTERFACE;
152 }
#define E_NOINTERFACE
Definition: winerror.h:2364
#define ok(value,...)
Definition: atltest.h:57

◆ IExplorerBrowserEvents_fnRelease()

static ULONG WINAPI IExplorerBrowserEvents_fnRelease ( IExplorerBrowserEvents *  iface)
static

Definition at line 160 of file ebrowser.c.

161 {
163  return InterlockedDecrement(&This->ref);
164 }
static IExplorerBrowserEventsImpl * impl_from_IExplorerBrowserEvents(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:142
#define InterlockedDecrement
Definition: armddk.h:52

◆ IExplorerPaneVisibility_fnAddRef()

static ULONG WINAPI IExplorerPaneVisibility_fnAddRef ( IExplorerPaneVisibility *  iface)
static

Definition at line 231 of file ebrowser.c.

232 {
234  return InterlockedIncrement(&This->ref);
235 }
static IExplorerPaneVisibilityImpl * impl_from_IExplorerPaneVisibility(IExplorerPaneVisibility *iface)
Definition: ebrowser.c:218
#define InterlockedIncrement
Definition: armddk.h:53

◆ IExplorerPaneVisibility_fnGetPaneState()

static HRESULT WINAPI IExplorerPaneVisibility_fnGetPaneState ( IExplorerPaneVisibility *  iface,
REFEXPLORERPANE  ep,
EXPLORERPANESTATE *  peps 
)
static

Definition at line 248 of file ebrowser.c.

251 {
253  This->count++;
254 
255  ok(ep != NULL, "ep is NULL.\n");
256  ok(peps != NULL, "peps is NULL.\n");
257  ok(*peps == 0, "got %d\n", *peps);
258 
259  *peps = EPS_FORCE;
260  if(IsEqualGUID(&EP_NavPane, ep)) This->np++;
261  else if(IsEqualGUID(&EP_Commands, ep)) This->cp++;
262  else if(IsEqualGUID(&EP_Commands_Organize, ep)) This->cp_o++;
263  else if(IsEqualGUID(&EP_Commands_View, ep)) This->cp_v++;
264  else if(IsEqualGUID(&EP_DetailsPane, ep)) This->dp++;
265  else if(IsEqualGUID(&EP_PreviewPane, ep)) This->pp++;
266  else if(IsEqualGUID(&EP_QueryPane, ep)) This->qp++;
267  else if(IsEqualGUID(&EP_AdvQueryPane, ep)) This->aqp++;
268  else
269  {
270  trace("Unknown explorer pane: %s\n", wine_dbgstr_guid(ep));
271  This->unk++;
272  }
273 
274  return S_OK;
275 }
static IExplorerPaneVisibilityImpl * impl_from_IExplorerPaneVisibility(IExplorerPaneVisibility *iface)
Definition: ebrowser.c:218
const char * wine_dbgstr_guid(const GUID *guid)
smooth NULL
Definition: ftsmooth.c:416
#define trace
Definition: atltest.h:70
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021

◆ IExplorerPaneVisibility_fnQueryInterface()

static HRESULT WINAPI IExplorerPaneVisibility_fnQueryInterface ( IExplorerPaneVisibility *  iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 223 of file ebrowser.c.

225 {
226  ok(0, "unexpected, %s\n", wine_dbgstr_guid(riid));
227  *ppvObj = NULL;
228  return E_NOINTERFACE;
229 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
const char * wine_dbgstr_guid(const GUID *guid)
smooth NULL
Definition: ftsmooth.c:416
#define ok(value,...)
Definition: atltest.h:57

◆ IExplorerPaneVisibility_fnRelease()

static ULONG WINAPI IExplorerPaneVisibility_fnRelease ( IExplorerPaneVisibility *  iface)
static

Definition at line 237 of file ebrowser.c.

238 {
241 
242  if(!ref)
243  heap_free(This);
244 
245  return ref;
246 }
static IExplorerPaneVisibilityImpl * impl_from_IExplorerPaneVisibility(IExplorerPaneVisibility *iface)
Definition: ebrowser.c:218
Definition: send.c:47
GLenum GLint ref
Definition: glext.h:6028
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

◆ impl_from_ICommDlgBrowser3()

static ICommDlgBrowser3Impl* impl_from_ICommDlgBrowser3 ( ICommDlgBrowser3 iface)
inlinestatic

Definition at line 308 of file ebrowser.c.

309 {
310  return CONTAINING_RECORD(iface, ICommDlgBrowser3Impl, ICommDlgBrowser3_iface);
311 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by ICommDlgBrowser3_fnAddRef(), ICommDlgBrowser3_fnGetCurrentFilter(), ICommDlgBrowser3_fnGetDefaultMenuText(), ICommDlgBrowser3_fnGetViewFlags(), ICommDlgBrowser3_fnIncludeObject(), ICommDlgBrowser3_fnNotify(), ICommDlgBrowser3_fnOnColumnClicked(), ICommDlgBrowser3_fnOnDefaultCommand(), ICommDlgBrowser3_fnOnPreviewCreated(), ICommDlgBrowser3_fnOnStateChange(), and ICommDlgBrowser3_fnRelease().

◆ impl_from_IExplorerBrowserEvents()

static IExplorerBrowserEventsImpl* impl_from_IExplorerBrowserEvents ( IExplorerBrowserEvents *  iface)
inlinestatic

Definition at line 142 of file ebrowser.c.

143 {
144  return CONTAINING_RECORD(iface, IExplorerBrowserEventsImpl, IExplorerBrowserEvents_iface);
145 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by IExplorerBrowserEvents_fnAddRef(), IExplorerBrowserEvents_fnOnNavigationComplete(), IExplorerBrowserEvents_fnOnNavigationFailed(), IExplorerBrowserEvents_fnOnNavigationPending(), IExplorerBrowserEvents_fnOnViewCreated(), and IExplorerBrowserEvents_fnRelease().

◆ impl_from_IExplorerPaneVisibility()

static IExplorerPaneVisibilityImpl* impl_from_IExplorerPaneVisibility ( IExplorerPaneVisibility *  iface)
inlinestatic

Definition at line 218 of file ebrowser.c.

219 {
220  return CONTAINING_RECORD(iface, IExplorerPaneVisibilityImpl, IExplorerPaneVisibility_iface);
221 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by IExplorerPaneVisibility_fnAddRef(), IExplorerPaneVisibility_fnGetPaneState(), and IExplorerPaneVisibility_fnRelease().

◆ impl_from_IServiceProvider()

static IServiceProviderImpl* impl_from_IServiceProvider ( IServiceProvider iface)
inlinestatic

Definition at line 464 of file ebrowser.c.

465 {
466  return CONTAINING_RECORD(iface, IServiceProviderImpl, IServiceProvider_iface);
467 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by IServiceProvider_fnAddRef(), IServiceProvider_fnQueryService(), and IServiceProvider_fnRelease().

◆ init_function_pointers()

static IShellFolder IShellItem** static IBindCtx LPITEMIDLIST SFGAOF* static void init_function_pointers ( void  )
static

Definition at line 85 of file ebrowser.c.

86 {
87  HMODULE hmod;
88 
89  hmod = GetModuleHandleA("shell32.dll");
90  pSHCreateShellItem = (void*)GetProcAddress(hmod, "SHCreateShellItem");
91  pSHParseDisplayName = (void*)GetProcAddress(hmod, "SHParseDisplayName");
92 }
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:821
static PEXPLICIT_ACCESSW *static HMODULE hmod
Definition: security.c:141
#define GetProcAddress(x, y)
Definition: compat.h:410

Referenced by START_TEST().

◆ IServiceProvider_fnAddRef()

static ULONG WINAPI IServiceProvider_fnAddRef ( IServiceProvider iface)
static

Definition at line 489 of file ebrowser.c.

490 {
492  return InterlockedIncrement(&This->ref);
493 }
#define InterlockedIncrement
Definition: armddk.h:53
static IServiceProviderImpl * impl_from_IServiceProvider(IServiceProvider *iface)
Definition: ebrowser.c:464

◆ IServiceProvider_fnQueryInterface()

static HRESULT WINAPI IServiceProvider_fnQueryInterface ( IServiceProvider iface,
REFIID  riid,
LPVOID ppvObj 
)
static

Definition at line 469 of file ebrowser.c.

470 {
471  *ppvObj = NULL;
472  if(IsEqualIID(riid, &IID_IServiceProvider))
473  {
474  *ppvObj = iface;
475  IServiceProvider_AddRef(iface);
476  return S_OK;
477  }
478 
479  if(IsEqualIID(riid, &IID_IOleCommandTarget))
480  {
481  /* Windows Vista. */
482  return E_NOINTERFACE;
483  }
484 
485  ok(0, "Unexpected interface requested, %s\n", wine_dbgstr_guid(riid));
486  return E_NOINTERFACE;
487 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
const char * wine_dbgstr_guid(const GUID *guid)
smooth NULL
Definition: ftsmooth.c:416
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ IServiceProvider_fnQueryService()

static HRESULT WINAPI IServiceProvider_fnQueryService ( IServiceProvider iface,
REFGUID  guidService,
REFIID  riid,
void **  ppv 
)
static

Definition at line 506 of file ebrowser.c.

510 {
512  BOOL was_in_list = FALSE;
513  IUnknown *punk = NULL;
514  UINT i;
515 
516  *ppv = NULL;
517  for(i = 0; This->interfaces[i].service != NULL; i++)
518  {
519  if(IsEqualGUID(This->interfaces[i].service, guidService) &&
520  IsEqualIID(This->interfaces[i].id, riid))
521  {
522  was_in_list = TRUE;
523  This->interfaces[i].count++;
524  punk = This->interfaces[i].punk;
525  break;
526  }
527  }
528 
529  ok(was_in_list, "unknown service, serviceID: %s, riid: %s\n", wine_dbgstr_guid(guidService), wine_dbgstr_guid(riid));
530 
531  /* Give back an interface, if any. */
532  if(punk)
533  {
534  *ppv = punk;
535  IUnknown_AddRef(punk);
536  return S_OK;
537  }
538 
539  return E_NOINTERFACE;
540 }
#define TRUE
Definition: types.h:120
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
const char * wine_dbgstr_guid(const GUID *guid)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
static IServiceProviderImpl * impl_from_IServiceProvider(IServiceProvider *iface)
Definition: ebrowser.c:464
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ IServiceProvider_fnRelease()

static ULONG WINAPI IServiceProvider_fnRelease ( IServiceProvider iface)
static

Definition at line 495 of file ebrowser.c.

496 {
499 
500  if(!ref)
501  heap_free(This);
502 
503  return ref;
504 }
Definition: send.c:47
long LONG
Definition: pedump.c:60
GLenum GLint ref
Definition: glext.h:6028
#define InterlockedDecrement
Definition: armddk.h:52
static IServiceProviderImpl * impl_from_IServiceProvider(IServiceProvider *iface)
Definition: ebrowser.c:464
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

◆ myPathAddBackslashW()

static LPWSTR myPathAddBackslashW ( LPWSTR  lpszPath)
static

Definition at line 1327 of file ebrowser.c.

1328 {
1329  size_t iLen;
1330 
1331  if (!lpszPath || (iLen = lstrlenW(lpszPath)) >= MAX_PATH)
1332  return NULL;
1333 
1334  if (iLen)
1335  {
1336  lpszPath += iLen;
1337  if (lpszPath[-1] != '\\')
1338  {
1339  *lpszPath++ = '\\';
1340  *lpszPath = '\0';
1341  }
1342  }
1343  return lpszPath;
1344 }
#define lstrlenW
Definition: compat.h:407
smooth NULL
Definition: ftsmooth.c:416
#define MAX_PATH
Definition: compat.h:26

Referenced by test_navigation().

◆ process_msgs()

static void process_msgs ( void  )
static

Definition at line 121 of file ebrowser.c.

122 {
123  MSG msg;
124  while(PeekMessageA( &msg, NULL, 0, 0, PM_REMOVE))
125  {
128  }
129 }
BOOL WINAPI TranslateMessage(_In_ const MSG *)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
smooth NULL
Definition: ftsmooth.c:416
#define msg(x)
Definition: auth_time.c:54
#define PM_REMOVE
Definition: winuser.h:1182

Referenced by test_Advise(), test_browse_pidl_(), test_browse_pidl_sb_(), test_InputObject(), test_navigation(), test_SB_misc(), and test_SetSite().

◆ setup_window()

static void setup_window ( void  )
static

Definition at line 1800 of file ebrowser.c.

1801 {
1802  WNDCLASSW wc;
1803  static const WCHAR ebtestW[] = {'e','b','t','e','s','t',0};
1804 
1805  ZeroMemory(&wc, sizeof(WNDCLASSW));
1807  wc.lpszClassName = ebtestW;
1808  RegisterClassW(&wc);
1809  hwnd = CreateWindowExW(0, ebtestW, NULL, 0,
1810  0, 0, 500, 500,
1811  NULL, 0, 0, NULL);
1812  ok(hwnd != NULL, "Failed to create window for tests.\n");
1813 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define ZeroMemory
Definition: winbase.h:1642
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
WNDPROC lpfnWndProc
Definition: winuser.h:3151
smooth NULL
Definition: ftsmooth.c:416
LPCWSTR lpszClassName
Definition: winuser.h:3159
__wchar_t WCHAR
Definition: xmlstorage.h:180
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define ok(value,...)
Definition: atltest.h:57

Referenced by START_TEST().

◆ START_TEST()

START_TEST ( ebrowser  )

Definition at line 1815 of file ebrowser.c.

1816 {
1818 
1820  {
1821  win_skip("No ExplorerBrowser control..\n");
1822  OleUninitialize();
1823  return;
1824  }
1825 
1826  setup_window();
1828 
1830  test_SB_misc();
1832  test_basics();
1833  test_Advise();
1834  test_navigation();
1836  test_SetSite();
1837  test_InputObject();
1838 
1840  OleUninitialize();
1841 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static void test_navigation(void)
Definition: ebrowser.c:1397
static void test_SetSite(void)
Definition: ebrowser.c:920
static void test_GetCurrentView(void)
Definition: ebrowser.c:1620
BOOL WINAPI DestroyWindow(_In_ HWND)
static void test_InputObject(void)
Definition: ebrowser.c:1676
static void test_QueryInterface(void)
Definition: ebrowser.c:558
smooth NULL
Definition: ftsmooth.c:416
static void test_Advise(void)
Definition: ebrowser.c:1228
static void test_basics(void)
Definition: ebrowser.c:1099
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
Definition: ole2.c:172
static void setup_window(void)
Definition: ebrowser.c:1800
static void test_initialization(void)
Definition: ebrowser.c:763
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF *static void init_function_pointers(void)
Definition: ebrowser.c:85
static void test_SB_misc(void)
Definition: ebrowser.c:600
static BOOL test_instantiate_control(void)
Definition: ebrowser.c:1786
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
Definition: ole2.c:233
#define win_skip
Definition: test.h:141

◆ test_Advise()

static void test_Advise ( void  )
static

Definition at line 1228 of file ebrowser.c.

1229 {
1230  IExplorerBrowser *peb;
1231  IExplorerBrowserEvents *pebe;
1232  DWORD cookies[10];
1233  HRESULT hr;
1234  UINT i, ref;
1235 
1236  /* Set up our IExplorerBrowserEvents implementation */
1239 
1240  ebrowser_instantiate(&peb);
1241 
1242  if(0)
1243  {
1244  /* Crashes on Windows 7 */
1245  IExplorerBrowser_Advise(peb, pebe, NULL);
1246  IExplorerBrowser_Advise(peb, NULL, &cookies[0]);
1247  }
1248 
1249  /* Using Unadvise with a cookie that has yet to be given out
1250  * results in E_INVALIDARG */
1251  hr = IExplorerBrowser_Unadvise(peb, 11);
1252  ok(hr == E_INVALIDARG, "got (0x%08x)\n", hr);
1253 
1254  /* Add some before initialization */
1255  for(i = 0; i < 5; i++)
1256  {
1257  hr = IExplorerBrowser_Advise(peb, pebe, &cookies[i]);
1258  ok(hr == S_OK, "got (0x%08x)\n", hr);
1259  }
1260 
1261  ebrowser_initialize(peb);
1262 
1263  /* Add some after initialization */
1264  for(i = 5; i < 10; i++)
1265  {
1266  hr = IExplorerBrowser_Advise(peb, pebe, &cookies[i]);
1267  ok(hr == S_OK, "got (0x%08x)\n", hr);
1268  }
1269 
1270  ok(ebev.ref == 10, "Got %d\n", ebev.ref);
1271 
1272  ebev.completed = 0;
1274  process_msgs();
1275  ok(ebev.completed == 10, "Got %d\n", ebev.completed);
1276 
1277  /* Remove a bunch somewhere in the middle */
1278  for(i = 4; i < 8; i++)
1279  {
1280  hr = IExplorerBrowser_Unadvise(peb, cookies[i]);
1281  ok(hr == S_OK, "got (0x%08x)\n", hr);
1282  }
1283 
1284  ebev.completed = 0;
1286  process_msgs();
1287  ok(ebev.completed == 6, "Got %d\n", ebev.completed);
1288 
1289  if(0)
1290  {
1291  /* Using unadvise with a previously unadvised cookie results
1292  * in a crash. */
1293  IExplorerBrowser_Unadvise(peb, cookies[5]);
1294  }
1295 
1296  /* Remove the rest. */
1297  for(i = 0; i < 10; i++)
1298  {
1299  if(i<4||i>7)
1300  {
1301  hr = IExplorerBrowser_Unadvise(peb, cookies[i]);
1302  ok(hr == S_OK, "%d: got (0x%08x)\n", i, hr);
1303  }
1304  }
1305 
1306  ok(ebev.ref == 0, "Got %d\n", ebev.ref);
1307 
1308  ebev.completed = 0;
1310  process_msgs();
1311  ok(ebev.completed == 0, "Got %d\n", ebev.completed);
1312 
1313  /* ::Destroy implies ::Unadvise. */
1314  hr = IExplorerBrowser_Advise(peb, pebe, &cookies[0]);
1315  ok(hr == S_OK, "Got 0x%08x\n", hr);
1316  ok(ebev.ref == 1, "Got %d\n", ebev.ref);
1317 
1318  hr = IExplorerBrowser_Destroy(peb);
1319  ok(hr == S_OK, "Got 0x%08x\n", hr);
1320  ok(ebev.ref == 0, "Got %d\n", ebev.ref);
1321 
1322  ref = IExplorerBrowser_Release(peb);
1323  ok(!ref, "Got %d\n", ref);
1324 }
static IExplorerBrowserEventsImpl ebev
Definition: ebrowser.c:140
HRESULT hr
Definition: shlfolder.c:183
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
Definition: ebrowser.c:103
IExplorerBrowserEvents IExplorerBrowserEvents_iface
Definition: ebrowser.c:135
static const IExplorerBrowserEventsVtbl ebevents
Definition: ebrowser.c:196
static void process_msgs(void)
Definition: ebrowser.c:121
Definition: send.c:47
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLenum GLint ref
Definition: glext.h:6028
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
static CookieInternal * cookies
Definition: msctf.c:67
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
unsigned int UINT
Definition: ndis.h:50
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
static HRESULT ebrowser_browse_to_desktop(IExplorerBrowser *peb)
Definition: ebrowser.c:110

Referenced by START_TEST().

◆ test_basics()

static void test_basics ( void  )
static

Definition at line 1099 of file ebrowser.c.

1100 {
1101  IExplorerBrowser *peb;
1102  IShellBrowser *psb;
1104  ULONG lres;
1106  HDWP hdwp;
1107  RECT rc;
1108  HRESULT hr;
1109  static const WCHAR winetest[] = {'W','i','n','e','T','e','s','t',0};
1110 
1111  ebrowser_instantiate(&peb);
1112  ebrowser_initialize(peb);
1113 
1114  /* SetRect */
1115  SetRectEmpty(&rc);
1116  hr = IExplorerBrowser_SetRect(peb, NULL, rc);
1117  ok(hr == S_OK, "got (0x%08x)\n", hr);
1118 
1119  SetRect(&rc, 100, 100, 10, 10);
1120  hr = IExplorerBrowser_SetRect(peb, NULL, rc);
1121  ok(hr == S_OK, "got (0x%08x)\n", hr);
1122 
1123  /* SetRect with DeferWindowPos */
1124  SetRect(&rc, 0, 0, 10, 10);
1125  hdwp = BeginDeferWindowPos(1);
1126  hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
1127  ok(hr == S_OK, "got (0x%08x)\n", hr);
1128  lres = EndDeferWindowPos(hdwp);
1129  ok(lres, "EndDeferWindowPos failed.\n");
1130 
1131  hdwp = NULL;
1132  hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
1133  ok(hr == S_OK, "got (0x%08x)\n", hr);
1134  ok(hdwp == NULL, "got %p\n", hdwp);
1135  lres = EndDeferWindowPos(hdwp);
1136  ok(!lres, "EndDeferWindowPos succeeded unexpectedly.\n");
1137 
1138  /* Test positioning */
1139  SetRect(&rc, 10, 20, 50, 50);
1140  hr = IExplorerBrowser_SetRect(peb, NULL, rc);
1141  ok(hr == S_OK, "got (0x%08x)\n", hr);
1142  hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
1143  ok(hr == S_OK, "Got 0x%08x\n", hr);
1144  if(SUCCEEDED(hr))
1145  {
1146  HWND eb_hwnd;
1147  RECT eb_rc;
1148  static const RECT exp_rc = {11, 21, 49, 49};
1149  static const RECT exp_rc2 = {11, 21, 49, 24};
1150 
1151  hr = IShellBrowser_GetWindow(psb, &eb_hwnd);
1152  ok(hr == S_OK, "Got 0x%08x\n", hr);
1153 
1154  GetClientRect(eb_hwnd, &eb_rc);
1155  MapWindowPoints(eb_hwnd, hwnd, (POINT*)&eb_rc, 2);
1156  ok(EqualRect(&eb_rc, &exp_rc), "Got rect %s\n", wine_dbgstr_rect(&eb_rc));
1157 
1158  /* Try resizing with invalid hdwp */
1159  rc.bottom = 25;
1160  hdwp = (HDWP)0xdeadbeef;
1161  hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
1162  ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1163  GetClientRect(eb_hwnd, &eb_rc);
1164  MapWindowPoints(eb_hwnd, hwnd, (POINT*)&eb_rc, 2);
1165  ok(EqualRect(&eb_rc, &exp_rc), "Got rect %s\n", wine_dbgstr_rect(&eb_rc));
1166 
1167  hdwp = NULL;
1168  hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
1169  ok(hr == S_OK, "Got 0x%08x\n", hr);
1170  GetClientRect(eb_hwnd, &eb_rc);
1171  MapWindowPoints(eb_hwnd, hwnd, (POINT*)&eb_rc, 2);
1172  ok(EqualRect(&eb_rc, &exp_rc2), "Got rect %s\n", wine_dbgstr_rect(&eb_rc));
1173 
1174  IShellBrowser_Release(psb);
1175  }
1176 
1177  IExplorerBrowser_Destroy(peb);
1178  IExplorerBrowser_Release(peb);
1179 
1180  /* GetOptions/SetOptions*/
1181  ebrowser_instantiate(&peb);
1182 
1183  if(0) {
1184  /* Crashes on Windows 7 */
1185  IExplorerBrowser_GetOptions(peb, NULL);
1186  }
1187 
1188  hr = IExplorerBrowser_GetOptions(peb, &flags);
1189  ok(hr == S_OK, "got (0x%08x)\n", hr);
1190  ok(flags == 0, "got (0x%08x)\n", flags);
1191 
1192  /* Settings preserved through Initialize. */
1193  hr = IExplorerBrowser_SetOptions(peb, 0xDEADBEEF);
1194  ok(hr == S_OK, "got (0x%08x)\n", hr);
1195 
1196  ebrowser_initialize(peb);
1197 
1198  hr = IExplorerBrowser_GetOptions(peb, &flags);
1199  ok(flags == 0xDEADBEEF, "got (0x%08x)\n", flags);
1200  ok(hr == S_OK, "got (0x%08x)\n", hr);
1201 
1202  IExplorerBrowser_Destroy(peb);
1203  IExplorerBrowser_Release(peb);
1204 
1205  ebrowser_instantiate(&peb);
1206  ebrowser_initialize(peb);
1207 
1208  /* SetFolderSettings */
1209  hr = IExplorerBrowser_SetFolderSettings(peb, NULL);
1210  ok(hr == E_INVALIDARG, "got (0x%08x)\n", hr);
1211  fs.ViewMode = 0; fs.fFlags = 0;
1212  hr = IExplorerBrowser_SetFolderSettings(peb, &fs);
1213  todo_wine ok(hr == E_INVALIDARG, "got (0x%08x)\n", hr);
1214 
1215  /* SetPropertyBag */
1216  hr = IExplorerBrowser_SetPropertyBag(peb, NULL);
1217  ok(hr == E_INVALIDARG, "Got 0x%08x\n", hr);
1218  hr = IExplorerBrowser_SetPropertyBag(peb, winetest);
1219  ok(hr == S_OK, "Got 0x%08x\n", hr);
1220 
1221  /* TODO: Test after browsing somewhere. */
1222 
1223  IExplorerBrowser_Destroy(peb);
1224  lres = IExplorerBrowser_Release(peb);
1225  ok(lres == 0, "Got %d\n", lres);
1226 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HDWP WINAPI BeginDeferWindowPos(_In_ int)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
HRESULT hr
Definition: shlfolder.c:183
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
Definition: ebrowser.c:103
Definition: fs.h:235
#define E_FAIL
Definition: ddrawi.h:102
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
const char * wine_dbgstr_rect(const RECT *rect)
GLbitfield flags
Definition: glext.h:7161
#define todo_wine
Definition: test.h:154
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
#define fs
Definition: i386-dis.c:435
#define ok(value,...)
Definition: atltest.h:57
unsigned int ULONG
Definition: retypes.h:1
LONG bottom
Definition: windef.h:294
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
static CHAR winetest[]
Definition: info.c:56
enum tagEXPLORER_BROWSER_OPTIONS EXPLORER_BROWSER_OPTIONS
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by START_TEST().

◆ test_browse_pidl_()

static void test_browse_pidl_ ( IExplorerBrowser peb,
IExplorerBrowserEventsImpl ebev,
LPITEMIDLIST  pidl,
UINT  uFlags,
HRESULT  hr_exp,
UINT  pending,
UINT  created,
UINT  failed,
UINT  completed,
const char file,
int  line 
)
static

Definition at line 1346 of file ebrowser.c.

1350 {
1351  HRESULT hr;
1352  ebev->completed = ebev->created = ebev->pending = ebev->failed = 0;
1353 
1354  hr = IExplorerBrowser_BrowseToIDList(peb, pidl, uFlags);
1355  ok_(file, line) (hr == hr_exp, "BrowseToIDList returned 0x%08x\n", hr);
1356  process_msgs();
1357 
1358  ok_(file, line)
1359  (ebev->pending == pending && ebev->created == created &&
1360  ebev->failed == failed && ebev->completed == completed,
1361  "Events occurred: %d, %d, %d, %d\n",
1363 }
static IExplorerBrowserEventsImpl ebev
Definition: ebrowser.c:140
HRESULT hr
Definition: shlfolder.c:183
UINT uFlags
Definition: api.c:60
static void process_msgs(void)
Definition: ebrowser.c:121
Definition: parser.c:48
LONG HRESULT
Definition: typedefs.h:77
#define ok_(x1, x2)
Definition: atltest.h:61
Definition: fci.c:126

◆ test_browse_pidl_sb_()

static void test_browse_pidl_sb_ ( IExplorerBrowser peb,
IExplorerBrowserEventsImpl ebev,
LPITEMIDLIST  pidl,
UINT  uFlags,
HRESULT  hr_exp,
UINT  pending,
UINT  created,
UINT  failed,
UINT  completed,
const char file,
int  line 
)
static

Definition at line 1367 of file ebrowser.c.

1371 {
1372  IShellBrowser *psb;
1373  HRESULT hr;
1374 
1375  hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
1376  ok_(file, line) (hr == S_OK, "QueryInterface returned 0x%08x\n", hr);
1377  if(SUCCEEDED(hr))
1378  {
1379  ebev->completed = ebev->created = ebev->pending = ebev->failed = 0;
1380 
1381  hr = IShellBrowser_BrowseObject(psb, pidl, uFlags);
1382  ok_(file, line) (hr == hr_exp, "BrowseObject returned 0x%08x\n", hr);
1383  process_msgs();
1384 
1385  ok_(file, line)
1386  (ebev->pending == pending && ebev->created == created &&
1387  ebev->failed == failed && ebev->completed == completed,
1388  "Events occurred: %d, %d, %d, %d\n",
1390 
1391  IShellBrowser_Release(psb);
1392  }
1393 }
static IExplorerBrowserEventsImpl ebev
Definition: ebrowser.c:140
HRESULT hr
Definition: shlfolder.c:183
UINT uFlags
Definition: api.c:60
static void process_msgs(void)
Definition: ebrowser.c:121
Definition: parser.c:48
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
#define SUCCEEDED(hr)
Definition: intsafe.h:57
#define ok_(x1, x2)
Definition: atltest.h:61
Definition: fci.c:126

◆ test_GetCurrentView()

static void test_GetCurrentView ( void  )
static

Definition at line 1620 of file ebrowser.c.

1621 {
1622  IExplorerBrowser *peb;
1623  IUnknown *punk;
1624  HRESULT hr;
1625 
1626  /* GetCurrentView */
1627  ebrowser_instantiate(&peb);
1628 
1629  if(0)
1630  {
1631  /* Crashes under Windows 7 */
1632  IExplorerBrowser_GetCurrentView(peb, NULL, NULL);
1633  }
1634  hr = IExplorerBrowser_GetCurrentView(peb, NULL, (void**)&punk);
1635  ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1636 
1637 #define test_gcv(iid, exp) \
1638  do { \
1639  hr = IExplorerBrowser_GetCurrentView(peb, &iid, (void**)&punk); \
1640  ok(hr == exp, "(%s:)Expected (0x%08x), got: (0x%08x)\n", \
1641  #iid ,exp, hr); \
1642  if(SUCCEEDED(hr)) IUnknown_Release(punk); \
1643  } while(0)
1644 
1647  test_gcv(IID_IShellView, E_FAIL);
1648  test_gcv(IID_IShellView2, E_FAIL);
1649  test_gcv(IID_IFolderView, E_FAIL);
1650  test_gcv(IID_IPersistFolder, E_FAIL);
1651  test_gcv(IID_IPersistFolder2, E_FAIL);
1652  test_gcv(IID_ICommDlgBrowser, E_FAIL);
1653  test_gcv(IID_ICommDlgBrowser2, E_FAIL);
1654  test_gcv(IID_ICommDlgBrowser3, E_FAIL);
1655 
1656  ebrowser_initialize(peb);
1658 
1661  test_gcv(IID_IShellView, S_OK);
1662  test_gcv(IID_IShellView2, S_OK);
1663  test_gcv(IID_IFolderView, S_OK);
1664  todo_wine test_gcv(IID_IPersistFolder, S_OK);
1665  test_gcv(IID_IPersistFolder2, E_NOINTERFACE);
1666  test_gcv(IID_ICommDlgBrowser, E_NOINTERFACE);
1667  test_gcv(IID_ICommDlgBrowser2, E_NOINTERFACE);
1668  test_gcv(IID_ICommDlgBrowser3, E_NOINTERFACE);
1669 
1670 #undef test_gcv
1671 
1672  IExplorerBrowser_Destroy(peb);
1673  IExplorerBrowser_Release(peb);
1674 }
#define E_NOINTERFACE
Definition: winerror.h:2364
HRESULT hr
Definition: shlfolder.c:183
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
Definition: ebrowser.c:103
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
#define test_gcv(iid, exp)
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
#define todo_wine
Definition: test.h:154
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
static HRESULT ebrowser_browse_to_desktop(IExplorerBrowser *peb)
Definition: ebrowser.c:110

Referenced by START_TEST().

◆ test_initialization()

static void test_initialization ( void  )
static

Definition at line 763 of file ebrowser.c.

764 {
765  IExplorerBrowser *peb;
766  IShellBrowser *psb;
767  HWND eb_hwnd;
768  HRESULT hr;
769  ULONG lres;
770  LONG style;
771  RECT rc;
772 
773  ebrowser_instantiate(&peb);
774 
775  if(0)
776  {
777  /* Crashes on Windows 7 */
778  IExplorerBrowser_Initialize(peb, NULL, NULL, NULL);
779  IExplorerBrowser_Initialize(peb, hwnd, NULL, NULL);
780  }
781 
782  ZeroMemory(&rc, sizeof(RECT));
783 
784  hr = IExplorerBrowser_Initialize(peb, NULL, &rc, NULL);
785  ok(hr == E_INVALIDARG, "got (0x%08x)\n", hr);
786 
787  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
788  ok(hr == S_OK, "got (0x%08x)\n", hr);
789 
790  /* Initialize twice */
791  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
792  ok(hr == E_UNEXPECTED, "got (0x%08x)\n", hr);
793 
794  hr = IExplorerBrowser_Destroy(peb);
795  ok(hr == S_OK, "got (0x%08x)\n", hr);
796 
797  /* Initialize again */
798  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
799  ok(hr == E_UNEXPECTED, "got (0x%08x)\n", hr);
800 
801  /* Destroy again */
802  hr = IExplorerBrowser_Destroy(peb);
803  ok(hr == S_OK, "got (0x%08x)\n", hr);
804  lres = IExplorerBrowser_Release(peb);
805  ok(lres == 0, "Got %d\n", lres);
806 
807  /* Initialize with a few different rectangles */
808  peb = NULL;
809  ebrowser_instantiate(&peb);
810  SetRect(&rc, 50, 20, 100, 80);
811  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
812  ok(hr == S_OK, "got (0x%08x)\n", hr);
813  hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
814  ok(hr == S_OK, "Got 0x%08x\n", hr);
815  if(SUCCEEDED(hr))
816  {
817  RECT eb_rc;
818  char buf[1024];
819  LONG expected_style;
820  static const RECT exp_rc = {0, 0, 48, 58};
821 
822  hr = IShellBrowser_GetWindow(psb, &eb_hwnd);
823  ok(hr == S_OK, "Got 0x%08x\n", hr);
824 
825  GetClientRect(eb_hwnd, &eb_rc);
826  ok(EqualRect(&eb_rc, &exp_rc), "Got client rect %s\n", wine_dbgstr_rect(&eb_rc));
827 
828  GetWindowRect(eb_hwnd, &eb_rc);
829  ok(eb_rc.right - eb_rc.left == 50, "Got window width %d\n", eb_rc.right - eb_rc.left);
830  ok(eb_rc.bottom - eb_rc.top == 60, "Got window height %d\n", eb_rc.bottom - eb_rc.top);
831 
832  buf[0] = '\0';
833  GetClassNameA(eb_hwnd, buf, 1024);
834  ok(!lstrcmpA(buf, "ExplorerBrowserControl"), "Unexpected classname %s\n", buf);
835 
837  style = GetWindowLongPtrW(eb_hwnd, GWL_STYLE);
838  todo_wine ok(style == expected_style, "Got style 0x%08x, expected 0x%08x\n", style, expected_style);
839 
840  expected_style = WS_EX_CONTROLPARENT;
841  style = GetWindowLongPtrW(eb_hwnd, GWL_EXSTYLE);
842  ok(style == expected_style, "Got exstyle 0x%08x, expected 0x%08x\n", style, expected_style);
843 
844  ok(GetParent(eb_hwnd) == hwnd, "GetParent returns %p\n", GetParent(eb_hwnd));
845 
846  /* ::Destroy() destroys the window. */
847  ok(IsWindow(eb_hwnd), "eb_hwnd invalid.\n");
848  IExplorerBrowser_Destroy(peb);
849  ok(!IsWindow(eb_hwnd), "eb_hwnd valid.\n");
850 
851  IShellBrowser_Release(psb);
852  lres = IExplorerBrowser_Release(peb);
853  ok(lres == 0, "Got refcount %d\n", lres);
854  }
855  else
856  {
857  skip("Skipping some tests.\n");
858 
859  IExplorerBrowser_Destroy(peb);
860  lres = IExplorerBrowser_Release(peb);
861  ok(lres == 0, "Got refcount %d\n", lres);
862  }
863 
864  /* check window style with EBO_NOBORDER */
865  ebrowser_instantiate(&peb);
866  hr = IExplorerBrowser_SetOptions(peb, EBO_NOBORDER);
867  ok(hr == S_OK, "got 0x%08x\n", hr);
868  SetRect(&rc, 50, 20, 100, 80);
869 
870  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
871  ok(hr == S_OK, "got (0x%08x)\n", hr);
872 
873  hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
874  ok(hr == S_OK, "Got 0x%08x\n", hr);
875 
876  hr = IShellBrowser_GetWindow(psb, &eb_hwnd);
877  ok(hr == S_OK, "Got 0x%08x\n", hr);
878 
879  style = GetWindowLongPtrW(eb_hwnd, GWL_STYLE);
880  ok(!(style & WS_BORDER) || broken(style & WS_BORDER) /* before win8 */, "got style 0x%08x\n", style);
881 
882  IShellBrowser_Release(psb);
883  IExplorerBrowser_Destroy(peb);
884  IExplorerBrowser_Release(peb);
885 
886  /* empty rectangle */
887  ebrowser_instantiate(&peb);
888  SetRectEmpty(&rc);
889  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
890  ok(hr == S_OK, "got (0x%08x)\n", hr);
891  IExplorerBrowser_Destroy(peb);
892  lres = IExplorerBrowser_Release(peb);
893  ok(lres == 0, "Got refcount %d\n", lres);
894 
895  ebrowser_instantiate(&peb);
896  SetRect(&rc, -1, -1, 1, 1);
897  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
898  ok(hr == S_OK, "got (0x%08x)\n", hr);
899  IExplorerBrowser_Destroy(peb);
900  lres = IExplorerBrowser_Release(peb);
901  ok(lres == 0, "Got refcount %d\n", lres);
902 
903  ebrowser_instantiate(&peb);
904  SetRect(&rc, 10, 10, 5, 5);
905  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
906  ok(hr == S_OK, "got (0x%08x)\n", hr);
907  IExplorerBrowser_Destroy(peb);
908  lres = IExplorerBrowser_Release(peb);
909  ok(lres == 0, "Got refcount %d\n", lres);
910 
911  ebrowser_instantiate(&peb);
912  SetRect(&rc, 10, 10, 5, 5);
913  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
914  ok(hr == S_OK, "got (0x%08x)\n", hr);
915  IExplorerBrowser_Destroy(peb);
916  lres = IExplorerBrowser_Release(peb);
917  ok(lres == 0, "Got refcount %d\n", lres);
918 }
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
HRESULT hr
Definition: shlfolder.c:183
BOOL WINAPI IsWindow(_In_opt_ HWND)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
LONG top
Definition: windef.h:292
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:18
#define ZeroMemory
Definition: winbase.h:1642
#define GWL_EXSTYLE
Definition: winuser.h:845
#define WS_CHILD
Definition: pedump.c:617
#define GetWindowLongPtrW
Definition: winuser.h:4730
LONG left
Definition: windef.h:291
#define WS_CLIPCHILDREN
Definition: pedump.c:619
LONG right
Definition: windef.h:293
#define WS_EX_CONTROLPARENT
Definition: winuser.h:387
long LONG
Definition: pedump.c:60
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
const char * wine_dbgstr_rect(const RECT *rect)
#define todo_wine
Definition: test.h:154
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
#define broken(x)
Definition: _sntprintf.h:21
#define GWL_STYLE
Definition: winuser.h:846
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define S_OK
Definition: intsafe.h:59
#define WS_BORDER
Definition: pedump.c:625
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
#define ok(value,...)
Definition: atltest.h:57
#define E_UNEXPECTED
Definition: winerror.h:2456
#define skip(...)
Definition: atltest.h:64
unsigned int ULONG
Definition: retypes.h:1
LONG bottom
Definition: windef.h:294
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
Arabic default style
Definition: afstyles.h:93
#define WS_VISIBLE
Definition: pedump.c:620
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by START_TEST().

◆ test_InputObject()

static void test_InputObject ( void  )
static

Definition at line 1676 of file ebrowser.c.

1677 {
1678  IExplorerBrowser *peb;
1679  IShellFolder *psf;
1680  IInputObject *pio;
1681  HRESULT hr;
1682  RECT rc;
1683  UINT i;
1684  WPARAM supported_key_accels_mode1[] = {
1687  VK_F5, VK_F6, VK_F10, 0 };
1688  WPARAM supported_key_accels_mode2[] = {
1691  VK_F10, 0 };
1692  WPARAM *key_accels;
1693  MSG msg_a = {
1694  hwnd,
1695  WM_KEYDOWN,
1696  VK_F5, 0,
1697  GetTickCount(),
1698  {5, 2}
1699  };
1700 
1701  ebrowser_instantiate(&peb);
1702  hr = IExplorerBrowser_QueryInterface(peb, &IID_IInputObject, (void**)&pio);
1703  ok(hr == S_OK, "Got 0x%08x\n", hr);
1704  if(FAILED(hr))
1705  {
1706  win_skip("IInputObject not supported.\n");
1707  return;
1708  }
1709 
1710  /* Before initializing */
1711  hr = IInputObject_TranslateAcceleratorIO(pio, &msg_a);
1712  todo_wine ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1713 
1714  hr = IInputObject_HasFocusIO(pio);
1715  todo_wine ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1716 
1717  hr = IInputObject_UIActivateIO(pio, TRUE, &msg_a);
1718  todo_wine ok(hr == S_OK, "Got 0x%08x\n", hr);
1719 
1720  hr = IInputObject_HasFocusIO(pio);
1721  todo_wine ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1722 
1723  hr = IInputObject_TranslateAcceleratorIO(pio, &msg_a);
1724  todo_wine ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1725 
1726  SetRect(&rc, 0, 0, 100, 100);
1727  hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
1728  ok(hr == S_OK, "Got 0x%08x\n", hr);
1729 
1730  hr = IInputObject_HasFocusIO(pio);
1731  todo_wine ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1732 
1733  hr = IInputObject_TranslateAcceleratorIO(pio, &msg_a);
1734  todo_wine ok(hr == E_FAIL, "Got 0x%08x\n", hr);
1735 
1736  /* Browse to the desktop */
1737  SHGetDesktopFolder(&psf);
1738  hr = IExplorerBrowser_BrowseToObject(peb, (IUnknown*)psf, SBSP_DEFBROWSER);
1739  ok(hr == S_OK, "Got 0x%08x\n", hr);
1740  IShellFolder_Release(psf);
1741 
1742  hr = IInputObject_UIActivateIO(pio, TRUE, &msg_a);
1743  todo_wine ok(hr == S_OK, "Got 0x%08x\n", hr);
1744 
1745  hr = IInputObject_HasFocusIO(pio);
1746  todo_wine ok(hr == S_OK, "Got 0x%08x\n", hr);
1747 
1748  hr = IInputObject_UIActivateIO(pio, FALSE, &msg_a);
1749  todo_wine ok(hr == S_OK, "Got 0x%08x\n", hr);
1750 
1751  hr = IInputObject_HasFocusIO(pio);
1752  todo_wine ok(hr == S_OK, "Got 0x%08x\n", hr);
1753 
1754  hr = IInputObject_TranslateAcceleratorIO(pio, &msg_a);
1755  if(hr == S_OK)
1756  key_accels = supported_key_accels_mode1;
1757  else
1758  key_accels = supported_key_accels_mode2;
1759 
1760  for(i = 0; i < 0x100; i++)
1761  {
1762  BOOL found = FALSE;
1763  UINT j;
1764  for(j = 0; key_accels[j] != 0; j++)
1765  if(key_accels[j] == i)
1766  {
1767  found = TRUE;
1768  break;
1769  }
1770 
1771  msg_a.wParam = i;
1772  process_msgs();
1773  hr = IInputObject_TranslateAcceleratorIO(pio, &msg_a);
1774  todo_wine ok(hr == (found ? S_OK : S_FALSE), "Got 0x%08x (%04x)\n", hr, i);
1775  if(i == VK_F5)
1776  Sleep(1000); /* Needed for w2k8 (64bit) */
1777  }
1778 
1779  process_msgs();
1780 
1781  IInputObject_Release(pio);
1782  IExplorerBrowser_Destroy(peb);
1783  IExplorerBrowser_Release(peb);
1784 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IInputObject_TranslateAcceleratorIO(p, a)
Definition: shlobj.h:633
#define TRUE
Definition: types.h:120
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
#define VK_F5
Definition: winuser.h:2234
#define VK_F6
Definition: winuser.h:2235
HRESULT hr
Definition: shlfolder.c:183
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:445
#define VK_LEFT
Definition: winuser.h:2199
UINT_PTR WPARAM
Definition: windef.h:207
#define VK_TAB
Definition: winuser.h:2174
#define VK_DOWN
Definition: winuser.h:2202
#define VK_PRIOR
Definition: winuser.h:2195
static void process_msgs(void)
Definition: ebrowser.c:121
#define E_FAIL
Definition: ddrawi.h:102
#define VK_RETURN
Definition: winuser.h:2176
#define VK_NEXT
Definition: winuser.h:2196
#define IInputObject_UIActivateIO(p, a, b)
Definition: shlobj.h:631
#define IInputObject_Release(p)
Definition: shlobj.h:629
#define VK_F10
Definition: winuser.h:2239
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define VK_HOME
Definition: winuser.h:2198
#define VK_UP
Definition: winuser.h:2200
unsigned int BOOL
Definition: ntddk_ex.h:94
#define VK_F2
Definition: winuser.h:2231
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
#define WM_KEYDOWN
Definition: winuser.h:1697
static HWND hwnd
Definition: ebrowser.c:80
#define VK_DELETE
Definition: winuser.h:2208
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define IInputObject_HasFocusIO(p)
Definition: shlobj.h:632
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
LONG HRESULT
Definition: typedefs.h:77
#define todo_wine
Definition: test.h:154
#define VK_BACK
Definition: winuser.h:2173
#define VK_RIGHT
Definition: winuser.h:2201
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
unsigned int UINT
Definition: ndis.h:50
#define VK_F1
Definition: winuser.h:2230
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
#define win_skip
Definition: test.h:141
#define VK_END
Definition: winuser.h:2197

Referenced by START_TEST().

◆ test_instantiate_control()

static BOOL test_instantiate_control ( void  )
static

Definition at line 1786 of file ebrowser.c.

1787 {
1788  IExplorerBrowser *peb;
1789  HRESULT hr;
1790 
1791  hr = ebrowser_instantiate(&peb);
1792  ok(hr == S_OK || hr == REGDB_E_CLASSNOTREG, "Got (0x%08x)\n", hr);
1793  if(FAILED(hr))
1794  return FALSE;
1795 
1796  IExplorerBrowser_Release(peb);
1797  return TRUE;
1798 }
#define TRUE
Definition: types.h:120
HRESULT hr
Definition: shlfolder.c:183
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
#define REGDB_E_CLASSNOTREG
Definition: winerror.h:2696
#define ok(value,...)
Definition: atltest.h:57
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97

Referenced by START_TEST().

◆ test_navigation()

static void test_navigation ( void  )
static

Definition at line 1397 of file ebrowser.c.

1398 {
1399  IExplorerBrowser *peb, *peb2;
1400  IFolderView *pfv;
1401  IShellItem *psi;
1402  IShellFolder *psf;
1403  LPITEMIDLIST pidl_current, pidl_child;
1404  DWORD cookie, cookie2;
1405  HRESULT hr;
1406  LONG lres;
1407  WCHAR current_path[MAX_PATH];
1408  WCHAR child_path[MAX_PATH];
1409  static const WCHAR testfolderW[] =
1410  {'w','i','n','e','t','e','s','t','f','o','l','d','e','r','\0'};
1411 
1412  ok(pSHParseDisplayName != NULL, "pSHParseDisplayName unexpectedly missing.\n");
1413  ok(pSHCreateShellItem != NULL, "pSHCreateShellItem unexpectedly missing.\n");
1414 
1415  GetCurrentDirectoryW(MAX_PATH, current_path);
1416  if(!current_path[0])
1417  {
1418  skip("Failed to create test-directory.\n");
1419  return;
1420  }
1421 
1422  lstrcpyW(child_path, current_path);
1423  myPathAddBackslashW(child_path);
1424  lstrcatW(child_path, testfolderW);
1425 
1426  CreateDirectoryW(child_path, NULL);
1427 
1428  pSHParseDisplayName(current_path, NULL, &pidl_current, 0, NULL);
1429  pSHParseDisplayName(child_path, NULL, &pidl_child, 0, NULL);
1430 
1431  ebrowser_instantiate(&peb);
1432  ebrowser_initialize(peb);
1433 
1434  ebrowser_instantiate(&peb2);
1435  ebrowser_initialize(peb2);
1436 
1437  /* Set up our IExplorerBrowserEvents implementation */
1439 
1440  IExplorerBrowser_Advise(peb, &ebev.IExplorerBrowserEvents_iface, &cookie);
1441  IExplorerBrowser_Advise(peb2, &ebev.IExplorerBrowserEvents_iface, &cookie2);
1442 
1443  /* These should all fail */
1444  test_browse_pidl(peb, &ebev, 0, SBSP_ABSOLUTE | SBSP_RELATIVE, E_FAIL, 0, 0, 0, 0);
1445  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_ABSOLUTE | SBSP_RELATIVE, E_FAIL, 0, 0, 0, 0);
1446  test_browse_pidl(peb, &ebev, 0, SBSP_ABSOLUTE, E_INVALIDARG, 0, 0, 0, 0);
1447  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_ABSOLUTE, E_INVALIDARG, 0, 0, 0, 0);
1448  test_browse_pidl(peb, &ebev, 0, SBSP_RELATIVE, E_FAIL, 0, 0, 0, 0);
1449  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_RELATIVE, E_FAIL, 0, 0, 0, 0);
1450  test_browse_pidl(peb, &ebev, 0, SBSP_PARENT, E_FAIL, 0, 0, 0, 0);
1451  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_PARENT, E_FAIL, 0, 0, 0, 0);
1452  test_browse_pidl(peb, &ebev, 0, SBSP_NAVIGATEFORWARD, E_FAIL, 0, 0, 0, 0);
1453  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_NAVIGATEFORWARD, E_FAIL, 0, 0, 0, 0);
1454  test_browse_pidl(peb, &ebev, 0, SBSP_NAVIGATEBACK, E_FAIL, 0, 0, 0, 0);
1455  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_NAVIGATEBACK, E_FAIL, 0, 0, 0, 0);
1456 
1457  /* "The first browse is synchronous" */
1458  test_browse_pidl(peb, &ebev, pidl_child, SBSP_ABSOLUTE, S_OK, 1, 1, 0, 1);
1459  test_browse_pidl_sb(peb2, &ebev, pidl_child, SBSP_ABSOLUTE, S_OK, 1, 1, 0, 1);
1460 
1461  /* Navigate empty history */
1462  test_browse_pidl(peb, &ebev, 0, SBSP_NAVIGATEFORWARD, S_OK, 0, 0, 0, 0);
1463  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_NAVIGATEFORWARD, S_OK, 0, 0, 0, 0);
1464  test_browse_pidl(peb, &ebev, 0, SBSP_NAVIGATEBACK, S_OK, 0, 0, 0, 0);
1465  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_NAVIGATEBACK, S_OK, 0, 0, 0, 0);
1466 
1467  /* Navigate history */
1468  test_browse_pidl(peb, &ebev, 0, SBSP_PARENT, S_OK, 1, 1, 0, 1);
1469  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_PARENT, S_OK, 1, 1, 0, 1);
1470  test_browse_pidl(peb, &ebev, 0, SBSP_NAVIGATEBACK, S_OK, 1, 1, 0, 1);
1471  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_NAVIGATEBACK, S_OK, 1, 1, 0, 1);
1472  test_browse_pidl(peb, &ebev, 0, SBSP_NAVIGATEFORWARD, S_OK, 1, 1, 0, 1);
1473  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_NAVIGATEFORWARD, S_OK, 1, 1, 0, 1);
1474  test_browse_pidl(peb, &ebev, 0, SBSP_ABSOLUTE, S_OK, 0, 0, 0, 0);
1475  test_browse_pidl_sb(peb2, &ebev, 0, SBSP_ABSOLUTE, S_OK, 0, 0, 0, 0);
1476 
1477  /* Relative navigation */
1478  test_browse_pidl(peb, &ebev, pidl_current, SBSP_ABSOLUTE, S_OK, 1, 0, 0, 1);
1479  test_browse_pidl_sb(peb2, &ebev, pidl_current, SBSP_ABSOLUTE, S_OK, 1, 0, 0, 1);
1480 
1481  hr = IExplorerBrowser_GetCurrentView(peb, &IID_IFolderView, (void**)&pfv);
1482  ok(hr == S_OK, "Got 0x%08x\n", hr);
1483  if(SUCCEEDED(hr))
1484  {
1485  LPITEMIDLIST pidl_relative;
1486 
1487  hr = IFolderView_GetFolder(pfv, &IID_IShellFolder, (void**)&psf);
1488  ok(hr == S_OK, "Got 0x%08x\n", hr);
1489  hr = IShellFolder_ParseDisplayName(psf, NULL, NULL, (LPWSTR)testfolderW,
1490  NULL, &pidl_relative, NULL);
1491  ok(hr == S_OK, "Got 0x%08x\n", hr);
1492 
1493  /* Browsing to another location here before using the
1494  * pidl_relative would make ExplorerBrowser in Windows 7 show a
1495  * not-available dialog. Also, passing a relative pidl without
1496  * specifying SBSP_RELATIVE makes it look for the pidl on the
1497  * desktop
1498  */
1499 
1500  test_browse_pidl(peb, &ebev, pidl_relative, SBSP_RELATIVE, S_OK, 1, 1, 0, 1);
1501  test_browse_pidl_sb(peb2, &ebev, pidl_relative, SBSP_RELATIVE, S_OK, 1, 1, 0, 1);
1502 
1503  ILFree(pidl_relative);
1504  IShellFolder_Release(psf);
1505  IFolderView_Release(pfv);
1506  }
1507 
1508  /* misc **/
1509  test_browse_pidl(peb, &ebev, NULL, SBSP_ABSOLUTE, S_OK, 0, 0, 0, 0);
1510  test_browse_pidl_sb(peb2, &ebev, NULL, SBSP_ABSOLUTE, S_OK, 0, 0, 0, 0);
1511  test_browse_pidl(peb, &ebev, NULL, SBSP_DEFBROWSER, S_OK, 0, 0, 0, 0);
1512  test_browse_pidl_sb(peb2, &ebev, NULL, SBSP_DEFBROWSER, S_OK, 0, 0, 0, 0);
1513  test_browse_pidl(peb, &ebev, pidl_current, SBSP_SAMEBROWSER, S_OK, 1, 1, 0, 1);
1514  test_browse_pidl_sb(peb2, &ebev, pidl_current, SBSP_SAMEBROWSER, S_OK, 1, 1, 0, 1);
1515  test_browse_pidl(peb, &ebev, pidl_current, SBSP_SAMEBROWSER, S_OK, 1, 0, 0, 1);
1516  test_browse_pidl_sb(peb2, &ebev, pidl_current, SBSP_SAMEBROWSER, S_OK, 1, 0, 0, 1);
1517 
1518  test_browse_pidl(peb, &ebev, pidl_current, SBSP_EXPLOREMODE, E_INVALIDARG, 0, 0, 0, 0);
1519  test_browse_pidl_sb(peb2, &ebev, pidl_current, SBSP_EXPLOREMODE, E_INVALIDARG, 0, 0, 0, 0);
1520  test_browse_pidl(peb, &ebev, pidl_current, SBSP_OPENMODE, S_OK, 1, 0, 0, 1);
1521  test_browse_pidl_sb(peb2, &ebev, pidl_current, SBSP_OPENMODE, S_OK, 1, 0, 0, 1);
1522 
1523  /* SBSP_NEWBROWSER will return E_INVALIDARG, claims MSDN, but in
1524  * reality it works as one would expect (Windows 7 only?).
1525  */
1526  if(0)
1527  {
1528  IExplorerBrowser_BrowseToIDList(peb, NULL, SBSP_NEWBROWSER);
1529  }
1530 
1531  hr = IExplorerBrowser_Unadvise(peb, cookie);
1532  ok(hr == S_OK, "Got 0x%08x\n", hr);
1533  IExplorerBrowser_Destroy(peb);
1534  process_msgs();
1535  hr = IExplorerBrowser_Unadvise(peb2, cookie2);
1536  ok(hr == S_OK, "Got 0x%08x\n", hr);
1537  IExplorerBrowser_Destroy(peb2);
1538  process_msgs();
1539 
1540  /* Attempt browsing after destroyed */
1541  test_browse_pidl(peb, &ebev, pidl_child, SBSP_ABSOLUTE, HRESULT_FROM_WIN32(ERROR_BUSY), 0, 0, 0, 0);
1542  test_browse_pidl_sb(peb2, &ebev, pidl_child, SBSP_ABSOLUTE, HRESULT_FROM_WIN32(ERROR_BUSY), 0, 0, 0, 0);
1543 
1544  lres = IExplorerBrowser_Release(peb);
1545  ok(lres == 0, "Got lres %d\n", lres);
1546  lres = IExplorerBrowser_Release(peb2);
1547  ok(lres == 0, "Got lres %d\n", lres);
1548 
1549  /******************************************/
1550  /* Test some options that affect browsing */
1551 
1552  ebrowser_instantiate(&peb);
1553  hr = IExplorerBrowser_Advise(peb, &ebev.IExplorerBrowserEvents_iface, &cookie);
1554  ok(hr == S_OK, "Got 0x%08x\n", hr);
1555  hr = IExplorerBrowser_SetOptions(peb, EBO_NAVIGATEONCE);
1556  ok(hr == S_OK, "got (0x%08x)\n", hr);
1557  ebrowser_initialize(peb);
1558 
1559  test_browse_pidl(peb, &ebev, pidl_current, 0, S_OK, 1, 1, 0, 1);
1560  test_browse_pidl(peb, &ebev, pidl_current, 0, E_FAIL, 0, 0, 0, 0);
1561 
1562  hr = IExplorerBrowser_SetOptions(peb, 0);
1563  ok(hr == S_OK, "got (0x%08x)\n", hr);
1564 
1565  test_browse_pidl(peb, &ebev, pidl_current, 0, S_OK, 1, 0, 0, 1);
1566  test_browse_pidl(peb, &ebev, pidl_current, 0, S_OK, 1, 0, 0, 1);
1567 
1568  /* Difference in behavior lies where? */
1569  hr = IExplorerBrowser_SetOptions(peb, EBO_ALWAYSNAVIGATE);
1570  ok(hr == S_OK, "got (0x%08x)\n", hr);
1571 
1572  test_browse_pidl(peb, &ebev, pidl_current, 0, S_OK, 1, 0, 0, 1);
1573  test_browse_pidl(peb, &ebev, pidl_current, 0, S_OK, 1, 0, 0, 1);
1574 
1575  hr = IExplorerBrowser_Unadvise(peb, cookie);
1576  ok(hr == S_OK, "Got 0x%08x\n", hr);
1577 
1578  IExplorerBrowser_Destroy(peb);
1579  lres = IExplorerBrowser_Release(peb);
1580  ok(lres == 0, "Got lres %d\n", lres);
1581 
1582  /* BrowseToObject tests */
1583  ebrowser_instantiate(&peb);
1584  ebrowser_initialize(peb);
1585 
1586  /* Browse to the desktop by passing an IShellFolder */
1587  hr = SHGetDesktopFolder(&psf);
1588  ok(hr == S_OK, "Got 0x%08x\n", hr);
1589  if(SUCCEEDED(hr))
1590  {
1591  hr = IExplorerBrowser_BrowseToObject(peb, (IUnknown*)psf, SBSP_DEFBROWSER);
1592  ok(hr == S_OK, "got (0x%08x)\n", hr);
1593  if(hr == S_OK) process_msgs();
1594 
1595  IShellFolder_Release(psf);
1596  }
1597 
1598  /* Browse to the current directory by passing a ShellItem */
1599  hr = pSHCreateShellItem(NULL, NULL, pidl_current, &psi);
1600  ok(hr == S_OK, "Got 0x%08x\n", hr);
1601  if(SUCCEEDED(hr))
1602  {
1603  hr = IExplorerBrowser_BrowseToObject(peb, (IUnknown*)psi, SBSP_DEFBROWSER);
1604  ok(hr == S_OK, "got (0x%08x)\n", hr);
1605  process_msgs();
1606 
1607  IShellItem_Release(psi);
1608  }
1609 
1610  IExplorerBrowser_Destroy(peb);
1611  lres = IExplorerBrowser_Release(peb);
1612  ok(lres == 0, "Got lres %d\n", lres);
1613 
1614  /* Cleanup */
1615  RemoveDirectoryW(child_path);
1616  ILFree(pidl_current);
1617  ILFree(pidl_child);
1618 }
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: dir.c:90
static IExplorerBrowserEventsImpl ebev
Definition: ebrowser.c:140
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:925
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
HRESULT hr
Definition: shlfolder.c:183
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
Definition: ebrowser.c:103
IExplorerBrowserEvents IExplorerBrowserEvents_iface
Definition: ebrowser.c:135
#define GetCurrentDirectoryW(x, y)
Definition: compat.h:413
static const IExplorerBrowserEventsVtbl ebevents
Definition: ebrowser.c:196
static void process_msgs(void)
Definition: ebrowser.c:121
#define E_FAIL
Definition: ddrawi.h:102
#define test_browse_pidl_sb(peb, ebev, pidl, uFlags, hr, p, cr, f, co)
Definition: ebrowser.c:1394
#define ERROR_BUSY
Definition: dderror.h:12
long LONG
Definition: pedump.c:60
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
Definition: dir.c:732
#define test_browse_pidl(peb, ebev, pidl, uFlags, hr, p, cr, f, co)
Definition: ebrowser.c:1364
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:406
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
WCHAR * LPWSTR
Definition: xmlstorage.h:184
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
static LPWSTR myPathAddBackslashW(LPWSTR lpszPath)
Definition: ebrowser.c:1327
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by START_TEST().

◆ test_QueryInterface()

static void test_QueryInterface ( void  )
static

Definition at line 558 of file ebrowser.c.

559 {
560  IExplorerBrowser *peb;
561  IUnknown *punk;
562  HRESULT hr;
563  LONG lres;
564 
565  hr = ebrowser_instantiate(&peb);
566  ok(hr == S_OK, "Got 0x%08x\n", hr);
567 
568 #define test_qinterface(iid, exp) \
569  do { \
570  hr = IExplorerBrowser_QueryInterface(peb, &iid, (void**)&punk); \
571  ok(hr == exp, "(%s:)Expected (0x%08x), got (0x%08x)\n", \
572  #iid, exp, hr); \
573  if(SUCCEEDED(hr)) IUnknown_Release(punk); \
574  } while(0)
575 
577  test_qinterface(IID_IExplorerBrowser, S_OK);
578  test_qinterface(IID_IShellBrowser, S_OK);
580  test_qinterface(IID_ICommDlgBrowser, S_OK);
581  test_qinterface(IID_ICommDlgBrowser2, S_OK);
582  test_qinterface(IID_ICommDlgBrowser3, S_OK);
583  todo_wine test_qinterface(IID_IServiceProvider, S_OK);
589  test_qinterface(IID_IViewObjectEx, E_NOINTERFACE);
591  test_qinterface(IID_IShellView, E_NOINTERFACE);
592  test_qinterface(IID_INameSpaceTreeControlEvents, E_NOINTERFACE);
593 
594 #undef test_qinterface
595 
596  lres = IExplorerBrowser_Release(peb);
597  ok(lres == 0, "Got %d\n", lres);
598 }
const GUID IID_IViewObject
#define E_NOINTERFACE
Definition: winerror.h:2364
HRESULT hr
Definition: shlfolder.c:183
const GUID IID_IConnectionPointContainer
long LONG
Definition: pedump.c:60
const GUID IID_IOleObject
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
const IID IID_IObjectWithSite
#define todo_wine
Definition: test.h:154
const GUID IID_IConnectionPoint
#define S_OK
Definition: intsafe.h:59
const GUID IID_IViewObject2
#define ok(value,...)
Definition: atltest.h:57
#define test_qinterface(iid, exp)
const GUID IID_IOleWindow
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97

Referenced by START_TEST().

◆ test_SB_misc()

static void test_SB_misc ( void  )
static

Definition at line 600 of file ebrowser.c.

601 {
602  IExplorerBrowser *peb;
603  IShellBrowser *psb;
604  IUnknown *punk;
605  HRESULT hr;
606  HWND retHwnd;
607  LRESULT lres;
608  LONG ref;
609 
610  ebrowser_instantiate(&peb);
611  hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
612  ok(hr == S_OK, "Got 0x%08x\n", hr);
613  if(FAILED(hr))
614  {
615  skip("Failed to get IShellBrowser interface.\n");
616  return;
617  }
618 
619  /* Some unimplemented methods */
620  retHwnd = (HWND)0xdeadbeef;
621  hr = IShellBrowser_GetControlWindow(psb, FCW_TOOLBAR, &retHwnd);
622  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
623  ok(retHwnd == NULL || broken(retHwnd == (HWND)0xdeadbeef), "got %p\n", retHwnd);
624 
625  retHwnd = (HWND)0xdeadbeef;
626  hr = IShellBrowser_GetControlWindow(psb, FCW_STATUS, &retHwnd);
627  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
628  ok(retHwnd == NULL || broken(retHwnd == (HWND)0xdeadbeef), "got %p\n", retHwnd);
629 
630  retHwnd = (HWND)0xdeadbeef;
631  hr = IShellBrowser_GetControlWindow(psb, FCW_TREE, &retHwnd);
632  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
633  ok(retHwnd == NULL || broken(retHwnd == (HWND)0xdeadbeef), "got %p\n", retHwnd);
634 
635  retHwnd = (HWND)0xdeadbeef;
636  hr = IShellBrowser_GetControlWindow(psb, FCW_PROGRESS, &retHwnd);
637  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
638  ok(retHwnd == NULL || broken(retHwnd == (HWND)0xdeadbeef), "got %p\n", retHwnd);
639 
640  /* ::InsertMenuSB */
641  hr = IShellBrowser_InsertMenusSB(psb, NULL, NULL);
642  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
643 
644  /* ::RemoveMenusSB */
645  hr = IShellBrowser_RemoveMenusSB(psb, NULL);
646  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
647 
648  /* ::SetMenuSB */
649  hr = IShellBrowser_SetMenuSB(psb, NULL, NULL, NULL);
650  ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
651 
652  /***** Before EB::Initialize *****/
653 
654  /* ::GetWindow */
655  retHwnd = (HWND)0xDEADBEEF;
656  hr = IShellBrowser_GetWindow(psb, &retHwnd);
657  ok(hr == E_FAIL, "got (0x%08x)\n", hr);
658  ok(retHwnd == (HWND)0xDEADBEEF, "HWND overwritten\n");
659 
660  todo_wine
661  {
662 
663  /* ::SendControlMsg */
664  lres = 0xDEADBEEF;
665  hr = IShellBrowser_SendControlMsg(psb, FCW_STATUS, 0, 0, 0, &lres);
666  ok(hr == S_OK, "got (0x%08x)\n", hr);
667  ok(lres == 0, "lres was %ld\n", lres);
668 
669  lres = 0xDEADBEEF;
670  hr = IShellBrowser_SendControlMsg(psb, FCW_TOOLBAR, TB_CHECKBUTTON,
671  FCIDM_TB_SMALLICON, TRUE, &lres);
672  ok(hr == S_OK, "got (0x%08x)\n", hr);
673  ok(lres == 0, "lres was %ld\n", lres);
674 
675  hr = IShellBrowser_SendControlMsg(psb, FCW_STATUS, 0, 0, 0, NULL);
676  ok(hr == S_OK, "got (0x%08x)\n", hr);
677 
678  hr = IShellBrowser_SendControlMsg(psb, FCW_TREE, 0, 0, 0, NULL);
679  ok(hr == S_OK, "got (0x%08x)\n", hr);
680 
681  hr = IShellBrowser_SendControlMsg(psb, FCW_PROGRESS, 0, 0, 0, NULL);
682  ok(hr == S_OK, "got (0x%08x)\n", hr);
683  }
684 
685  /* ::QueryActiveShellView */
686  hr = IShellBrowser_QueryActiveShellView(psb, (IShellView**)&punk);
687  ok(hr == E_FAIL, "got (0x%08x)\n", hr);
688 
689  /* Initialize ExplorerBrowser */
690  ebrowser_initialize(peb);
691 
692  /***** After EB::Initialize *****/
693 
694  /* ::GetWindow */
695  hr = IShellBrowser_GetWindow(psb, &retHwnd);
696  ok(hr == S_OK, "got (0x%08x)\n", hr);
697  ok(GetParent(retHwnd) == hwnd, "The HWND returned is not our child.\n");
698 
699  todo_wine
700  {
701  /* ::SendControlMsg */
702  hr = IShellBrowser_SendControlMsg(psb, FCW_STATUS, 0, 0, 0, NULL);
703  ok(hr == S_OK, "got (0x%08x)\n", hr);
704 
705  lres = 0xDEADBEEF;
706  hr = IShellBrowser_SendControlMsg(psb, FCW_TOOLBAR, 0, 0, 0, &lres);
707  ok(hr == S_OK, "got (0x%08x)\n", hr);
708  ok(lres == 0, "lres was %ld\n", lres);
709 
710  lres = 0xDEADBEEF;
711  hr = IShellBrowser_SendControlMsg(psb, FCW_STATUS, 0, 0, 0, &lres);
712  ok(hr == S_OK, "got (0x%08x)\n", hr);
713  ok(lres == 0, "lres was %ld\n", lres);
714 
715  lres = 0xDEADBEEF;
716  hr = IShellBrowser_SendControlMsg(psb, 1234, 0, 0, 0, &lres);
717  ok(hr == S_OK, "got (0x%08x)\n", hr);
718  ok(lres == 0, "lres was %ld\n", lres);
719 
720  /* Returns S_OK */
721  hr = IShellBrowser_SetStatusTextSB(psb, NULL);
722  ok(hr == S_OK, "got (0x%08x)\n", hr);
723 
724  hr = IShellBrowser_ContextSensitiveHelp(psb, FALSE);
725  ok(hr == S_OK, "got (0x%08x)\n", hr);
726 
727  hr = IShellBrowser_EnableModelessSB(psb, TRUE);
728  ok(hr == S_OK, "got (0x%08x)\n", hr);
729 
730  hr = IShellBrowser_SetToolbarItems(psb, NULL, 1, 1);
731  ok(hr == S_OK, "got (0x%08x)\n", hr);
732  }
733 
734  hr = IShellBrowser_QueryActiveShellView(psb, (IShellView**)&punk);
735  ok(hr == E_FAIL, "got (0x%08x)\n", hr);
736 
737  IShellBrowser_Release(psb);
738  IExplorerBrowser_Destroy(peb);
739  IExplorerBrowser_Release(peb);
740 
741  /* Browse to the desktop. */
742  ebrowser_instantiate(&peb);
743  ebrowser_initialize(peb);
744  IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
745 
746  process_msgs();
748  ok(hr == S_OK, "got (0x%08x)\n", hr);
749  process_msgs();
750 
751  /****** After Browsing *****/
752 
753  hr = IShellBrowser_QueryActiveShellView(psb, (IShellView**)&punk);
754  ok(hr == S_OK, "got (0x%08x)\n", hr);
755  if(SUCCEEDED(hr)) IUnknown_Release(punk);
756 
757  IShellBrowser_Release(psb);
758  IExplorerBrowser_Destroy(peb);
759  ref = IExplorerBrowser_Release(peb);
760  ok(ref == 0, "Got %d\n", ref);
761 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
HRESULT hr
Definition: shlfolder.c:183
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
Definition: ebrowser.c:103
HANDLE HWND
Definition: compat.h:13
static void process_msgs(void)
Definition: ebrowser.c:121
#define E_FAIL
Definition: ddrawi.h:102
Definition: send.c:47
long LONG
Definition: pedump.c:60
GLenum GLint ref
Definition: glext.h:6028
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
#define todo_wine
Definition: test.h:154
#define TB_CHECKBUTTON
Definition: commctrl.h:1015
#define broken(x)
Definition: _sntprintf.h:21
HWND WINAPI GetParent(_In_ HWND)
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99
#define FCIDM_TB_SMALLICON
Definition: shresdef.h:765
#define skip(...)
Definition: atltest.h:64
LONG_PTR LRESULT
Definition: windef.h:209
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static HRESULT ebrowser_browse_to_desktop(IExplorerBrowser *peb)
Definition: ebrowser.c:110

Referenced by START_TEST().

◆ test_SetSite()

static void test_SetSite ( void  )
static

Definition at line 920 of file ebrowser.c.

921 {
922  IExplorerBrowser *peb;
927  HRESULT hr;
928  LONG ref;
929  UINT i;
930  struct services expected[] = {
931  /* Win 7 */
932  { &SID_STopLevelBrowser, &IID_ICommDlgBrowser2, 0, cdbimpl },
933  { &SID_STopLevelBrowser, &IID_IShellBrowserService, 0, NULL },
934  { &SID_STopLevelBrowser, &IID_IShellBrowser, 0, NULL },
935  { &SID_STopLevelBrowser, &IID_UnknownInterface8, 0, NULL },
936  { &SID_STopLevelBrowser, &IID_IConnectionPointContainer, 0, NULL },
937  { &SID_STopLevelBrowser, &IID_IProfferService, 0, NULL },
938  { &SID_STopLevelBrowser, &IID_UnknownInterface9, 0, NULL },
939  { &SID_ExplorerPaneVisibility, &IID_IExplorerPaneVisibility, 0, epvimpl },
940  { &SID_SExplorerBrowserFrame, &IID_ICommDlgBrowser2, 0, cdbimpl },
941  { &SID_SExplorerBrowserFrame, &IID_ICommDlgBrowser3, 0, cdbimpl },
942  { &IID_IFileDialogPrivate, &IID_IFileDialogPrivate, 0, NULL },
943  { &IID_IFileDialogPrivate, &IID_IFileDialog, 0, NULL },
944  { &IID_IShellTaskScheduler, &IID_IShellTaskScheduler, 0, NULL },
945  { &IID_IShellTaskScheduler, &IID_UnknownInterface2, 0, NULL },
946  { &IID_IWebbrowserApp, &IID_IConnectionPointContainer, 0, NULL },
947  { &IID_IFolderView, &IID_IFolderView, 0, NULL },
948  { &IID_ILayoutModifier, &IID_ILayoutModifier, 0, NULL },
949  { &IID_IBrowserSettings, &IID_IBrowserSettings, 0, NULL },
950  { &CLSID_Desktop, &IID_IUnknown, 0, NULL },
951  { &IID_UnknownInterface1, &IID_UnknownInterface1, 0, NULL },
952  { &IID_UnknownInterface3, &IID_UnknownInterface3, 0, NULL },
953  { &IID_UnknownInterface4, &IID_IUnknown, 0, NULL },
954  { &IID_UnknownInterface6, &IID_UnknownInterface7, 0, NULL },
955  { &IID_IBrowserWithActivationNotification, &IID_IBrowserWithActivationNotification, 0, NULL },
956  /* Win 8 */
957  { &IID_ICommDlgBrowser, &IID_UnknownInterface11, 0, NULL },
958  { &IID_ICommDlgBrowser, &IID_UnknownInterface12, 0, NULL },
959  { &IID_ICommDlgBrowser, &IID_UnknownInterface20, 0, NULL },
960  { &IID_UnknownInterface13, &IID_IUnknown, 0, NULL },
961  { &IID_UnknownInterface13, &IID_UnknownInterface13, 0, NULL },
962  { &IID_UnknownInterface13, &IID_UnknownInterface18, 0, NULL },
963  { &IID_UnknownInterface14, &IID_UnknownInterface14, 0, NULL },
964  { &IID_UnknownInterface15, &IID_UnknownInterface15, 0, NULL },
965  { &IID_UnknownInterface16, &IID_UnknownInterface16, 0, NULL },
966  { &IID_UnknownInterface17, &IID_UnknownInterface17, 0, NULL },
967  { &IID_UnknownInterface17, &IID_UnknownInterface19, 0, NULL },
968  /* Win 10 */
969  { &IID_UnknownInterface21, &IID_UnknownInterface21, 0, NULL },
970  { &IID_UnknownInterface21, &IID_IFileDialog, 0, NULL },
971  { &IID_UnknownInterface22, &IID_UnknownInterface22, 0, NULL },
972  { &IID_UnknownInterface23, &IID_UnknownInterface23, 0, NULL },
973  { &IID_UnknownInterface24, &IID_UnknownInterface24, 0, NULL },
974  { &IID_UnknownInterface24, &IID_IFileDialog, 0, NULL },
975 
976  /* Other services requested in Vista, Windows 2008 but not in Windows 7 */
977  { &IID_IBrowserSettings_Vista, &IID_IBrowserSettings_Vista, 0, NULL },
978  { &IID_IFolderTypeModifier, &IID_IFolderTypeModifier, 0, NULL },
979  { &SID_STopLevelBrowser, &IID_IShellBrowserService_Vista, 0, NULL },
980  { &IID_UnknownInterface5, &IID_UnknownInterface5, 0, NULL },
981  { &IID_ICommDlgBrowser, &IID_ICommDlgBrowser, 0, cdbimpl },
982  { &IID_IFileDialogPrivate_Vista,&IID_IFileDialogPrivate_Vista, 0, NULL},
983  { &IID_IFileDialogPrivate_Vista,&IID_IFileDialog, 0, NULL},
984  { &IID_UnknownInterface10, &IID_IHTMLDocument2, 0, NULL},
985  { &SID_SMenuBandParent, &IID_IOleCommandTarget, 0, NULL},
986  { &SID_SMenuBandParent, &IID_IShellMenu, 0, NULL},
987  { &SID_STopLevelBrowser, &IID_IOleWindow, 0, NULL},
988  { &SID_SMenuPopup, &IID_IOleCommandTarget, 0, NULL},
989  { NULL }
990  };
991 
992  ebrowser_instantiate(&peb);
993  IExplorerBrowser_SetOptions(peb, EBO_SHOWFRAMES);
994 
995  hr = IExplorerBrowser_QueryInterface(peb, &IID_IObjectWithSite, (void**)&pow);
996  ok(hr == S_OK, "Got 0x%08x\n", hr);
997  if(SUCCEEDED(hr))
998  {
999  spimpl->interfaces = expected;
1000 
1001  hr = IObjectWithSite_SetSite(pow, (IUnknown*)&spimpl->IServiceProvider_iface);
1002  ok(hr == S_OK, "Got 0x%08x\n", hr);
1003 
1004  if(FAILED(hr))
1005  IObjectWithSite_Release(pow);
1006  }
1007 
1008  if(FAILED(hr))
1009  {
1010  skip("Failed to set site.\n");
1011 
1012  IServiceProvider_Release(&spimpl->IServiceProvider_iface);
1013  ICommDlgBrowser3_Release(&cdbimpl->ICommDlgBrowser3_iface);
1014  IExplorerPaneVisibility_Release(&epvimpl->IExplorerPaneVisibility_iface);
1015  IExplorerBrowser_Destroy(peb);
1016  ref = IExplorerBrowser_Release(peb);
1017  ok(ref == 0, "Got ref %d\n", ref);
1018 
1019  return;
1020  }
1021 
1022  ShowWindow(hwnd, TRUE);
1023  ebrowser_initialize(peb);
1025 
1026  for(i = 0; i < 10; i++)
1027  {
1028  Sleep(100);
1029  process_msgs();
1030  }
1031  ShowWindow(hwnd, FALSE);
1032 
1033  /* ICommDlgBrowser3 */
1034  ok(!cdbimpl->OnDefaultCommand, "Got %d\n", cdbimpl->OnDefaultCommand);
1035  todo_wine ok(cdbimpl->OnStateChange, "Got %d\n", cdbimpl->OnStateChange);
1036  ok(cdbimpl->IncludeObject, "Got %d\n", cdbimpl->IncludeObject);
1037  ok(!cdbimpl->Notify, "Got %d\n", cdbimpl->Notify);
1038  ok(!cdbimpl->GetDefaultMenuText, "Got %d\n", cdbimpl->GetDefaultMenuText);
1039  todo_wine ok(cdbimpl->GetViewFlags, "Got %d\n", cdbimpl->GetViewFlags);
1040  ok(!cdbimpl->OnColumnClicked, "Got %d\n", cdbimpl->OnColumnClicked);
1041  ok(!cdbimpl->GetCurrentFilter, "Got %d\n", cdbimpl->GetCurrentFilter);
1042  todo_wine ok(cdbimpl->OnPreviewCreated, "Got %d\n", cdbimpl->OnPreviewCreated);
1043 
1044  /* IExplorerPaneVisibility */
1045  ok(epvimpl->np, "Got %d\n", epvimpl->np);
1046  todo_wine ok(epvimpl->cp, "Got %d\n", epvimpl->cp);
1047  todo_wine ok(epvimpl->cp_o, "Got %d\n", epvimpl->cp_o);
1048  todo_wine ok(epvimpl->cp_v, "Got %d\n", epvimpl->cp_v);
1049  todo_wine ok(epvimpl->dp, "Got %d\n", epvimpl->dp);
1050  todo_wine ok(epvimpl->pp, "Got %d\n", epvimpl->pp);
1051  ok(!epvimpl->qp, "Got %d\n", epvimpl->qp);
1052  ok(!epvimpl->aqp, "Got %d\n", epvimpl->aqp);
1053  ok(!epvimpl->unk, "Got %d\n", epvimpl->unk);
1054 
1055  if(0)
1056  {
1057  for(i = 0; expected[i].service != NULL; i++)
1058  if(!expected[i].count) trace("count %d was 0.\n", i);
1059  }
1060 
1061  /* Test when IServiceProvider is released. */
1062  IServiceProvider_AddRef(&spimpl->IServiceProvider_iface);
1063  ref = IServiceProvider_Release(&spimpl->IServiceProvider_iface);
1064  ok(ref == 2, "Got ref %d\n", ref);
1065 
1066  hr = IObjectWithSite_SetSite(pow, NULL);
1067  ok(hr == S_OK, "Got 0x%08x\n", hr);
1068 
1069  IServiceProvider_AddRef(&spimpl->IServiceProvider_iface);
1070  ref = IServiceProvider_Release(&spimpl->IServiceProvider_iface);
1071  ok(ref == 1, "Got ref %d\n", ref);
1072 
1073  hr = IObjectWithSite_SetSite(pow, (IUnknown*)&spimpl->IServiceProvider_iface);
1074  ok(hr == S_OK, "Got 0x%08x\n", hr);
1075 
1076  IServiceProvider_AddRef(&spimpl->IServiceProvider_iface);
1077  ref = IServiceProvider_Release(&spimpl->IServiceProvider_iface);
1078  ok(ref == 2, "Got ref %d\n", ref);
1079 
1080  IExplorerBrowser_Destroy(peb);
1081 
1082  IServiceProvider_AddRef(&spimpl->IServiceProvider_iface);
1083  ref = IServiceProvider_Release(&spimpl->IServiceProvider_iface);
1084  ok(ref == 2, "Got ref %d\n", ref);
1085 
1086  IObjectWithSite_Release(pow);
1087  ref = IExplorerBrowser_Release(peb);
1088  ok(ref == 0, "Got ref %d\n", ref);
1089 
1090  ref = IServiceProvider_Release(&spimpl->IServiceProvider_iface);
1091  ok(ref == 0, "Got ref %d\n", ref);
1092 
1093  ref = ICommDlgBrowser3_Release(&cdbimpl->ICommDlgBrowser3_iface);
1094  ok(ref == 0, "Got ref %d\n", ref);
1095  ref = IExplorerPaneVisibility_Release(&epvimpl->IExplorerPaneVisibility_iface);
1096  ok(ref == 0, "Got ref %d\n", ref);
1097 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
IServiceProvider IServiceProvider_iface
Definition: ebrowser.c:454
#define TRUE
Definition: types.h:120
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
HRESULT hr
Definition: shlfolder.c:183
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
Definition: ebrowser.c:103
static IServiceProviderImpl * create_serviceprovider(void)
Definition: ebrowser.c:550
GLuint GLuint GLsizei count
Definition: gl.h:1545
ICommDlgBrowser3 ICommDlgBrowser3_iface
Definition: ebrowser.c:301
const GUID IID_IConnectionPointContainer
struct IServiceProviderImpl::services * interfaces
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
static void process_msgs(void)
Definition: ebrowser.c:121
Definition: send.c:47
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
long LONG
Definition: pedump.c:60
float pow(float __x, int __y)
Definition: _cmath.h:458
GLenum GLint ref
Definition: glext.h:6028
smooth NULL
Definition: ftsmooth.c:416
static IExplorerPaneVisibilityImpl * create_explorerpanevisibility(void)
Definition: ebrowser.c:285
#define trace
Definition: atltest.h:70
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
const IID IID_IObjectWithSite
#define todo_wine
Definition: test.h:154
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
unsigned int UINT
Definition: ndis.h:50
#define skip(...)
Definition: atltest.h:64
IExplorerPaneVisibility IExplorerPaneVisibility_iface
Definition: ebrowser.c:212
const GUID IID_IOleWindow
static ICommDlgBrowser3Impl * create_commdlgbrowser3(void)
Definition: ebrowser.c:439
static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
Definition: ebrowser.c:97
BOOL expected
Definition: store.c:2063
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static HRESULT ebrowser_browse_to_desktop(IExplorerBrowser *peb)
Definition: ebrowser.c:110

Referenced by START_TEST().

Variable Documentation

◆ cdbvtbl

const ICommDlgBrowser3Vtbl cdbvtbl
static
Initial value:
=
{
}
static HRESULT WINAPI ICommDlgBrowser3_fnGetViewFlags(ICommDlgBrowser3 *iface, DWORD *pdwFlags)
Definition: ebrowser.c:385
static ULONG WINAPI ICommDlgBrowser3_fnRelease(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:326
static HRESULT WINAPI ICommDlgBrowser3_fnIncludeObject(ICommDlgBrowser3 *iface, IShellView *shv, LPCITEMIDLIST pidl)
Definition: ebrowser.c:354
static HRESULT WINAPI ICommDlgBrowser3_fnQueryInterface(ICommDlgBrowser3 *iface, REFIID riid, LPVOID *ppvObj)
Definition: ebrowser.c:313
static HRESULT WINAPI ICommDlgBrowser3_fnOnStateChange(ICommDlgBrowser3 *iface, IShellView *shv, ULONG uChange)
Definition: ebrowser.c:344
static HRESULT WINAPI ICommDlgBrowser3_fnNotify(ICommDlgBrowser3 *iface, IShellView *ppshv, DWORD dwNotifyType)
Definition: ebrowser.c:364
static HRESULT WINAPI ICommDlgBrowser3_fnGetDefaultMenuText(ICommDlgBrowser3 *iface, IShellView *ppshv, LPWSTR pszText, int cchMax)
Definition: ebrowser.c:374
static HRESULT WINAPI ICommDlgBrowser3_fnOnColumnClicked(ICommDlgBrowser3 *iface, IShellView *ppshv, int iColumn)
Definition: ebrowser.c:394
static HRESULT WINAPI ICommDlgBrowser3_fnGetCurrentFilter(ICommDlgBrowser3 *iface, LPWSTR pszFileSpec, int cchFileSpec)
Definition: ebrowser.c:404
static HRESULT WINAPI ICommDlgBrowser3_fnOnPreviewCreated(ICommDlgBrowser3 *iface, IShellView *ppshv)
Definition: ebrowser.c:414
static ULONG WINAPI ICommDlgBrowser3_fnAddRef(ICommDlgBrowser3 *iface)
Definition: ebrowser.c:320
static HRESULT WINAPI ICommDlgBrowser3_fnOnDefaultCommand(ICommDlgBrowser3 *iface, IShellView *shv)
Definition: ebrowser.c:337

Definition at line 423 of file ebrowser.c.

Referenced by create_commdlgbrowser3().

◆ ebev

◆ ebevents

const IExplorerBrowserEventsVtbl ebevents
static
Initial value:
=
{
}
static ULONG WINAPI IExplorerBrowserEvents_fnAddRef(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:154
static ULONG WINAPI IExplorerBrowserEvents_fnRelease(IExplorerBrowserEvents *iface)
Definition: ebrowser.c:160
static HRESULT WINAPI IExplorerBrowserEvents_fnOnViewCreated(IExplorerBrowserEvents *iface, IShellView *psv)
Definition: ebrowser.c:188
static HRESULT WINAPI IExplorerBrowserEvents_fnQueryInterface(IExplorerBrowserEvents *iface, REFIID riid, void **ppvObj)
Definition: ebrowser.c:147
static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationPending(IExplorerBrowserEvents *iface, PCIDLIST_ABSOLUTE pidlFolder)
Definition: ebrowser.c:166
static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationComplete(IExplorerBrowserEvents *iface, PCIDLIST_ABSOLUTE pidlFolder)
Definition: ebrowser.c:174
static HRESULT WINAPI IExplorerBrowserEvents_fnOnNavigationFailed(IExplorerBrowserEvents *iface, PCIDLIST_ABSOLUTE pidlFolder)
Definition: ebrowser.c:181

Definition at line 196 of file ebrowser.c.

Referenced by test_Advise(), and test_navigation().

◆ epvvt

const IExplorerPaneVisibilityVtbl epvvt
static
Initial value:
=
{
}
static HRESULT WINAPI IExplorerPaneVisibility_fnQueryInterface(IExplorerPaneVisibility *iface, REFIID riid, LPVOID *ppvObj)
Definition: ebrowser.c:223
static ULONG WINAPI IExplorerPaneVisibility_fnAddRef(IExplorerPaneVisibility *iface)
Definition: ebrowser.c:231
static HRESULT WINAPI IExplorerPaneVisibility_fnGetPaneState(IExplorerPaneVisibility *iface, REFEXPLORERPANE ep, EXPLORERPANESTATE *peps)
Definition: ebrowser.c:248
static ULONG WINAPI IExplorerPaneVisibility_fnRelease(IExplorerPaneVisibility *iface)
Definition: ebrowser.c:237

Definition at line 277 of file ebrowser.c.

Referenced by create_explorerpanevisibility().

◆ hwnd

HWND hwnd
static

Definition at line 80 of file ebrowser.c.

Referenced by test_InputObject().

◆ LPCITEMIDLIST

Definition at line 82 of file ebrowser.c.

◆ SFGAOF

◆ spvtbl

const IServiceProviderVtbl spvtbl
static
Initial value:
=
{
}
static HRESULT WINAPI IServiceProvider_fnQueryInterface(IServiceProvider *iface, REFIID riid, LPVOID *ppvObj)
Definition: ebrowser.c:469
static HRESULT WINAPI IServiceProvider_fnQueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
Definition: ebrowser.c:506
static ULONG WINAPI IServiceProvider_fnRelease(IServiceProvider *iface)
Definition: ebrowser.c:495
static ULONG WINAPI IServiceProvider_fnAddRef(IServiceProvider *iface)
Definition: ebrowser.c:489

Definition at line 542 of file ebrowser.c.

Referenced by create_serviceprovider().