Reactos
at master 281 lines 17 kB view raw
1/* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPLv2+ - See COPYING in the top level directory 4 * PURPOSE: COM interface test for ieframe classes 5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> 6 * Carl Bialorucki <carl.bialorucki@reactos.org> 7 */ 8 9#include "com_apitest.h" 10 11#define NDEBUG 12#include <debug.h> 13 14static const CLASS_AND_INTERFACES ExpectedInterfaces[] = 15{ 16 { 17 ID_NAME(CLSID_CommBand, NTDDI_WIN7, NTDDI_MAX), 18 { 19 { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBand }, 20 { NTDDI_WIN7, NTDDI_MAX, &IID_IDockingWindow }, 21 { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow }, 22 { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, 23 { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject }, 24 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStream }, 25 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, 26 { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget }, 27 { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, 28 { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu }, 29 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 30 { NTDDI_WIN7, NTDDI_MAX, &IID_IDispatch }, 31 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistPropertyBag }, 32 }, 33 }, 34 { 35 ID_NAME(CLSID_CUrlHistory, NTDDI_MIN, NTDDI_MAX), 36 { 37 { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryStg2 }, 38 { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryStg }, 39 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 40 } 41 }, 42 { 43 ID_NAME(CLSID_CURLSearchHook, NTDDI_MIN, NTDDI_MAX), 44 { 45 { NTDDI_MIN, NTDDI_MAX, &IID_IURLSearchHook2 }, 46 { NTDDI_MIN, NTDDI_MAX, &IID_IURLSearchHook }, 47 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 48 } 49 }, 50 { 51 ID_NAME(CLSID_IE_SearchBand, NTDDI_MIN, NTDDI_VISTASP4), 52 { 53 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, 54 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand }, 55 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, 56 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, 57 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, 58 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, 59 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, 60 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, 61 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, 62 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, 63 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, 64 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, 65 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, 66 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandNavigate }, 67 } 68 }, 69 { 70 ID_NAME(CLSID_Internet, NTDDI_MIN, NTDDI_WINBLUE), 71 { 72 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IObjectWithBackReferences }, 73 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder2 }, 74 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder }, 75 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder2 }, 76 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder }, 77 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersist }, 78 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IBrowserFrameOptions }, 79 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IContextMenu }, 80 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, 81 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellExtInit }, 82 } 83 }, 84 { 85 ID_NAME(CLSID_InternetShortcut, NTDDI_MIN, NTDDI_MAX), 86 { 87 { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject }, 88 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 }, 89 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 90 { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconA }, 91 { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconW }, 92 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 93 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, 94 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 95 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 96 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 97 { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkA }, 98 { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkW }, 99 { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, 100 { NTDDI_MIN, NTDDI_MAX, &IID_IPropertySetStorage }, 101 { NTDDI_MIN, NTDDI_MAX, &IID_INewShortcutHookA }, 102 { NTDDI_MIN, NTDDI_MAX, &IID_INewShortcutHookW }, 103 { NTDDI_MIN, NTDDI_MAX, &IID_IQueryInfo }, 104 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 105 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 106 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 107 { NTDDI_MIN, NTDDI_MAX, &IID_IPropertyStore }, 108 { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeWithFile }, 109 { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeWithBindCtx }, 110 } 111 }, 112 { 113 ID_NAME(CLSID_ShellUIHelper, NTDDI_MIN, NTDDI_MAX), 114 { 115 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 116 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 117 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 118 { NTDDI_MIN, NTDDI_MAX, &IID_IShellUIHelper2 }, 119 { NTDDI_MIN, NTDDI_MAX, &IID_IShellUIHelper }, 120 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 121 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatchEx }, 122 } 123 }, 124 { 125 ID_NAME(CLSID_ShellNameSpace, NTDDI_MIN, NTDDI_MAX), 126 { 127 { NTDDI_MIN, NTDDI_MAX, &IID_IShellNameSpace }, 128 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFavoritesNameSpace }, 129 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 130 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 131 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, 132 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, 133 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, 134 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, 135 { NTDDI_MIN, NTDDI_MAX, &IID_IQuickActivate }, 136 { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, 137 { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, 138 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, 139 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObjectEx }, 140 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 }, 141 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject }, 142 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObjectWindowless }, 143 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, 144 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 145 { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, 146 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, 147 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 148 { NTDDI_MIN, NTDDI_MAX, &IID_INSCTree }, 149 { NTDDI_MIN, NTDDI_MAX, &IID_IShellBrowser }, 150 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilterSite }, 151 { NTDDI_MIN, NTDDI_MAX, &IID_INewMenuClient }, 152 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 153 { NTDDI_MIN, NTDDI_MAX, &IID_INameSpaceTreeControl }, 154 { NTDDI_MIN, NTDDI_MAX, &IID_IVisualProperties }, 155 { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, 156 } 157 }, 158 { 159 ID_NAME(CLSID_ShellWindows, NTDDI_MIN, NTDDI_VISTASP4), 160 { 161 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMarshal2 }, 162 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMarshal }, 163 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IClientSecurity }, 164 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRpcOptions }, 165 { NTDDI_MIN, NTDDI_VISTASP4, &IID_ICallFactory }, 166 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IForegroundTransfer }, 167 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMultiQI }, 168 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, 169 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellWindows }, 170 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, 171 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IConnectionPointContainer }, 172 173 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IServiceProvider }, 174 } 175 }, 176 { 177 ID_NAME(CLSID_WebBrowser, NTDDI_MIN, NTDDI_MAX), 178 { 179 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IEFrameAuto }, 180 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv2 }, 181 182#ifdef _WIN64 // IID_IWebBrowserPriv is missing from this class on Vista x64 183 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv }, 184 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, 185#else 186 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, 187#endif 188 189 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 190 { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, 191 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 }, 192 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject }, 193 { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject }, 194 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, 195 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 196 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, 197 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 198 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 199 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, 200 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, 201 { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, 202 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, 203 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, 204 { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, 205 { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser2 }, 206 { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowserApp }, 207 { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser }, 208 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 209 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 210 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 211 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetEmbedding }, 212 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStorage }, 213 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistHistory }, 214 { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, 215 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 216 { NTDDI_MIN, NTDDI_MAX, &IID_IHlinkFrame }, 217 { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryNotify }, 218 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame2 }, 219 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetNotify }, 220 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv2 }, 221 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv }, 222 { NTDDI_MIN, NTDDI_MAX, &IID_ISecMgrCacheSeedTarget }, 223 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame }, 224 } 225 }, 226 { 227 ID_NAME(CLSID_WebBrowser_V1, NTDDI_MIN, NTDDI_MAX), 228 { 229 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IEFrameAuto }, 230 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv2 }, 231 232#ifdef _WIN64 // IID_IWebBrowserPriv is missing from this class on Vista x64 233 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv }, 234 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, 235#else 236 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, 237#endif 238 239 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 240 { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, 241 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 }, 242 { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject }, 243 { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject }, 244 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, 245 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 246 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, 247 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 248 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 249 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, 250 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, 251 { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, 252 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, 253 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, 254 { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, 255 { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser2 }, 256 { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowserApp }, 257 { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser }, 258 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 259 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 260 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 261 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetEmbedding }, 262 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStorage }, 263 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistHistory }, 264 { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, 265 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 266 { NTDDI_MIN, NTDDI_MAX, &IID_IHlinkFrame }, 267 { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryNotify }, 268 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame2 }, 269 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetNotify }, 270 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv2 }, 271 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv }, 272 { NTDDI_MIN, NTDDI_MAX, &IID_ISecMgrCacheSeedTarget }, 273 { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame }, 274 } 275 }, 276}; 277 278START_TEST(ieframe) 279{ 280 TestClasses(L"ieframe", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); 281}