ReactOS 0.4.17-dev-1190-g4c812f4
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 if(!wcsncmp(url, L"res://", ARRAY_SIZE(L"res://")-1)) {
37
38 if(len && !wcsncmp(url + ARRAY_SIZE(L"res://")-1, buf, len)) {
39 len += ARRAY_SIZE(L"res://")-1;
40 if(!wcsncmp(url + len, L"\\shdoclc.dll/ERROR.HTM", ARRAY_SIZE(L"\\shdoclc.dll/ERROR.HTM")-1)) {
41 len += ARRAY_SIZE(L"\\shdoclc.dll/ERROR.HTM")-1;
42 url = wcschr(url + len, '#');
43 return url ? url + 1 : NULL;
44 }
45 }
46 }
47 return NULL;
48}
49
51{
52 return CONTAINING_RECORD(iface, ShellBrowser, IShellBrowser_iface);
53}
54
56{
58
60 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
61 *ppv = &This->IShellBrowser_iface;
62 }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
63 TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
64 *ppv = &This->IShellBrowser_iface;
65 }else if(IsEqualGUID(&IID_IShellBrowser, riid)) {
66 TRACE("(%p)->(IID_IShellBrowser %p)\n", This, ppv);
67 *ppv = &This->IShellBrowser_iface;
68 }else if(IsEqualGUID(&IID_IBrowserService, riid)) {
69 TRACE("(%p)->(IID_IBrowserService %p)\n", This, ppv);
70 *ppv = &This->IBrowserService_iface;
71 }else if(IsEqualGUID(&IID_IDocObjectService, riid)) {
72 TRACE("(%p)->(IID_IDocObjectService %p)\n", This, ppv);
73 *ppv = &This->IDocObjectService_iface;
74 }else {
75 FIXME("%p %s %p\n", This, debugstr_guid(riid), ppv);
76 *ppv = NULL;
77 return E_NOINTERFACE;
78 }
79
80 IUnknown_AddRef((IUnknown*)*ppv);
81 return S_OK;
82}
83
85 IShellBrowser* iface)
86{
89
90 TRACE("(%p) ref=%ld\n", This, ref);
91
92 return ref;
93}
94
96{
99
100 TRACE("(%p) ref=%ld\n", This, ref);
101
102 if(!ref) {
103 assert(!This->doc_host);
104 free(This);
105 }
106
107 return ref;
108}
109
111 IShellBrowser* iface,
112 HWND *phwnd)
113{
115 FIXME("%p %p\n", This, phwnd);
116 return E_NOTIMPL;
117}
118
120 IShellBrowser* iface,
121 BOOL fEnterMode)
122{
124 FIXME("%p %d\n", This, fEnterMode);
125 return E_NOTIMPL;
126}
127
129 IShellBrowser* iface,
130 HMENU hmenuShared,
131 LPOLEMENUGROUPWIDTHS lpMenuWidths)
132{
134 FIXME("%p %p %p\n", This, hmenuShared, lpMenuWidths);
135 return E_NOTIMPL;
136}
137
139 IShellBrowser* iface,
140 HMENU hmenuShared,
141 HOLEMENU holemenuReserved,
142 HWND hwndActiveObject)
143{
145 FIXME("%p %p %p %p\n", This, hmenuShared, holemenuReserved, hwndActiveObject);
146 return E_NOTIMPL;
147}
148
150 IShellBrowser* iface,
151 HMENU hmenuShared)
152{
154 FIXME("%p %p\n", This, hmenuShared);
155 return E_NOTIMPL;
156}
157
159 IShellBrowser* iface,
160 LPCOLESTR pszStatusText)
161{
163 FIXME("%p %s\n", This, debugstr_w(pszStatusText));
164 return E_NOTIMPL;
165}
166
168 IShellBrowser* iface,
169 BOOL fEnable)
170{
172 FIXME("%p %d\n", This, fEnable);
173 return E_NOTIMPL;
174}
175
177 IShellBrowser* iface,
178 MSG *pmsg,
179 WORD wID)
180{
182 FIXME("%p %p %d\n", This, pmsg, (int)wID);
183 return E_NOTIMPL;
184}
185
187 IShellBrowser* iface,
188 LPCITEMIDLIST pidl,
189 UINT wFlags)
190{
192 FIXME("%p %p %u\n", This, pidl, wFlags);
193 return E_NOTIMPL;
194}
195
197 IShellBrowser* iface,
198 DWORD grfMode,
199 IStream **ppStrm)
200{
202 FIXME("%p %lx %p\n", This, grfMode, ppStrm);
203 return E_NOTIMPL;
204}
205
207 IShellBrowser* iface,
208 UINT id,
209 HWND *phwnd)
210{
212 FIXME("%p %u %p\n", This, id, phwnd);
213 return E_NOTIMPL;
214}
215
217 IShellBrowser* iface,
218 UINT id,
219 UINT uMsg,
222 LRESULT *pret)
223{
225 FIXME("%p %u %u %p\n", This, id, uMsg, pret);
226 return E_NOTIMPL;
227}
228
230 IShellBrowser* iface,
231 IShellView **ppshv)
232{
234 FIXME("%p %p\n", This, ppshv);
235 return E_NOTIMPL;
236}
237
239 IShellBrowser* iface,
240 IShellView *pshv)
241{
243 FIXME("%p %p\n", This, pshv);
244 return E_NOTIMPL;
245}
246
248 IShellBrowser* iface,
249 LPTBBUTTONSB lpButtons,
250 UINT nButtons,
251 UINT uFlags)
252{
254 FIXME("%p %p %u %u\n", This, lpButtons, nButtons, uFlags);
255 return E_NOTIMPL;
256}
257
258static const IShellBrowserVtbl ShellBrowserVtbl = {
277};
278
280{
281 return CONTAINING_RECORD(iface, ShellBrowser, IBrowserService_iface);
282}
283
285 IBrowserService* iface,
286 REFIID riid,
287 void **ppvObject)
288{
290 return IShellBrowser_QueryInterface(&This->IShellBrowser_iface, riid, ppvObject);
291}
292
294 IBrowserService *iface)
295{
297 return IShellBrowser_AddRef(&This->IShellBrowser_iface);
298}
299
301 IBrowserService* iface)
302{
304 return IShellBrowser_Release(&This->IShellBrowser_iface);
305}
306
308 IBrowserService* iface,
309 IOleInPlaceSite **ppipsite)
310{
312 FIXME("%p %p\n", This, ppipsite);
313 return E_NOTIMPL;
314}
315
317 IBrowserService* iface,
318 IShellView *psv,
319 LPCWSTR pszName)
320{
322 FIXME("%p %p %s\n", This, psv, debugstr_w(pszName));
323 return E_NOTIMPL;
324}
325
327 IBrowserService* iface,
328 IShellView *psv,
329 LPWSTR pszName,
331{
333 FIXME("%p %p %p %ld\n", This, psv, pszName, cchName);
334 return E_NOTIMPL;
335}
336
338 IBrowserService* iface,
339 IOleObject **ppobjv)
340{
342 FIXME("%p %p\n", This, ppobjv);
343 return E_NOTIMPL;
344}
345
347 IBrowserService* iface,
349{
351 FIXME("%p %p\n", This, pptl);
352 return E_NOTIMPL;
353}
354
356 IBrowserService* iface,
357 UINT id,
358 BOOL fShow)
359{
361 FIXME("%p %u %d\n", This, id, fShow);
362 return E_NOTIMPL;
363}
364
366 IBrowserService* iface,
367 UINT id,
368 BOOL *pfShown)
369{
371 FIXME("%p %u %p\n", This, id, pfShown);
372 return E_NOTIMPL;
373}
374
376 IBrowserService* iface,
378 LPWSTR pwszName,
379 UINT uFlags)
380{
382 FIXME("%p %p %p %u\n", This, pidl, pwszName, uFlags);
383 return E_NOTIMPL;
384}
385
387 IBrowserService* iface,
388 UINT uiCP,
389 LPCWSTR pwszPath,
390 PIDLIST_ABSOLUTE *ppidlOut)
391{
393 FIXME("%p %u %s %p\n", This, uiCP, debugstr_w(pwszPath), ppidlOut);
394 return E_NOTIMPL;
395}
396
398 IBrowserService* iface,
400 LPCWSTR pwszPath)
401{
403 FIXME("%p %lx %s\n", This, hres, debugstr_w(pwszPath));
404 return E_NOTIMPL;
405}
406
408 IBrowserService* iface,
410 DWORD grfHLNF)
411{
413 FIXME("%p %p %ld\n", This, pidl, grfHLNF);
414 return E_NOTIMPL;
415}
416
418 IBrowserService* iface,
419 BNSTATE bnstate)
420{
422 FIXME("%p %d\n", This, bnstate);
423 return E_NOTIMPL;
424}
425
427 IBrowserService* iface,
428 BNSTATE *pbnstate)
429{
431 FIXME("%p %p\n", This, pbnstate);
432 return E_NOTIMPL;
433}
434
436 IBrowserService* iface,
437 IShellView *psv,
439 BOOL *pfDidBrowse)
440{
442 FIXME("%p %p %p %p\n", This, psv, pidl, pfDidBrowse);
443 return E_NOTIMPL;
444}
445
447 IBrowserService* iface)
448{
450 FIXME("%p\n", This);
451 return E_NOTIMPL;
452}
453
455 IBrowserService* iface)
456{
458 FIXME("%p\n", This);
459 return E_NOTIMPL;
460}
461
463 IBrowserService* iface,
465 DWORD dwFlagMask)
466{
468 FIXME("%p %lx %lx\n", This, dwFlags, dwFlagMask);
469 return E_NOTIMPL;
470}
471
473 IBrowserService* iface,
474 DWORD *pdwFlags)
475{
477 FIXME("%p %p\n", This, pdwFlags);
478 return E_NOTIMPL;
479}
480
482 IBrowserService* iface)
483{
485 FIXME("%p\n", This);
486 return E_NOTIMPL;
487}
488
490 IBrowserService* iface,
491 PIDLIST_ABSOLUTE *ppidl)
492{
494 FIXME("%p %p\n", This, ppidl);
495 return E_NOTIMPL;
496}
497
499 IBrowserService* iface,
501{
503 FIXME("%p %p\n", This, pidl);
504 return E_NOTIMPL;
505}
506
508 IBrowserService* iface)
509{
511 FIXME("%p\n", This);
512 return E_NOTIMPL;
513}
514
516 IBrowserService* iface,
517 DWORD dwID,
518 IUnknown **ppunk)
519{
521 FIXME("%p %lx %p\n", This, dwID, ppunk);
522 return E_NOTIMPL;
523}
524
526 IBrowserService* iface,
527 IOleObject **ppole,
528 IStream **pstm,
529 IBindCtx **ppbc)
530{
532 FIXME("%p %p %p %p\n", This, ppole, pstm, ppbc);
533 return E_NOTIMPL;
534}
535
537 IBrowserService* iface,
538 IOleObject *pole,
539 BOOL fIsLocalAnchor)
540{
542 FIXME("%p %p %d\n", This, pole, fIsLocalAnchor);
543 return E_NOTIMPL;
544}
545
547 IBrowserService* iface,
548 IOleObject *pole)
549{
551 FIXME("%p %p\n", This, pole);
552 return E_NOTIMPL;
553}
554
556 IBrowserService* iface,
557 VARIANT *pvarIn,
558 VARIANT *pvarOut)
559{
561 FIXME("%p %s %p\n", This, debugstr_variant(pvarIn), pvarOut);
562 return E_NOTIMPL;
563}
564
566 IBrowserService* iface,
567 IShellView *psv,
568 BOOL fDone,
569 VARIANT *pvarargIn,
570 VARIANT *pvarargOut)
571{
573 FIXME("%p %p %d %s %p\n", This, psv, fDone, debugstr_variant(pvarargIn), pvarargOut);
574 return E_NOTIMPL;
575}
576
578 IBrowserService* iface,
579 HPALETTE *hpal)
580{
582 FIXME("%p %p\n", This, hpal);
583 return E_NOTIMPL;
584}
585
587 IBrowserService* iface,
588 BOOL fForceRegister,
589 int swc)
590{
592 FIXME("%p %d %d\n", This, fForceRegister, swc);
593 return E_NOTIMPL;
594}
595
596static const IBrowserServiceVtbl BrowserServiceVtbl = {
630};
631
633{
634 return CONTAINING_RECORD(iface, ShellBrowser, IDocObjectService_iface);
635}
636
638 IDocObjectService* iface,
639 REFIID riid,
640 void **ppvObject)
641{
643 return IShellBrowser_QueryInterface(&This->IShellBrowser_iface, riid, ppvObject);
644}
645
647 IDocObjectService* iface)
648{
650 return IShellBrowser_AddRef(&This->IShellBrowser_iface);
651}
652
654 IDocObjectService* iface)
655{
657 return IShellBrowser_Release(&This->IShellBrowser_iface);
658}
659
661 IDocObjectService* iface,
662 IDispatch *pDispatch,
663 LPCWSTR lpszUrl,
665 LPCWSTR lpszFrameName,
666 BYTE *pPostData,
667 DWORD cbPostData,
668 LPCWSTR lpszHeaders,
669 BOOL fPlayNavSound,
670 BOOL *pfCancel)
671{
673 VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers;
675 DISPPARAMS dp = {params, NULL, 7, 0};
676 VARIANT_BOOL cancel = VARIANT_FALSE;
679 DWORD file_path_len = ARRAY_SIZE(file_path);
680
681 TRACE("%p %p %s %lx %s %p %ld %s %d %p\n", This, pDispatch, debugstr_w(lpszUrl),
682 dwFlags, debugstr_w(lpszFrameName), pPostData, cbPostData,
683 debugstr_w(lpszHeaders), fPlayNavSound, pfCancel);
684
685 if(cbPostData) {
686 post_data = SafeArrayCreateVector(VT_UI1, 0, cbPostData);
687 if(!post_data)
688 return E_OUTOFMEMORY;
689 memcpy(post_data->pvData, pPostData, cbPostData);
690 }else {
691 post_data = NULL;
692 }
693
695 V_BOOLREF(params) = &cancel;
696
698 V_VARIANTREF(params+1) = &var_headers;
699 V_VT(&var_headers) = VT_BSTR;
700 V_BSTR(&var_headers) = lpszHeaders ? SysAllocString(lpszHeaders) : NULL;
701
703 V_VARIANTREF(params+2) = &var_post_data2;
704 V_VT(&var_post_data2) = (VT_BYREF|VT_VARIANT);
705 V_VARIANTREF(&var_post_data2) = &var_post_data;
706
707 if(post_data) {
708 V_VT(&var_post_data) = VT_UI1|VT_ARRAY;
709 V_ARRAY(&var_post_data) = post_data;
710 }else {
711 V_VT(&var_post_data) = VT_EMPTY;
712 }
713
715 V_VARIANTREF(params+3) = &var_frame_name;
716 V_VT(&var_frame_name) = VT_BSTR;
717 V_BSTR(&var_frame_name) = lpszFrameName ? SysAllocString(lpszFrameName) : NULL;
718
720 V_VARIANTREF(params+4) = &var_flags;
721 V_VT(&var_flags) = VT_I4;
722 V_I4(&var_flags) = 0;
723
725 V_VARIANTREF(params+5) = &var_url;
726 V_VT(&var_url) = VT_BSTR;
727 if(PathCreateFromUrlW(lpszUrl, file_path, &file_path_len, 0) == S_OK)
728 V_BSTR(&var_url) = SysAllocString(file_path);
729 else
730 V_BSTR(&var_url) = SysAllocString(lpszUrl);
731
732 V_VT(params+6) = (VT_DISPATCH);
733 V_DISPATCH(params+6) = (IDispatch*)This->doc_host->wb;
734
735 /* Keep reference to This. It may be released in event handler. */
736 IShellBrowser_AddRef(&This->IShellBrowser_iface);
737
738 TRACE(">>>\n");
739 call_sink(This->doc_host->cps.wbe2, DISPID_BEFORENAVIGATE2, &dp);
740 TRACE("<<<\n");
741
742 IShellBrowser_Release(&This->IShellBrowser_iface);
743
744 SysFreeString(V_BSTR(&var_url));
745 SysFreeString(V_BSTR(&var_headers));
746 SysFreeString(V_BSTR(&var_frame_name));
748
749 *pfCancel = !!cancel;
750 return S_OK;
751}
752
754 IDocObjectService* iface,
755 IHTMLWindow2 *pHTMLWindow2,
757{
759 DocHost *doc_host = This->doc_host;
760 IHTMLPrivateWindow *priv_window;
761 const WCHAR *orig_url;
763 DISPPARAMS dp = {params, NULL, 2, 0};
764 VARIANT url_var;
765 BSTR url;
767
768 TRACE("%p %p %lx\n", This, pHTMLWindow2, dwFlags);
769
771
772 if(doc_host->travellog.loading_pos != -1) {
773 WARN("histupdate not notified\n");
774 doc_host->travellog.position = doc_host->travellog.loading_pos;
775 doc_host->travellog.loading_pos = -1;
776 }
777
778 hres = IHTMLWindow2_QueryInterface(pHTMLWindow2, &IID_IHTMLPrivateWindow, (void**)&priv_window);
779 if(FAILED(hres))
780 return hres;
781
782 hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url);
783 IHTMLPrivateWindow_Release(priv_window);
784 if(FAILED(hres))
785 return hres;
786
787 TRACE("got URL %s\n", debugstr_w(url));
788 set_dochost_url(This->doc_host, url);
789
790 orig_url = error_url_frag(url);
791 if(orig_url) {
792 BSTR tmp = SysAllocString(orig_url);
794 url = tmp;
795 }
796
798 V_VARIANTREF(params) = &url_var;
799
801 V_DISPATCH(params+1) = (IDispatch*)doc_host->wb;
802
803 V_VT(&url_var) = VT_BSTR;
804 V_BSTR(&url_var) = url;
805
806 /* Keep reference to This. It may be released in event handler. */
807 IShellBrowser_AddRef(&This->IShellBrowser_iface);
808
809 TRACE(">>>\n");
810 call_sink(This->doc_host->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dp);
811 TRACE("<<<\n");
812
814
815 IShellBrowser_Release(&This->IShellBrowser_iface);
816 return S_OK;
817}
818
820 IDocObjectService* iface)
821{
823 FIXME("%p\n", This);
824 return E_NOTIMPL;
825}
826
828 IDocObjectService* iface)
829{
831 FIXME("%p\n", This);
832 return E_NOTIMPL;
833}
834
836 IDocObjectService* iface,
837 IHTMLWindow2 *pHTMLWindow,
839{
841 IHTMLPrivateWindow *priv_window;
842 const WCHAR *orig_url;
844 DISPPARAMS dp = {params, NULL, 2, 0};
845 VARIANT url_var;
846 BSTR url;
848
849 TRACE("%p %p %lx\n", This, pHTMLWindow, dwFlags);
850
851 hres = IHTMLWindow2_QueryInterface(pHTMLWindow, &IID_IHTMLPrivateWindow, (void**)&priv_window);
852 if(FAILED(hres))
853 return hres;
854
855 hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url);
856 IHTMLPrivateWindow_Release(priv_window);
857 if(FAILED(hres))
858 return hres;
859
860 TRACE("got URL %s\n", debugstr_w(url));
861
862 orig_url = error_url_frag(url);
863 if(orig_url) {
864 BSTR tmp = SysAllocString(orig_url);
866 url = tmp;
867 }
868
870 V_VARIANTREF(params) = &url_var;
871
873 V_DISPATCH(params+1) = (IDispatch*)This->doc_host->wb;
874
875 V_VT(&url_var) = VT_BSTR;
876 V_BSTR(&url_var) = url;
877
878 /* Keep reference to This. It may be released in event handler. */
879 IShellBrowser_AddRef(&This->IShellBrowser_iface);
880
881 TRACE(">>>\n");
882 call_sink(This->doc_host->cps.wbe2, DISPID_DOCUMENTCOMPLETE, &dp);
883 TRACE("<<<\n");
884
886
887 IShellBrowser_Release(&This->IShellBrowser_iface);
888 return S_OK;
889}
890
892 IDocObjectService* iface,
893 IHTMLWindow2 *pHTMLWindow)
894{
896 FIXME("%p %p\n", This, pHTMLWindow);
897 return E_NOTIMPL;
898}
899
901 IDocObjectService* iface,
902 BSTR *pbstrPendingUrl)
903{
905 FIXME("%p %p\n", This, pbstrPendingUrl);
906 return E_NOTIMPL;
907}
908
910 IDocObjectService* iface,
911 IHTMLElement *pHTMLElement)
912{
914 FIXME("%p %p\n", This, pHTMLElement);
915 return E_NOTIMPL;
916}
917
919 IDocObjectService* iface,
920 BSTR *pbstrSearch)
921{
923 FIXME("%p %p\n", This, pbstrSearch);
924 return E_NOTIMPL;
925}
926
928 IDocObjectService* iface,
929 LPCWSTR lpszUrl,
930 BOOL *pfIsError)
931{
933
934 TRACE("(%p)->(%s %p)\n", This, debugstr_w(lpszUrl), pfIsError);
935
936 *pfIsError = !!error_url_frag(lpszUrl);
937 return S_OK;
938}
939
940static const IDocObjectServiceVtbl DocObjectServiceVtbl = {
954};
955
957{
959
960 sb = malloc(sizeof(ShellBrowser));
961 if(!sb)
962 return E_OUTOFMEMORY;
963
964 sb->IShellBrowser_iface.lpVtbl = &ShellBrowserVtbl;
965 sb->IBrowserService_iface.lpVtbl = &BrowserServiceVtbl;
966 sb->IDocObjectService_iface.lpVtbl = &DocObjectServiceVtbl;
967
968 sb->ref = 1;
969 sb->doc_host = doc_host;
970
971 *ret = sb;
972 return S_OK;
973}
974
976{
977 sb->doc_host = NULL;
978 IShellBrowser_Release(&sb->IShellBrowser_iface);
979}
980
982{
983 return CONTAINING_RECORD(iface, NewWindowManager, INewWindowManager_iface);
984}
985
987{
989
991 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
992 *ppv = &This->INewWindowManager_iface;
993 }else if(IsEqualGUID(&IID_INewWindowManager, riid)) {
994 TRACE("(%p)->(IID_INewWindowManager %p)\n", This, ppv);
995 *ppv = &This->INewWindowManager_iface;
996 }else {
997 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
998 *ppv = NULL;
999 return E_NOINTERFACE;
1000 }
1001
1002 IUnknown_AddRef((IUnknown*)*ppv);
1003 return S_OK;
1004}
1005
1007{
1009
1010 TRACE("(%p)\n", This);
1011
1012 return IOleClientSite_AddRef(&This->doc_host->IOleClientSite_iface);
1013}
1014
1016{
1018
1019 TRACE("(%p)\n", This);
1020
1021 return IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
1022}
1023
1025 LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags,
1026 DWORD dwUserActionTime)
1027{
1029 FIXME("(%p)->(%s %s %s %s %x %lx %ld)\n", This, debugstr_w(pszUrl), debugstr_w(pszName), debugstr_w(pszUrlContext),
1030 debugstr_w(pszFeatures), fReplace, dwFlags, dwUserActionTime);
1031 return S_OK;
1032}
1033
1034static const INewWindowManagerVtbl NewWindowManagerVtbl = {
1039};
1040
1042{
1044 doc_host->nwm.doc_host = doc_host;
1045}
#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:20
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
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 free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
UINT uFlags
Definition: api.c:59
#define wcschr
Definition: compat.h:17
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:390
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2331
HRESULT WINAPI PathCreateFromUrlW(const WCHAR *url, WCHAR *path, DWORD *pcchPath, DWORD dwReserved)
Definition: path.c:3049
#define assert(_expr)
Definition: assert.h:32
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
Definition: wcs.c:523
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347
void update_navigation_commands(DocHost *dochost)
Definition: dochost.c:106
static const char * debugstr_variant(const VARIANT *var)
Definition: dom.c:505
return ret
Definition: mutex.c:147
#define L(x)
Definition: resources.c:13
superblock * sb
Definition: btrfs.c:4261
#define DISPID_BEFORENAVIGATE2
Definition: exdispid.h:43
#define DISPID_NAVIGATECOMPLETE2
Definition: exdispid.h:45
#define DISPID_DOCUMENTCOMPLETE
Definition: exdispid.h:52
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722
GLenum const GLfloat * params
Definition: glext.h:5645
unsigned int UINT
Definition: sysinfo.c:13
HRESULT set_dochost_url(DocHost *, const WCHAR *)
Definition: navigate.c:132
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
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static const WCHAR url[]
Definition: encode.c:1384
HRESULT hres
Definition: protocol.c:432
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static const CHAR post_data[]
Definition: protocol.c:222
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:273
#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
short WCHAR
Definition: pedump.c:58
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:446
static HRESULT WINAPI BrowserService_SetReferrer(IBrowserService *iface, PCIDLIST_ABSOLUTE pidl)
Definition: shellbrowser.c:498
static NewWindowManager * impl_from_INewWindowManager(INewWindowManager *iface)
Definition: shellbrowser.c:981
static HRESULT WINAPI ShellBrowser_EnableModelessSB(IShellBrowser *iface, BOOL fEnable)
Definition: shellbrowser.c:167
static HRESULT WINAPI ShellBrowser_InsertMenusSB(IShellBrowser *iface, HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
Definition: shellbrowser.c:128
static ULONG WINAPI BrowserService_AddRef(IBrowserService *iface)
Definition: shellbrowser.c:293
static HRESULT WINAPI DocObjectService_FireDownloadBegin(IDocObjectService *iface)
Definition: shellbrowser.c:819
static HRESULT WINAPI ShellBrowser_TranslateAcceleratorSB(IShellBrowser *iface, MSG *pmsg, WORD wID)
Definition: shellbrowser.c:176
static HRESULT WINAPI BrowserService_QueryInterface(IBrowserService *iface, REFIID riid, void **ppvObject)
Definition: shellbrowser.c:284
static HRESULT WINAPI BrowserService_IEGetDisplayName(IBrowserService *iface, PCIDLIST_ABSOLUTE pidl, LPWSTR pwszName, UINT uFlags)
Definition: shellbrowser.c:375
static HRESULT WINAPI BrowserService_GetTitle(IBrowserService *iface, IShellView *psv, LPWSTR pszName, DWORD cchName)
Definition: shellbrowser.c:326
static HRESULT WINAPI BrowserService_DisplayParseError(IBrowserService *iface, HRESULT hres, LPCWSTR pwszPath)
Definition: shellbrowser.c:397
static ULONG WINAPI ShellBrowser_Release(IShellBrowser *iface)
Definition: shellbrowser.c:95
static HRESULT WINAPI ShellBrowser_RemoveMenusSB(IShellBrowser *iface, HMENU hmenuShared)
Definition: shellbrowser.c:149
static HRESULT WINAPI DocObjectService_GetUrlSearchComponent(IDocObjectService *iface, BSTR *pbstrSearch)
Definition: shellbrowser.c:918
static const INewWindowManagerVtbl NewWindowManagerVtbl
static HRESULT WINAPI ShellBrowser_ContextSensitiveHelp(IShellBrowser *iface, BOOL fEnterMode)
Definition: shellbrowser.c:119
static HRESULT WINAPI BrowserService_ShowControlWindow(IBrowserService *iface, UINT id, BOOL fShow)
Definition: shellbrowser.c:355
static ULONG WINAPI NewWindowManager_Release(INewWindowManager *iface)
static HRESULT WINAPI DocObjectService_FireDownloadComplete(IDocObjectService *iface)
Definition: shellbrowser.c:827
static HRESULT WINAPI ShellBrowser_GetViewStateStream(IShellBrowser *iface, DWORD grfMode, IStream **ppStrm)
Definition: shellbrowser.c:196
HRESULT create_browser_service(DocHost *doc_host, ShellBrowser **ret)
Definition: shellbrowser.c:956
static const IDocObjectServiceVtbl DocObjectServiceVtbl
Definition: shellbrowser.c:940
static HRESULT WINAPI DocObjectService_ActiveElementChanged(IDocObjectService *iface, IHTMLElement *pHTMLElement)
Definition: shellbrowser.c:909
static HRESULT WINAPI BrowserService_CanNavigateNow(IBrowserService *iface)
Definition: shellbrowser.c:481
static ULONG WINAPI NewWindowManager_AddRef(INewWindowManager *iface)
static HRESULT WINAPI DocObjectService_QueryInterface(IDocObjectService *iface, REFIID riid, void **ppvObject)
Definition: shellbrowser.c:637
static HRESULT WINAPI BrowserService_GetTravelLog(IBrowserService *iface, ITravelLog **pptl)
Definition: shellbrowser.c:346
static HRESULT WINAPI BrowserService_GetSetCodePage(IBrowserService *iface, VARIANT *pvarIn, VARIANT *pvarOut)
Definition: shellbrowser.c:555
static HRESULT WINAPI ShellBrowser_OnViewWindowActive(IShellBrowser *iface, IShellView *pshv)
Definition: shellbrowser.c:238
static HRESULT WINAPI ShellBrowser_SetStatusTextSB(IShellBrowser *iface, LPCOLESTR pszStatusText)
Definition: shellbrowser.c:158
static HRESULT WINAPI ShellBrowser_GetWindow(IShellBrowser *iface, HWND *phwnd)
Definition: shellbrowser.c:110
static ULONG WINAPI BrowserService_Release(IBrowserService *iface)
Definition: shellbrowser.c:300
static HRESULT WINAPI BrowserService_CacheOLEServer(IBrowserService *iface, IOleObject *pole)
Definition: shellbrowser.c:546
static HRESULT WINAPI DocObjectService_FireNavigateComplete2(IDocObjectService *iface, IHTMLWindow2 *pHTMLWindow2, DWORD dwFlags)
Definition: shellbrowser.c:753
static HRESULT WINAPI BrowserService_RegisterWindow(IBrowserService *iface, BOOL fForceRegister, int swc)
Definition: shellbrowser.c:586
static HRESULT WINAPI DocObjectService_FireDocumentComplete(IDocObjectService *iface, IHTMLWindow2 *pHTMLWindow, DWORD dwFlags)
Definition: shellbrowser.c:835
void detach_browser_service(ShellBrowser *sb)
Definition: shellbrowser.c:975
static HRESULT WINAPI ShellBrowser_QueryInterface(IShellBrowser *iface, REFIID riid, void **ppv)
Definition: shellbrowser.c:55
static HRESULT WINAPI DocObjectService_UpdateDesktopComponent(IDocObjectService *iface, IHTMLWindow2 *pHTMLWindow)
Definition: shellbrowser.c:891
static HRESULT WINAPI BrowserService_GetPidl(IBrowserService *iface, PIDLIST_ABSOLUTE *ppidl)
Definition: shellbrowser.c:489
static HRESULT WINAPI BrowserService_GetBrowserByIndex(IBrowserService *iface, DWORD dwID, IUnknown **ppunk)
Definition: shellbrowser.c:515
static HRESULT WINAPI ShellBrowser_SetMenuSB(IShellBrowser *iface, HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject)
Definition: shellbrowser.c:138
static HRESULT WINAPI BrowserService_GetNavigateState(IBrowserService *iface, BNSTATE *pbnstate)
Definition: shellbrowser.c:426
static HRESULT WINAPI ShellBrowser_GetControlWindow(IShellBrowser *iface, UINT id, HWND *phwnd)
Definition: shellbrowser.c:206
static ULONG WINAPI DocObjectService_Release(IDocObjectService *iface)
Definition: shellbrowser.c:653
static HRESULT WINAPI BrowserService_IEParseDisplayName(IBrowserService *iface, UINT uiCP, LPCWSTR pwszPath, PIDLIST_ABSOLUTE *ppidlOut)
Definition: shellbrowser.c:386
static DWORD WINAPI BrowserService_GetBrowserIndex(IBrowserService *iface)
Definition: shellbrowser.c:507
static HRESULT WINAPI BrowserService_NavigateToPidl(IBrowserService *iface, PCIDLIST_ABSOLUTE pidl, DWORD grfHLNF)
Definition: shellbrowser.c:407
static HRESULT WINAPI BrowserService_UpdateBackForwardState(IBrowserService *iface)
Definition: shellbrowser.c:454
static HRESULT WINAPI BrowserService_SetTitle(IBrowserService *iface, IShellView *psv, LPCWSTR pszName)
Definition: shellbrowser.c:316
static ShellBrowser * impl_from_IDocObjectService(IDocObjectService *iface)
Definition: shellbrowser.c:632
static const IShellBrowserVtbl ShellBrowserVtbl
Definition: shellbrowser.c:258
static HRESULT WINAPI BrowserService_GetHistoryObject(IBrowserService *iface, IOleObject **ppole, IStream **pstm, IBindCtx **ppbc)
Definition: shellbrowser.c:525
static HRESULT WINAPI ShellBrowser_QueryActiveShellView(IShellBrowser *iface, IShellView **ppshv)
Definition: shellbrowser.c:229
static const IBrowserServiceVtbl BrowserServiceVtbl
Definition: shellbrowser.c:596
static HRESULT WINAPI ShellBrowser_SetToolbarItems(IShellBrowser *iface, LPTBBUTTONSB lpButtons, UINT nButtons, UINT uFlags)
Definition: shellbrowser.c:247
static HRESULT WINAPI BrowserService_SetHistoryObject(IBrowserService *iface, IOleObject *pole, BOOL fIsLocalAnchor)
Definition: shellbrowser.c:536
static HRESULT WINAPI BrowserService_GetParentSite(IBrowserService *iface, IOleInPlaceSite **ppipsite)
Definition: shellbrowser.c:307
static HRESULT WINAPI BrowserService_GetOleObject(IBrowserService *iface, IOleObject **ppobjv)
Definition: shellbrowser.c:337
static HRESULT WINAPI DocObjectService_IsErrorUrl(IDocObjectService *iface, LPCWSTR lpszUrl, BOOL *pfIsError)
Definition: shellbrowser.c:927
static HRESULT WINAPI ShellBrowser_BrowseObject(IShellBrowser *iface, LPCITEMIDLIST pidl, UINT wFlags)
Definition: shellbrowser.c:186
static HRESULT WINAPI BrowserService_IsControlWindowShown(IBrowserService *iface, UINT id, BOOL *pfShown)
Definition: shellbrowser.c:365
static HRESULT WINAPI BrowserService_SetFlags(IBrowserService *iface, DWORD dwFlags, DWORD dwFlagMask)
Definition: shellbrowser.c:462
static HRESULT WINAPI BrowserService_OnHttpEquiv(IBrowserService *iface, IShellView *psv, BOOL fDone, VARIANT *pvarargIn, VARIANT *pvarargOut)
Definition: shellbrowser.c:565
static HRESULT WINAPI ShellBrowser_SendControlMsg(IShellBrowser *iface, UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
Definition: shellbrowser.c:216
static ShellBrowser * impl_from_IBrowserService(IBrowserService *iface)
Definition: shellbrowser.c:279
static HRESULT WINAPI BrowserService_GetFlags(IBrowserService *iface, DWORD *pdwFlags)
Definition: shellbrowser.c:472
static HRESULT WINAPI BrowserService_SetNavigateState(IBrowserService *iface, BNSTATE bnstate)
Definition: shellbrowser.c:417
static HRESULT WINAPI BrowserService_GetPalette(IBrowserService *iface, HPALETTE *hpal)
Definition: shellbrowser.c:577
static ULONG WINAPI DocObjectService_AddRef(IDocObjectService *iface)
Definition: shellbrowser.c:646
const WCHAR * error_url_frag(const WCHAR *url)
Definition: shellbrowser.c:32
static HRESULT WINAPI NewWindowManager_QueryInterface(INewWindowManager *iface, REFIID riid, void **ppv)
Definition: shellbrowser.c:986
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:660
static HRESULT WINAPI BrowserService_NotifyRedirect(IBrowserService *iface, IShellView *psv, PCIDLIST_ABSOLUTE pidl, BOOL *pfDidBrowse)
Definition: shellbrowser.c:435
static ShellBrowser * impl_from_IShellBrowser(IShellBrowser *iface)
Definition: shellbrowser.c:50
static HRESULT WINAPI DocObjectService_GetPendingUrl(IDocObjectService *iface, BSTR *pbstrPendingUrl)
Definition: shellbrowser.c:900
static HRESULT WINAPI NewWindowManager_EvaluateNewWindow(INewWindowManager *iface, LPCWSTR pszUrl, LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags, DWORD dwUserActionTime)
static ULONG WINAPI ShellBrowser_AddRef(IShellBrowser *iface)
Definition: shellbrowser.c:84
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:132
NewWindowManager nwm
Definition: ieframe.h:174
struct DocHost::@534 travellog
INewWindowManager INewWindowManager_iface
Definition: ieframe.h:99
DocHost * doc_host
Definition: ieframe.h:100
Definition: send.c:48
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
Definition: winbase.h:2497
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon_undoc.h:337
_In_ POINTL * pptl
Definition: winddi.h:3741
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:3479
unsigned char BYTE
Definition: xxhash.c:193