2007-11-29 12:54:54 +00:00
/*
* Drag and Drop Tests
*
* Copyright 2007 Robert Shearman
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 , USA
*/
2013-03-23 10:35:40 +00:00
# define WIN32_NO_STATUS
# define _INC_WINDOWS
# define COM_NO_WINDOWS_H
2007-11-29 12:54:54 +00:00
# define _WIN32_DCOM
# define COBJMACROS
# define CONST_VTABLE
# include <stdarg.h>
2013-03-23 10:35:40 +00:00
//#include <stdio.h>
2007-11-29 12:54:54 +00:00
2013-03-23 10:35:40 +00:00
# include <windef.h>
# include <winbase.h>
# include <ole2.h>
//#include "objbase.h"
2007-11-29 12:54:54 +00:00
2013-03-23 10:35:40 +00:00
# include <wine/test.h>
2007-11-29 12:54:54 +00:00
2014-04-24 12:14:32 +00:00
# define DEFINE_EXPECT(func) \
static BOOL expect_ # # func = FALSE , called_ # # func = FALSE
# define SET_EXPECT(func) \
expect_ # # func = TRUE
# define CHECK_EXPECT2(func) \
do { \
ok ( expect_ # # func , " unexpected call " # func " \n " ) ; \
called_ # # func = TRUE ; \
} while ( 0 )
# define CHECK_EXPECT(func) \
do { \
CHECK_EXPECT2 ( func ) ; \
expect_ # # func = FALSE ; \
} while ( 0 )
# define CHECK_CALLED(func) \
do { \
ok ( called_ # # func , " expected " # func " \n " ) ; \
expect_ # # func = called_ # # func = FALSE ; \
} while ( 0 )
DEFINE_EXPECT ( DataObject_EnumFormatEtc ) ;
DEFINE_EXPECT ( EnumFORMATETC_Next ) ;
DEFINE_EXPECT ( EnumFORMATETC_Reset ) ;
DEFINE_EXPECT ( DataObject_QueryGetData ) ;
DEFINE_EXPECT ( DropSource_QueryContinueDrag ) ;
DEFINE_EXPECT ( DropTarget_DragEnter ) ;
DEFINE_EXPECT ( DropSource_GiveFeedback ) ;
DEFINE_EXPECT ( DropTarget_Drop ) ;
DEFINE_EXPECT ( DropTarget_DragLeave ) ;
2010-08-05 21:28:34 +00:00
static int droptarget_refs ;
2007-11-29 12:54:54 +00:00
/* helper macros to make tests a bit leaner */
# define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr)
static HRESULT WINAPI DropTarget_QueryInterface ( IDropTarget * iface , REFIID riid ,
void * * ppvObject )
{
2012-05-17 15:17:09 +00:00
ok ( 0 , " DropTarget_QueryInterface() shouldn't be called \n " ) ;
2007-11-29 12:54:54 +00:00
if ( IsEqualIID ( riid , & IID_IUnknown ) | |
IsEqualIID ( riid , & IID_IDropTarget ) )
{
2012-12-12 21:02:09 +00:00
IDropTarget_AddRef ( iface ) ;
2007-11-29 12:54:54 +00:00
* ppvObject = iface ;
return S_OK ;
}
* ppvObject = NULL ;
return E_NOINTERFACE ;
}
static ULONG WINAPI DropTarget_AddRef ( IDropTarget * iface )
{
2010-08-05 21:28:34 +00:00
droptarget_refs + + ;
return droptarget_refs ;
2007-11-29 12:54:54 +00:00
}
static ULONG WINAPI DropTarget_Release ( IDropTarget * iface )
{
2010-08-05 21:28:34 +00:00
droptarget_refs - - ;
return droptarget_refs ;
2007-11-29 12:54:54 +00:00
}
static HRESULT WINAPI DropTarget_DragEnter ( IDropTarget * iface ,
IDataObject * pDataObj ,
DWORD grfKeyState , POINTL pt ,
DWORD * pdwEffect )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DropTarget_DragEnter ) ;
* pdwEffect = DROPEFFECT_COPY ;
return S_OK ;
2007-11-29 12:54:54 +00:00
}
static HRESULT WINAPI DropTarget_DragOver ( IDropTarget * iface ,
DWORD grfKeyState ,
POINTL pt ,
DWORD * pdwEffect )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
* pdwEffect = DROPEFFECT_COPY ;
return S_OK ;
2007-11-29 12:54:54 +00:00
}
static HRESULT WINAPI DropTarget_DragLeave ( IDropTarget * iface )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DropTarget_DragLeave ) ;
2007-11-29 12:54:54 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DropTarget_Drop ( IDropTarget * iface ,
IDataObject * pDataObj , DWORD grfKeyState ,
POINTL pt , DWORD * pdwEffect )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DropTarget_Drop ) ;
return 0xbeefbeef ;
2007-11-29 12:54:54 +00:00
}
static const IDropTargetVtbl DropTarget_VTbl =
{
DropTarget_QueryInterface ,
DropTarget_AddRef ,
DropTarget_Release ,
DropTarget_DragEnter ,
DropTarget_DragOver ,
DropTarget_DragLeave ,
DropTarget_Drop
} ;
static IDropTarget DropTarget = { & DropTarget_VTbl } ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
static HRESULT WINAPI DropSource_QueryInterface ( IDropSource * iface , REFIID riid , void * * ppObj )
{
if ( IsEqualIID ( riid , & IID_IUnknown ) | |
IsEqualIID ( riid , & IID_IDropSource ) )
{
* ppObj = iface ;
IDropSource_AddRef ( iface ) ;
return S_OK ;
}
return E_NOINTERFACE ;
}
static ULONG WINAPI DropSource_AddRef ( IDropSource * iface )
{
return 2 ;
}
static ULONG WINAPI DropSource_Release ( IDropSource * iface )
{
return 1 ;
}
static HRESULT WINAPI DropSource_QueryContinueDrag (
IDropSource * iface ,
BOOL fEscapePressed ,
DWORD grfKeyState )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DropSource_QueryContinueDrag ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return DRAGDROP_S_DROP ;
}
static HRESULT WINAPI DropSource_GiveFeedback (
IDropSource * iface ,
DWORD dwEffect )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DropSource_GiveFeedback ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return DRAGDROP_S_USEDEFAULTCURSORS ;
}
static const IDropSourceVtbl dropsource_vtbl = {
DropSource_QueryInterface ,
DropSource_AddRef ,
DropSource_Release ,
DropSource_QueryContinueDrag ,
DropSource_GiveFeedback
} ;
static IDropSource DropSource = { & dropsource_vtbl } ;
2014-04-24 12:14:32 +00:00
static HRESULT WINAPI EnumFORMATETC_QueryInterface ( IEnumFORMATETC * iface ,
REFIID riid , void * * ppvObj )
{
ok ( 0 , " unexpected call \n " ) ;
return E_NOTIMPL ;
}
static ULONG WINAPI EnumFORMATETC_AddRef ( IEnumFORMATETC * iface )
{
return 2 ;
}
static ULONG WINAPI EnumFORMATETC_Release ( IEnumFORMATETC * iface )
{
return 1 ;
}
static BOOL formats_enumerated ;
static HRESULT WINAPI EnumFORMATETC_Next ( IEnumFORMATETC * iface ,
ULONG celt , FORMATETC * rgelt , ULONG * pceltFetched )
{
static FORMATETC format = { CF_TEXT , NULL , DVASPECT_CONTENT , - 1 , TYMED_HGLOBAL } ;
CHECK_EXPECT2 ( EnumFORMATETC_Next ) ;
ok ( celt = = 1 , " celt = %d \n " , celt ) ;
ok ( rgelt ! = NULL , " rgelt == NULL \n " ) ;
ok ( pceltFetched = = NULL , " pceltFetched != NULL \n " ) ;
if ( formats_enumerated )
return S_FALSE ;
* rgelt = format ;
formats_enumerated = TRUE ;
return S_OK ;
}
static HRESULT WINAPI EnumFORMATETC_Skip ( IEnumFORMATETC * iface , ULONG celt )
{
ok ( 0 , " unexpected call \n " ) ;
return E_NOTIMPL ;
}
static HRESULT WINAPI EnumFORMATETC_Reset ( IEnumFORMATETC * iface )
{
CHECK_EXPECT ( EnumFORMATETC_Reset ) ;
formats_enumerated = FALSE ;
return S_OK ;
}
static HRESULT WINAPI EnumFORMATETC_Clone ( IEnumFORMATETC * iface ,
IEnumFORMATETC * * ppenum )
{
ok ( 0 , " unexpected call \n " ) ;
return E_NOTIMPL ;
}
static const IEnumFORMATETCVtbl enumformatetc_vtbl = {
EnumFORMATETC_QueryInterface ,
EnumFORMATETC_AddRef ,
EnumFORMATETC_Release ,
EnumFORMATETC_Next ,
EnumFORMATETC_Skip ,
EnumFORMATETC_Reset ,
EnumFORMATETC_Clone
} ;
static IEnumFORMATETC EnumFORMATETC = { & enumformatetc_vtbl } ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
static HRESULT WINAPI DataObject_QueryInterface (
IDataObject * iface ,
REFIID riid ,
void * * pObj )
{
if ( IsEqualIID ( riid , & IID_IUnknown ) | |
IsEqualIID ( riid , & IID_IDataObject ) )
{
* pObj = iface ;
IDataObject_AddRef ( iface ) ;
return S_OK ;
}
2014-04-24 12:14:32 +00:00
trace ( " DataObject_QueryInterface: %s \n " , wine_dbgstr_guid ( riid ) ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOINTERFACE ;
}
static ULONG WINAPI DataObject_AddRef ( IDataObject * iface )
{
return 2 ;
}
static ULONG WINAPI DataObject_Release ( IDataObject * iface )
{
return 1 ;
}
static HRESULT WINAPI DataObject_GetData (
IDataObject * iface ,
FORMATETC * pformatetcIn ,
STGMEDIUM * pmedium )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DataObject_GetDataHere (
IDataObject * iface ,
FORMATETC * pformatetc ,
STGMEDIUM * pmedium )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DataObject_QueryGetData (
IDataObject * iface ,
FORMATETC * pformatetc )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DataObject_QueryGetData ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return S_OK ;
}
static HRESULT WINAPI DataObject_GetCanonicalFormatEtc (
IDataObject * iface ,
FORMATETC * pformatectIn ,
FORMATETC * pformatetcOut )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DataObject_SetData (
IDataObject * iface ,
FORMATETC * pformatetc ,
STGMEDIUM * pmedium ,
BOOL fRelease )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DataObject_EnumFormatEtc (
IDataObject * iface ,
DWORD dwDirection ,
IEnumFORMATETC * * ppenumFormatEtc )
{
2014-04-24 12:14:32 +00:00
CHECK_EXPECT ( DataObject_EnumFormatEtc ) ;
* ppenumFormatEtc = & EnumFORMATETC ;
formats_enumerated = FALSE ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return S_OK ;
}
static HRESULT WINAPI DataObject_DAdvise (
IDataObject * iface ,
FORMATETC * pformatetc ,
DWORD advf ,
IAdviseSink * pAdvSink ,
DWORD * pdwConnection )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DataObject_DUnadvise (
IDataObject * iface ,
DWORD dwConnection )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static HRESULT WINAPI DataObject_EnumDAdvise (
IDataObject * iface ,
IEnumSTATDATA * * ppenumAdvise )
{
2014-04-24 12:14:32 +00:00
ok ( 0 , " unexpected call \n " ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
return E_NOTIMPL ;
}
static const IDataObjectVtbl dataobject_vtbl = {
DataObject_QueryInterface ,
DataObject_AddRef ,
DataObject_Release ,
DataObject_GetData ,
DataObject_GetDataHere ,
DataObject_QueryGetData ,
DataObject_GetCanonicalFormatEtc ,
DataObject_SetData ,
DataObject_EnumFormatEtc ,
DataObject_DAdvise ,
DataObject_DUnadvise ,
DataObject_EnumDAdvise
} ;
static IDataObject DataObject = { & dataobject_vtbl } ;
2009-01-04 17:52:22 +00:00
static ATOM register_dummy_class ( void )
{
2014-04-24 12:14:32 +00:00
WNDCLASSA wc =
2009-01-04 17:52:22 +00:00
{
0 ,
2014-04-24 12:14:32 +00:00
DefWindowProcA ,
2009-01-04 17:52:22 +00:00
0 ,
0 ,
2014-04-24 12:14:32 +00:00
GetModuleHandleA ( NULL ) ,
2009-01-04 17:52:22 +00:00
NULL ,
2014-04-24 12:14:32 +00:00
LoadCursorA ( NULL , ( LPSTR ) IDC_ARROW ) ,
2009-01-04 17:52:22 +00:00
( HBRUSH ) ( COLOR_BTNFACE + 1 ) ,
NULL ,
2014-04-24 12:14:32 +00:00
" WineOleTestClass " ,
2009-01-04 17:52:22 +00:00
} ;
2014-04-24 12:14:32 +00:00
return RegisterClassA ( & wc ) ;
2009-01-04 17:52:22 +00:00
}
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
static void test_Register_Revoke ( void )
2007-11-29 12:54:54 +00:00
{
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
HANDLE prop ;
2007-11-29 12:54:54 +00:00
HRESULT hr ;
2009-01-04 17:52:22 +00:00
HWND hwnd ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
hwnd = CreateWindowA ( " WineOleTestClass " , " Test " , 0 ,
2009-01-04 17:52:22 +00:00
CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL ,
NULL , NULL , NULL ) ;
2007-11-29 12:54:54 +00:00
2009-01-04 17:52:22 +00:00
hr = RegisterDragDrop ( hwnd , & DropTarget ) ;
ok ( hr = = E_OUTOFMEMORY | |
broken ( hr = = CO_E_NOTINITIALIZED ) , /* NT4 */
" RegisterDragDrop without OLE initialized should have returned E_OUTOFMEMORY instead of 0x%08x \n " , hr ) ;
2007-11-29 12:54:54 +00:00
OleInitialize ( NULL ) ;
2009-01-04 17:52:22 +00:00
hr = RegisterDragDrop ( hwnd , NULL ) ;
2007-11-29 12:54:54 +00:00
ok ( hr = = E_INVALIDARG , " RegisterDragDrop with NULL IDropTarget * should return E_INVALIDARG instead of 0x%08x \n " , hr ) ;
hr = RegisterDragDrop ( NULL , & DropTarget ) ;
ok ( hr = = DRAGDROP_E_INVALIDHWND , " RegisterDragDrop with NULL hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x \n " , hr ) ;
hr = RegisterDragDrop ( ( HWND ) 0xdeadbeef , & DropTarget ) ;
ok ( hr = = DRAGDROP_E_INVALIDHWND , " RegisterDragDrop with garbage hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x \n " , hr ) ;
2010-08-05 21:28:34 +00:00
ok ( droptarget_refs = = 0 , " DropTarget refs should be zero not %d \n " , droptarget_refs ) ;
2009-01-04 17:52:22 +00:00
hr = RegisterDragDrop ( hwnd , & DropTarget ) ;
2007-11-29 12:54:54 +00:00
ok_ole_success ( hr , " RegisterDragDrop " ) ;
2010-08-05 21:28:34 +00:00
ok ( droptarget_refs > = 1 , " DropTarget refs should be at least one \n " ) ;
2007-11-29 12:54:54 +00:00
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
prop = GetPropA ( hwnd , " OleDropTargetInterface " ) ;
ok ( prop = = & DropTarget , " expected IDropTarget pointer %p, got %p \n " , & DropTarget , prop ) ;
2009-01-04 17:52:22 +00:00
hr = RegisterDragDrop ( hwnd , & DropTarget ) ;
2007-11-29 12:54:54 +00:00
ok ( hr = = DRAGDROP_E_ALREADYREGISTERED , " RegisterDragDrop with already registered hwnd should return DRAGDROP_E_ALREADYREGISTERED instead of 0x%08x \n " , hr ) ;
2010-08-05 21:28:34 +00:00
ok ( droptarget_refs > = 1 , " DropTarget refs should be at least one \n " ) ;
2007-11-29 12:54:54 +00:00
OleUninitialize ( ) ;
2015-07-19 23:12:15 +00:00
/* Win 8 releases the ref in OleUninitialize() */
if ( droptarget_refs > = 1 )
{
hr = RevokeDragDrop ( hwnd ) ;
ok_ole_success ( hr , " RevokeDragDrop " ) ;
ok ( droptarget_refs = = 0 | |
broken ( droptarget_refs = = 1 ) , /* NT4 */
" DropTarget refs should be zero not %d \n " , droptarget_refs ) ;
}
2007-11-29 12:54:54 +00:00
hr = RevokeDragDrop ( NULL ) ;
ok ( hr = = DRAGDROP_E_INVALIDHWND , " RevokeDragDrop with NULL hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x \n " , hr ) ;
2009-01-04 17:52:22 +00:00
DestroyWindow ( hwnd ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
/* try to revoke with already destroyed window */
OleInitialize ( NULL ) ;
hwnd = CreateWindowA ( " WineOleTestClass " , " Test " , 0 ,
CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL ,
NULL , NULL , NULL ) ;
hr = RegisterDragDrop ( hwnd , & DropTarget ) ;
ok ( hr = = S_OK , " got 0x%08x \n " , hr ) ;
DestroyWindow ( hwnd ) ;
hr = RevokeDragDrop ( hwnd ) ;
ok ( hr = = DRAGDROP_E_INVALIDHWND , " got 0x%08x \n " , hr ) ;
OleUninitialize ( ) ;
}
static void test_DoDragDrop ( void )
{
DWORD effect ;
HRESULT hr ;
HWND hwnd ;
2014-04-24 12:14:32 +00:00
RECT rect ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
2014-04-24 12:14:32 +00:00
hwnd = CreateWindowExA ( WS_EX_TOPMOST , " WineOleTestClass " , " Test " , 0 ,
CW_USEDEFAULT , CW_USEDEFAULT , 100 , 100 , NULL ,
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
NULL , NULL , NULL ) ;
ok ( IsWindow ( hwnd ) , " failed to create window \n " ) ;
hr = OleInitialize ( NULL ) ;
ok ( hr = = S_OK , " got 0x%08x \n " , hr ) ;
hr = RegisterDragDrop ( hwnd , & DropTarget ) ;
ok ( hr = = S_OK , " got 0x%08x \n " , hr ) ;
/* incomplete arguments set */
hr = DoDragDrop ( NULL , NULL , 0 , NULL ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
hr = DoDragDrop ( NULL , & DropSource , 0 , NULL ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
hr = DoDragDrop ( & DataObject , NULL , 0 , NULL ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
hr = DoDragDrop ( NULL , NULL , 0 , & effect ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
hr = DoDragDrop ( & DataObject , & DropSource , 0 , NULL ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
hr = DoDragDrop ( NULL , & DropSource , 0 , & effect ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
hr = DoDragDrop ( & DataObject , NULL , 0 , & effect ) ;
ok ( hr = = E_INVALIDARG , " got 0x%08x \n " , hr ) ;
2014-04-24 12:14:32 +00:00
ShowWindow ( hwnd , SW_SHOW ) ;
GetWindowRect ( hwnd , & rect ) ;
ok ( SetCursorPos ( rect . left + 50 , rect . top + 50 ) , " SetCursorPos failed \n " ) ;
SET_EXPECT ( DataObject_EnumFormatEtc ) ;
SET_EXPECT ( EnumFORMATETC_Next ) ;
SET_EXPECT ( EnumFORMATETC_Reset ) ;
SET_EXPECT ( DataObject_QueryGetData ) ;
SET_EXPECT ( DropSource_QueryContinueDrag ) ;
SET_EXPECT ( DropTarget_DragEnter ) ;
SET_EXPECT ( DropSource_GiveFeedback ) ;
SET_EXPECT ( DropTarget_Drop ) ;
hr = DoDragDrop ( & DataObject , & DropSource , DROPEFFECT_COPY , & effect ) ;
ok ( hr = = 0xbeefbeef , " got 0x%08x \n " , hr ) ;
todo_wine CHECK_CALLED ( DataObject_EnumFormatEtc ) ;
todo_wine CHECK_CALLED ( EnumFORMATETC_Next ) ;
todo_wine CHECK_CALLED ( EnumFORMATETC_Reset ) ;
todo_wine CHECK_CALLED ( DataObject_QueryGetData ) ;
CHECK_CALLED ( DropSource_QueryContinueDrag ) ;
CHECK_CALLED ( DropTarget_DragEnter ) ;
CHECK_CALLED ( DropSource_GiveFeedback ) ;
CHECK_CALLED ( DropTarget_Drop ) ;
SET_EXPECT ( DataObject_EnumFormatEtc ) ;
SET_EXPECT ( EnumFORMATETC_Next ) ;
SET_EXPECT ( EnumFORMATETC_Reset ) ;
SET_EXPECT ( DataObject_QueryGetData ) ;
SET_EXPECT ( DropSource_QueryContinueDrag ) ;
SET_EXPECT ( DropTarget_DragEnter ) ;
SET_EXPECT ( DropSource_GiveFeedback ) ;
SET_EXPECT ( DropTarget_DragLeave ) ;
hr = DoDragDrop ( & DataObject , & DropSource , 0 , & effect ) ;
ok ( hr = = DRAGDROP_S_DROP , " got 0x%08x \n " , hr ) ;
todo_wine CHECK_CALLED ( DataObject_EnumFormatEtc ) ;
todo_wine CHECK_CALLED ( EnumFORMATETC_Next ) ;
todo_wine CHECK_CALLED ( EnumFORMATETC_Reset ) ;
todo_wine CHECK_CALLED ( DataObject_QueryGetData ) ;
CHECK_CALLED ( DropSource_QueryContinueDrag ) ;
CHECK_CALLED ( DropTarget_DragEnter ) ;
CHECK_CALLED ( DropSource_GiveFeedback ) ;
CHECK_CALLED ( DropTarget_DragLeave ) ;
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
OleUninitialize ( ) ;
DestroyWindow ( hwnd ) ;
}
START_TEST ( dragdrop )
{
register_dummy_class ( ) ;
test_Register_Revoke ( ) ;
2015-07-19 17:16:38 +00:00
# ifdef __REACTOS__
if ( ! winetest_interactive & &
! strcmp ( winetest_platform , " windows " ) )
{
skip ( " ROSTESTS-182: Skipping ole32_winetest:dragdrop test_DoDragDrop because it hangs on WHS-Testbot. Set winetest_interactive to run it anyway. \n " ) ;
return ;
}
# endif
Sync advapi32, comctl32, crypt32, cryptui, cryptnet, fusion, gdi32, gdiplus, hlink, imm32, jscript, kernel32, localspl, msacm32, mscms, msi, mstask, msvcrtd, msxml3, ntdll, ole32, pdh, psapi, quartz, rasapi32, riched20 AND rsaenh Winetests.
TBD mshtml, shell32, oleaut32 which still fail to build here
svn path=/trunk/; revision=47931
2010-07-03 12:45:23 +00:00
test_DoDragDrop ( ) ;
2007-11-29 12:54:54 +00:00
}