ReactOS 0.4.15-dev-7918-g2a2556c
shellbrowser.c
Go to the documentation of this file.
1/*
2 * Implementation of IShellBrowser interface
3 *
4 * Copyright 2011 Piotr Caban for CodeWeavers
5 * Copyright 2012 Jacek Caban for CodeWeavers
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#include <assert.h>
23
24#include "ieframe.h"
25#include "exdispid.h"
26#include "shlwapi.h"
27
28#include "wine/debug.h"
29
31
33{
34 return CONTAINING_RECORD(iface, ShellBrowser, IShellBrowser_iface);
35}
36
38{
40
42 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
43 *ppv = &This->IShellBrowser_iface;
44 }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
45 TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
46 *ppv = &This->IShellBrowser_iface;
47 }else if(IsEqualGUID(&IID_IShellBrowser, riid)) {
48 TRACE("(%p)->(IID_IShellBrowser %p)\n", This, ppv);
49 *ppv = &This->IShellBrowser_iface;
50 }else if(IsEqualGUID(&IID_IBrowserService, riid)) {
51 TRACE("(%p)->(IID_IBrowserService %p)\n", This, ppv);
52 *ppv = &This->IBrowserService_iface;
53 }else if(IsEqualGUID(&IID_IDocObjectService, riid)) {
54 TRACE("(%p)->(IID_IDocObjectService %p)\n", This, ppv);
55 *ppv = &This->IDocObjectService_iface;
56 }else {
57 FIXME("%p %s %p\n", This, debugstr_guid(riid), ppv);
58 *ppv = NULL;
59 return E_NOINTERFACE;
60 }
61
62 IUnknown_AddRef((IUnknown*)*ppv);
63 return S_OK;
64}
65
67 IShellBrowser* iface)
68{
71
72 TRACE("(%p) ref=%d\n", This, ref);
73
74 return ref;
75}
76
78{
81
82 TRACE("(%p) ref=%d\n", This, ref);
83
84 if(!ref) {
85 assert(!This->doc_host);
87 }
88
89 return ref;
90}
91
93 IShellBrowser* iface,
94 HWND *phwnd)
95{
97 FIXME("%p %p\n", This, phwnd);
98 return E_NOTIMPL;
99}
100
102 IShellBrowser* iface,
103 BOOL fEnterMode)
104{
106 FIXME("%p %d\n", This, fEnterMode);
107 return E_NOTIMPL;
108}
109
111 IShellBrowser* iface,
112 HMENU hmenuShared,
113 LPOLEMENUGROUPWIDTHS lpMenuWidths)
114{
116 FIXME("%p %p %p\n", This, hmenuShared, lpMenuWidths);
117 return E_NOTIMPL;
118}
119
121 IShellBrowser* iface,
122 HMENU hmenuShared,
123 HOLEMENU holemenuReserved,
124 HWND hwndActiveObject)
125{
127 FIXME("%p %p %p %p\n", This, hmenuShared, holemenuReserved, hwndActiveObject);
128 return E_NOTIMPL;
129}
130
132 IShellBrowser* iface,
133 HMENU hmenuShared)
134{
136 FIXME("%p %p\n", This, hmenuShared);
137 return E_NOTIMPL;
138}
139
141 IShellBrowser* iface,
142 LPCOLESTR pszStatusText)
143{
145 FIXME("%p %s\n", This, debugstr_w(pszStatusText));
146 return E_NOTIMPL;
147}
148
150 IShellBrowser* iface,
151 BOOL fEnable)
152{
154 FIXME("%p %d\n", This, fEnable);
155 return E_NOTIMPL;
156}
157
159 IShellBrowser* iface,
160 MSG *pmsg,
161 WORD wID)
162{
164 FIXME("%p %p %d\n", This, pmsg, (int)wID);
165 return E_NOTIMPL;
166}
167
169 IShellBrowser* iface,
170 LPCITEMIDLIST pidl,
171 UINT wFlags)
172{
174 FIXME("%p %p %u\n", This, pidl, wFlags);
175 return E_NOTIMPL;
176}
177
179 IShellBrowser* iface,
180 DWORD grfMode,
181 IStream **ppStrm)
182{
184 FIXME("%p %x %p\n", This, grfMode, ppStrm);
185 return E_NOTIMPL;
186}
187
189 IShellBrowser* iface,
190 UINT id,
191 HWND *phwnd)
192{
194 FIXME("%p %u %p\n", This, id, phwnd);
195 return E_NOTIMPL;
196}
197
199 IShellBrowser* iface,
200 UINT id,
201 UINT uMsg,
204 LRESULT *pret)
205{
207 FIXME("%p %u %u %p\n", This, id, uMsg, pret);
208 return E_NOTIMPL;
209}
210
212 IShellBrowser* iface,
213 IShellView **ppshv)
214{
216 FIXME("%p %p\n", This, ppshv);
217 return E_NOTIMPL;
218}
219
221 IShellBrowser* iface,
222 IShellView *pshv)
223{
225 FIXME("%p %p\n", This, pshv);
226 return E_NOTIMPL;
227}
228
230 IShellBrowser* iface,
231 LPTBBUTTONSB lpButtons,
232 UINT nButtons,
233 UINT uFlags)
234{
236 FIXME("%p %p %u %u\n", This, lpButtons, nButtons, uFlags);
237 return E_NOTIMPL;
238}
239
240static const IShellBrowserVtbl ShellBrowserVtbl = {
259};
260
262{
263 return CONTAINING_RECORD(iface, ShellBrowser, IBrowserService_iface);
264}
265
267 IBrowserService* iface,
268 REFIID riid,
269 void **ppvObject)
270{
272 return IShellBrowser_QueryInterface(&This->IShellBrowser_iface, riid, ppvObject);
273}
274
276 IBrowserService *iface)
277{
279 return IShellBrowser_AddRef(&This->IShellBrowser_iface);
280}
281
283 IBrowserService* iface)
284{
286 return IShellBrowser_Release(&This->IShellBrowser_iface);
287}
288
290 IBrowserService* iface,
291 IOleInPlaceSite **ppipsite)
292{
294 FIXME("%p %p\n", This, ppipsite);
295 return E_NOTIMPL;
296}
297
299 IBrowserService* iface,
300 IShellView *psv,
301 LPCWSTR pszName)
302{
304 FIXME("%p %p %s\n", This, psv, debugstr_w(pszName));
305 return E_NOTIMPL;
306}
307
309 IBrowserService* iface,
310 IShellView *psv,
311 LPWSTR pszName,
313{
315 FIXME("%p %p %p %d\n", This, psv, pszName, cchName);
316 return E_NOTIMPL;
317}
318
320 IBrowserService* iface,
321 IOleObject **ppobjv)
322{
324 FIXME("%p %p\n", This, ppobjv);
325 return E_NOTIMPL;
326}
327
329 IBrowserService* iface,
331{
333 FIXME("%p %p\n", This, pptl);
334 return E_NOTIMPL;
335}
336
338 IBrowserService* iface,
339 UINT id,
340 BOOL fShow)
341{
343 FIXME("%p %u %d\n", This, id, fShow);
344 return E_NOTIMPL;
345}
346
348 IBrowserService* iface,
349 UINT id,
350 BOOL *pfShown)
351{
353 FIXME("%p %u %p\n", This, id, pfShown);
354 return E_NOTIMPL;
355}
356
358 IBrowserService* iface,
360 LPWSTR pwszName,
361 UINT uFlags)
362{
364 FIXME("%p %p %p %u\n", This, pidl, pwszName, uFlags);
365 return E_NOTIMPL;
366}
367
369 IBrowserService* iface,
370 UINT uiCP,
371 LPCWSTR pwszPath,
372 PIDLIST_ABSOLUTE *ppidlOut)
373{
375 FIXME("%p %u %s %p\n", This, uiCP, debugstr_w(pwszPath), ppidlOut);
376 return E_NOTIMPL;
377}
378
380 IBrowserService* iface,
382 LPCWSTR pwszPath)
383{
385 FIXME("%p %x %s\n", This, hres, debugstr_w(pwszPath));
386 return E_NOTIMPL;
387}
388
390 IBrowserService* iface,
392 DWORD grfHLNF)
393{
395 FIXME("%p %p %d\n", This, pidl, grfHLNF);
396 return E_NOTIMPL;
397}
398
400 IBrowserService* iface,
401 BNSTATE bnstate)
402{
404 FIXME("%p %d\n", This, bnstate);
405 return E_NOTIMPL;
406}
407
409 IBrowserService* iface,
410 BNSTATE *pbnstate)
411{
413 FIXME("%p %p\n", This, pbnstate);
414 return E_NOTIMPL;
415}
416
418 IBrowserService* iface,
419 IShellView *psv,
421 BOOL *pfDidBrowse)
422{
424 FIXME("%p %p %p %p\n", This, psv, pidl, pfDidBrowse);
425 return E_NOTIMPL;
426}
427
429 IBrowserService* iface)
430{
432 FIXME("%p\n", This);
433 return E_NOTIMPL;
434}
435
437 IBrowserService* iface)
438{
440 FIXME("%p\n", This);
441 return E_NOTIMPL;
442}
443
445 IBrowserService* iface,
447 DWORD dwFlagMask)
448{
450 FIXME("%p %x %x\n", This, dwFlags, dwFlagMask);
451 return E_NOTIMPL;
452}
453
455 IBrowserService* iface,
456 DWORD *pdwFlags)
457{
459 FIXME("%p %p\n", This, pdwFlags);
460 return E_NOTIMPL;
461}
462
464 IBrowserService* iface)
465{
467 FIXME("%p\n", This);
468 return E_NOTIMPL;
469}
470
472 IBrowserService* iface,
473 PIDLIST_ABSOLUTE *ppidl)
474{
476 FIXME("%p %p\n", This, ppidl);
477 return E_NOTIMPL;
478}
479
481 IBrowserService* iface,
483{
485 FIXME("%p %p\n", This, pidl);
486 return E_NOTIMPL;
487}
488
490 IBrowserService* iface)
491{
493 FIXME("%p\n", This);
494 return E_NOTIMPL;
495}
496
498 IBrowserService* iface,
499 DWORD dwID,
500 IUnknown **ppunk)
501{
503 FIXME("%p %x %p\n", This, dwID, ppunk);
504 return E_NOTIMPL;
505}
506
508 IBrowserService* iface,
509 IOleObject **ppole,
510 IStream **pstm,
511 IBindCtx **ppbc)
512{
514 FIXME("%p %p %p %p\n", This, ppole, pstm, ppbc);
515 return E_NOTIMPL;
516}
517
519 IBrowserService* iface,
520 IOleObject *pole,
521 BOOL fIsLocalAnchor)
522{
524 FIXME("%p %p %d\n", This, pole, fIsLocalAnchor);
525 return E_NOTIMPL;
526}
527
529 IBrowserService* iface,
530 IOleObject *pole)
531{
533 FIXME("%p %p\n", This, pole);
534 return E_NOTIMPL;
535}
536
538 IBrowserService* iface,
539 VARIANT *pvarIn,
540 VARIANT *pvarOut)
541{
543 FIXME("%p %s %p\n", This, debugstr_variant(pvarIn), pvarOut);
544 return E_NOTIMPL;
545}
546
548 IBrowserService* iface,
549 IShellView *psv,
550 BOOL fDone,
551 VARIANT *pvarargIn,
552 VARIANT *pvarargOut)
553{
555 FIXME("%p %p %d %s %p\n", This, psv, fDone, debugstr_variant(pvarargIn), pvarargOut);
556 return E_NOTIMPL;
557}
558
560 IBrowserService* iface,
561 HPALETTE *hpal)
562{
564 FIXME("%p %p\n", This, hpal);
565 return E_NOTIMPL;
566}
567
569 IBrowserService* iface,
570 BOOL fForceRegister,
571 int swc)
572{
574 FIXME("%p %d %d\n", This, fForceRegister, swc);
575 return E_NOTIMPL;
576}
577
578static const IBrowserServiceVtbl BrowserServiceVtbl = {
612};
613
615{
616 return CONTAINING_RECORD(iface, ShellBrowser, IDocObjectService_iface);
617}
618
620 IDocObjectService* iface,
621 REFIID riid,
622 void **ppvObject)
623{
625 return IShellBrowser_QueryInterface(&This->IShellBrowser_iface, riid, ppvObject);
626}
627
629 IDocObjectService* iface)
630{
632 return IShellBrowser_AddRef(&This->IShellBrowser_iface);
633}
634
636 IDocObjectService* iface)
637{
639 return IShellBrowser_Release(&This->IShellBrowser_iface);
640}
641
643 IDocObjectService* iface,
644 IDispatch *pDispatch,
645 LPCWSTR lpszUrl,
647 LPCWSTR lpszFrameName,
648 BYTE *pPostData,
649 DWORD cbPostData,
650 LPCWSTR lpszHeaders,
651 BOOL fPlayNavSound,
652 BOOL *pfCancel)
653{
655 VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers;
657 DISPPARAMS dp = {params, NULL, 7, 0};
658 VARIANT_BOOL cancel = VARIANT_FALSE;
661 DWORD file_path_len = ARRAY_SIZE(file_path);
662
663 TRACE("%p %p %s %x %s %p %d %s %d %p\n", This, pDispatch, debugstr_w(lpszUrl),
664 dwFlags, debugstr_w(lpszFrameName), pPostData, cbPostData,
665 debugstr_w(lpszHeaders), fPlayNavSound, pfCancel);
666
667 if(cbPostData) {
668 post_data = SafeArrayCreateVector(VT_UI1, 0, cbPostData);
669 if(!post_data)
670 return E_OUTOFMEMORY;
671 memcpy(post_data->pvData, pPostData, cbPostData);
672 }else {
673 post_data = NULL;
674 }
675
677 V_BOOLREF(params) = &cancel;
678
680 V_VARIANTREF(params+1) = &var_headers;
681 V_VT(&var_headers) = VT_BSTR;
682 V_BSTR(&var_headers) = lpszHeaders ? SysAllocString(lpszHeaders) : NULL;
683
685 V_VARIANTREF(params+2) = &var_post_data2;
686 V_VT(&var_post_data2) = (VT_BYREF|VT_VARIANT);
687 V_VARIANTREF(&var_post_data2) = &var_post_data;
688
689 if(post_data) {
690 V_VT(&var_post_data) = VT_UI1|VT_ARRAY;
691 V_ARRAY(&var_post_data) = post_data;
692 }else {
693 V_VT(&var_post_data) = VT_EMPTY;
694 }
695
697 V_VARIANTREF(params+3) = &var_frame_name;
698 V_VT(&var_frame_name) = VT_BSTR;
699 V_BSTR(&var_frame_name) = lpszFrameName ? SysAllocString(lpszFrameName) : NULL;
700
702 V_VARIANTREF(params+4) = &var_flags;
703 V_VT(&var_flags) = VT_I4;
704 V_I4(&var_flags) = 0;
705
707 V_VARIANTREF(params+5) = &var_url;
708 V_VT(&var_url) = VT_BSTR;
709 if(PathCreateFromUrlW(lpszUrl, file_path, &file_path_len, 0) == S_OK)
710 V_BSTR(&var_url) = SysAllocString(file_path);
711 else
712 V_BSTR(&var_url) = SysAllocString(lpszUrl);
713
714 V_VT(params+6) = (VT_DISPATCH);
715 V_DISPATCH(params+6) = (IDispatch*)This->doc_host->wb;
716
717 /* Keep reference to This. It may be released in event handler. */
718 IShellBrowser_AddRef(&This->IShellBrowser_iface);
719
720 TRACE(">>>\n");
721 call_sink(This->doc_host->cps.wbe2, DISPID_BEFORENAVIGATE2, &dp);
722 TRACE("<<<\n");
723
724 IShellBrowser_Release(&This->IShellBrowser_iface);
725
726 SysFreeString(V_BSTR(&var_url));
727 SysFreeString(V_BSTR(&var_headers));
728 SysFreeString(V_BSTR(&var_frame_name));
730
731 *pfCancel = !!cancel;
732 return S_OK;
733}
734
736 IDocObjectService* iface,
737 IHTMLWindow2 *pHTMLWindow2,
739{
741 DocHost *doc_host = This->doc_host;
742 IHTMLPrivateWindow *priv_window;
744 DISPPARAMS dp = {params, NULL, 2, 0};
745 VARIANT url_var;
746 BSTR url;
748
749 TRACE("%p %p %x\n", This, pHTMLWindow2, dwFlags);
750
752
753 if(doc_host->travellog.loading_pos != -1) {
754 WARN("histupdate not notified\n");
755 doc_host->travellog.position = doc_host->travellog.loading_pos;
756 doc_host->travellog.loading_pos = -1;
757 }
758
759 hres = IHTMLWindow2_QueryInterface(pHTMLWindow2, &IID_IHTMLPrivateWindow, (void**)&priv_window);
760 if(FAILED(hres))
761 return hres;
762
763 hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url);
764 IHTMLPrivateWindow_Release(priv_window);
765 if(FAILED(hres))
766 return hres;
767
768 TRACE("got URL %s\n", debugstr_w(url));
769 set_dochost_url(This->doc_host, url);
770
772 V_VARIANTREF(params) = &url_var;
773
775 V_DISPATCH(params+1) = (IDispatch*)doc_host->wb;
776
777 V_VT(&url_var) = VT_BSTR;
778 V_BSTR(&url_var) = url;
779
780 /* Keep reference to This. It may be released in event handler. */
781 IShellBrowser_AddRef(&This->IShellBrowser_iface);
782
783 TRACE(">>>\n");
784 call_sink(This->doc_host->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dp);
785 TRACE("<<<\n");
786
788
789 IShellBrowser_Release(&This->IShellBrowser_iface);
790 return S_OK;
791}
792
794 IDocObjectService* iface)
795{
797 FIXME("%p\n", This);
798 return E_NOTIMPL;
799}
800
802 IDocObjectService* iface)
803{
805 FIXME("%p\n", This);
806 return E_NOTIMPL;
807}
808
810 IDocObjectService* iface,
811 IHTMLWindow2 *pHTMLWindow,
813{
815 IHTMLPrivateWindow *priv_window;
817 DISPPARAMS dp = {params, NULL, 2, 0};
818 VARIANT url_var;
819 BSTR url;
821
822 TRACE("%p %p %x\n", This, pHTMLWindow, dwFlags);
823
824 hres = IHTMLWindow2_QueryInterface(pHTMLWindow, &IID_IHTMLPrivateWindow, (void**)&priv_window);
825 if(FAILED(hres))
826 return hres;
827
828 hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url);
829 IHTMLPrivateWindow_Release(priv_window);
830 if(FAILED(hres))
831 return hres;
832
833 TRACE("got URL %s\n", debugstr_w(url));
834
836 V_VARIANTREF(params) = &url_var;
837
839 V_DISPATCH(params+1) = (IDispatch*)This->doc_host->wb;
840
841 V_VT(&url_var) = VT_BSTR;
842 V_BSTR(&url_var) = url;
843
844 /* Keep reference to This. It may be released in event handler. */
845 IShellBrowser_AddRef(&This->IShellBrowser_iface);
846
847 TRACE(">>>\n");
848 call_sink(This->doc_host->cps.wbe2, DISPID_DOCUMENTCOMPLETE, &dp);
849 TRACE("<<<\n");
850
852
853 IShellBrowser_Release(&This->IShellBrowser_iface);
854 return S_OK;
855}
856
858 IDocObjectService* iface,
859 IHTMLWindow2 *pHTMLWindow)
860{
862 FIXME("%p %p\n", This, pHTMLWindow);
863 return E_NOTIMPL;
864}
865
867 IDocObjectService* iface,
868 BSTR *pbstrPendingUrl)
869{
871 FIXME("%p %p\n", This, pbstrPendingUrl);
872 return E_NOTIMPL;
873}
874
876 IDocObjectService* iface,
877 IHTMLElement *pHTMLElement)
878{
880 FIXME("%p %p\n", This, pHTMLElement);
881 return E_NOTIMPL;
882}
883
885 IDocObjectService* iface,
886 BSTR *pbstrSearch)
887{
889 FIXME("%p %p\n", This, pbstrSearch);
890 return E_NOTIMPL;
891}
892
894 IDocObjectService* iface,
895 LPCWSTR lpszUrl,
896 BOOL *pfIsError)
897{
899 FIXME("%p %s %p\n", This, debugstr_w(lpszUrl), pfIsError);
900
901 *pfIsError = FALSE;
902 return S_OK;
903}
904
905static const IDocObjectServiceVtbl DocObjectServiceVtbl = {
919};
920
922{
924
925 sb = heap_alloc(sizeof(ShellBrowser));
926 if(!sb)
927 return E_OUTOFMEMORY;
928
929 sb->IShellBrowser_iface.lpVtbl = &ShellBrowserVtbl;
930 sb->IBrowserService_iface.lpVtbl = &BrowserServiceVtbl;
931 sb->IDocObjectService_iface.lpVtbl = &DocObjectServiceVtbl;
932
933 sb->ref = 1;
934 sb->doc_host = doc_host;
935
936 *ret = sb;
937 return S_OK;
938}
939
941{
942 sb->doc_host = NULL;
943 IShellBrowser_Release(&sb->IShellBrowser_iface);
944}
945
947{
948 return CONTAINING_RECORD(iface, NewWindowManager, INewWindowManager_iface);
949}
950
952{
954
956 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
957 *ppv = &This->INewWindowManager_iface;
958 }else if(IsEqualGUID(&IID_INewWindowManager, riid)) {
959 TRACE("(%p)->(IID_INewWindowManager %p)\n", This, ppv);
960 *ppv = &This->INewWindowManager_iface;
961 }else {
962 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
963 *ppv = NULL;
964 return E_NOINTERFACE;
965 }
966
967 IUnknown_AddRef((IUnknown*)*ppv);
968 return S_OK;
969}
970
972{
974
975 TRACE("(%p)\n", This);
976
977 return IOleClientSite_AddRef(&This->doc_host->IOleClientSite_iface);
978}
979
981{
983
984 TRACE("(%p)\n", This);
985
986 return IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
987}
988
990 LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags,
991 DWORD dwUserActionTime)
992{
994 FIXME("(%p)->(%s %s %s %s %x %x %d)\n", This, debugstr_w(pszUrl), debugstr_w(pszName), debugstr_w(pszUrlContext),
995 debugstr_w(pszFeatures), fReplace, dwFlags, dwUserActionTime);
996 return S_OK;
997}
998
999static const INewWindowManagerVtbl NewWindowManagerVtbl = {
1004};
1005
1007{
1009 doc_host->nwm.doc_host = doc_host;
1010}
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ARRAY_SIZE(A)
Definition: main.h:33
const GUID IID_IUnknown
#define FIXME(fmt,...)
Definition: debug.h:111
#define WARN(fmt,...)
Definition: debug.h:112
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
UINT uFlags
Definition: api.c:59
OLECHAR * BSTR
Definition: compat.h:2293
#define MAX_PATH
Definition: compat.h:34
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_BSTR
Definition: compat.h:2303
@ VT_BYREF
Definition: compat.h:2342
@ VT_ARRAY
Definition: compat.h:2341
@ VT_VARIANT
Definition: compat.h:2307
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_EMPTY
Definition: compat.h:2295
@ VT_DISPATCH
Definition: compat.h:2304
@ VT_UI1
Definition: compat.h:2311
void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams)
Definition: events.c:391
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347
HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved)
Definition: path.c:3355
#define assert(x)
Definition: debug.h:53
void update_navigation_commands(DocHost *dochost)
Definition: dochost.c:106
superblock * sb
Definition: btrfs.c:4261
#define DISPID_BEFORENAVIGATE2
Definition: exdispid.h:43
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLenum const GLfloat * params
Definition: glext.h:5645
HRESULT set_dochost_url(DocHost *, const WCHAR *) DECLSPEC_HIDDEN
Definition: navigate.c:134
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static const WCHAR url[]
Definition: encode.c:1432
static const char * debugstr_variant(const VARIANT *var)
Definition: container.c:46
HRESULT hres
Definition: protocol.c:465
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
static const CHAR post_data[]
Definition: protocol.c:217
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
unsigned int UINT
Definition: ndis.h:50
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_BOOLREF(A)
Definition: oleauto.h:225
#define V_VARIANTREF(A)
Definition: oleauto.h:283
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_I4(A)
Definition: oleauto.h:247
#define V_DISPATCH(A)
Definition: oleauto.h:239
const GUID IID_IOleWindow
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
enum tagBNSTATE BNSTATE
static HRESULT WINAPI BrowserService_UpdateWindowList(IBrowserService *iface)
Definition: shellbrowser.c:428
static HRESULT WINAPI BrowserService_SetReferrer(IBrowserService *iface, PCIDLIST_ABSOLUTE pidl)
Definition: shellbrowser.c:480
static NewWindowManager * impl_from_INewWindowManager(INewWindowManager *iface)
Definition: shellbrowser.c:946
static HRESULT WINAPI ShellBrowser_EnableModelessSB(IShellBrowser *iface, BOOL fEnable)
Definition: shellbrowser.c:149
static HRESULT WINAPI ShellBrowser_InsertMenusSB(IShellBrowser *iface, HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
Definition: shellbrowser.c:110
static ULONG WINAPI BrowserService_AddRef(IBrowserService *iface)
Definition: shellbrowser.c:275
static HRESULT WINAPI DocObjectService_FireDownloadBegin(IDocObjectService *iface)
Definition: shellbrowser.c:793
static HRESULT WINAPI ShellBrowser_TranslateAcceleratorSB(IShellBrowser *iface, MSG *pmsg, WORD wID)
Definition: shellbrowser.c:158
static HRESULT WINAPI BrowserService_QueryInterface(IBrowserService *iface, REFIID riid, void **ppvObject)
Definition: shellbrowser.c:266
static HRESULT WINAPI BrowserService_IEGetDisplayName(IBrowserService *iface, PCIDLIST_ABSOLUTE pidl, LPWSTR pwszName, UINT uFlags)
Definition: shellbrowser.c:357
static HRESULT WINAPI BrowserService_GetTitle(IBrowserService *iface, IShellView *psv, LPWSTR pszName, DWORD cchName)
Definition: shellbrowser.c:308
static HRESULT WINAPI BrowserService_DisplayParseError(IBrowserService *iface, HRESULT hres, LPCWSTR pwszPath)
Definition: shellbrowser.c:379
static ULONG WINAPI ShellBrowser_Release(IShellBrowser *iface)
Definition: shellbrowser.c:77
static HRESULT WINAPI ShellBrowser_RemoveMenusSB(IShellBrowser *iface, HMENU hmenuShared)
Definition: shellbrowser.c:131
static HRESULT WINAPI DocObjectService_GetUrlSearchComponent(IDocObjectService *iface, BSTR *pbstrSearch)
Definition: shellbrowser.c:884
static const INewWindowManagerVtbl NewWindowManagerVtbl
Definition: shellbrowser.c:999
static HRESULT WINAPI ShellBrowser_ContextSensitiveHelp(IShellBrowser *iface, BOOL fEnterMode)
Definition: shellbrowser.c:101
static HRESULT WINAPI BrowserService_ShowControlWindow(IBrowserService *iface, UINT id, BOOL fShow)
Definition: shellbrowser.c:337
static ULONG WINAPI NewWindowManager_Release(INewWindowManager *iface)
Definition: shellbrowser.c:980
static HRESULT WINAPI DocObjectService_FireDownloadComplete(IDocObjectService *iface)
Definition: shellbrowser.c:801
static HRESULT WINAPI ShellBrowser_GetViewStateStream(IShellBrowser *iface, DWORD grfMode, IStream **ppStrm)
Definition: shellbrowser.c:178
HRESULT create_browser_service(DocHost *doc_host, ShellBrowser **ret)
Definition: shellbrowser.c:921
static const IDocObjectServiceVtbl DocObjectServiceVtbl
Definition: shellbrowser.c:905
static HRESULT WINAPI DocObjectService_ActiveElementChanged(IDocObjectService *iface, IHTMLElement *pHTMLElement)
Definition: shellbrowser.c:875
static HRESULT WINAPI BrowserService_CanNavigateNow(IBrowserService *iface)
Definition: shellbrowser.c:463
static ULONG WINAPI NewWindowManager_AddRef(INewWindowManager *iface)
Definition: shellbrowser.c:971
static HRESULT WINAPI DocObjectService_QueryInterface(IDocObjectService *iface, REFIID riid, void **ppvObject)
Definition: shellbrowser.c:619
static HRESULT WINAPI BrowserService_GetTravelLog(IBrowserService *iface, ITravelLog **pptl)
Definition: shellbrowser.c:328
static HRESULT WINAPI BrowserService_GetSetCodePage(IBrowserService *iface, VARIANT *pvarIn, VARIANT *pvarOut)
Definition: shellbrowser.c:537
static HRESULT WINAPI ShellBrowser_OnViewWindowActive(IShellBrowser *iface, IShellView *pshv)
Definition: shellbrowser.c:220
static HRESULT WINAPI ShellBrowser_SetStatusTextSB(IShellBrowser *iface, LPCOLESTR pszStatusText)
Definition: shellbrowser.c:140
static HRESULT WINAPI ShellBrowser_GetWindow(IShellBrowser *iface, HWND *phwnd)
Definition: shellbrowser.c:92
static ULONG WINAPI BrowserService_Release(IBrowserService *iface)
Definition: shellbrowser.c:282
static HRESULT WINAPI BrowserService_CacheOLEServer(IBrowserService *iface, IOleObject *pole)
Definition: shellbrowser.c:528
static HRESULT WINAPI DocObjectService_FireNavigateComplete2(IDocObjectService *iface, IHTMLWindow2 *pHTMLWindow2, DWORD dwFlags)
Definition: shellbrowser.c:735
static HRESULT WINAPI BrowserService_RegisterWindow(IBrowserService *iface, BOOL fForceRegister, int swc)
Definition: shellbrowser.c:568
static HRESULT WINAPI DocObjectService_FireDocumentComplete(IDocObjectService *iface, IHTMLWindow2 *pHTMLWindow, DWORD dwFlags)
Definition: shellbrowser.c:809
void detach_browser_service(ShellBrowser *sb)
Definition: shellbrowser.c:940
static HRESULT WINAPI ShellBrowser_QueryInterface(IShellBrowser *iface, REFIID riid, void **ppv)
Definition: shellbrowser.c:37
static HRESULT WINAPI DocObjectService_UpdateDesktopComponent(IDocObjectService *iface, IHTMLWindow2 *pHTMLWindow)
Definition: shellbrowser.c:857
static HRESULT WINAPI BrowserService_GetPidl(IBrowserService *iface, PIDLIST_ABSOLUTE *ppidl)
Definition: shellbrowser.c:471
static HRESULT WINAPI BrowserService_GetBrowserByIndex(IBrowserService *iface, DWORD dwID, IUnknown **ppunk)
Definition: shellbrowser.c:497
static HRESULT WINAPI ShellBrowser_SetMenuSB(IShellBrowser *iface, HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject)
Definition: shellbrowser.c:120
static HRESULT WINAPI BrowserService_GetNavigateState(IBrowserService *iface, BNSTATE *pbnstate)
Definition: shellbrowser.c:408
static HRESULT WINAPI ShellBrowser_GetControlWindow(IShellBrowser *iface, UINT id, HWND *phwnd)
Definition: shellbrowser.c:188
static ULONG WINAPI DocObjectService_Release(IDocObjectService *iface)
Definition: shellbrowser.c:635
static HRESULT WINAPI BrowserService_IEParseDisplayName(IBrowserService *iface, UINT uiCP, LPCWSTR pwszPath, PIDLIST_ABSOLUTE *ppidlOut)
Definition: shellbrowser.c:368
static DWORD WINAPI BrowserService_GetBrowserIndex(IBrowserService *iface)
Definition: shellbrowser.c:489
static HRESULT WINAPI BrowserService_NavigateToPidl(IBrowserService *iface, PCIDLIST_ABSOLUTE pidl, DWORD grfHLNF)
Definition: shellbrowser.c:389
static HRESULT WINAPI BrowserService_UpdateBackForwardState(IBrowserService *iface)
Definition: shellbrowser.c:436
static HRESULT WINAPI BrowserService_SetTitle(IBrowserService *iface, IShellView *psv, LPCWSTR pszName)
Definition: shellbrowser.c:298
static ShellBrowser * impl_from_IDocObjectService(IDocObjectService *iface)
Definition: shellbrowser.c:614
static const IShellBrowserVtbl ShellBrowserVtbl
Definition: shellbrowser.c:240
static HRESULT WINAPI BrowserService_GetHistoryObject(IBrowserService *iface, IOleObject **ppole, IStream **pstm, IBindCtx **ppbc)
Definition: shellbrowser.c:507
static HRESULT WINAPI ShellBrowser_QueryActiveShellView(IShellBrowser *iface, IShellView **ppshv)
Definition: shellbrowser.c:211
static const IBrowserServiceVtbl BrowserServiceVtbl
Definition: shellbrowser.c:578
static HRESULT WINAPI ShellBrowser_SetToolbarItems(IShellBrowser *iface, LPTBBUTTONSB lpButtons, UINT nButtons, UINT uFlags)
Definition: shellbrowser.c:229
static HRESULT WINAPI BrowserService_SetHistoryObject(IBrowserService *iface, IOleObject *pole, BOOL fIsLocalAnchor)
Definition: shellbrowser.c:518
static HRESULT WINAPI BrowserService_GetParentSite(IBrowserService *iface, IOleInPlaceSite **ppipsite)
Definition: shellbrowser.c:289
static HRESULT WINAPI BrowserService_GetOleObject(IBrowserService *iface, IOleObject **ppobjv)
Definition: shellbrowser.c:319
static HRESULT WINAPI DocObjectService_IsErrorUrl(IDocObjectService *iface, LPCWSTR lpszUrl, BOOL *pfIsError)
Definition: shellbrowser.c:893
static HRESULT WINAPI ShellBrowser_BrowseObject(IShellBrowser *iface, LPCITEMIDLIST pidl, UINT wFlags)
Definition: shellbrowser.c:168
static HRESULT WINAPI BrowserService_IsControlWindowShown(IBrowserService *iface, UINT id, BOOL *pfShown)
Definition: shellbrowser.c:347
static HRESULT WINAPI BrowserService_SetFlags(IBrowserService *iface, DWORD dwFlags, DWORD dwFlagMask)
Definition: shellbrowser.c:444
static HRESULT WINAPI BrowserService_OnHttpEquiv(IBrowserService *iface, IShellView *psv, BOOL fDone, VARIANT *pvarargIn, VARIANT *pvarargOut)
Definition: shellbrowser.c:547
static HRESULT WINAPI ShellBrowser_SendControlMsg(IShellBrowser *iface, UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
Definition: shellbrowser.c:198
static ShellBrowser * impl_from_IBrowserService(IBrowserService *iface)
Definition: shellbrowser.c:261
static HRESULT WINAPI BrowserService_GetFlags(IBrowserService *iface, DWORD *pdwFlags)
Definition: shellbrowser.c:454
static HRESULT WINAPI BrowserService_SetNavigateState(IBrowserService *iface, BNSTATE bnstate)
Definition: shellbrowser.c:399
static HRESULT WINAPI BrowserService_GetPalette(IBrowserService *iface, HPALETTE *hpal)
Definition: shellbrowser.c:559
static ULONG WINAPI DocObjectService_AddRef(IDocObjectService *iface)
Definition: shellbrowser.c:628
static HRESULT WINAPI NewWindowManager_QueryInterface(INewWindowManager *iface, REFIID riid, void **ppv)
Definition: shellbrowser.c:951
static HRESULT WINAPI DocObjectService_FireBeforeNavigate2(IDocObjectService *iface, IDispatch *pDispatch, LPCWSTR lpszUrl, DWORD dwFlags, LPCWSTR lpszFrameName, BYTE *pPostData, DWORD cbPostData, LPCWSTR lpszHeaders, BOOL fPlayNavSound, BOOL *pfCancel)
Definition: shellbrowser.c:642
static HRESULT WINAPI BrowserService_NotifyRedirect(IBrowserService *iface, IShellView *psv, PCIDLIST_ABSOLUTE pidl, BOOL *pfDidBrowse)
Definition: shellbrowser.c:417
static ShellBrowser * impl_from_IShellBrowser(IShellBrowser *iface)
Definition: shellbrowser.c:32
static HRESULT WINAPI DocObjectService_GetPendingUrl(IDocObjectService *iface, BSTR *pbstrPendingUrl)
Definition: shellbrowser.c:866
static HRESULT WINAPI NewWindowManager_EvaluateNewWindow(INewWindowManager *iface, LPCWSTR pszUrl, LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags, DWORD dwUserActionTime)
Definition: shellbrowser.c:989
static ULONG WINAPI ShellBrowser_AddRef(IShellBrowser *iface)
Definition: shellbrowser.c:66
void NewWindowManager_Init(DocHost *doc_host)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
TCHAR file_path[MAX_PATH]
Definition: sndrec32.cpp:57
#define TRACE(s)
Definition: solgame.cpp:4
IWebBrowser2 * wb
Definition: ieframe.h:133
NewWindowManager nwm
Definition: ieframe.h:175
struct DocHost::@430 travellog
INewWindowManager INewWindowManager_iface
Definition: ieframe.h:100
DocHost * doc_host
Definition: ieframe.h:101
Implementation of IShellBrowserImpl interface in explorer child windows.
Definition: ieframe.h:84
Definition: send.c:48
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
int ret
#define DISPID_NAVIGATECOMPLETE2
Definition: webchild.h:54
#define DISPID_DOCUMENTCOMPLETE
Definition: webchild.h:61
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
Definition: winbase.h:2767
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
_In_ POINTL * pptl
Definition: winddi.h:3741
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:2364
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned char BYTE
Definition: xxhash.c:193