Reactos
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}