shell32: Return empty list instead of NULL.
[wine.git] / dlls / ieframe / shelluihelper.c
blob867505bfdab2f2ff7e1c189b08bd6b633ce9b45f
1 /*
2 * Copyright 2012 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "ieframe.h"
21 #include "wine/debug.h"
23 WINE_DEFAULT_DEBUG_CHANNEL(ieframe);
25 struct ShellUIHelper {
26 IShellUIHelper2 IShellUIHelper2_iface;
27 LONG ref;
30 static inline ShellUIHelper *impl_from_IShellUIHelper2(IShellUIHelper2 *iface)
32 return CONTAINING_RECORD(iface, ShellUIHelper, IShellUIHelper2_iface);
35 static HRESULT WINAPI ShellUIHelper2_QueryInterface(IShellUIHelper2 *iface, REFIID riid, void **ppv)
37 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
39 if(IsEqualGUID(&IID_IUnknown, riid)) {
40 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
41 *ppv = &This->IShellUIHelper2_iface;
42 }else if(IsEqualGUID(&IID_IDispatch, riid)) {
43 TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
44 *ppv = &This->IShellUIHelper2_iface;
45 }else if(IsEqualGUID(&IID_IShellUIHelper, riid)) {
46 TRACE("(%p)->(IID_IShellUIHelper %p)\n", This, ppv);
47 *ppv = &This->IShellUIHelper2_iface;
48 }else if(IsEqualGUID(&IID_IShellUIHelper, riid)) {
49 TRACE("(%p)->(IID_IShellUIHelper2 %p)\n", This, ppv);
50 *ppv = &This->IShellUIHelper2_iface;
51 }else {
52 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
53 *ppv = NULL;
54 return E_NOINTERFACE;
57 IUnknown_AddRef((IUnknown*)*ppv);
58 return S_OK;
61 static ULONG WINAPI ShellUIHelper2_AddRef(IShellUIHelper2 *iface)
63 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
64 LONG ref = InterlockedIncrement(&This->ref);
66 TRACE("(%p) ref=%d\n", This, ref);
68 return ref;
71 static ULONG WINAPI ShellUIHelper2_Release(IShellUIHelper2 *iface)
73 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
74 LONG ref = InterlockedDecrement(&This->ref);
76 TRACE("(%p) ref=%d\n", This, ref);
78 if(!ref)
79 heap_free(This);
81 return ref;
84 static HRESULT WINAPI ShellUIHelper2_GetTypeInfoCount(IShellUIHelper2 *iface, UINT *pctinfo)
86 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
88 TRACE("(%p)->(%p)\n", This, pctinfo);
90 *pctinfo = 1;
91 return S_OK;
94 static HRESULT WINAPI ShellUIHelper2_GetTypeInfo(IShellUIHelper2 *iface, UINT iTInfo, LCID lcid, LPTYPEINFO *ppTInfo)
96 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
97 FIXME("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo);
98 return E_NOTIMPL;
101 static HRESULT WINAPI ShellUIHelper2_GetIDsOfNames(IShellUIHelper2 *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames,
102 LCID lcid, DISPID *rgDispId)
104 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
105 FIXME("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
106 lcid, rgDispId);
107 return E_NOTIMPL;
110 static HRESULT WINAPI ShellUIHelper2_Invoke(IShellUIHelper2 *iface, DISPID dispIdMember,
111 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
112 EXCEPINFO *pExepInfo, UINT *puArgErr)
114 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
115 FIXME("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
116 lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
117 return E_NOTIMPL;
120 static HRESULT WINAPI ShellUIHelper2_ResetFirstBootMode(IShellUIHelper2 *iface)
122 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
123 FIXME("(%p)->()\n", This);
124 return E_NOTIMPL;
127 static HRESULT WINAPI ShellUIHelper2_ResetSafeMode(IShellUIHelper2 *iface)
129 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
130 FIXME("(%p)->()\n", This);
131 return E_NOTIMPL;
134 static HRESULT WINAPI ShellUIHelper2_RefreshOfflineDesktop(IShellUIHelper2 *iface)
136 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
137 FIXME("(%p)->()\n", This);
138 return E_NOTIMPL;
141 static HRESULT WINAPI ShellUIHelper2_AddFavourite(IShellUIHelper2 *iface, BSTR URL, VARIANT *Title)
143 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
144 FIXME("(%p)->(%s %s)\n", This, debugstr_w(URL), debugstr_variant(Title));
145 return E_NOTIMPL;
148 static HRESULT WINAPI ShellUIHelper2_AddChannel(IShellUIHelper2 *iface, BSTR URL)
150 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
151 FIXME("(%p)->(%s)\n", This, debugstr_w(URL));
152 return E_NOTIMPL;
155 static HRESULT WINAPI ShellUIHelper2_AddDesktopComponent(IShellUIHelper2 *iface, BSTR URL, BSTR Type,
156 VARIANT *Left, VARIANT *Top, VARIANT *Width, VARIANT *Height)
158 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
159 FIXME("(%p)->(%s %s %s %s %s %s)\n", This, debugstr_w(URL), debugstr_w(Type), debugstr_variant(Left),
160 debugstr_variant(Top), debugstr_variant(Width), debugstr_variant(Height));
161 return E_NOTIMPL;
164 static HRESULT WINAPI ShellUIHelper2_IsSubscribed(IShellUIHelper2 *iface, BSTR URL, VARIANT_BOOL *pBool)
166 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
167 FIXME("(%p)->(%s %p)\n", This, debugstr_w(URL), pBool);
168 return E_NOTIMPL;
171 static HRESULT WINAPI ShellUIHelper2_NavigateAndFind(IShellUIHelper2 *iface, BSTR URL, BSTR strQuery, VARIANT *varTargetFrame)
173 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
174 FIXME("(%p)->(%s %s %s)\n", This, debugstr_w(URL), debugstr_w(strQuery), debugstr_variant(varTargetFrame));
175 return E_NOTIMPL;
178 static HRESULT WINAPI ShellUIHelper2_ImportExportFavourites(IShellUIHelper2 *iface, VARIANT_BOOL fImport, BSTR strImpExpPath)
180 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
181 FIXME("(%p)->(%x %s)\n", This, fImport, debugstr_w(strImpExpPath));
182 return E_NOTIMPL;
185 static HRESULT WINAPI ShellUIHelper2_AutoCompleteSaveForm(IShellUIHelper2 *iface, VARIANT *Form)
187 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
188 FIXME("(%p)->(%s)\n", This, debugstr_variant(Form));
189 return E_NOTIMPL;
192 static HRESULT WINAPI ShellUIHelper2_AutoScan(IShellUIHelper2 *iface, BSTR strSearch, BSTR strFailureUrl, VARIANT *pvarTargetFrame)
194 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
195 FIXME("(%p)->(%s %s %s)\n", This, debugstr_w(strSearch), debugstr_w(strFailureUrl), debugstr_variant(pvarTargetFrame));
196 return E_NOTIMPL;
199 static HRESULT WINAPI ShellUIHelper2_AutoCompleteAttach(IShellUIHelper2 *iface, VARIANT *Reserved)
201 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
202 FIXME("(%p)->(%s)\n", This, debugstr_variant(Reserved));
203 return E_NOTIMPL;
206 static HRESULT WINAPI ShellUIHelper2_ShowBrowserUI(IShellUIHelper2 *iface, BSTR bstrName, VARIANT *pvarIn, VARIANT *pvarOut)
208 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
209 FIXME("(%p)->(%s %s %p)\n", This, debugstr_w(bstrName), debugstr_variant(pvarIn), pvarOut);
210 return E_NOTIMPL;
213 static HRESULT WINAPI ShellUIHelper2_AddSearchProvider(IShellUIHelper2 *iface, BSTR URL)
215 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
216 FIXME("(%p)->(%s)\n", This, debugstr_w(URL));
217 return E_NOTIMPL;
220 static HRESULT WINAPI ShellUIHelper2_RunOnceShown(IShellUIHelper2 *iface)
222 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
223 FIXME("(%p)->()\n", This);
224 return E_NOTIMPL;
227 static HRESULT WINAPI ShellUIHelper2_SkipRunOnce(IShellUIHelper2 *iface)
229 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
230 FIXME("(%p)->()\n", This);
231 return E_NOTIMPL;
234 static HRESULT WINAPI ShellUIHelper2_CustomizeSettings(IShellUIHelper2 *iface, VARIANT_BOOL fSQM,
235 VARIANT_BOOL fPhishing, BSTR bstrLocale)
237 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
238 FIXME("(%p)->(%x %x %s)\n", This, fSQM, fPhishing, debugstr_w(bstrLocale));
239 return E_NOTIMPL;
242 static HRESULT WINAPI ShellUIHelper2_SqmEnabled(IShellUIHelper2 *iface, VARIANT_BOOL *pfEnabled)
244 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
245 FIXME("(%p)->(%p)\n", This, pfEnabled);
246 return E_NOTIMPL;
249 static HRESULT WINAPI ShellUIHelper2_PhishingEnabled(IShellUIHelper2 *iface, VARIANT_BOOL *pfEnabled)
251 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
252 FIXME("(%p)->(%p)\n", This, pfEnabled);
253 return E_NOTIMPL;
256 static HRESULT WINAPI ShellUIHelper2_BrandImageUri(IShellUIHelper2 *iface, BSTR *pbstrUri)
258 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
259 FIXME("(%p)->(%p)\n", This, pbstrUri);
260 return E_NOTIMPL;
263 static HRESULT WINAPI ShellUIHelper2_SkipTabsWelcome(IShellUIHelper2 *iface)
265 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
266 FIXME("(%p)->()\n", This);
267 return E_NOTIMPL;
270 static HRESULT WINAPI ShellUIHelper2_DiagnoseConnection(IShellUIHelper2 *iface)
272 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
273 FIXME("(%p)->()\n", This);
274 return E_NOTIMPL;
277 static HRESULT WINAPI ShellUIHelper2_CustomizeClearType(IShellUIHelper2 *iface, VARIANT_BOOL fSet)
279 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
280 FIXME("(%p)->(%x)\n", This, fSet);
281 return E_NOTIMPL;
284 static HRESULT WINAPI ShellUIHelper2_IsSearchProviderInstalled(IShellUIHelper2 *iface, BSTR URL, DWORD *pdwResult)
286 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
287 FIXME("(%p)->(%s %p)\n", This, debugstr_w(URL), pdwResult);
288 return E_NOTIMPL;
291 static HRESULT WINAPI ShellUIHelper2_IsSearchMigrated(IShellUIHelper2 *iface, VARIANT_BOOL *pfMigrated)
293 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
294 FIXME("(%p)->(%p)\n", This, pfMigrated);
295 return E_NOTIMPL;
298 static HRESULT WINAPI ShellUIHelper2_DefaultSearchProvider(IShellUIHelper2 *iface, BSTR *pbstrName)
300 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
301 FIXME("(%p)->(%p)\n", This, pbstrName);
302 return E_NOTIMPL;
305 static HRESULT WINAPI ShellUIHelper2_RunOnceRequiredSettingsComplete(IShellUIHelper2 *iface, VARIANT_BOOL fComplete)
307 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
308 FIXME("(%p)->(%x)\n", This, fComplete);
309 return E_NOTIMPL;
312 static HRESULT WINAPI ShellUIHelper2_RunOnceHasShown(IShellUIHelper2 *iface, VARIANT_BOOL *pfShown)
314 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
315 FIXME("(%p)->(%p)\n", This, pfShown);
316 return E_NOTIMPL;
319 static HRESULT WINAPI ShellUIHelper2_SearchGuideUrl(IShellUIHelper2 *iface, BSTR *pbstrUrl)
321 ShellUIHelper *This = impl_from_IShellUIHelper2(iface);
322 FIXME("(%p)->(%p)\n", This, pbstrUrl);
323 return E_NOTIMPL;
326 static const IShellUIHelper2Vtbl ShellUIHelper2Vtbl = {
327 ShellUIHelper2_QueryInterface,
328 ShellUIHelper2_AddRef,
329 ShellUIHelper2_Release,
330 ShellUIHelper2_GetTypeInfoCount,
331 ShellUIHelper2_GetTypeInfo,
332 ShellUIHelper2_GetIDsOfNames,
333 ShellUIHelper2_Invoke,
334 ShellUIHelper2_ResetFirstBootMode,
335 ShellUIHelper2_ResetSafeMode,
336 ShellUIHelper2_RefreshOfflineDesktop,
337 ShellUIHelper2_AddFavourite,
338 ShellUIHelper2_AddChannel,
339 ShellUIHelper2_AddDesktopComponent,
340 ShellUIHelper2_IsSubscribed,
341 ShellUIHelper2_NavigateAndFind,
342 ShellUIHelper2_ImportExportFavourites,
343 ShellUIHelper2_AutoCompleteSaveForm,
344 ShellUIHelper2_AutoScan,
345 ShellUIHelper2_AutoCompleteAttach,
346 ShellUIHelper2_ShowBrowserUI,
347 ShellUIHelper2_AddSearchProvider,
348 ShellUIHelper2_RunOnceShown,
349 ShellUIHelper2_SkipRunOnce,
350 ShellUIHelper2_CustomizeSettings,
351 ShellUIHelper2_SqmEnabled,
352 ShellUIHelper2_PhishingEnabled,
353 ShellUIHelper2_BrandImageUri,
354 ShellUIHelper2_SkipTabsWelcome,
355 ShellUIHelper2_DiagnoseConnection,
356 ShellUIHelper2_CustomizeClearType,
357 ShellUIHelper2_IsSearchProviderInstalled,
358 ShellUIHelper2_IsSearchMigrated,
359 ShellUIHelper2_DefaultSearchProvider,
360 ShellUIHelper2_RunOnceRequiredSettingsComplete,
361 ShellUIHelper2_RunOnceHasShown,
362 ShellUIHelper2_SearchGuideUrl
365 HRESULT create_shell_ui_helper(IShellUIHelper2 **_ret)
367 ShellUIHelper *ret;
369 ret = heap_alloc(sizeof(*ret));
370 if(!ret)
371 return E_OUTOFMEMORY;
373 ret->IShellUIHelper2_iface.lpVtbl = &ShellUIHelper2Vtbl;
374 ret->ref = 1;
376 *_ret = &ret->IShellUIHelper2_iface;
377 return S_OK;