1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPLv2+ - See COPYING in the top level directory 4 * PURPOSE: COM interface test for shdocvw classes 5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> 6 */ 7 8 #include "com_apitest.h" 9 10 #define NDEBUG 11 #include <debug.h> 12 13 static const CLASS_AND_INTERFACES ExpectedInterfaces[] = 14 { 15 { 16 ID_NAME(CLSID_AdminFolderShortcut), 17 { 18 { 0x0, &IID_IShellFolder2 }, 19 { 0x0, &IID_IShellFolder }, 20 { 0x0, &IID_IUnknown }, 21 { 0x4, &IID_IPersistFolder3 }, 22 { 0x4, &IID_IPersistFolder2 }, 23 { 0x4, &IID_IPersistFolder }, 24 { 0x4, &IID_IPersist }, 25 { 0x8, &IID_IShellLinkA }, 26 { 0xc, &IID_IShellLinkW }, 27 { 0x10, &IID_IPersistFile }, 28 { 0x14, &IID_IExtractIconW }, 29 { 0x18, &IID_IQueryInfo }, 30 { 0x20, &IID_IPersistStream }, 31 { 0x20, &IID_IPersistStreamInit }, 32 { 0x24, &IID_IPersistPropertyBag }, 33 { 0x28, &IID_IBrowserFrameOptions }, 34 } 35 }, 36 { 37 ID_NAME(CLSID_ExplorerBand), 38 { 39 { -0xb4, &IID_IDeskBand }, 40 { -0xb4, &IID_IDockingWindow }, 41 { -0xb4, &IID_IOleWindow }, 42 { -0xb0, &IID_IObjectWithSite }, 43 { -0xa8, &IID_IInputObject }, 44 { -0xa4, &IID_IPersistStream }, 45 { -0xa4, &IID_IPersist }, 46 { -0xa0, &IID_IOleCommandTarget }, 47 { -0x9c, &IID_IServiceProvider }, 48 { -0x84, &IID_IContextMenu }, 49 { -0x80, &IID_IBandNavigate }, 50 { -0x7c, &IID_IWinEventHandler }, 51 { -0x78, &IID_INamespaceProxy }, 52 { 0x0, &IID_IDispatch }, 53 { 0x0, &IID_IUnknown }, 54 } 55 }, 56 { 57 ID_NAME(CLSID_FontsFolderShortcut), 58 { 59 { 0x0, &IID_IShellFolder2 }, 60 { 0x0, &IID_IShellFolder }, 61 { 0x0, &IID_IUnknown }, 62 { 0x4, &IID_IPersistFolder3 }, 63 { 0x4, &IID_IPersistFolder2 }, 64 { 0x4, &IID_IPersistFolder }, 65 { 0x4, &IID_IPersist }, 66 { 0x8, &IID_IShellLinkA }, 67 { 0xc, &IID_IShellLinkW }, 68 { 0x10, &IID_IPersistFile }, 69 { 0x14, &IID_IExtractIconW }, 70 { 0x18, &IID_IQueryInfo }, 71 { 0x20, &IID_IPersistStream }, 72 { 0x20, &IID_IPersistStreamInit }, 73 { 0x24, &IID_IPersistPropertyBag }, 74 { 0x28, &IID_IBrowserFrameOptions }, 75 } 76 }, 77 #if 0 // E_OUTOFMEMORY? 78 { 79 ID_NAME(CLSID_ShellDispatchInproc), 80 { 81 { 0x0, &IID_IUnknown }, 82 } 83 }, 84 #endif 85 { 86 ID_NAME(CLSID_MruLongList), 87 { 88 { 0x0, &IID_IUnknown }, 89 } 90 }, 91 { 92 ID_NAME(CLSID_SH_FavBand), 93 { 94 { -0x30, &IID_IDeskBand }, 95 { -0x30, &IID_IDockingWindow }, 96 { -0x30, &IID_IOleWindow }, 97 { -0x2c, &IID_IObjectWithSite }, 98 { -0x24, &IID_IInputObject }, 99 { -0x20, &IID_IPersistStream }, 100 { -0x20, &IID_IPersist }, 101 { -0x1c, &IID_IOleCommandTarget }, 102 { -0x18, &IID_IServiceProvider }, 103 { 0x0, &IID_IContextMenu }, 104 { 0x0, &IID_IUnknown }, 105 { 0x4, &IID_IBandNavigate }, 106 { 0x8, &IID_IWinEventHandler }, 107 { 0xc, &IID_INamespaceProxy }, 108 } 109 }, 110 { 111 ID_NAME(CLSID_SH_HistBand), 112 { 113 { -0xb4, &IID_IDeskBand }, 114 { -0xb4, &IID_IDockingWindow }, 115 { -0xb4, &IID_IOleWindow }, 116 { -0xb0, &IID_IObjectWithSite }, 117 { -0xa8, &IID_IInputObject }, 118 { -0xa4, &IID_IPersistStream }, 119 { -0xa4, &IID_IPersist }, 120 { -0xa0, &IID_IOleCommandTarget }, 121 { -0x9c, &IID_IServiceProvider }, 122 { -0x84, &IID_IContextMenu }, 123 { -0x80, &IID_IBandNavigate }, 124 { -0x7c, &IID_IWinEventHandler }, 125 { -0x78, &IID_INamespaceProxy }, 126 { 0x0, &IID_IShellFolderSearchableCallback }, 127 { 0x0, &IID_IUnknown }, 128 } 129 }, 130 { 131 ID_NAME(CLSID_SearchAssistantOC), 132 { 133 { 0x0, &IID_ISearchAssistantOC3 }, 134 { 0x0, &IID_ISearchAssistantOC }, 135 { 0x0, &IID_IDispatch }, 136 { 0x0, &IID_IUnknown }, 137 { 0x4, &IID_IProvideClassInfo2 }, 138 { 0x4, &IID_IProvideClassInfo }, 139 { 0x8, &IID_IQuickActivate }, 140 { 0xc, &IID_IOleControl }, 141 { 0x10, &IID_IOleObject }, 142 { 0x14, &IID_IOleInPlaceActiveObject }, 143 { 0x18, &IID_IViewObjectEx }, 144 { 0x18, &IID_IViewObject2 }, 145 { 0x18, &IID_IViewObject }, 146 { 0x1c, &IID_IOleInPlaceObjectWindowless }, 147 { 0x1c, &IID_IOleInPlaceObject }, 148 { 0x1c, &IID_IOleWindow }, 149 { 0x20, &IID_IDataObject }, 150 { 0x30, &IID_IConnectionPointContainer }, 151 { 0x34, &IID_IObjectSafety }, 152 { 0x3c, &IID_IOleCommandTarget }, 153 { 0x40, &IID_IObjectWithSite }, 154 } 155 }, 156 { 157 ID_NAME(CLSID_SearchBand), 158 { 159 { 0x0, &IID_IContextMenu }, 160 { 0x0, &IID_IUnknown }, 161 { 0x4, &IID_IShellExtInit }, 162 { 0x8, &IID_IPersistPropertyBag }, 163 { 0x8, &IID_IPersist }, 164 } 165 }, 166 { 167 ID_NAME(CLSID_ShellSearchAssistantOC), 168 { 169 { 0x0, &IID_ISearchAssistantOC3 }, 170 { 0x0, &IID_ISearchAssistantOC }, 171 { 0x0, &IID_IDispatch }, 172 { 0x0, &IID_IUnknown }, 173 { 0x4, &IID_IProvideClassInfo2 }, 174 { 0x4, &IID_IProvideClassInfo }, 175 { 0x8, &IID_IQuickActivate }, 176 { 0xc, &IID_IOleControl }, 177 { 0x10, &IID_IOleObject }, 178 { 0x14, &IID_IOleInPlaceActiveObject }, 179 { 0x18, &IID_IViewObjectEx }, 180 { 0x18, &IID_IViewObject2 }, 181 { 0x18, &IID_IViewObject }, 182 { 0x1c, &IID_IOleInPlaceObjectWindowless }, 183 { 0x1c, &IID_IOleInPlaceObject }, 184 { 0x1c, &IID_IOleWindow }, 185 { 0x20, &IID_IDataObject }, 186 { 0x30, &IID_IConnectionPointContainer }, 187 { 0x34, &IID_IObjectSafety }, 188 { 0x3c, &IID_IOleCommandTarget }, 189 { 0x40, &IID_IObjectWithSite }, 190 } 191 }, 192 { 193 ID_NAME(CLSID_ShellShellNameSpace), 194 { 195 { 0x0, &IID_IShellNameSpace }, 196 { 0x0, &IID_IShellFavoritesNameSpace }, 197 { 0x0, &IID_IDispatch }, 198 { 0x0, &IID_IUnknown }, 199 { 0x4, &IID_IProvideClassInfo2 }, 200 { 0x4, &IID_IProvideClassInfo }, 201 { 0x8, &IID_IPersistStreamInit }, 202 { 0xc, &IID_IPersistPropertyBag }, 203 { 0x10, &IID_IQuickActivate }, 204 { 0x14, &IID_IOleControl }, 205 { 0x18, &IID_IOleObject }, 206 { 0x1c, &IID_IOleInPlaceActiveObject }, 207 { 0x20, &IID_IViewObjectEx }, 208 { 0x20, &IID_IViewObject2 }, 209 { 0x20, &IID_IViewObject }, 210 { 0x24, &IID_IOleInPlaceObjectWindowless }, 211 { 0x24, &IID_IOleInPlaceObject }, 212 { 0x24, &IID_IOleWindow }, 213 { 0x28, &IID_ISpecifyPropertyPages }, 214 { 0x38, &IID_IConnectionPointContainer }, 215 { 0x3c, &IID_IShellChangeNotify }, 216 { 0x40, &IID_IDropTarget }, 217 { 0xb4, &IID_IObjectWithSite }, 218 { 0xbc, &IID_INSCTree2 }, 219 { 0xbc, &IID_INSCTree }, 220 { 0xc0, &IID_IWinEventHandler }, 221 { 0xc4, &IID_IShellBrowser }, 222 { 0xc8, &IID_IFolderFilterSite }, 223 } 224 }, 225 { 226 ID_NAME(CLSID_TaskbarList), 227 { 228 { 0x0, &IID_ITaskbarList2 }, 229 { 0x0, &IID_ITaskbarList }, 230 { 0x0, &IID_IUnknown }, 231 } 232 }, 233 { 234 ID_NAME(CLSID_AttachmentServices ), 235 { 236 { 0x0, &IID_IAttachmentExecute }, 237 { 0x0, &IID_IUnknown }, 238 } 239 }, 240 }; 241 static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); 242 243 START_TEST(shdocvw) 244 { 245 TestClasses(L"shdocvw", ExpectedInterfaces, ExpectedInterfaceCount); 246 } 247