ReactOS 0.4.17-dev-1190-g4c812f4
navigate.c
Go to the documentation of this file.
1/*
2 * Copyright 2006-2007 Jacek Caban for CodeWeavers
3 *
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.
8 *
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.
13 *
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
17 */
18
19#ifdef __REACTOS__
20#include <wchar.h>
21#endif
22
23#include "ieframe.h"
24
25#include "exdispid.h"
26#include "shellapi.h"
27#include "winreg.h"
28#include "shlwapi.h"
29#include "wininet.h"
30#include "mshtml.h"
31#include "perhist.h"
32#include "resource.h"
33
34#include "wine/debug.h"
35
37
38static const WCHAR emptyW[] = {0};
39
40typedef struct {
44
46
49
55
56static void dump_BINDINFO(BINDINFO *bi)
57{
58 static const char * const BINDINFOF_str[] = {
59 "#0",
60 "BINDINFOF_URLENCODESTGMEDDATA",
61 "BINDINFOF_URLENCODEDEXTRAINFO"
62 };
63
64 static const char * const BINDVERB_str[] = {
65 "BINDVERB_GET",
66 "BINDVERB_POST",
67 "BINDVERB_PUT",
68 "BINDVERB_CUSTOM"
69 };
70
71 TRACE("\n"
72 "BINDINFO = {\n"
73 " %ld, %s,\n"
74 " {%ld, %p, %p},\n"
75 " %s,\n"
76 " %s,\n"
77 " %s,\n"
78 " %ld, %08lx, %ld, %ld\n"
79 " {%ld %p %x},\n"
80 " %s\n"
81 " %p, %ld\n"
82 "}\n",
83
84 bi->cbSize, debugstr_w(bi->szExtraInfo),
85 bi->stgmedData.tymed, bi->stgmedData.hGlobal, bi->stgmedData.pUnkForRelease,
86 bi->grfBindInfoF > BINDINFOF_URLENCODEDEXTRAINFO
87 ? "unknown" : BINDINFOF_str[bi->grfBindInfoF],
88 bi->dwBindVerb > BINDVERB_CUSTOM
89 ? "unknown" : BINDVERB_str[bi->dwBindVerb],
90 debugstr_w(bi->szCustomVerb),
91 bi->cbstgmedData, bi->dwOptions, bi->dwOptionsFlags, bi->dwCodePage,
92 bi->securityAttributes.nLength,
93 bi->securityAttributes.lpSecurityDescriptor,
94 bi->securityAttributes.bInheritHandle,
95 debugstr_guid(&bi->iid),
96 bi->pUnk, bi->dwReserved
97 );
98}
99
101{
103 DISPPARAMS dispparams = {&arg, NULL, 1, 0};
106
107 if(!This->doc_host)
108 return;
109
110 TRACE("(%p, %ld, %s)\n", This, statuscode, debugstr_w(str));
111 buffer[0] = 0;
112 if (statuscode && str && *str) {
113 fmt[0] = 0;
114 /* the format string must have one "%s" for the str */
117 }
118
119 V_VT(&arg) = VT_BSTR;
121 TRACE("=> %s\n", debugstr_w(V_BSTR(&arg)));
122
123 call_sink(This->doc_host->cps.wbe2, DISPID_STATUSTEXTCHANGE, &dispparams);
124
125 if(This->doc_host->frame)
126 IOleInPlaceFrame_SetStatusText(This->doc_host->frame, buffer);
127
129
130}
131
133{
134 WCHAR *new_url;
135
136 if(url) {
137 new_url = wcsdup(url);
138 if(!new_url)
139 return E_OUTOFMEMORY;
140 }else {
141 new_url = NULL;
142 }
143
144 free(This->url);
145 This->url = new_url;
146
147 This->container_vtbl->set_url(This, This->url);
148 return S_OK;
149}
150
152{
153 DISPPARAMS dwl_dp = {NULL};
154 TRACE("(%x)\n", is_downloading);
155 dochost->busy = is_downloading ? VARIANT_TRUE : VARIANT_FALSE;
157}
158
160{
161 return CONTAINING_RECORD(iface, BindStatusCallback, IBindStatusCallback_iface);
162}
163
165 REFIID riid, void **ppv)
166{
168
170 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
171 *ppv = &This->IBindStatusCallback_iface;
172 }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) {
173 TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv);
174 *ppv = &This->IBindStatusCallback_iface;
175 }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) {
176 TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv);
177 *ppv = &This->IHttpNegotiate_iface;
178 }else if(IsEqualGUID(&IID_IWindowForBindingUI, riid)) {
179 TRACE("(%p)->(IID_IWindowForBindingUI %p)\n", This, ppv);
180 *ppv = &This->IHttpSecurity_iface;
181 }else if(IsEqualGUID(&IID_IHttpSecurity, riid)) {
182 TRACE("(%p)->(IID_IHttpSecurity %p)\n", This, ppv);
183 *ppv = &This->IHttpSecurity_iface;
184 }else {
185 *ppv = NULL;
186 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
187 return E_NOINTERFACE;
188 }
189
190 IUnknown_AddRef((IUnknown*)*ppv);
191 return S_OK;
192}
193
195{
198
199 TRACE("(%p) ref=%ld\n", This, ref);
200
201 return ref;
202}
203
205{
208
209 TRACE("(%p) ref=%ld\n", This, ref);
210
211 if(!ref) {
212 if(This->doc_host)
213 IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
214 if(This->binding)
215 IBinding_Release(This->binding);
216 if(This->post_data)
217 GlobalFree(This->post_data);
218 SysFreeString(This->headers);
219 SysFreeString(This->url);
220 free(This);
221 }
222
223 return ref;
224}
225
227 DWORD dwReserved, IBinding *pbind)
228{
230
231 TRACE("(%p)->(%ld %p)\n", This, dwReserved, pbind);
232
233 This->binding = pbind;
234 IBinding_AddRef(This->binding);
235
236 return S_OK;
237}
238
240 LONG *pnPriority)
241{
243 FIXME("(%p)->(%p)\n", This, pnPriority);
244 return E_NOTIMPL;
245}
246
249{
251 FIXME("(%p)->(%ld)\n", This, reserved);
252 return E_NOTIMPL;
253}
254
256{
257 IWinInetHttpInfo *http_info;
258 DWORD status, size = sizeof(DWORD);
260
261 hres = IBinding_QueryInterface(binding, &IID_IWinInetHttpInfo, (void**)&http_info);
262 if(FAILED(hres))
263 return HTTP_STATUS_OK;
264
265 hres = IWinInetHttpInfo_QueryInfo(http_info, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
266 &status, &size, NULL, NULL);
267 IWinInetHttpInfo_Release(http_info);
268
269 if(FAILED(hres))
270 return HTTP_STATUS_OK;
271 return status;
272}
273
275 ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
276{
279
280 TRACE("(%p)->(%ld %ld %ld %s)\n", This, ulProgress, ulProgressMax, ulStatusCode,
281 debugstr_w(szStatusText));
282
283 switch(ulStatusCode) {
284 case BINDSTATUS_REDIRECTING:
285 return set_dochost_url(This->doc_host, szStatusText);
286 case BINDSTATUS_BEGINDOWNLOADDATA:
287 set_status_text(This, ulStatusCode, szStatusText);
291 return S_OK;
292
293 case BINDSTATUS_FINDINGRESOURCE:
294 case BINDSTATUS_ENDDOWNLOADDATA:
295 case BINDSTATUS_SENDINGREQUEST:
296 set_status_text(This, ulStatusCode, szStatusText);
297 return S_OK;
298
299 case BINDSTATUS_CONNECTING:
300 case BINDSTATUS_CACHEFILENAMEAVAILABLE:
301 case BINDSTATUS_CLASSIDAVAILABLE:
302 case BINDSTATUS_MIMETYPEAVAILABLE:
303 case BINDSTATUS_BEGINSYNCOPERATION:
304 case BINDSTATUS_ENDSYNCOPERATION:
305 return S_OK;
306 default:
307 FIXME("status code %lu\n", ulStatusCode);
308 }
309
310 return S_OK;
311}
312
314{
315 VARIANT var_status_code, var_frame_name, var_url;
316 DISPPARAMS dispparams;
318 VARIANT_BOOL cancel = VARIANT_FALSE;
320
321 dispparams.cArgs = 5;
322 dispparams.cNamedArgs = 0;
323 dispparams.rgdispidNamedArgs = NULL;
324 dispparams.rgvarg = params;
325
327 V_BOOLREF(params) = &cancel;
328
330 V_VARIANTREF(params+1) = &var_status_code;
331 V_VT(&var_status_code) = VT_I4;
332 V_I4(&var_status_code) = status_code;
333
335 V_VARIANTREF(params+2) = &var_frame_name;
336 V_VT(&var_frame_name) = VT_BSTR;
337 if(win2) {
338 hres = IHTMLWindow2_get_name(win2, &V_BSTR(&var_frame_name));
339 if(FAILED(hres))
340 V_BSTR(&var_frame_name) = NULL;
341 } else
342 V_BSTR(&var_frame_name) = NULL;
343
345 V_VARIANTREF(params+3) = &var_url;
346 V_VT(&var_url) = VT_BSTR;
347 V_BSTR(&var_url) = url;
348
350 V_DISPATCH(params+4) = (IDispatch*)doc_host->wb;
351
352 call_sink(doc_host->cps.wbe2, DISPID_NAVIGATEERROR, &dispparams);
353 SysFreeString(V_BSTR(&var_frame_name));
354
355 if(!cancel) {
356 IHTMLPrivateWindow *priv_window;
357 IHTMLWindow2 *tmp;
358
359 if(win2)
360 hres = IHTMLWindow2_QueryInterface(win2, &IID_IHTMLPrivateWindow, (void**)&priv_window);
361 else {
362 hres = get_window(doc_host, &tmp);
363 if(SUCCEEDED(hres)) {
364 if(!tmp)
366 else {
367 hres = IHTMLWindow2_QueryInterface(tmp, &IID_IHTMLPrivateWindow, (void**)&priv_window);
368 IHTMLWindow2_Release(tmp);
369 }
370 }
371 }
372 if(SUCCEEDED(hres)) {
373 /* Error page navigation URL is a local resource (varies on native, also depending on error),
374 * with the fragment being the original URL of the page that failed to load. We add a query
375 * with the error code so the generic error page can display the actual error code there. */
376 WCHAR buf[32], sysdirbuf[MAX_PATH];
378 UINT len;
379
381 len = swprintf(buf, ARRAY_SIZE(buf), L"ERROR.HTM?HTTP %u", status_code);
382 else
383 len = swprintf(buf, ARRAY_SIZE(buf), L"ERROR.HTM?0x%08x", status_code);
384
385 len = 6 /* res:// */ + GetSystemDirectoryW(sysdirbuf, ARRAY_SIZE(sysdirbuf)) +
386 ARRAY_SIZE(L"\\shdoclc.dll/")-1 + len + 1 /* # */ + wcslen(url);
387
389 if(nav_url) {
390 swprintf(nav_url, len + 1, L"res://%s\\shdoclc.dll/%s#%s", sysdirbuf, buf, url);
391 IHTMLPrivateWindow_SuperNavigate(priv_window, nav_url, NULL, NULL, NULL, NULL, NULL, 2);
393 }
394 IHTMLPrivateWindow_Release(priv_window);
395 }
396 }
397}
398
400 HRESULT hresult, LPCWSTR szError)
401{
403
404 TRACE("(%p)->(%08lx %s)\n", This, hresult, debugstr_w(szError));
405
407
408 if(!This->doc_host)
409 return S_OK;
410
411 if(!This->doc_host->olecmd)
412 notify_download_state(This->doc_host, FALSE);
413 if(FAILED(hresult))
414 handle_navigation_error(This->doc_host, hresult, This->url, NULL);
415
416 IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
417 This->doc_host = NULL;
418
419 IBinding_Release(This->binding);
420 This->binding = NULL;
421
422 return S_OK;
423}
424
426 DWORD *grfBINDF, BINDINFO *pbindinfo)
427{
429
430 TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo);
431
432 *grfBINDF = BINDF_ASYNCHRONOUS;
433
434 if(This->post_data) {
435 pbindinfo->dwBindVerb = BINDVERB_POST;
436
437 pbindinfo->stgmedData.tymed = TYMED_HGLOBAL;
438 pbindinfo->stgmedData.hGlobal = This->post_data;
439 pbindinfo->cbstgmedData = This->post_data_len;
440 pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)&This->IBindStatusCallback_iface;
441 IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
442 }
443
444 return S_OK;
445}
446
448 DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
449{
451 FIXME("(%p)->(%08lx %ld %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed);
452 return E_NOTIMPL;
453}
454
457{
459
460 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk);
461
462 return dochost_object_available(This->doc_host, punk);
463}
464
465static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = {
477};
478
480{
481 return CONTAINING_RECORD(iface, BindStatusCallback, IHttpNegotiate_iface);
482}
483
485 REFIID riid, void **ppv)
486{
488 return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
489}
490
492{
494 return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
495}
496
498{
500 return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
501}
502
504 LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
505{
507
508 TRACE("(%p)->(%s %s %ld %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders),
509 dwReserved, pszAdditionalHeaders);
510
511 if(This->headers) {
512 int size = (lstrlenW(This->headers)+1)*sizeof(WCHAR);
513 *pszAdditionalHeaders = CoTaskMemAlloc(size);
514 memcpy(*pszAdditionalHeaders, This->headers, size);
515 }
516
517 return S_OK;
518}
519
521 DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders,
522 LPWSTR *pszAdditionalRequestHeaders)
523{
525 TRACE("(%p)->(%ld %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders),
526 debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders);
527 return S_OK;
528}
529
530static const IHttpNegotiateVtbl HttpNegotiateVtbl = {
536};
537
539{
540 return CONTAINING_RECORD(iface, BindStatusCallback, IHttpSecurity_iface);
541}
542
544{
546 return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
547}
548
550{
552 return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
553}
554
556{
558 return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
559}
560
562{
564
565 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(rguidReason), phwnd);
566
567 if(!This->doc_host)
568 return E_FAIL;
569
570 *phwnd = This->doc_host->frame_hwnd;
571 return S_OK;
572}
573
575{
577 FIXME("(%p)->(%lu)\n", This, dwProblem);
578 return S_FALSE;
579}
580
581static const IHttpSecurityVtbl HttpSecurityVtbl = {
587};
588
590 ULONG post_data_len, LPCWSTR headers)
591{
593
594 ret->IBindStatusCallback_iface.lpVtbl = &BindStatusCallbackVtbl;
595 ret->IHttpNegotiate_iface.lpVtbl = &HttpNegotiateVtbl;
596 ret->IHttpSecurity_iface.lpVtbl = &HttpSecurityVtbl;
597
598 ret->ref = 1;
599 ret->url = SysAllocString(url);
600 ret->post_data = NULL;
601 ret->post_data_len = post_data_len;
602 ret->headers = headers ? SysAllocString(headers) : NULL;
603
604 ret->doc_host = doc_host;
605 IOleClientSite_AddRef(&doc_host->IOleClientSite_iface);
606
607 ret->binding = NULL;
608
609 if(post_data) {
610 ret->post_data = GlobalAlloc(0, post_data_len);
611 memcpy(ret->post_data, post_data, post_data_len);
612 }
613
614 return ret;
615}
616
618{
619 VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers;
620 DISPPARAMS dispparams;
623 DWORD file_path_len = ARRAY_SIZE(file_path);
624
625 dispparams.cArgs = 7;
626 dispparams.cNamedArgs = 0;
627 dispparams.rgdispidNamedArgs = NULL;
628 dispparams.rgvarg = params;
629
631 V_BOOLREF(params) = cancel;
632
634 V_VARIANTREF(params+1) = &var_headers;
635 V_VT(&var_headers) = VT_BSTR;
636 V_BSTR(&var_headers) = headers;
637
639 V_VARIANTREF(params+2) = &var_post_data2;
640 V_VT(&var_post_data2) = (VT_BYREF|VT_VARIANT);
641 V_VARIANTREF(&var_post_data2) = &var_post_data;
642
643 if(post_data) {
644 V_VT(&var_post_data) = VT_UI1|VT_ARRAY;
645 V_ARRAY(&var_post_data) = post_data;
646 }else {
647 V_VT(&var_post_data) = VT_EMPTY;
648 }
649
651 V_VARIANTREF(params+3) = &var_frame_name;
652 V_VT(&var_frame_name) = VT_BSTR;
653 V_BSTR(&var_frame_name) = NULL;
654
656 V_VARIANTREF(params+4) = &var_flags;
657 V_VT(&var_flags) = VT_I4;
658 V_I4(&var_flags) = 0;
659
661 V_VARIANTREF(params+5) = &var_url;
662 V_VT(&var_url) = VT_BSTR;
663 if(PathCreateFromUrlW(url, file_path, &file_path_len, 0) == S_OK)
664 V_BSTR(&var_url) = SysAllocString(file_path);
665 else
666 V_BSTR(&var_url) = SysAllocString(url);
667
668 V_VT(params+6) = (VT_DISPATCH);
669 V_DISPATCH(params+6) = (IDispatch*)This->wb;
670
671 call_sink(This->cps.wbe2, DISPID_BEFORENAVIGATE2, &dispparams);
672
673 SysFreeString(V_BSTR(&var_url));
674}
675
676/* FIXME: urlmon should handle it */
678{
679 SHELLEXECUTEINFOW exec_info;
680 WCHAR app[64];
681 HKEY hkey;
682 DWORD res, type;
684
685 static const WCHAR wszURLProtocol[] = {'U','R','L',' ','P','r','o','t','o','c','o','l',0};
686
687 hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, app, ARRAY_SIZE(app), NULL, 0);
688 if(FAILED(hres))
689 return FALSE;
690
691 res = RegOpenKeyW(HKEY_CLASSES_ROOT, app, &hkey);
692 if(res != ERROR_SUCCESS)
693 return FALSE;
694
695 res = RegQueryValueExW(hkey, wszURLProtocol, NULL, &type, NULL, NULL);
696 RegCloseKey(hkey);
697 if(res != ERROR_SUCCESS || type != REG_SZ)
698 return FALSE;
699
700 TRACE("opening application %s\n", debugstr_w(app));
701
702 memset(&exec_info, 0, sizeof(exec_info));
703 exec_info.cbSize = sizeof(exec_info);
704 exec_info.lpFile = url;
705 exec_info.nShow = SW_SHOW;
706
707 return ShellExecuteExW(&exec_info);
708}
709
711{
713 DWORD size;
715
716 if(PathIsURLW(url))
717 return CreateURLMoniker(NULL, url, mon);
718
719 size = ARRAY_SIZE(new_url);
721 TRACE("was %s got %s\n", debugstr_w(url), debugstr_w(new_url));
722 if(FAILED(hres)) {
723 WARN("UrlApplyScheme failed: %08lx\n", hres);
724 return hres;
725 }
726
727 return CreateURLMoniker(NULL, new_url, mon);
728}
729
732{
733 IUnknown *unk = NULL;
734 WCHAR *display_name;
736
737 if(mon) {
738 IMoniker_AddRef(mon);
739 }else {
740 hres = create_moniker(url, &mon);
741 if(FAILED(hres))
742 return hres;
743 }
744
745 hres = IMoniker_GetDisplayName(mon, 0, NULL, &display_name);
746 if(FAILED(hres)) {
747 FIXME("GetDisplayName failed: %08lx\n", hres);
748 IMoniker_Release(mon);
749 return hres;
750 }
751
752 hres = set_dochost_url(This, display_name);
753 CoTaskMemFree(display_name);
754 if(FAILED(hres)) {
755 IMoniker_Release(mon);
756 return hres;
757 }
758
759 IBindCtx_RegisterObjectParam(bindctx, (LPOLESTR)SZ_HTML_CLIENTSITE_OBJECTPARAM,
760 (IUnknown*)&This->IOleClientSite_iface);
761
762 hres = IMoniker_BindToObject(mon, bindctx, NULL, &IID_IUnknown, (void**)&unk);
763 if(SUCCEEDED(hres)) {
764 hres = S_OK;
765 if(unk)
766 IUnknown_Release(unk);
767 }else if(try_application_url(url)) {
768 hres = S_OK;
769 }else {
770 FIXME("BindToObject failed: %08lx\n", hres);
771 }
772
773 IMoniker_Release(mon);
774 return S_OK;
775}
776
778{
779 VARIANT headers_var, post_data_var;
782
784 if(FAILED(hres))
785 return;
786
788
789 if(headers) {
790 V_VT(&headers_var) = VT_BSTR;
791 V_BSTR(&headers_var) = headers;
792 }else {
793 V_VT(&headers_var) = VT_EMPTY;
794 }
795
796 if(post_data) {
797 V_VT(&post_data_var) = VT_UI1|VT_ARRAY;
798 V_ARRAY(&post_data_var) = post_data;
799 }else {
800 V_VT(&post_data_var) = VT_EMPTY;
801 }
802
803 set_doc_state(This, READYSTATE_LOADING);
804 hres = IHTMLPrivateWindow_SuperNavigate(window, url, empty_str, NULL, NULL, &post_data_var, &headers_var, 0);
806 if(FAILED(hres))
807 WARN("SuprtNavigate failed: %08lx\n", hres);
808}
809
810typedef struct {
817
819{
821
822 SysFreeString(task->url);
823 SysFreeString(task->headers);
824 if(task->post_data)
825 SafeArrayDestroy(task->post_data);
826 free(task);
827}
828
830{
832 IHTMLPrivateWindow *priv_window;
834
835 if(!This->doc_navigate) {
836 ERR("Skip nav\n");
837 return;
838 }
839
840 if(task->async_notif) {
841 VARIANT_BOOL cancel = VARIANT_FALSE;
842 on_before_navigate2(This, task->url, task->post_data, task->headers, &cancel);
843 if(cancel) {
844 TRACE("Navigation canceled\n");
845 return;
846 }
847 }
848
849 hres = IUnknown_QueryInterface(This->doc_navigate, &IID_IHTMLPrivateWindow, (void**)&priv_window);
850 if(SUCCEEDED(hres)) {
851 html_window_navigate(This, priv_window, task->url, task->headers, task->post_data);
852 IHTMLPrivateWindow_Release(priv_window);
853 }else {
854 WARN("Could not get IHTMLPrivateWindow iface: %08lx\n", hres);
855 }
856}
857
859 BOOL async_notif)
860{
862
863 TRACE("%s\n", debugstr_w(url));
864
865 task = calloc(1, sizeof(*task));
866 if(!task)
867 return E_OUTOFMEMORY;
868
869 task->url = SysAllocString(url);
870 if(!task->url) {
872 return E_OUTOFMEMORY;
873 }
874
875 if(headers) {
876 task->headers = SysAllocString(headers);
877 if(!task->headers) {
879 return E_OUTOFMEMORY;
880 }
881 }
882
883 if(post_data) {
884 task->post_data = SafeArrayCreateVector(VT_UI1, 0, post_data_size);
885 if(!task->post_data) {
887 return E_OUTOFMEMORY;
888 }
889
890 memcpy(task->post_data->pvData, post_data, post_data_size);
891 }
892
893 if(!async_notif) {
894 VARIANT_BOOL cancel = VARIANT_FALSE;
895
896 on_before_navigate2(This, task->url, task->post_data, task->headers, &cancel);
897 if(cancel) {
898 TRACE("Navigation canceled\n");
900 return S_OK;
901 }
902 }
903
904 task->async_notif = async_notif;
907 return S_OK;
908}
909
911{
912 VARIANT_BOOL cancel = VARIANT_FALSE;
914 IBindCtx *bindctx;
916
917 set_doc_state(This, READYSTATE_LOADING);
918
919 if(bsc->post_data) {
920 post_data = SafeArrayCreateVector(VT_UI1, 0, bsc->post_data_len);
921 memcpy(post_data->pvData, post_data, bsc->post_data_len);
922 }
923
924 on_before_navigate2(This, bsc->url, post_data, bsc->headers, &cancel);
925 if(post_data)
927 if(cancel) {
928 FIXME("Navigation canceled\n");
929 return S_OK;
930 }
931
933 This->busy = VARIANT_FALSE;
934
935 on_commandstate_change(This, CSC_NAVIGATEBACK, FALSE);
936 on_commandstate_change(This, CSC_NAVIGATEFORWARD, FALSE);
937
938 if(This->document)
940
942
943 if(This->frame)
944 IOleInPlaceFrame_EnableModeless(This->frame, FALSE);
945
946 hres = bind_to_object(This, mon, bsc->url, bindctx, &bsc->IBindStatusCallback_iface);
947
948 if(This->frame)
949 IOleInPlaceFrame_EnableModeless(This->frame, TRUE);
950
951 IBindCtx_Release(bindctx);
952
953 return hres;
954}
955
956typedef struct {
960
962{
964
965 IBindStatusCallback_Release(&task->bsc->IBindStatusCallback_iface);
966 free(task);
967}
968
970{
972
973 if(!This->hwnd)
975
976 navigate_bsc(This, task->bsc, NULL);
977}
978
979
981 const VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
982{
983 SAFEARRAY *post_array = NULL;
985 ULONG post_data_len = 0;
987 HRESULT hres = S_OK;
988
989 TRACE("navigating to %s\n", debugstr_w(url));
990
991 if((Flags && V_VT(Flags) != VT_EMPTY && V_VT(Flags) != VT_ERROR)
992 || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY && V_VT(TargetFrameName) != VT_ERROR))
993 FIXME("Unsupported args (Flags %s; TargetFrameName %s)\n", debugstr_variant(Flags), debugstr_variant(TargetFrameName));
994
995 if(PostData) {
996 if(V_VT(PostData) & VT_ARRAY)
997 post_array = V_ISBYREF(PostData) ? *V_ARRAYREF(PostData) : V_ARRAY(PostData);
998 else
999 WARN("Invalid post data %s\n", debugstr_variant(PostData));
1000 }
1001
1002 if(post_array) {
1003 LONG elem_max;
1004 SafeArrayAccessData(post_array, (void**)&post_data);
1005 SafeArrayGetUBound(post_array, 1, &elem_max);
1006 post_data_len = (elem_max+1) * SafeArrayGetElemsize(post_array);
1007 }
1008
1009 if(Headers && V_VT(Headers) == VT_BSTR) {
1010 headers = V_BSTR(Headers);
1011 TRACE("Headers: %s\n", debugstr_w(headers));
1012 }
1013
1014 set_doc_state(This, READYSTATE_LOADING);
1015 This->ready_state = READYSTATE_LOADING;
1016
1017 if(This->doc_navigate) {
1019
1020 if(PathIsURLW(url)) {
1021 new_url[0] = 0;
1022 }else {
1023 DWORD size;
1024
1025 size = ARRAY_SIZE(new_url);
1026 hres = UrlApplySchemeW(url, new_url, &size,
1028 if(FAILED(hres)) {
1029 WARN("UrlApplyScheme failed: %08lx\n", hres);
1030 new_url[0] = 0;
1031 }
1032 }
1033
1034 hres = async_doc_navigate(This, *new_url ? new_url : url, headers, post_data,
1035 post_data_len, TRUE);
1036 }else {
1038
1039 task = malloc(sizeof(*task));
1040 task->bsc = create_callback(This, url, post_data, post_data_len, headers);
1042 }
1043
1044 if(post_data)
1045 SafeArrayUnaccessData(post_array);
1046
1047 return hres;
1048}
1049
1052{
1056 ULONG post_data_len = 0;
1058 BINDINFO bindinfo;
1059 DWORD bindf = 0;
1060 HRESULT hres;
1061
1062 TRACE("\n");
1063
1064 hres = IMoniker_GetDisplayName(mon, 0, NULL, &url);
1065 if(FAILED(hres))
1066 FIXME("GetDisplayName failed: %08lx\n", hres);
1067
1068 hres = IBindStatusCallback_QueryInterface(callback, &IID_IHttpNegotiate,
1069 (void**)&http_negotiate);
1070 if(SUCCEEDED(hres)) {
1071 static const WCHAR null_string[] = {0};
1072
1073 IHttpNegotiate_BeginningTransaction(http_negotiate, null_string, null_string, 0,
1074 &headers);
1075 IHttpNegotiate_Release(http_negotiate);
1076 }
1077
1078 memset(&bindinfo, 0, sizeof(bindinfo));
1079 bindinfo.cbSize = sizeof(bindinfo);
1080
1081 hres = IBindStatusCallback_GetBindInfo(callback, &bindf, &bindinfo);
1082 dump_BINDINFO(&bindinfo);
1083 if(bindinfo.dwBindVerb == BINDVERB_POST) {
1084 post_data_len = bindinfo.cbstgmedData;
1085 if(post_data_len)
1086 post_data = bindinfo.stgmedData.hGlobal;
1087 }
1088
1089 if(This->doc_navigate) {
1090 hres = async_doc_navigate(This, url, headers, post_data, post_data_len, FALSE);
1091 }else {
1092 bsc = create_callback(This, url, post_data, post_data_len, headers);
1093 hres = navigate_bsc(This, bsc, mon);
1094 IBindStatusCallback_Release(&bsc->IBindStatusCallback_iface);
1095 }
1096
1099 ReleaseBindInfo(&bindinfo);
1100
1101 return hres;
1102}
1103
1105{
1106 HKEY hkey;
1107 DWORD res, type, size;
1108 WCHAR wszPageName[MAX_PATH];
1109 static const WCHAR wszAboutBlank[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
1110 static const WCHAR wszStartPage[] = {'S','t','a','r','t',' ','P','a','g','e',0};
1111 static const WCHAR wszSubKey[] = {'S','o','f','t','w','a','r','e','\\',
1112 'M','i','c','r','o','s','o','f','t','\\',
1113 'I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r','\\',
1114 'M','a','i','n',0};
1115
1116 res = RegOpenKeyW(HKEY_CURRENT_USER, wszSubKey, &hkey);
1117 if (res != ERROR_SUCCESS)
1118 return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL);
1119
1120 size = sizeof(wszPageName);
1121 res = RegQueryValueExW(hkey, wszStartPage, NULL, &type, (LPBYTE)wszPageName, &size);
1122 RegCloseKey(hkey);
1123 if (res != ERROR_SUCCESS || type != REG_SZ)
1124 return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL);
1125
1126 return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL);
1127}
1128
1129static HRESULT navigate_history(DocHost *This, unsigned travellog_pos)
1130{
1131 IPersistHistory *persist_history;
1134 HRESULT hres;
1135
1136 if(!This->doc_navigate) {
1137 FIXME("unsupported doc_navigate FALSE\n");
1138 return E_NOTIMPL;
1139 }
1140
1141 This->travellog.loading_pos = travellog_pos;
1142 entry = This->travellog.log + This->travellog.loading_pos;
1143
1145
1146 if(!entry->stream)
1147 return async_doc_navigate(This, entry->url, NULL, NULL, 0, FALSE);
1148
1149 hres = IUnknown_QueryInterface(This->document, &IID_IPersistHistory, (void**)&persist_history);
1150 if(FAILED(hres))
1151 return hres;
1152
1153 li.QuadPart = 0;
1154 IStream_Seek(entry->stream, li, STREAM_SEEK_SET, NULL);
1155
1156 hres = IPersistHistory_LoadHistory(persist_history, entry->stream, NULL);
1157 IPersistHistory_Release(persist_history);
1158 return hres;
1159}
1160
1162{
1163 if(!This->travellog.position) {
1164 WARN("No history available\n");
1165 return E_FAIL;
1166 }
1167
1168 return navigate_history(This, This->travellog.position-1);
1169}
1170
1172{
1173 if(This->travellog.position >= This->travellog.length) {
1174 WARN("No history available\n");
1175 return E_FAIL;
1176 }
1177
1178 return navigate_history(This, This->travellog.position+1);
1179}
1180
1182{
1183 FIXME("semi-stub\n");
1184
1185 *ret = This->url ? SysAllocString(This->url) : SysAllocStringLen(NULL, 0);
1186 if(!*ret)
1187 return E_OUTOFMEMORY;
1188
1189 return This->url ? S_OK : S_FALSE;
1190}
1191
1193{
1194 return CONTAINING_RECORD(iface, HlinkFrame, IHlinkFrame_iface);
1195}
1196
1198{
1200 return IUnknown_QueryInterface(This->outer, riid, ppv);
1201}
1202
1204{
1206 return IUnknown_AddRef(This->outer);
1207}
1208
1210{
1212 return IUnknown_Release(This->outer);
1213}
1214
1216 IHlinkBrowseContext *pihlbc)
1217{
1219 FIXME("(%p)->(%p)\n", This, pihlbc);
1220 return E_NOTIMPL;
1221}
1222
1224 IHlinkBrowseContext **ppihlbc)
1225{
1227 FIXME("(%p)->(%p)\n", This, ppihlbc);
1228 return E_NOTIMPL;
1229}
1230
1232 IBindStatusCallback *pibsc, IHlink *pihlNavigate)
1233{
1235 IMoniker *mon;
1237
1238 TRACE("(%p)->(%08lx %p %p %p)\n", This, grfHLNF, pbc, pibsc, pihlNavigate);
1239
1240 if(grfHLNF)
1241 FIXME("unsupported grfHLNF=%08lx\n", grfHLNF);
1242
1243 /* Windows calls GetTargetFrameName here. */
1244
1245 IHlink_GetMonikerReference(pihlNavigate, 1, &mon, &location);
1246
1247 if(location) {
1248 FIXME("location = %s\n", debugstr_w(location));
1250 }
1251
1252 /* Windows calls GetHlinkSite here */
1253
1254 if(grfHLNF & HLNF_OPENINNEWWINDOW) {
1255 FIXME("Not supported HLNF_OPENINNEWWINDOW\n");
1256 return E_NOTIMPL;
1257 }
1258
1259 return navigate_hlink(This->doc_host, mon, pbc, pibsc);
1260}
1261
1263 IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
1264{
1266 FIXME("(%p)->(%08lx %p %s %s %ld)\n", This, grfHLNF, pimkTarget, debugstr_w(pwzLocation),
1267 debugstr_w(pwzFriendlyName), dwreserved);
1268 return E_NOTIMPL;
1269}
1270
1272 IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
1273{
1275 FIXME("(%p)->(%lu %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation),
1276 debugstr_w(pwzFriendlyName));
1277 return E_NOTIMPL;
1278}
1279
1280static const IHlinkFrameVtbl HlinkFrameVtbl = {
1289};
1290
1292{
1293 return CONTAINING_RECORD(iface, HlinkFrame, ITargetFrame_iface);
1294}
1295
1297{
1299 return IUnknown_QueryInterface(This->outer, riid, ppv);
1300}
1301
1303{
1305 return IUnknown_AddRef(This->outer);
1306}
1307
1309{
1311 return IUnknown_Release(This->outer);
1312}
1313
1315{
1317 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
1318 return E_NOTIMPL;
1319}
1320
1322{
1324 FIXME("(%p)->(%p)\n", This, ppszFrameName);
1325 return E_NOTIMPL;
1326}
1327
1329{
1331 FIXME("(%p)->(%p)\n", This, ppunkParent);
1332 return E_NOTIMPL;
1333}
1334
1336 IUnknown *ppunkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1337{
1339 FIXME("(%p)->(%s %p %lx %p)\n", This, debugstr_w(pszTargetName),
1340 ppunkContextFrame, dwFlags, ppunkTargetFrame);
1341 return E_NOTIMPL;
1342}
1343
1345{
1347 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
1348 return E_NOTIMPL;
1349}
1350
1352{
1354 FIXME("(%p)->(%p)\n", This, ppszFrameSrc);
1355 return E_NOTIMPL;
1356}
1357
1359{
1361 FIXME("(%p)->(%p)\n", This, ppContainer);
1362 return E_NOTIMPL;
1363}
1364
1366{
1368 FIXME("(%p)->(%lx)\n", This, dwFlags);
1369 return E_NOTIMPL;
1370}
1371
1373{
1375 FIXME("(%p)->(%p)\n", This, pdwFlags);
1376 return E_NOTIMPL;
1377}
1378
1380{
1382 FIXME("(%p)->(%ld %ld)\n", This, dwWidth, dwHeight);
1383 return E_NOTIMPL;
1384}
1385
1387{
1389 FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
1390 return E_NOTIMPL;
1391}
1392
1394{
1396 FIXME("(%p)->(%lu %p)\n", This, cLength, pulData);
1397 return E_NOTIMPL;
1398}
1399
1401{
1403 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1404 return E_NOTIMPL;
1405}
1406
1408{
1410 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1411 return E_NOTIMPL;
1412}
1413
1414static const ITargetFrameVtbl TargetFrameVtbl = {
1432};
1433
1435{
1436 return CONTAINING_RECORD(iface, HlinkFrame, ITargetFrame2_iface);
1437}
1438
1440{
1442 return IUnknown_QueryInterface(This->outer, riid, ppv);
1443}
1444
1446{
1448 return IUnknown_AddRef(This->outer);
1449}
1450
1452{
1454 return IUnknown_Release(This->outer);
1455}
1456
1458{
1460 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
1461 return E_NOTIMPL;
1462}
1463
1465{
1467 FIXME("(%p)->(%p)\n", This, ppszFrameName);
1468 return E_NOTIMPL;
1469}
1470
1472{
1474 FIXME("(%p)->(%p)\n", This, ppunkParent);
1475 return E_NOTIMPL;
1476}
1477
1479{
1481 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
1482 return E_NOTIMPL;
1483}
1484
1486{
1488 FIXME("(%p)->()\n", This);
1489 return E_NOTIMPL;
1490}
1491
1493{
1495 FIXME("(%p)->(%p)\n", This, ppContainer);
1496 return E_NOTIMPL;
1497}
1498
1500{
1502 FIXME("(%p)->(%lx)\n", This, dwFlags);
1503 return E_NOTIMPL;
1504}
1505
1507{
1509 FIXME("(%p)->(%p)\n", This, pdwFlags);
1510 return E_NOTIMPL;
1511}
1512
1514{
1516 FIXME("(%p)->(%ld %ld)\n", This, dwWidth, dwHeight);
1517 return E_NOTIMPL;
1518}
1519
1521{
1523 FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
1524 return E_NOTIMPL;
1525}
1526
1527static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1528{
1530 FIXME("(%p)->(%s %lx %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
1531 return E_NOTIMPL;
1532}
1533
1534static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
1535{
1537 FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias);
1538 return E_NOTIMPL;
1539}
1540
1541static const ITargetFrame2Vtbl TargetFrame2Vtbl = {
1557};
1558
1560{
1561 return CONTAINING_RECORD(iface, HlinkFrame, ITargetFramePriv2_iface);
1562}
1563
1565{
1567 return IUnknown_QueryInterface(This->outer, riid, ppv);
1568}
1569
1571{
1573 return IUnknown_AddRef(This->outer);
1574}
1575
1577{
1579 return IUnknown_Release(This->outer);
1580}
1581
1583 LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1584{
1586 FIXME("(%p)->(%s %lx %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
1587 return E_NOTIMPL;
1588}
1589
1591 LPCWSTR pszTargetName, IUnknown *punkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1592{
1594 FIXME("(%p)->(%s %p %lx %p)\n", This, debugstr_w(pszTargetName), punkContextFrame, dwFlags, ppunkTargetFrame);
1595 return E_NOTIMPL;
1596}
1597
1599{
1601 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1602 return E_NOTIMPL;
1603}
1604
1606{
1608 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1609 return E_NOTIMPL;
1610}
1611
1613 IBindStatusCallback *pibsc, LPCWSTR pszTargetName, LPCWSTR pszUrl, LPCWSTR pszLocation)
1614{
1616 FIXME("(%p)->(%lx %p %p %s %s %s)\n", This, grfHLNF, pbc, pibsc, debugstr_w(pszTargetName),
1617 debugstr_w(pszUrl), debugstr_w(pszLocation));
1618 return E_NOTIMPL;
1619}
1620
1622{
1624 FIXME("(%p)->(%ld %p)\n", This, dwID, ppunkBrowser);
1625 return E_NOTIMPL;
1626}
1627
1629 IBindStatusCallback *pibsc, LPCWSTR pszTargetName, IUri *pUri, LPCWSTR pszLocation)
1630{
1632 IMoniker *mon;
1633 HRESULT hres;
1634
1635 TRACE("(%p)->(%lx %p %p %s %p %s)\n", This, grfHLNF, pbc, pibsc, debugstr_w(pszTargetName),
1636 pUri, debugstr_w(pszLocation));
1637
1638 /*
1639 * NOTE: This is an undocumented function. It seems to be working the way it's implemented,
1640 * but I couldn't get its tests working. It's used by mshtml to load content in a new
1641 * instance of browser.
1642 */
1643
1644 hres = CreateURLMonikerEx2(NULL, pUri, &mon, 0);
1645 if(FAILED(hres))
1646 return hres;
1647
1648 hres = navigate_hlink(This->doc_host, mon, pbc, pibsc);
1649 IMoniker_Release(mon);
1650 return hres;
1651}
1652
1653static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl = {
1664};
1665
1667{
1668 return CONTAINING_RECORD(iface, HlinkFrame, IWebBrowserPriv2IE9_iface);
1669}
1670
1672{
1674 return IUnknown_QueryInterface(This->outer, riid, ppv);
1675}
1676
1678{
1680 return IUnknown_AddRef(This->outer);
1681}
1682
1684{
1686 return IUnknown_Release(This->outer);
1687}
1688
1690 VARIANT *target_frame, VARIANT *post_data, VARIANT *headers, IBindCtx *bind_ctx, LPOLESTR url_fragment, DWORD unused)
1691{
1693 FIXME("(%p)->(%p %s %s %s %s %p %s)\n", This, uri, debugstr_variant(flags), debugstr_variant(target_frame),
1694 debugstr_variant(post_data), debugstr_variant(headers), bind_ctx, debugstr_w(url_fragment));
1695 return E_NOTIMPL;
1696}
1697
1698static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl = {
1703};
1704
1706{
1707 if(IsEqualGUID(&IID_IHlinkFrame, riid)) {
1708 TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv);
1709 *ppv = &This->IHlinkFrame_iface;
1710 }else if(IsEqualGUID(&IID_ITargetFrame, riid)) {
1711 TRACE("(%p)->(IID_ITargetFrame %p)\n", This, ppv);
1712 *ppv = &This->ITargetFrame_iface;
1713 }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) {
1714 TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv);
1715 *ppv = &This->ITargetFrame2_iface;
1716 }else if(IsEqualGUID(&IID_ITargetFramePriv, riid)) {
1717 TRACE("(%p)->(IID_ITargetFramePriv %p)\n", This, ppv);
1718 *ppv = &This->ITargetFramePriv2_iface;
1719 }else if(IsEqualGUID(&IID_ITargetFramePriv2, riid)) {
1720 TRACE("(%p)->(IID_ITargetFramePriv2 %p)\n", This, ppv);
1721 *ppv = &This->ITargetFramePriv2_iface;
1722 }else if(IsEqualGUID(&IID_IWebBrowserPriv2IE9, riid)) {
1723 TRACE("(%p)->(IID_IWebBrowserPriv2IE9 %p)\n", This, ppv);
1724 *ppv = &This->IWebBrowserPriv2IE9_iface;
1725 }else {
1726 return FALSE;
1727 }
1728
1729 IUnknown_AddRef((IUnknown*)*ppv);
1730 return TRUE;
1731}
1732
1734{
1735 This->IHlinkFrame_iface.lpVtbl = &HlinkFrameVtbl;
1736 This->ITargetFrame_iface.lpVtbl = &TargetFrameVtbl;
1737 This->ITargetFrame2_iface.lpVtbl = &TargetFrame2Vtbl;
1738 This->ITargetFramePriv2_iface.lpVtbl = &TargetFramePriv2Vtbl;
1739 This->IWebBrowserPriv2IE9_iface.lpVtbl = &WebBrowserPriv2IE9Vtbl;
1740
1741 This->outer = outer;
1742 This->doc_host = doc_host;
1743}
#define REG_SZ
Definition: layer.c:22
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
static const TCHAR empty_str[]
Definition: dialog.c:20
#define ARRAY_SIZE(A)
Definition: main.h:20
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
const GUID IID_IUnknown
#define RegCloseKey(hKey)
Definition: registry.h:49
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
DWORD task
Definition: delayimp.cpp:484
#define ERROR_SUCCESS
Definition: deptool.c:10
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
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_ERROR
Definition: compat.h:2305
@ 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
#define lstrlenW
Definition: compat.h:750
void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams)
Definition: events.c:390
#define IDS_STATUSFMT_MAXLEN
Definition: resource.h:83
#define IDS_STATUSFMT_FIRST
Definition: resource.h:78
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
HRESULT WINAPI UrlApplySchemeW(const WCHAR *url, WCHAR *out, DWORD *length, DWORD flags)
Definition: path.c:4360
BOOL WINAPI PathIsURLW(const WCHAR *path)
Definition: path.c:3214
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
Definition: safearray.c:1033
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
Definition: safearray.c:1137
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
Definition: safearray.c:1168
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
UINT WINAPI SafeArrayGetElemsize(SAFEARRAY *psa)
Definition: safearray.c:1114
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347
HRESULT WINAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
Definition: internet.c:325
void set_doc_state(DocHost *This, READYSTATE doc_state)
Definition: dochost.c:234
void push_dochost_task(DocHost *This, task_header_t *task, task_proc_t proc, task_destr_t destr, BOOL send)
Definition: dochost.c:39
void on_commandstate_change(DocHost *doc_host, LONG command, BOOL enable)
Definition: dochost.c:83
void deactivate_document(DocHost *This)
Definition: dochost.c:515
HRESULT dochost_object_available(DocHost *This, IUnknown *doc)
Definition: dochost.c:304
void abort_dochost_tasks(DocHost *This, task_proc_t proc)
Definition: dochost.c:70
void create_doc_view_hwnd(DocHost *This)
Definition: dochost.c:484
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
r reserved
Definition: btrfs.c:3006
#define DISPID_BEFORENAVIGATE2
Definition: exdispid.h:43
#define DISPID_NAVIGATEERROR
Definition: exdispid.h:64
#define DISPID_DOWNLOADCOMPLETE
Definition: exdispid.h:26
#define DISPID_DOWNLOADBEGIN
Definition: exdispid.h:28
#define DISPID_STATUSTEXTCHANGE
Definition: exdispid.h:24
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble GLdouble t
Definition: gl.h:2047
GLuint buffer
Definition: glext.h:5915
GLuint res
Definition: glext.h:9613
GLsizeiptr size
Definition: glext.h:5919
GLbitfield flags
Definition: glext.h:7161
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
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
Definition: heapmem.c:611
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
static HRESULT WINAPI TargetFramePriv2_FindFrameInContext(ITargetFramePriv2 *iface, LPCWSTR pszTargetName, IUnknown *punkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1590
static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName)
Definition: navigate.c:1464
static HRESULT WINAPI TargetFrame_GetFrameName(ITargetFrame *iface, LPWSTR *ppszFrameName)
Definition: navigate.c:1321
static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
Definition: navigate.c:1271
static HlinkFrame * impl_from_ITargetFramePriv2(ITargetFramePriv2 *iface)
Definition: navigate.c:1559
static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface)
Definition: navigate.c:194
static void doc_navigate_task_destr(task_header_t *t)
Definition: navigate.c:818
static BOOL try_application_url(LPCWSTR url)
Definition: navigate.c:677
static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mon)
Definition: navigate.c:910
static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, IHlink *pihlNavigate)
Definition: navigate.c:1231
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
Definition: navigate.c:455
static const ITargetFrame2Vtbl TargetFrame2Vtbl
Definition: navigate.c:1541
static void html_window_navigate(DocHost *This, IHTMLPrivateWindow *window, BSTR url, BSTR headers, SAFEARRAY *post_data)
Definition: navigate.c:777
static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
Definition: navigate.c:447
static void on_before_navigate2(DocHost *This, LPCWSTR url, SAFEARRAY *post_data, LPWSTR headers, VARIANT_BOOL *cancel)
Definition: navigate.c:617
static HRESULT WINAPI TargetFrame_RemoteNavigate(ITargetFrame *iface, ULONG cLength, ULONG *pulData)
Definition: navigate.c:1393
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved)
Definition: navigate.c:247
static HRESULT WINAPI HttpSecurity_QueryInterface(IHttpSecurity *iface, REFIID riid, void **ppv)
Definition: navigate.c:543
static HRESULT WINAPI TargetFrame_OnChildFrameDeactivate(ITargetFrame *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1407
static HRESULT WINAPI WebBrowserPriv2IE9_NavigateWithBindCtx2(IWebBrowserPriv2IE9 *iface, IUri *uri, VARIANT *flags, VARIANT *target_frame, VARIANT *post_data, VARIANT *headers, IBindCtx *bind_ctx, LPOLESTR url_fragment, DWORD unused)
Definition: navigate.c:1689
static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext *pihlbc)
Definition: navigate.c:1215
static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags)
Definition: navigate.c:1506
static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1439
static void dump_BINDINFO(BINDINFO *bi)
Definition: navigate.c:56
static BindStatusCallback * create_callback(DocHost *doc_host, LPCWSTR url, PBYTE post_data, ULONG post_data_len, LPCWSTR headers)
Definition: navigate.c:589
static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface)
Definition: navigate.c:491
static BindStatusCallback * impl_from_IHttpSecurity(IHttpSecurity *iface)
Definition: navigate.c:538
static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, PBYTE post_data, ULONG post_data_size, BOOL async_notif)
Definition: navigate.c:858
static HRESULT create_moniker(LPCWSTR url, IMoniker **mon)
Definition: navigate.c:710
static ULONG WINAPI TargetFrame_AddRef(ITargetFrame *iface)
Definition: navigate.c:1302
static HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight)
Definition: navigate.c:1513
static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
Definition: navigate.c:1197
static HRESULT WINAPI TargetFrame_OnChildFrameActivate(ITargetFrame *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1400
static HRESULT WINAPI HttpSecurity_GetWindow(IHttpSecurity *iface, REFGUID rguidReason, HWND *phwnd)
Definition: navigate.c:561
static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc)
Definition: navigate.c:1478
static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl
Definition: navigate.c:1698
static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight)
Definition: navigate.c:1520
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface)
Definition: navigate.c:204
static HRESULT WINAPI TargetFrame_QueryInterface(ITargetFrame *iface, REFIID riid, void **ppv)
Definition: navigate.c:1296
static HRESULT WINAPI TargetFrame_GetFramesContainer(ITargetFrame *iface, IOleContainer **ppContainer)
Definition: navigate.c:1358
static HRESULT navigate_history(DocHost *This, unsigned travellog_pos)
Definition: navigate.c:1129
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
Definition: navigate.c:425
static const IBindStatusCallbackVtbl BindStatusCallbackVtbl
Definition: navigate.c:465
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority)
Definition: navigate.c:239
static HRESULT WINAPI TargetFramePriv2_NavigateHack(ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, LPCWSTR pszUrl, LPCWSTR pszLocation)
Definition: navigate.c:1612
static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl
Definition: navigate.c:1653
static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
Definition: navigate.c:1262
static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
Definition: navigate.c:503
static ULONG WINAPI HttpSecurity_Release(IHttpSecurity *iface)
Definition: navigate.c:555
static const IHlinkFrameVtbl HlinkFrameVtbl
Definition: navigate.c:1280
HRESULT get_location_url(DocHost *This, BSTR *ret)
Definition: navigate.c:1181
static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface)
Definition: navigate.c:1209
HRESULT go_home(DocHost *This)
Definition: navigate.c:1104
static HlinkFrame * impl_from_ITargetFrame2(ITargetFrame2 *iface)
Definition: navigate.c:1434
static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext **ppihlbc)
Definition: navigate.c:1223
static HRESULT WINAPI HttpSecurity_OnSecurityProblem(IHttpSecurity *iface, DWORD dwProblem)
Definition: navigate.c:574
static void doc_navigate_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:829
static ULONG WINAPI TargetFramePriv2_Release(ITargetFramePriv2 *iface)
Definition: navigate.c:1576
static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface)
Definition: navigate.c:1451
static HRESULT WINAPI TargetFrame2_GetFrameSrc(ITargetFrame2 *iface, LPWSTR *ppszFrameSrc)
Definition: navigate.c:1485
static const ITargetFrameVtbl TargetFrameVtbl
Definition: navigate.c:1414
static void navigate_bsc_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:969
static void set_status_text(BindStatusCallback *This, ULONG statuscode, LPCWSTR str)
Definition: navigate.c:100
static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface)
Definition: navigate.c:497
static HlinkFrame * impl_from_ITargetFrame(ITargetFrame *iface)
Definition: navigate.c:1291
BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv)
Definition: navigate.c:1705
static HlinkFrame * impl_from_IHlinkFrame(IHlinkFrame *iface)
Definition: navigate.c:1192
static HRESULT WINAPI TargetFrame_GetFrameSrc(ITargetFrame *iface, LPWSTR *ppszFrameSrc)
Definition: navigate.c:1351
static const IHttpSecurityVtbl HttpSecurityVtbl
Definition: navigate.c:581
static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
Definition: navigate.c:1534
static HRESULT WINAPI TargetFramePriv2_OnChildFrameDeactivate(ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1605
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError)
Definition: navigate.c:399
static HRESULT WINAPI TargetFramePriv2_QueryInterface(ITargetFramePriv2 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1564
static HRESULT WINAPI TargetFrame_SetFrameMargins(ITargetFrame *iface, DWORD dwWidth, DWORD dwHeight)
Definition: navigate.c:1379
static const WCHAR emptyW[]
Definition: navigate.c:38
static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate *iface, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders)
Definition: navigate.c:520
static HRESULT WINAPI TargetFramePriv2_AggregatedNavigation2(ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, IUri *pUri, LPCWSTR pszLocation)
Definition: navigate.c:1628
HRESULT go_back(DocHost *This)
Definition: navigate.c:1161
static HRESULT WINAPI TargetFrame_SetFrameOptions(ITargetFrame *iface, DWORD dwFlags)
Definition: navigate.c:1365
static HRESULT WINAPI WebBrowserPriv2IE9_QueryInterface(IWebBrowserPriv2IE9 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1671
static HRESULT WINAPI TargetFramePriv2_OnChildFrameActivate(ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1598
static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer)
Definition: navigate.c:1492
static HRESULT WINAPI TargetFramePriv2_FindBrowserByIndex(ITargetFramePriv2 *iface, DWORD dwID, IUnknown **ppunkBrowser)
Definition: navigate.c:1621
static DWORD get_http_status_code(IBinding *binding)
Definition: navigate.c:255
static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, REFIID riid, void **ppv)
Definition: navigate.c:484
static HlinkFrame * impl_from_IWebBrowserPriv2IE9(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1666
static const IHttpNegotiateVtbl HttpNegotiateVtbl
Definition: navigate.c:530
static ULONG WINAPI WebBrowserPriv2IE9_Release(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1683
static HRESULT WINAPI TargetFrame_FindFrame(ITargetFrame *iface, LPCWSTR pszTargetName, IUnknown *ppunkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1335
static HRESULT WINAPI TargetFrame_GetParentFrame(ITargetFrame *iface, IUnknown **ppunkParent)
Definition: navigate.c:1328
void notify_download_state(DocHost *dochost, BOOL is_downloading)
Definition: navigate.c:151
static HRESULT WINAPI TargetFrame_SetFrameName(ITargetFrame *iface, LPCWSTR pszFrameName)
Definition: navigate.c:1314
static HRESULT WINAPI TargetFrame_SetFrameSrc(ITargetFrame *iface, LPCWSTR pszFrameSrc)
Definition: navigate.c:1344
static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
Definition: navigate.c:274
static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface)
Definition: navigate.c:1445
static BindStatusCallback * impl_from_IBindStatusCallback(IBindStatusCallback *iface)
Definition: navigate.c:159
static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent)
Definition: navigate.c:1471
void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host)
Definition: navigate.c:1733
static ULONG WINAPI WebBrowserPriv2IE9_AddRef(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1677
static HRESULT WINAPI TargetFrame_GetFrameMargins(ITargetFrame *iface, DWORD *pdwWidth, DWORD *pdwHeight)
Definition: navigate.c:1386
static BindStatusCallback * impl_from_IHttpNegotiate(IHttpNegotiate *iface)
Definition: navigate.c:479
static ULONG WINAPI TargetFrame_Release(ITargetFrame *iface)
Definition: navigate.c:1308
static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName)
Definition: navigate.c:1457
static ULONG WINAPI TargetFramePriv2_AddRef(ITargetFramePriv2 *iface)
Definition: navigate.c:1570
static void navigate_bsc_task_destr(task_header_t *t)
Definition: navigate.c:961
static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface)
Definition: navigate.c:1203
static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1527
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind)
Definition: navigate.c:226
static HRESULT WINAPI TargetFramePriv2_FindFrameDownwards(ITargetFramePriv2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1582
HRESULT set_dochost_url(DocHost *This, const WCHAR *url)
Definition: navigate.c:132
static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, IBindStatusCallback *callback)
Definition: navigate.c:1050
static ULONG WINAPI HttpSecurity_AddRef(IHttpSecurity *iface)
Definition: navigate.c:549
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv)
Definition: navigate.c:164
HRESULT go_forward(DocHost *This)
Definition: navigate.c:1171
static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags)
Definition: navigate.c:1499
void handle_navigation_error(DocHost *doc_host, HRESULT status_code, BSTR url, IHTMLWindow2 *win2)
Definition: navigate.c:313
static HRESULT WINAPI TargetFrame_GetFrameOptions(ITargetFrame *iface, DWORD *pdwFlags)
Definition: navigate.c:1372
HINSTANCE ieframe_instance
Definition: ieframe_main.c:32
HRESULT get_window(DocHost *, IHTMLWindow2 **)
Definition: iehtmlwnd.c:25
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
uint32_t entry
Definition: isohybrid.c:63
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static IPrintDialogCallback callback
Definition: printdlg.c:325
static const WCHAR url[]
Definition: encode.c:1384
static const WCHAR * navigate_url
Definition: ie.c:64
static BOOL is_downloading
Definition: webbrowser.c:168
HRESULT hres
Definition: protocol.c:432
static DWORD bindf
Definition: protocol.c:70
static IHTMLWindow2 * window
Definition: events.c:77
static const char * nav_url
Definition: htmldoc.c:217
static IUnknown * outer
Definition: compobj.c:82
static RPC_BINDING_HANDLE binding
Definition: server.c:166
static const CHAR post_data[]
Definition: protocol.c:222
static IHttpNegotiate2 http_negotiate
Definition: protocol.c:393
const WCHAR * uri
Definition: sec_mgr.c:1564
static BOOL bind_to_object
Definition: url.c:171
WORD unused[29]
Definition: crypt.c:1298
static const WCHAR SZ_HTML_CLIENTSITE_OBJECTPARAM[]
Definition: mshtmhst.idl:59
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define DWORD
Definition: nt_native.h:44
interface IBindCtx * LPBC
Definition: objfwd.h:18
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:273
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:341
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_ARRAYREF(A)
Definition: oleauto.h:223
#define V_BOOLREF(A)
Definition: oleauto.h:225
#define V_ISBYREF(A)
Definition: oleauto.h:217
#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
BYTE * PBYTE
Definition: pedump.c:66
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
_In_opt_ IUnknown * punk
Definition: shlwapi.h:158
#define URL_APPLY_GUESSSCHEME
Definition: shlwapi.h:518
#define URL_APPLY_DEFAULT
Definition: shlwapi.h:517
#define URL_APPLY_GUESSFILE
Definition: shlwapi.h:519
#define SW_SHOW
Definition: winuser.h:786
#define calloc
Definition: rosglue.h:14
const WCHAR * str
#define LoadStringW
Definition: utils.h:64
#define memset(x, y, z)
Definition: compat.h:39
vector< Header * > headers
Definition: sdkparse.cpp:39
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2738
TCHAR file_path[MAX_PATH]
Definition: sndrec32.cpp:57
#define TRACE(s)
Definition: solgame.cpp:4
ULONG post_data_len
Definition: navigate.c:53
IBinding * binding
Definition: navigate.c:48
IBindStatusCallback IBindStatusCallback_iface
Definition: navigate.c:41
HGLOBAL post_data
Definition: navigate.c:51
IHttpSecurity IHttpSecurity_iface
Definition: navigate.c:43
IHttpNegotiate IHttpNegotiate_iface
Definition: navigate.c:42
DocHost * doc_host
Definition: navigate.c:47
ConnectionPoint * wbe2
Definition: ieframe.h:54
VARIANT_BOOL busy
Definition: ieframe.h:154
ConnectionPointContainer cps
Definition: ieframe.h:172
IWebBrowser2 * wb
Definition: ieframe.h:132
IOleClientSite IOleClientSite_iface
Definition: ieframe.h:119
Definition: scsiwmi.h:51
Definition: xmldoc.c:231
IBindStatusCallback IBindStatusCallback_iface
Definition: xmldoc.c:232
Definition: dsound.c:943
Definition: send.c:48
Definition: ps.c:97
task_header_t header
Definition: navigate.c:811
SAFEARRAY * post_data
Definition: navigate.c:814
BindStatusCallback * bsc
Definition: navigate.c:958
task_header_t header
Definition: navigate.c:957
Definition: ieframe.h:103
const uint16_t * LPCWSTR
Definition: typedefs.h:57
unsigned char * LPBYTE
Definition: typedefs.h:53
uint16_t * LPWSTR
Definition: typedefs.h:56
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk)
Definition: umon.c:747
HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker **ppmk, DWORD dwFlags)
Definition: umon.c:683
LONGLONG QuadPart
Definition: typedefs.h:114
HRESULT WINAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *callback, IEnumFORMATETC *format, IBindCtx **pbind)
Definition: bindctx.c:899
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
Definition: urlmon_main.c:561
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:626
void * arg
Definition: msvc.h:10
#define WINAPI
Definition: msvc.h:6
#define swprintf
Definition: winemm.h:209
#define S_FALSE
Definition: winerror.h:3451
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_UNEXPECTED
Definition: winerror.h:3528
#define HTTP_STATUS_OK
Definition: winhttp.h:301
#define INTERNET_MAX_URL_LENGTH
Definition: wininet.h:51
#define HTTP_QUERY_FLAG_NUMBER
Definition: wininet.h:1606
#define HTTP_QUERY_STATUS_CODE
Definition: wininet.h:1542
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10