1 /*
2  * PROJECT:         ReactOS api tests
3  * LICENSE:         GPLv2+ - See COPYING in the top level directory
4  * PURPOSE:         COM interface test for browseui 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_ACLCustomMRU),
17         {
18             {    0x0,   &IID_IEnumString },
19             {    0x0,       &IID_IUnknown },
20             {    0x4,   &IID_IACList },
21             {    0x8,   &IID_IACLCustomMRU },
22         },
23     },
24     {
25         ID_NAME(CLSID_ACLHistory),
26         {
27             {    0x0,   &IID_IEnumString },
28             {    0x0,       &IID_IUnknown },
29         },
30     },
31     {
32         ID_NAME(CLSID_ACLMRU),
33         {
34             {    0x0,   &IID_IEnumString },
35             {    0x0,       &IID_IUnknown },
36             {    0x4,   &IID_IACList },
37             {    0x8,   &IID_IACLCustomMRU },
38         },
39     },
40     {
41         ID_NAME(CLSID_ACLMulti),
42         {
43             {    0x0,   &IID_IEnumString },
44             {    0x0,       &IID_IUnknown },
45             {    0x4,   &IID_IObjMgr },
46             {    0x8,   &IID_IACList },
47         }
48     },
49     {
50         ID_NAME(CLSID_ACListISF),
51         {
52             {    0x0,   &IID_IEnumString },
53             {    0x0,       &IID_IUnknown },
54             {    0x4,   &IID_IACList2 },
55             {    0x4,       &IID_IACList },
56             {    0x8,   &IID_ICurrentWorkingDirectory },
57             {    0xc,   &IID_IShellService },
58             {   0x10,   &IID_IPersistFolder },
59         }
60     },
61     {
62         ID_NAME(CLSID_AddressEditBox),
63         {
64             {    0x0,   &IID_IWinEventHandler },
65             {    0x0,       &IID_IUnknown },
66             {    0x4,   &IID_IDispatch },
67             {    0x8,   &IID_IAddressBand },
68             {    0xc,   &IID_IAddressEditBox },
69             {   0x10,   &IID_IOleCommandTarget },
70             {   0x14,   &IID_IPersistStream },
71             {   0x18,   &IID_IShellService },
72         }
73     },
74     {
75         ID_NAME(CLSID_AugmentedShellFolder),
76         {
77             {    0x0,   &IID_IAugmentedShellFolder2 },
78             {    0x0,       &IID_IAugmentedShellFolder },
79             {    0x0,           &IID_IShellFolder },
80             {    0x0,               &IID_IUnknown },
81             {    0x4,   &IID_IShellService },
82             {    0x8,   &IID_ITranslateShellChangeNotify },
83         }
84     },
85     {
86         ID_NAME(CLSID_AugmentedShellFolder2),
87         {
88             {    0x0,   &IID_IAugmentedShellFolder2 },
89             {    0x0,       &IID_IAugmentedShellFolder },
90             {    0x0,           &IID_IShellFolder },
91             {    0x0,               &IID_IUnknown },
92             {    0x4,   &IID_IShellFolder2 },
93             {    0x8,   &IID_IShellService },
94             {    0xc,   &IID_ITranslateShellChangeNotify },
95             {   0x10,   &IID_IDropTarget },
96         }
97     },
98     {
99         ID_NAME(CLSID_AutoComplete),
100         {
101             {    0x0,   &IID_IAutoComplete2 },
102             {    0x0,       &IID_IAutoComplete },
103             {    0x0,           &IID_IUnknown },
104             {    0x4,   &IID_IAutoCompleteDropDown },
105             {    0x8,   &IID_IEnumString },
106             {    0xc,   &IID_IAccessible },
107             {    0xc,       &IID_IDispatch },
108         }
109     },
110     {
111         ID_NAME(CLSID_BackgroundTaskScheduler),
112         {
113             {    0x0,   &IID_IShellTaskScheduler },
114             {    0x0,       &IID_IUnknown },
115         }
116     },
117     {
118         ID_NAME(CLSID_BandProxy),
119         {
120             {    0x0,   &IID_IBandProxy },
121             {    0x0,       &IID_IUnknown },
122         }
123     },
124     {
125         ID_NAME(CLSID_BandSiteMenu),
126         {
127             {    0x0,   &IID_IContextMenu3 },
128             {    0x0,       &IID_IContextMenu2 },
129             {    0x0,           &IID_IContextMenu },
130             {    0x0,               &IID_IUnknown },
131             {    0x4,   &IID_IShellService },
132         }
133     },
134     {
135         ID_NAME(CLSID_BrandBand),
136         {
137             {    0x0,   &IID_IDeskBand },
138             {    0x0,       &IID_IDockingWindow },
139             {    0x0,           &IID_IOleWindow },
140             {    0x0,               &IID_IUnknown },
141             {    0x4,   &IID_IObjectWithSite },
142             {    0xc,   &IID_IInputObject },
143             {   0x10,   &IID_IPersistStream },
144             {   0x10,       &IID_IPersist },
145             {   0x14,   &IID_IOleCommandTarget },
146             {   0x18,   &IID_IServiceProvider },
147             {   0x30,   &IID_IWinEventHandler },
148             {   0x34,   &IID_IDispatch },
149         }
150     },
151     {
152         ID_NAME(CLSID_BrowserBand),
153         {
154             {  -0x30,   &IID_IDeskBand },
155             {  -0x30,       &IID_IDockingWindow },
156             {  -0x30,           &IID_IOleWindow },
157             {  -0x2c,   &IID_IObjectWithSite },
158             {  -0x24,   &IID_IInputObject },
159             {  -0x20,   &IID_IPersistStream },
160             {  -0x20,       &IID_IPersist },
161             {  -0x1c,   &IID_IOleCommandTarget },
162             {  -0x18,   &IID_IServiceProvider },
163             {    0x0,   &IID_IContextMenu },
164             {    0x0,       &IID_IUnknown },
165             {    0x4,   &IID_IWinEventHandler },
166             {    0x8,   &IID_IDispatch },
167             {   0x10,   &IID_IPersistPropertyBag },
168         },
169     },
170     {
171         ID_NAME(CLSID_CCommonBrowser),
172         {
173             {    0x0,   &IID_IUnknown },
174             {    0xc,   &IID_IShellBrowser },
175             {    0xc,       &IID_IOleWindow },
176             {   0x10,   &IID_IBrowserService3 },
177             {   0x10,       &IID_IBrowserService2 },
178             {   0x10,           &IID_IBrowserService },
179             {   0x14,   &IID_IServiceProvider },
180             {   0x18,   &IID_IOleCommandTarget },
181             {   0x1c,   &IID_IDockingWindowSite },
182             {   0x20,   &IID_IDockingWindowFrame },
183             {   0x24,   &IID_IInputObjectSite },
184             {   0x28,   &IID_IDropTarget },
185             {   0x2c,   &IID_IShellBrowserService },
186         }
187     },
188     {
189         ID_NAME(CLSID_CDockingBarPropertyBag),
190         {
191             {    0x0,   &IID_IPropertyBag },
192             {    0x0,       &IID_IUnknown },
193         },
194     },
195     {
196         ID_NAME(CLSID_CRegTreeOptions),
197         {
198             {    0x0,   &IID_IRegTreeOptions },
199             {    0x0,       &IID_IUnknown },
200             {    0x4,   &IID_IObjectWithSite },
201         }
202     },
203     {
204         ID_NAME(CLSID_CommBand),
205         {
206             {  -0x30,   &IID_IDeskBand },
207             {  -0x30,       &IID_IDockingWindow },
208             {  -0x30,           &IID_IOleWindow },
209             {  -0x2c,   &IID_IObjectWithSite },
210             {  -0x24,   &IID_IInputObject },
211             {  -0x20,   &IID_IPersistStream },
212             {  -0x20,       &IID_IPersist },
213             {  -0x1c,   &IID_IOleCommandTarget },
214             {  -0x18,   &IID_IServiceProvider },
215             {    0x0,   &IID_IContextMenu },
216             {    0x0,       &IID_IUnknown },
217             {    0x4,   &IID_IWinEventHandler },
218             {    0x8,   &IID_IDispatch },
219             {   0x10,   &IID_IPersistPropertyBag },
220         },
221     },
222     {
223         ID_NAME(CLSID_DeskBar),
224         {
225             {  -0xb8,   &IID_IOleCommandTarget },
226             {  -0xb4,   &IID_IServiceProvider },
227             {  -0xb0,   &IID_IDeskBar },
228             {  -0xb0,       &IID_IOleWindow },
229             {  -0xac,   &IID_IInputObjectSite },
230             {  -0xa8,   &IID_IInputObject },
231             {  -0x70,   &IID_IDockingWindow },
232             {  -0x6c,   &IID_IObjectWithSite },
233             {  -0x68,   &IID_IPersistStreamInit },
234             {  -0x68,   &IID_IPersistStream },
235             {  -0x68,       &IID_IPersist },
236             {  -0x64,   &IID_IPersistPropertyBag },
237             {    0x0,   &IID_IUnknown },
238         }
239     },
240     {
241         ID_NAME(CLSID_DeskBarApp),
242         {
243             {  -0xb8,   &IID_IOleCommandTarget },
244             {  -0xb4,   &IID_IServiceProvider },
245             {  -0xb0,   &IID_IDeskBar },
246             {  -0xb0,       &IID_IOleWindow },
247             {  -0xac,   &IID_IInputObjectSite },
248             {  -0xa8,   &IID_IInputObject },
249             {  -0x70,   &IID_IDockingWindow },
250             {  -0x6c,   &IID_IObjectWithSite },
251             {  -0x68,   &IID_IPersistStreamInit },
252             {  -0x68,   &IID_IPersistStream },
253             {  -0x68,       &IID_IPersist },
254             {  -0x64,   &IID_IPersistPropertyBag },
255             {    0x0,   &IID_IUnknown },
256             {    0x8,   &IID_IContextMenu3 },
257             {    0x8,       &IID_IContextMenu2 },
258             {    0x8,           &IID_IContextMenu },
259         }
260     },
261     {
262         ID_NAME(CLSID_GlobalFolderSettings),
263         {
264             {    0x0,   &IID_IGlobalFolderSettings },
265             {    0x0,       &IID_IUnknown },
266         },
267         L"Both"
268     },
269     {
270         ID_NAME(CLSID_ImageListCache),
271         {
272             {    0x0,   &IID_IUnknown },
273         },
274         L"Both"
275     },
276     {
277         ID_NAME(CLSID_ImgCtxThumbnailExtractor),
278         {
279             {    0x0,   &IID_IExtractImage2 },
280             {    0x0,       &IID_IExtractImage },
281             {    0x0,           &IID_IUnknown },
282             {    0x8,   &IID_IPersistFile },
283         },
284         L"Both"
285     },
286     {
287         ID_NAME(CLSID_InternetToolbar),
288         {
289             {  -0x54,   &IID_IOleCommandTarget },
290             {  -0x50,   &IID_IServiceProvider },
291             {  -0x4c,   &IID_IDeskBar },
292             {  -0x4c,       &IID_IOleWindow },
293             {  -0x48,   &IID_IInputObjectSite },
294             {  -0x44,   &IID_IInputObject },
295             {   -0xc,   &IID_IDockingWindow },
296             {   -0x8,   &IID_IObjectWithSite },
297             {   -0x4,   &IID_IExplorerToolbar },
298             {    0x0,   &DIID_DWebBrowserEvents },
299             {    0x0,   &IID_IDispatch },
300             {    0x0,       &IID_IUnknown },
301             {    0x4,   &IID_IPersistStreamInit },
302             {    0x8,   &IID_IShellChangeNotify },
303         }
304     },
305     {
306         ID_NAME(CLSID_ProgressDialog),
307         {
308             {    0x0,   &IID_IProgressDialog },
309             {    0x0,       &IID_IUnknown },
310             {    0x4,   &IID_IOleWindow },
311             {    0x8,   &IID_IActionProgressDialog },
312             {    0xc,   &IID_IActionProgress },
313             {   0x10,   &IID_IObjectWithSite },
314         },
315         L"Both"
316     },
317     {
318         ID_NAME(CLSID_RebarBandSite),
319         {
320             {    0x0,   &IID_IUnknown },
321             {    0xc,   &IID_IBandSite },
322             {   0x10,   &IID_IInputObjectSite },
323             {   0x14,   &IID_IInputObject },
324             {   0x18,   &IID_IDeskBarClient },
325             {   0x18,       &IID_IOleWindow },
326             {   0x1c,   &IID_IWinEventHandler },
327             {   0x20,   &IID_IPersistStream },
328             {   0x20,       &IID_IPersist },
329             {   0x24,   &IID_IDropTarget },
330             {   0x28,   &IID_IServiceProvider },
331             {   0x2c,   &IID_IBandSiteHelper },
332             {   0x30,   &IID_IOleCommandTarget },
333         }
334     },
335     {
336         ID_NAME(CLSID_SH_AddressBand),
337         {
338             {    0x0,   &IID_IDeskBand },
339             {    0x0,       &IID_IDockingWindow },
340             {    0x0,           &IID_IOleWindow },
341             {    0x0,               &IID_IUnknown },
342             {    0x4,   &IID_IObjectWithSite },
343             {    0xc,   &IID_IInputObject },
344             {   0x10,   &IID_IPersistStream },
345             {   0x10,       &IID_IPersist },
346             {   0x14,   &IID_IOleCommandTarget },
347             {   0x18,   &IID_IServiceProvider },
348             {   0x30,   &IID_IWinEventHandler },
349             {   0x34,   &IID_IAddressBand },
350             {   0x38,   &IID_IInputObjectSite },
351         }
352     },
353     {
354         ID_NAME(CLSID_SH_SearchBand),
355         {
356             {    0x0,   &IID_IUnknown },
357             {   0x74,   &IID_IOleContainer },
358             {   0x78,   &IID_IOleInPlaceFrame },
359             //{   0x78,       &IID_IOleInPlaceUIWindow },
360             {   0x78,           &IID_IOleWindow },
361             {   0xb0,   &IID_IDeskBand },
362             {   0xb0,       &IID_IDockingWindow },
363             {   0xb4,   &IID_IInputObject },
364             {   0xb8,   &IID_IObjectWithSite },
365             {   0xbc,   &IID_IContextMenu },
366             {   0xc0,   &IID_IServiceProvider },
367             {   0xc8,   &IID_ISearchBar },
368             {   0xcc,   &IID_IFileSearchBand },
369             {   0xcc,       &IID_IDispatch },
370             {   0xd0,   &IID_IBandNavigate },
371             {   0xd8,   &IID_IPersist },
372         }
373     },
374     {
375         ID_NAME(CLSID_SharedTaskScheduler),
376         {
377             {    0x0,   &IID_IShellTaskScheduler },
378             {    0x0,       &IID_IUnknown },
379         }
380     },
381     {
382         ID_NAME(CLSID_ShellSearchExt),
383         {
384             {    0x0,   &IID_IContextMenu },
385             {    0x0,       &IID_IUnknown },
386             {    0x4,   &IID_IObjectWithSite },
387         }
388     },
389     {
390         ID_NAME(CLSID_ShellTaskScheduler),
391         {
392             {    0x0,   &IID_IShellTaskScheduler },
393             {    0x0,       &IID_IUnknown },
394         },
395     },
396     {
397         ID_NAME(CLSID_UserAssist),
398         {
399             {    0x0,   &IID_IUnknown },
400         },
401         L"Both"
402     },
403     {
404         ID_NAME(CLSID_WebSearchExt),
405         {
406             {    0x0,   &IID_IContextMenu },
407             {    0x0,       &IID_IUnknown },
408             {    0x4,   &IID_IObjectWithSite },
409         },
410     },
411 };
412 static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
413 
414 START_TEST(browseui)
415 {
416     TestClasses(L"browseui", ExpectedInterfaces, ExpectedInterfaceCount);
417 }
418