ReactOS  0.4.14-dev-606-g14ebc0b
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 #define NONAMELESSUNION
24 
25 #include "ieframe.h"
26 
27 #include "exdispid.h"
28 #include "shellapi.h"
29 #include "winreg.h"
30 #include "shlwapi.h"
31 #include "wininet.h"
32 #include "mshtml.h"
33 #include "perhist.h"
34 #include "resource.h"
35 
36 #include "wine/debug.h"
37 
39 
40 static const WCHAR emptyW[] = {0};
41 
42 typedef struct {
46 
48 
51 
57 
58 static void dump_BINDINFO(BINDINFO *bi)
59 {
60  static const char * const BINDINFOF_str[] = {
61  "#0",
62  "BINDINFOF_URLENCODESTGMEDDATA",
63  "BINDINFOF_URLENCODEDEXTRAINFO"
64  };
65 
66  static const char * const BINDVERB_str[] = {
67  "BINDVERB_GET",
68  "BINDVERB_POST",
69  "BINDVERB_PUT",
70  "BINDVERB_CUSTOM"
71  };
72 
73  TRACE("\n"
74  "BINDINFO = {\n"
75  " %d, %s,\n"
76  " {%d, %p, %p},\n"
77  " %s,\n"
78  " %s,\n"
79  " %s,\n"
80  " %d, %08x, %d, %d\n"
81  " {%d %p %x},\n"
82  " %s\n"
83  " %p, %d\n"
84  "}\n",
85 
86  bi->cbSize, debugstr_w(bi->szExtraInfo),
87  bi->stgmedData.tymed, bi->stgmedData.u.hGlobal, bi->stgmedData.pUnkForRelease,
88  bi->grfBindInfoF > BINDINFOF_URLENCODEDEXTRAINFO
89  ? "unknown" : BINDINFOF_str[bi->grfBindInfoF],
90  bi->dwBindVerb > BINDVERB_CUSTOM
91  ? "unknown" : BINDVERB_str[bi->dwBindVerb],
92  debugstr_w(bi->szCustomVerb),
93  bi->cbstgmedData, bi->dwOptions, bi->dwOptionsFlags, bi->dwCodePage,
94  bi->securityAttributes.nLength,
95  bi->securityAttributes.lpSecurityDescriptor,
96  bi->securityAttributes.bInheritHandle,
97  debugstr_guid(&bi->iid),
98  bi->pUnk, bi->dwReserved
99  );
100 }
101 
103 {
104  VARIANTARG arg;
105  DISPPARAMS dispparams = {&arg, NULL, 1, 0};
108 
109  if(!This->doc_host)
110  return;
111 
112  TRACE("(%p, %d, %s)\n", This, statuscode, debugstr_w(str));
113  buffer[0] = 0;
114  if (statuscode && str && *str) {
115  fmt[0] = 0;
116  /* the format string must have one "%s" for the str */
118  swprintf(buffer, fmt, str);
119  }
120 
121  V_VT(&arg) = VT_BSTR;
123  TRACE("=> %s\n", debugstr_w(V_BSTR(&arg)));
124 
125  call_sink(This->doc_host->cps.wbe2, DISPID_STATUSTEXTCHANGE, &dispparams);
126 
127  if(This->doc_host->frame)
128  IOleInPlaceFrame_SetStatusText(This->doc_host->frame, buffer);
129 
130  VariantClear(&arg);
131 
132 }
133 
135 {
136  WCHAR *new_url;
137 
138  if(url) {
139  new_url = heap_strdupW(url);
140  if(!new_url)
141  return E_OUTOFMEMORY;
142  }else {
143  new_url = NULL;
144  }
145 
146  heap_free(This->url);
147  This->url = new_url;
148 
149  This->container_vtbl->set_url(This, This->url);
150  return S_OK;
151 }
152 
153 void notify_download_state(DocHost *dochost, BOOL is_downloading)
154 {
155  DISPPARAMS dwl_dp = {NULL};
156  TRACE("(%x)\n", is_downloading);
157  dochost->busy = is_downloading ? VARIANT_TRUE : VARIANT_FALSE;
158  call_sink(dochost->cps.wbe2, is_downloading ? DISPID_DOWNLOADBEGIN : DISPID_DOWNLOADCOMPLETE, &dwl_dp);
159 }
160 
162 {
163  return CONTAINING_RECORD(iface, BindStatusCallback, IBindStatusCallback_iface);
164 }
165 
167  REFIID riid, void **ppv)
168 {
170 
171  if(IsEqualGUID(&IID_IUnknown, riid)) {
172  TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
173  *ppv = &This->IBindStatusCallback_iface;
174  }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) {
175  TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv);
176  *ppv = &This->IBindStatusCallback_iface;
177  }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) {
178  TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv);
179  *ppv = &This->IHttpNegotiate_iface;
180  }else if(IsEqualGUID(&IID_IWindowForBindingUI, riid)) {
181  TRACE("(%p)->(IID_IWindowForBindingUI %p)\n", This, ppv);
182  *ppv = &This->IHttpSecurity_iface;
183  }else if(IsEqualGUID(&IID_IHttpSecurity, riid)) {
184  TRACE("(%p)->(IID_IHttpSecurity %p)\n", This, ppv);
185  *ppv = &This->IHttpSecurity_iface;
186  }else {
187  *ppv = NULL;
188  WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
189  return E_NOINTERFACE;
190  }
191 
192  IUnknown_AddRef((IUnknown*)*ppv);
193  return S_OK;
194 }
195 
197 {
200 
201  TRACE("(%p) ref=%d\n", This, ref);
202 
203  return ref;
204 }
205 
207 {
210 
211  TRACE("(%p) ref=%d\n", This, ref);
212 
213  if(!ref) {
214  if(This->doc_host)
215  IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
216  if(This->binding)
217  IBinding_Release(This->binding);
218  if(This->post_data)
219  GlobalFree(This->post_data);
220  SysFreeString(This->headers);
221  SysFreeString(This->url);
222  heap_free(This);
223  }
224 
225  return ref;
226 }
227 
229  DWORD dwReserved, IBinding *pbind)
230 {
232 
233  TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind);
234 
235  This->binding = pbind;
236  IBinding_AddRef(This->binding);
237 
238  return S_OK;
239 }
240 
242  LONG *pnPriority)
243 {
245  FIXME("(%p)->(%p)\n", This, pnPriority);
246  return E_NOTIMPL;
247 }
248 
250  DWORD reserved)
251 {
253  FIXME("(%p)->(%d)\n", This, reserved);
254  return E_NOTIMPL;
255 }
256 
258 {
259  IWinInetHttpInfo *http_info;
260  DWORD status, size = sizeof(DWORD);
261  HRESULT hres;
262 
263  hres = IBinding_QueryInterface(binding, &IID_IWinInetHttpInfo, (void**)&http_info);
264  if(FAILED(hres))
265  return HTTP_STATUS_OK;
266 
267  hres = IWinInetHttpInfo_QueryInfo(http_info, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
268  &status, &size, NULL, NULL);
269  IWinInetHttpInfo_Release(http_info);
270 
271  if(FAILED(hres))
272  return HTTP_STATUS_OK;
273  return status;
274 }
275 
277  ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
278 {
281 
282  TRACE("(%p)->(%d %d %d %s)\n", This, ulProgress, ulProgressMax, ulStatusCode,
283  debugstr_w(szStatusText));
284 
285  switch(ulStatusCode) {
286  case BINDSTATUS_REDIRECTING:
287  return set_dochost_url(This->doc_host, szStatusText);
288  case BINDSTATUS_BEGINDOWNLOADDATA:
289  set_status_text(This, ulStatusCode, szStatusText);
292  handle_navigation_error(This->doc_host, status_code, This->url, NULL);
293  return S_OK;
294 
295  case BINDSTATUS_FINDINGRESOURCE:
296  case BINDSTATUS_ENDDOWNLOADDATA:
297  case BINDSTATUS_SENDINGREQUEST:
298  set_status_text(This, ulStatusCode, szStatusText);
299  return S_OK;
300 
301  case BINDSTATUS_CONNECTING:
302  case BINDSTATUS_CACHEFILENAMEAVAILABLE:
303  case BINDSTATUS_CLASSIDAVAILABLE:
304  case BINDSTATUS_MIMETYPEAVAILABLE:
305  case BINDSTATUS_BEGINSYNCOPERATION:
306  case BINDSTATUS_ENDSYNCOPERATION:
307  return S_OK;
308  default:
309  FIXME("status code %u\n", ulStatusCode);
310  }
311 
312  return S_OK;
313 }
314 
316 {
317  VARIANT var_status_code, var_frame_name, var_url;
318  DISPPARAMS dispparams;
319  VARIANTARG params[5];
320  VARIANT_BOOL cancel = VARIANT_FALSE;
321 
322  dispparams.cArgs = 5;
323  dispparams.cNamedArgs = 0;
324  dispparams.rgdispidNamedArgs = NULL;
325  dispparams.rgvarg = params;
326 
328  V_BOOLREF(params) = &cancel;
329 
331  V_VARIANTREF(params+1) = &var_status_code;
332  V_VT(&var_status_code) = VT_I4;
333  V_I4(&var_status_code) = hres;
334 
336  V_VARIANTREF(params+2) = &var_frame_name;
337  V_VT(&var_frame_name) = VT_BSTR;
338  if(win2) {
339  hres = IHTMLWindow2_get_name(win2, &V_BSTR(&var_frame_name));
340  if(FAILED(hres))
341  V_BSTR(&var_frame_name) = NULL;
342  } else
343  V_BSTR(&var_frame_name) = NULL;
344 
346  V_VARIANTREF(params+3) = &var_url;
347  V_VT(&var_url) = VT_BSTR;
348  V_BSTR(&var_url) = url;
349 
350  V_VT(params+4) = VT_DISPATCH;
351  V_DISPATCH(params+4) = (IDispatch*)doc_host->wb;
352 
353  call_sink(doc_host->cps.wbe2, DISPID_NAVIGATEERROR, &dispparams);
354  SysFreeString(V_BSTR(&var_frame_name));
355 
356  if(!cancel)
357  FIXME("Navigate to error page\n");
358 }
359 
361  HRESULT hresult, LPCWSTR szError)
362 {
364 
365  TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError));
366 
368 
369  if(!This->doc_host)
370  return S_OK;
371 
372  if(!This->doc_host->olecmd)
373  notify_download_state(This->doc_host, FALSE);
374  if(FAILED(hresult))
375  handle_navigation_error(This->doc_host, hresult, This->url, NULL);
376 
377  IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
378  This->doc_host = NULL;
379 
380  IBinding_Release(This->binding);
381  This->binding = NULL;
382 
383  return S_OK;
384 }
385 
387  DWORD *grfBINDF, BINDINFO *pbindinfo)
388 {
390 
391  TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo);
392 
393  *grfBINDF = BINDF_ASYNCHRONOUS;
394 
395  if(This->post_data) {
396  pbindinfo->dwBindVerb = BINDVERB_POST;
397 
398  pbindinfo->stgmedData.tymed = TYMED_HGLOBAL;
399  pbindinfo->stgmedData.u.hGlobal = This->post_data;
400  pbindinfo->cbstgmedData = This->post_data_len;
401  pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)&This->IBindStatusCallback_iface;
402  IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
403  }
404 
405  return S_OK;
406 }
407 
409  DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
410 {
412  FIXME("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed);
413  return E_NOTIMPL;
414 }
415 
417  REFIID riid, IUnknown *punk)
418 {
420 
421  TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk);
422 
423  return dochost_object_available(This->doc_host, punk);
424 }
425 
426 static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = {
438 };
439 
441 {
442  return CONTAINING_RECORD(iface, BindStatusCallback, IHttpNegotiate_iface);
443 }
444 
446  REFIID riid, void **ppv)
447 {
449  return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
450 }
451 
453 {
455  return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
456 }
457 
459 {
461  return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
462 }
463 
465  LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
466 {
468 
469  TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders),
470  dwReserved, pszAdditionalHeaders);
471 
472  if(This->headers) {
473  int size = (lstrlenW(This->headers)+1)*sizeof(WCHAR);
474  *pszAdditionalHeaders = CoTaskMemAlloc(size);
475  memcpy(*pszAdditionalHeaders, This->headers, size);
476  }
477 
478  return S_OK;
479 }
480 
482  DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders,
483  LPWSTR *pszAdditionalRequestHeaders)
484 {
486  TRACE("(%p)->(%d %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders),
487  debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders);
488  return S_OK;
489 }
490 
491 static const IHttpNegotiateVtbl HttpNegotiateVtbl = {
497 };
498 
500 {
501  return CONTAINING_RECORD(iface, BindStatusCallback, IHttpSecurity_iface);
502 }
503 
505 {
507  return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
508 }
509 
511 {
513  return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
514 }
515 
517 {
519  return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
520 }
521 
522 static HRESULT WINAPI HttpSecurity_GetWindow(IHttpSecurity *iface, REFGUID rguidReason, HWND *phwnd)
523 {
525 
526  TRACE("(%p)->(%s %p)\n", This, debugstr_guid(rguidReason), phwnd);
527 
528  if(!This->doc_host)
529  return E_FAIL;
530 
531  *phwnd = This->doc_host->frame_hwnd;
532  return S_OK;
533 }
534 
536 {
538  FIXME("(%p)->(%u)\n", This, dwProblem);
539  return S_FALSE;
540 }
541 
542 static const IHttpSecurityVtbl HttpSecurityVtbl = {
548 };
549 
551  ULONG post_data_len, LPCWSTR headers)
552 {
554 
555  ret->IBindStatusCallback_iface.lpVtbl = &BindStatusCallbackVtbl;
556  ret->IHttpNegotiate_iface.lpVtbl = &HttpNegotiateVtbl;
557  ret->IHttpSecurity_iface.lpVtbl = &HttpSecurityVtbl;
558 
559  ret->ref = 1;
560  ret->url = SysAllocString(url);
561  ret->post_data = NULL;
562  ret->post_data_len = post_data_len;
563  ret->headers = headers ? SysAllocString(headers) : NULL;
564 
565  ret->doc_host = doc_host;
566  IOleClientSite_AddRef(&doc_host->IOleClientSite_iface);
567 
568  ret->binding = NULL;
569 
570  if(post_data) {
571  ret->post_data = GlobalAlloc(0, post_data_len);
572  memcpy(ret->post_data, post_data, post_data_len);
573  }
574 
575  return ret;
576 }
577 
579 {
580  VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers;
581  DISPPARAMS dispparams;
582  VARIANTARG params[7];
584  DWORD file_path_len = ARRAY_SIZE(file_path);
585 
586  dispparams.cArgs = 7;
587  dispparams.cNamedArgs = 0;
588  dispparams.rgdispidNamedArgs = NULL;
589  dispparams.rgvarg = params;
590 
592  V_BOOLREF(params) = cancel;
593 
595  V_VARIANTREF(params+1) = &var_headers;
596  V_VT(&var_headers) = VT_BSTR;
597  V_BSTR(&var_headers) = headers;
598 
600  V_VARIANTREF(params+2) = &var_post_data2;
601  V_VT(&var_post_data2) = (VT_BYREF|VT_VARIANT);
602  V_VARIANTREF(&var_post_data2) = &var_post_data;
603 
604  if(post_data) {
605  V_VT(&var_post_data) = VT_UI1|VT_ARRAY;
606  V_ARRAY(&var_post_data) = post_data;
607  }else {
608  V_VT(&var_post_data) = VT_EMPTY;
609  }
610 
612  V_VARIANTREF(params+3) = &var_frame_name;
613  V_VT(&var_frame_name) = VT_BSTR;
614  V_BSTR(&var_frame_name) = NULL;
615 
617  V_VARIANTREF(params+4) = &var_flags;
618  V_VT(&var_flags) = VT_I4;
619  V_I4(&var_flags) = 0;
620 
622  V_VARIANTREF(params+5) = &var_url;
623  V_VT(&var_url) = VT_BSTR;
624  if(PathCreateFromUrlW(url, file_path, &file_path_len, 0) == S_OK)
625  V_BSTR(&var_url) = SysAllocString(file_path);
626  else
627  V_BSTR(&var_url) = SysAllocString(url);
628 
629  V_VT(params+6) = (VT_DISPATCH);
630  V_DISPATCH(params+6) = (IDispatch*)This->wb;
631 
632  call_sink(This->cps.wbe2, DISPID_BEFORENAVIGATE2, &dispparams);
633 
634  SysFreeString(V_BSTR(&var_url));
635 }
636 
637 /* FIXME: urlmon should handle it */
639 {
640  SHELLEXECUTEINFOW exec_info;
641  WCHAR app[64];
642  HKEY hkey;
643  DWORD res, type;
644  HRESULT hres;
645 
646  static const WCHAR wszURLProtocol[] = {'U','R','L',' ','P','r','o','t','o','c','o','l',0};
647 
648  hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, app, ARRAY_SIZE(app), NULL, 0);
649  if(FAILED(hres))
650  return FALSE;
651 
652  res = RegOpenKeyW(HKEY_CLASSES_ROOT, app, &hkey);
653  if(res != ERROR_SUCCESS)
654  return FALSE;
655 
656  res = RegQueryValueExW(hkey, wszURLProtocol, NULL, &type, NULL, NULL);
657  RegCloseKey(hkey);
658  if(res != ERROR_SUCCESS || type != REG_SZ)
659  return FALSE;
660 
661  TRACE("opening application %s\n", debugstr_w(app));
662 
663  memset(&exec_info, 0, sizeof(exec_info));
664  exec_info.cbSize = sizeof(exec_info);
665  exec_info.lpFile = url;
666  exec_info.nShow = SW_SHOW;
667 
668  return ShellExecuteExW(&exec_info);
669 }
670 
672 {
674  DWORD size;
675  HRESULT hres;
676 
677  if(PathIsURLW(url))
678  return CreateURLMoniker(NULL, url, mon);
679 
680  size = ARRAY_SIZE(new_url);
682  TRACE("was %s got %s\n", debugstr_w(url), debugstr_w(new_url));
683  if(FAILED(hres)) {
684  WARN("UrlApplyScheme failed: %08x\n", hres);
685  return hres;
686  }
687 
688  return CreateURLMoniker(NULL, new_url, mon);
689 }
690 
693 {
694  IUnknown *unk = NULL;
695  WCHAR *display_name;
696  HRESULT hres;
697 
698  if(mon) {
699  IMoniker_AddRef(mon);
700  }else {
701  hres = create_moniker(url, &mon);
702  if(FAILED(hres))
703  return hres;
704  }
705 
706  hres = IMoniker_GetDisplayName(mon, 0, NULL, &display_name);
707  if(FAILED(hres)) {
708  FIXME("GetDisplayName failed: %08x\n", hres);
709  IMoniker_Release(mon);
710  return hres;
711  }
712 
713  hres = set_dochost_url(This, display_name);
714  CoTaskMemFree(display_name);
715  if(FAILED(hres)) {
716  IMoniker_Release(mon);
717  return hres;
718  }
719 
720  IBindCtx_RegisterObjectParam(bindctx, (LPOLESTR)SZ_HTML_CLIENTSITE_OBJECTPARAM,
721  (IUnknown*)&This->IOleClientSite_iface);
722 
723  hres = IMoniker_BindToObject(mon, bindctx, NULL, &IID_IUnknown, (void**)&unk);
724  if(SUCCEEDED(hres)) {
725  hres = S_OK;
726  if(unk)
727  IUnknown_Release(unk);
728  }else if(try_application_url(url)) {
729  hres = S_OK;
730  }else {
731  FIXME("BindToObject failed: %08x\n", hres);
732  }
733 
734  IMoniker_Release(mon);
735  return S_OK;
736 }
737 
739 {
740  VARIANT headers_var, post_data_var;
741  BSTR empty_str;
742  HRESULT hres;
743 
745  if(FAILED(hres))
746  return;
747 
749 
750  if(headers) {
751  V_VT(&headers_var) = VT_BSTR;
752  V_BSTR(&headers_var) = headers;
753  }else {
754  V_VT(&headers_var) = VT_EMPTY;
755  }
756 
757  if(post_data) {
758  V_VT(&post_data_var) = VT_UI1|VT_ARRAY;
759  V_ARRAY(&post_data_var) = post_data;
760  }else {
761  V_VT(&post_data_var) = VT_EMPTY;
762  }
763 
764  set_doc_state(This, READYSTATE_LOADING);
765  hres = IHTMLPrivateWindow_SuperNavigate(window, url, empty_str, NULL, NULL, &post_data_var, &headers_var, 0);
767  if(FAILED(hres))
768  WARN("SuprtNavigate failed: %08x\n", hres);
769 }
770 
771 typedef struct {
778 
780 {
782 
783  SysFreeString(task->url);
784  SysFreeString(task->headers);
785  if(task->post_data)
787  heap_free(task);
788 }
789 
791 {
793  IHTMLPrivateWindow *priv_window;
794  HRESULT hres;
795 
796  if(!This->doc_navigate) {
797  ERR("Skip nav\n");
798  return;
799  }
800 
801  if(task->async_notif) {
802  VARIANT_BOOL cancel = VARIANT_FALSE;
803  on_before_navigate2(This, task->url, task->post_data, task->headers, &cancel);
804  if(cancel) {
805  TRACE("Navigation canceled\n");
806  return;
807  }
808  }
809 
810  hres = IUnknown_QueryInterface(This->doc_navigate, &IID_IHTMLPrivateWindow, (void**)&priv_window);
811  if(SUCCEEDED(hres)) {
812  html_window_navigate(This, priv_window, task->url, task->headers, task->post_data);
813  IHTMLPrivateWindow_Release(priv_window);
814  }else {
815  WARN("Could not get IHTMLPrivateWindow iface: %08x\n", hres);
816  }
817 }
818 
820  BOOL async_notif)
821 {
822  task_doc_navigate_t *task;
823 
824  TRACE("%s\n", debugstr_w(url));
825 
826  task = heap_alloc_zero(sizeof(*task));
827  if(!task)
828  return E_OUTOFMEMORY;
829 
830  task->url = SysAllocString(url);
831  if(!task->url) {
833  return E_OUTOFMEMORY;
834  }
835 
836  if(headers) {
837  task->headers = SysAllocString(headers);
838  if(!task->headers) {
840  return E_OUTOFMEMORY;
841  }
842  }
843 
844  if(post_data) {
845  task->post_data = SafeArrayCreateVector(VT_UI1, 0, post_data_size);
846  if(!task->post_data) {
848  return E_OUTOFMEMORY;
849  }
850 
851  memcpy(task->post_data->pvData, post_data, post_data_size);
852  }
853 
854  if(!async_notif) {
855  VARIANT_BOOL cancel = VARIANT_FALSE;
856 
857  on_before_navigate2(This, task->url, task->post_data, task->headers, &cancel);
858  if(cancel) {
859  TRACE("Navigation canceled\n");
861  return S_OK;
862  }
863  }
864 
865  task->async_notif = async_notif;
868  return S_OK;
869 }
870 
872 {
873  VARIANT_BOOL cancel = VARIANT_FALSE;
875  IBindCtx *bindctx;
876  HRESULT hres;
877 
878  set_doc_state(This, READYSTATE_LOADING);
879 
880  if(bsc->post_data) {
881  post_data = SafeArrayCreateVector(VT_UI1, 0, bsc->post_data_len);
882  memcpy(post_data->pvData, post_data, bsc->post_data_len);
883  }
884 
885  on_before_navigate2(This, bsc->url, post_data, bsc->headers, &cancel);
886  if(post_data)
888  if(cancel) {
889  FIXME("Navigation canceled\n");
890  return S_OK;
891  }
892 
894  This->busy = VARIANT_FALSE;
895 
898 
899  if(This->document)
901 
902  CreateAsyncBindCtx(0, &bsc->IBindStatusCallback_iface, 0, &bindctx);
903 
904  if(This->frame)
905  IOleInPlaceFrame_EnableModeless(This->frame, FALSE);
906 
907  hres = bind_to_object(This, mon, bsc->url, bindctx, &bsc->IBindStatusCallback_iface);
908 
909  if(This->frame)
910  IOleInPlaceFrame_EnableModeless(This->frame, TRUE);
911 
912  IBindCtx_Release(bindctx);
913 
914  return hres;
915 }
916 
917 typedef struct {
921 
923 {
925 
926  IBindStatusCallback_Release(&task->bsc->IBindStatusCallback_iface);
927  heap_free(task);
928 }
929 
931 {
933 
934  if(!This->hwnd)
936 
937  navigate_bsc(This, task->bsc, NULL);
938 }
939 
940 
942  const VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
943 {
944  SAFEARRAY *post_array = NULL;
945  PBYTE post_data = NULL;
946  ULONG post_data_len = 0;
947  LPWSTR headers = NULL;
948  HRESULT hres = S_OK;
949 
950  TRACE("navigating to %s\n", debugstr_w(url));
951 
952  if((Flags && V_VT(Flags) != VT_EMPTY && V_VT(Flags) != VT_ERROR)
953  || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY && V_VT(TargetFrameName) != VT_ERROR))
954  FIXME("Unsupported args (Flags %s; TargetFrameName %s)\n", debugstr_variant(Flags), debugstr_variant(TargetFrameName));
955 
956  if(PostData) {
957  if(V_VT(PostData) & VT_ARRAY)
958  post_array = V_ISBYREF(PostData) ? *V_ARRAYREF(PostData) : V_ARRAY(PostData);
959  else
960  WARN("Invalid post data %s\n", debugstr_variant(PostData));
961  }
962 
963  if(post_array) {
964  LONG elem_max;
965  SafeArrayAccessData(post_array, (void**)&post_data);
966  SafeArrayGetUBound(post_array, 1, &elem_max);
967  post_data_len = (elem_max+1) * SafeArrayGetElemsize(post_array);
968  }
969 
970  if(Headers && V_VT(Headers) == VT_BSTR) {
971  headers = V_BSTR(Headers);
972  TRACE("Headers: %s\n", debugstr_w(headers));
973  }
974 
975  set_doc_state(This, READYSTATE_LOADING);
976  This->ready_state = READYSTATE_LOADING;
977 
978  if(This->doc_navigate) {
980 
981  if(PathIsURLW(url)) {
982  new_url[0] = 0;
983  }else {
984  DWORD size;
985 
986  size = ARRAY_SIZE(new_url);
987  hres = UrlApplySchemeW(url, new_url, &size,
989  if(FAILED(hres)) {
990  WARN("UrlApplyScheme failed: %08x\n", hres);
991  new_url[0] = 0;
992  }
993  }
994 
995  hres = async_doc_navigate(This, *new_url ? new_url : url, headers, post_data,
996  post_data_len, TRUE);
997  }else {
998  task_navigate_bsc_t *task;
999 
1000  task = heap_alloc(sizeof(*task));
1001  task->bsc = create_callback(This, url, post_data, post_data_len, headers);
1003  }
1004 
1005  if(post_data)
1006  SafeArrayUnaccessData(post_array);
1007 
1008  return hres;
1009 }
1010 
1013 {
1016  PBYTE post_data = NULL;
1017  ULONG post_data_len = 0;
1018  LPWSTR headers = NULL, url;
1019  BINDINFO bindinfo;
1020  DWORD bindf = 0;
1021  HRESULT hres;
1022 
1023  TRACE("\n");
1024 
1025  hres = IMoniker_GetDisplayName(mon, 0, NULL, &url);
1026  if(FAILED(hres))
1027  FIXME("GetDisplayName failed: %08x\n", hres);
1028 
1029  hres = IBindStatusCallback_QueryInterface(callback, &IID_IHttpNegotiate,
1030  (void**)&http_negotiate);
1031  if(SUCCEEDED(hres)) {
1032  static const WCHAR null_string[] = {0};
1033 
1034  IHttpNegotiate_BeginningTransaction(http_negotiate, null_string, null_string, 0,
1035  &headers);
1036  IHttpNegotiate_Release(http_negotiate);
1037  }
1038 
1039  memset(&bindinfo, 0, sizeof(bindinfo));
1040  bindinfo.cbSize = sizeof(bindinfo);
1041 
1042  hres = IBindStatusCallback_GetBindInfo(callback, &bindf, &bindinfo);
1043  dump_BINDINFO(&bindinfo);
1044  if(bindinfo.dwBindVerb == BINDVERB_POST) {
1045  post_data_len = bindinfo.cbstgmedData;
1046  if(post_data_len)
1047  post_data = bindinfo.stgmedData.u.hGlobal;
1048  }
1049 
1050  if(This->doc_navigate) {
1051  hres = async_doc_navigate(This, url, headers, post_data, post_data_len, FALSE);
1052  }else {
1053  bsc = create_callback(This, url, post_data, post_data_len, headers);
1054  hres = navigate_bsc(This, bsc, mon);
1055  IBindStatusCallback_Release(&bsc->IBindStatusCallback_iface);
1056  }
1057 
1058  CoTaskMemFree(url);
1060  ReleaseBindInfo(&bindinfo);
1061 
1062  return hres;
1063 }
1064 
1066 {
1067  HKEY hkey;
1068  DWORD res, type, size;
1069  WCHAR wszPageName[MAX_PATH];
1070  static const WCHAR wszAboutBlank[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
1071  static const WCHAR wszStartPage[] = {'S','t','a','r','t',' ','P','a','g','e',0};
1072  static const WCHAR wszSubKey[] = {'S','o','f','t','w','a','r','e','\\',
1073  'M','i','c','r','o','s','o','f','t','\\',
1074  'I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r','\\',
1075  'M','a','i','n',0};
1076 
1077  res = RegOpenKeyW(HKEY_CURRENT_USER, wszSubKey, &hkey);
1078  if (res != ERROR_SUCCESS)
1079  return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL);
1080 
1081  size = sizeof(wszPageName);
1082  res = RegQueryValueExW(hkey, wszStartPage, NULL, &type, (LPBYTE)wszPageName, &size);
1083  RegCloseKey(hkey);
1084  if (res != ERROR_SUCCESS || type != REG_SZ)
1085  return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL);
1086 
1087  return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL);
1088 }
1089 
1090 static HRESULT navigate_history(DocHost *This, unsigned travellog_pos)
1091 {
1092  IPersistHistory *persist_history;
1094  LARGE_INTEGER li;
1095  HRESULT hres;
1096 
1097  if(!This->doc_navigate) {
1098  FIXME("unsupported doc_navigate FALSE\n");
1099  return E_NOTIMPL;
1100  }
1101 
1102  This->travellog.loading_pos = travellog_pos;
1103  entry = This->travellog.log + This->travellog.loading_pos;
1104 
1106 
1107  if(!entry->stream)
1108  return async_doc_navigate(This, entry->url, NULL, NULL, 0, FALSE);
1109 
1110  hres = IUnknown_QueryInterface(This->document, &IID_IPersistHistory, (void**)&persist_history);
1111  if(FAILED(hres))
1112  return hres;
1113 
1114  li.QuadPart = 0;
1115  IStream_Seek(entry->stream, li, STREAM_SEEK_SET, NULL);
1116 
1117  hres = IPersistHistory_LoadHistory(persist_history, entry->stream, NULL);
1118  IPersistHistory_Release(persist_history);
1119  return hres;
1120 }
1121 
1123 {
1124  if(!This->travellog.position) {
1125  WARN("No history available\n");
1126  return E_FAIL;
1127  }
1128 
1129  return navigate_history(This, This->travellog.position-1);
1130 }
1131 
1133 {
1134  if(This->travellog.position >= This->travellog.length) {
1135  WARN("No history available\n");
1136  return E_FAIL;
1137  }
1138 
1139  return navigate_history(This, This->travellog.position+1);
1140 }
1141 
1143 {
1144  FIXME("semi-stub\n");
1145 
1146  *ret = This->url ? SysAllocString(This->url) : SysAllocStringLen(NULL, 0);
1147  if(!*ret)
1148  return E_OUTOFMEMORY;
1149 
1150  return This->url ? S_OK : S_FALSE;
1151 }
1152 
1154 {
1155  return CONTAINING_RECORD(iface, HlinkFrame, IHlinkFrame_iface);
1156 }
1157 
1159 {
1161  return IUnknown_QueryInterface(This->outer, riid, ppv);
1162 }
1163 
1165 {
1167  return IUnknown_AddRef(This->outer);
1168 }
1169 
1171 {
1173  return IUnknown_Release(This->outer);
1174 }
1175 
1177  IHlinkBrowseContext *pihlbc)
1178 {
1180  FIXME("(%p)->(%p)\n", This, pihlbc);
1181  return E_NOTIMPL;
1182 }
1183 
1185  IHlinkBrowseContext **ppihlbc)
1186 {
1188  FIXME("(%p)->(%p)\n", This, ppihlbc);
1189  return E_NOTIMPL;
1190 }
1191 
1193  IBindStatusCallback *pibsc, IHlink *pihlNavigate)
1194 {
1196  IMoniker *mon;
1197  LPWSTR location = NULL;
1198 
1199  TRACE("(%p)->(%08x %p %p %p)\n", This, grfHLNF, pbc, pibsc, pihlNavigate);
1200 
1201  if(grfHLNF)
1202  FIXME("unsupported grfHLNF=%08x\n", grfHLNF);
1203 
1204  /* Windows calls GetTargetFrameName here. */
1205 
1206  IHlink_GetMonikerReference(pihlNavigate, 1, &mon, &location);
1207 
1208  if(location) {
1209  FIXME("location = %s\n", debugstr_w(location));
1211  }
1212 
1213  /* Windows calls GetHlinkSite here */
1214 
1215  if(grfHLNF & HLNF_OPENINNEWWINDOW) {
1216  FIXME("Not supported HLNF_OPENINNEWWINDOW\n");
1217  return E_NOTIMPL;
1218  }
1219 
1220  return navigate_hlink(This->doc_host, mon, pbc, pibsc);
1221 }
1222 
1224  IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
1225 {
1227  FIXME("(%p)->(%08x %p %s %s %d)\n", This, grfHLNF, pimkTarget, debugstr_w(pwzLocation),
1228  debugstr_w(pwzFriendlyName), dwreserved);
1229  return E_NOTIMPL;
1230 }
1231 
1233  IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
1234 {
1236  FIXME("(%p)->(%u %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation),
1237  debugstr_w(pwzFriendlyName));
1238  return E_NOTIMPL;
1239 }
1240 
1241 static const IHlinkFrameVtbl HlinkFrameVtbl = {
1250 };
1251 
1253 {
1254  return CONTAINING_RECORD(iface, HlinkFrame, ITargetFrame_iface);
1255 }
1256 
1258 {
1260  return IUnknown_QueryInterface(This->outer, riid, ppv);
1261 }
1262 
1264 {
1266  return IUnknown_AddRef(This->outer);
1267 }
1268 
1270 {
1272  return IUnknown_Release(This->outer);
1273 }
1274 
1276 {
1278  FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
1279  return E_NOTIMPL;
1280 }
1281 
1283 {
1285  FIXME("(%p)->(%p)\n", This, ppszFrameName);
1286  return E_NOTIMPL;
1287 }
1288 
1290 {
1292  FIXME("(%p)->(%p)\n", This, ppunkParent);
1293  return E_NOTIMPL;
1294 }
1295 
1297  IUnknown *ppunkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1298 {
1300  FIXME("(%p)->(%s %p %x %p)\n", This, debugstr_w(pszTargetName),
1301  ppunkContextFrame, dwFlags, ppunkTargetFrame);
1302  return E_NOTIMPL;
1303 }
1304 
1306 {
1308  FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
1309  return E_NOTIMPL;
1310 }
1311 
1313 {
1315  FIXME("(%p)->(%p)\n", This, ppszFrameSrc);
1316  return E_NOTIMPL;
1317 }
1318 
1320 {
1322  FIXME("(%p)->(%p)\n", This, ppContainer);
1323  return E_NOTIMPL;
1324 }
1325 
1327 {
1329  FIXME("(%p)->(%x)\n", This, dwFlags);
1330  return E_NOTIMPL;
1331 }
1332 
1334 {
1336  FIXME("(%p)->(%p)\n", This, pdwFlags);
1337  return E_NOTIMPL;
1338 }
1339 
1341 {
1343  FIXME("(%p)->(%d %d)\n", This, dwWidth, dwHeight);
1344  return E_NOTIMPL;
1345 }
1346 
1347 static HRESULT WINAPI TargetFrame_GetFrameMargins(ITargetFrame *iface, DWORD *pdwWidth, DWORD *pdwHeight)
1348 {
1350  FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
1351  return E_NOTIMPL;
1352 }
1353 
1355 {
1357  FIXME("(%p)->(%u %p)\n", This, cLength, pulData);
1358  return E_NOTIMPL;
1359 }
1360 
1362 {
1364  FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1365  return E_NOTIMPL;
1366 }
1367 
1369 {
1371  FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1372  return E_NOTIMPL;
1373 }
1374 
1375 static const ITargetFrameVtbl TargetFrameVtbl = {
1393 };
1394 
1396 {
1397  return CONTAINING_RECORD(iface, HlinkFrame, ITargetFrame2_iface);
1398 }
1399 
1401 {
1403  return IUnknown_QueryInterface(This->outer, riid, ppv);
1404 }
1405 
1407 {
1409  return IUnknown_AddRef(This->outer);
1410 }
1411 
1413 {
1415  return IUnknown_Release(This->outer);
1416 }
1417 
1419 {
1421  FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
1422  return E_NOTIMPL;
1423 }
1424 
1426 {
1428  FIXME("(%p)->(%p)\n", This, ppszFrameName);
1429  return E_NOTIMPL;
1430 }
1431 
1433 {
1435  FIXME("(%p)->(%p)\n", This, ppunkParent);
1436  return E_NOTIMPL;
1437 }
1438 
1440 {
1442  FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
1443  return E_NOTIMPL;
1444 }
1445 
1447 {
1449  FIXME("(%p)->()\n", This);
1450  return E_NOTIMPL;
1451 }
1452 
1454 {
1456  FIXME("(%p)->(%p)\n", This, ppContainer);
1457  return E_NOTIMPL;
1458 }
1459 
1461 {
1463  FIXME("(%p)->(%x)\n", This, dwFlags);
1464  return E_NOTIMPL;
1465 }
1466 
1468 {
1470  FIXME("(%p)->(%p)\n", This, pdwFlags);
1471  return E_NOTIMPL;
1472 }
1473 
1475 {
1477  FIXME("(%p)->(%d %d)\n", This, dwWidth, dwHeight);
1478  return E_NOTIMPL;
1479 }
1480 
1482 {
1484  FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
1485  return E_NOTIMPL;
1486 }
1487 
1488 static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1489 {
1491  FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
1492  return E_NOTIMPL;
1493 }
1494 
1495 static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
1496 {
1498  FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias);
1499  return E_NOTIMPL;
1500 }
1501 
1502 static const ITargetFrame2Vtbl TargetFrame2Vtbl = {
1518 };
1519 
1521 {
1522  return CONTAINING_RECORD(iface, HlinkFrame, ITargetFramePriv2_iface);
1523 }
1524 
1526 {
1528  return IUnknown_QueryInterface(This->outer, riid, ppv);
1529 }
1530 
1532 {
1534  return IUnknown_AddRef(This->outer);
1535 }
1536 
1538 {
1540  return IUnknown_Release(This->outer);
1541 }
1542 
1544  LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1545 {
1547  FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
1548  return E_NOTIMPL;
1549 }
1550 
1552  LPCWSTR pszTargetName, IUnknown *punkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
1553 {
1555  FIXME("(%p)->(%s %p %x %p)\n", This, debugstr_w(pszTargetName), punkContextFrame, dwFlags, ppunkTargetFrame);
1556  return E_NOTIMPL;
1557 }
1558 
1560 {
1562  FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1563  return E_NOTIMPL;
1564 }
1565 
1567 {
1569  FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1570  return E_NOTIMPL;
1571 }
1572 
1574  IBindStatusCallback *pibsc, LPCWSTR pszTargetName, LPCWSTR pszUrl, LPCWSTR pszLocation)
1575 {
1577  FIXME("(%p)->(%x %p %p %s %s %s)\n", This, grfHLNF, pbc, pibsc, debugstr_w(pszTargetName),
1578  debugstr_w(pszUrl), debugstr_w(pszLocation));
1579  return E_NOTIMPL;
1580 }
1581 
1583 {
1585  FIXME("(%p)->(%d %p)\n", This, dwID, ppunkBrowser);
1586  return E_NOTIMPL;
1587 }
1588 
1590  IBindStatusCallback *pibsc, LPCWSTR pszTargetName, IUri *pUri, LPCWSTR pszLocation)
1591 {
1593  IMoniker *mon;
1594  HRESULT hres;
1595 
1596  TRACE("(%p)->(%x %p %p %s %p %s)\n", This, grfHLNF, pbc, pibsc, debugstr_w(pszTargetName),
1597  pUri, debugstr_w(pszLocation));
1598 
1599  /*
1600  * NOTE: This is an undocumented function. It seems to be working the way it's implemented,
1601  * but I couldn't get its tests working. It's used by mshtml to load content in a new
1602  * instance of browser.
1603  */
1604 
1605  hres = CreateURLMonikerEx2(NULL, pUri, &mon, 0);
1606  if(FAILED(hres))
1607  return hres;
1608 
1609  hres = navigate_hlink(This->doc_host, mon, pbc, pibsc);
1610  IMoniker_Release(mon);
1611  return hres;
1612 }
1613 
1614 static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl = {
1625 };
1626 
1628 {
1629  return CONTAINING_RECORD(iface, HlinkFrame, IWebBrowserPriv2IE9_iface);
1630 }
1631 
1633 {
1635  return IUnknown_QueryInterface(This->outer, riid, ppv);
1636 }
1637 
1639 {
1641  return IUnknown_AddRef(This->outer);
1642 }
1643 
1645 {
1647  return IUnknown_Release(This->outer);
1648 }
1649 
1651  VARIANT *target_frame, VARIANT *post_data, VARIANT *headers, IBindCtx *bind_ctx, LPOLESTR url_fragment, DWORD unused)
1652 {
1654  FIXME("(%p)->(%p %s %s %s %s %p %s)\n", This, uri, debugstr_variant(flags), debugstr_variant(target_frame),
1655  debugstr_variant(post_data), debugstr_variant(headers), bind_ctx, debugstr_w(url_fragment));
1656  return E_NOTIMPL;
1657 }
1658 
1659 static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl = {
1664 };
1665 
1667 {
1668  if(IsEqualGUID(&IID_IHlinkFrame, riid)) {
1669  TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv);
1670  *ppv = &This->IHlinkFrame_iface;
1671  }else if(IsEqualGUID(&IID_ITargetFrame, riid)) {
1672  TRACE("(%p)->(IID_ITargetFrame %p)\n", This, ppv);
1673  *ppv = &This->ITargetFrame_iface;
1674  }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) {
1675  TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv);
1676  *ppv = &This->ITargetFrame2_iface;
1677  }else if(IsEqualGUID(&IID_ITargetFramePriv, riid)) {
1678  TRACE("(%p)->(IID_ITargetFramePriv %p)\n", This, ppv);
1679  *ppv = &This->ITargetFramePriv2_iface;
1680  }else if(IsEqualGUID(&IID_ITargetFramePriv2, riid)) {
1681  TRACE("(%p)->(IID_ITargetFramePriv2 %p)\n", This, ppv);
1682  *ppv = &This->ITargetFramePriv2_iface;
1683  }else if(IsEqualGUID(&IID_IWebBrowserPriv2IE9, riid)) {
1684  TRACE("(%p)->(IID_IWebBrowserPriv2IE9 %p)\n", This, ppv);
1685  *ppv = &This->IWebBrowserPriv2IE9_iface;
1686  }else {
1687  return FALSE;
1688  }
1689 
1690  IUnknown_AddRef((IUnknown*)*ppv);
1691  return TRUE;
1692 }
1693 
1695 {
1696  This->IHlinkFrame_iface.lpVtbl = &HlinkFrameVtbl;
1697  This->ITargetFrame_iface.lpVtbl = &TargetFrameVtbl;
1698  This->ITargetFrame2_iface.lpVtbl = &TargetFrame2Vtbl;
1699  This->ITargetFramePriv2_iface.lpVtbl = &TargetFramePriv2Vtbl;
1700  This->IWebBrowserPriv2IE9_iface.lpVtbl = &WebBrowserPriv2IE9Vtbl;
1701 
1702  This->outer = outer;
1703  This->doc_host = doc_host;
1704 }
void on_commandstate_change(DocHost *doc_host, LONG command, BOOL enable)
Definition: dochost.c:83
VARIANT_BOOL busy
Definition: ieframe.h:155
static ULONG WINAPI WebBrowserPriv2IE9_Release(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1644
static HRESULT WINAPI TargetFramePriv2_OnChildFrameActivate(ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1559
static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags)
Definition: navigate.c:1467
static HRESULT WINAPI TargetFramePriv2_NavigateHack(ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, LPCWSTR pszUrl, LPCWSTR pszLocation)
Definition: navigate.c:1573
#define DISPID_BEFORENAVIGATE2
Definition: exdispid.h:43
HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved)
Definition: path.c:3334
IOleClientSite IOleClientSite_iface
Definition: ieframe.h:120
static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent)
Definition: navigate.c:1432
#define REFIID
Definition: guiddef.h:118
#define TRUE
Definition: types.h:120
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
#define E_NOINTERFACE
Definition: winerror.h:2364
Definition: compat.h:1947
static const TCHAR empty_str[]
Definition: dialog.c:32
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
Definition: navigate.c:416
static HRESULT WINAPI HttpSecurity_QueryInterface(IHttpSecurity *iface, REFIID riid, void **ppv)
Definition: navigate.c:504
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
#define ERROR_SUCCESS
Definition: deptool.c:10
static HRESULT create_moniker(LPCWSTR url, IMoniker **mon)
Definition: navigate.c:671
static BindStatusCallback * create_callback(DocHost *doc_host, LPCWSTR url, PBYTE post_data, ULONG post_data_len, LPCWSTR headers)
Definition: navigate.c:550
static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName)
Definition: navigate.c:1425
Definition: scsiwmi.h:51
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
interface IBindCtx * LPBC
Definition: objfwd.h:18
static const IBindStatusCallbackVtbl BindStatusCallbackVtbl
Definition: navigate.c:426
static HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight)
Definition: navigate.c:1474
static ULONG WINAPI HttpSecurity_AddRef(IHttpSecurity *iface)
Definition: navigate.c:510
static HRESULT bind_to_object(DocHost *This, IMoniker *mon, LPCWSTR url, IBindCtx *bindctx, IBindStatusCallback *callback)
Definition: navigate.c:691
task_header_t header
Definition: navigate.c:772
const char * uri
Definition: sec_mgr.c:1594
REFIID riid
Definition: precomp.h:44
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
Definition: urlmon_main.c:572
#define HKEY_CURRENT_USER
Definition: winreg.h:11
static HRESULT WINAPI TargetFrame_RemoteNavigate(ITargetFrame *iface, ULONG cLength, ULONG *pulData)
Definition: navigate.c:1354
#define V_ARRAY(A)
Definition: oleauto.h:222
static void on_before_navigate2(DocHost *This, LPCWSTR url, SAFEARRAY *post_data, LPWSTR headers, VARIANT_BOOL *cancel)
Definition: navigate.c:578
static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, PBYTE post_data, ULONG post_data_size, BOOL async_notif)
Definition: navigate.c:819
static HRESULT WINAPI TargetFrame_GetParentFrame(ITargetFrame *iface, IUnknown **ppunkParent)
Definition: navigate.c:1289
#define WARN(fmt,...)
Definition: debug.h:111
static ULONG WINAPI HttpSecurity_Release(IHttpSecurity *iface)
Definition: navigate.c:516
static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer)
Definition: navigate.c:1453
DocHost * doc_host
Definition: navigate.c:49
static HRESULT WINAPI TargetFrame_FindFrame(ITargetFrame *iface, LPCWSTR pszTargetName, IUnknown *ppunkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1296
static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags)
Definition: navigate.c:1460
REFIID LPVOID * ppv
Definition: atlbase.h:39
BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv)
Definition: navigate.c:1666
static DWORD get_http_status_code(IBinding *binding)
Definition: navigate.c:257
static HRESULT WINAPI TargetFrame_SetFrameName(ITargetFrame *iface, LPCWSTR pszFrameName)
Definition: navigate.c:1275
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError)
Definition: navigate.c:360
GLdouble GLdouble t
Definition: gl.h:2047
#define V_ISBYREF(A)
Definition: oleauto.h:217
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host)
Definition: navigate.c:1694
#define DISPID_DOWNLOADCOMPLETE
Definition: webchild.h:39
static HRESULT WINAPI TargetFrame_GetFrameName(ITargetFrame *iface, LPWSTR *ppszFrameName)
Definition: navigate.c:1282
HINSTANCE ieframe_instance
Definition: ieframe_main.c:32
GLuint buffer
Definition: glext.h:5915
HRESULT go_back(DocHost *This)
Definition: navigate.c:1122
static BOOL try_application_url(LPCWSTR url)
Definition: navigate.c:638
HGLOBAL post_data
Definition: navigate.c:53
vector< Header * > headers
Definition: sdkparse.cpp:39
static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName)
Definition: navigate.c:1418
void * arg
Definition: msvc.h:10
static HRESULT WINAPI HttpSecurity_GetWindow(IHttpSecurity *iface, REFGUID rguidReason, HWND *phwnd)
Definition: navigate.c:522
HRESULT WINAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
Definition: internet.c:392
OLECHAR * BSTR
Definition: compat.h:1942
__IHTMLWindow2_FWD_DEFINED__ typedef interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mon)
Definition: navigate.c:871
static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface)
Definition: navigate.c:1164
static LPOLESTR
Definition: stg_prop.c:27
static HlinkFrame * impl_from_IHlinkFrame(IHlinkFrame *iface)
Definition: navigate.c:1153
#define lstrlenW
Definition: compat.h:415
#define E_FAIL
Definition: ddrawi.h:102
static HRESULT WINAPI TargetFrame_SetFrameSrc(ITargetFrame *iface, LPCWSTR pszFrameSrc)
Definition: navigate.c:1305
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DWORD
Definition: nt_native.h:44
short VARIANT_BOOL
Definition: compat.h:1939
static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
Definition: navigate.c:464
Definition: send.c:47
static HRESULT WINAPI TargetFramePriv2_FindFrameInContext(ITargetFramePriv2 *iface, LPCWSTR pszTargetName, IUnknown *punkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1551
#define DISPID_STATUSTEXTCHANGE
Definition: webchild.h:37
static const ITargetFrame2Vtbl TargetFrame2Vtbl
Definition: navigate.c:1502
static HRESULT WINAPI TargetFrame_GetFrameOptions(ITargetFrame *iface, DWORD *pdwFlags)
Definition: navigate.c:1333
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
void update_navigation_commands(DocHost *dochost)
Definition: dochost.c:106
#define V_I4(A)
Definition: oleauto.h:247
BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
Definition: url.c:2432
static HRESULT WINAPI HttpSecurity_OnSecurityProblem(IHttpSecurity *iface, DWORD dwProblem)
Definition: navigate.c:535
static HlinkFrame * impl_from_ITargetFrame(ITargetFrame *iface)
Definition: navigate.c:1252
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority)
Definition: navigate.c:241
static void dump_BINDINFO(BINDINFO *bi)
Definition: navigate.c:58
#define V_DISPATCH(A)
Definition: oleauto.h:239
static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, IBindStatusCallback *callback)
Definition: navigate.c:1011
static HlinkFrame * impl_from_ITargetFramePriv2(ITargetFramePriv2 *iface)
Definition: navigate.c:1520
ConnectionPointContainer cps
Definition: ieframe.h:173
struct status_code status_code
IWebBrowser2 * wb
Definition: ieframe.h:133
static BindStatusCallback * impl_from_IHttpNegotiate(IHttpNegotiate *iface)
Definition: navigate.c:440
#define IDS_STATUSFMT_MAXLEN
Definition: resource.h:78
WORD unused[29]
Definition: crypt.c:1155
static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface)
Definition: navigate.c:452
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static void html_window_navigate(DocHost *This, IHTMLPrivateWindow *window, BSTR url, BSTR headers, SAFEARRAY *post_data)
Definition: navigate.c:738
GLenum const GLfloat * params
Definition: glext.h:5645
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
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:1650
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
Definition: safearray.c:1137
static HRESULT WINAPI TargetFramePriv2_FindFrameDownwards(ITargetFramePriv2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1543
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext **ppihlbc)
Definition: navigate.c:1184
void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams)
Definition: events.c:391
static WCHAR * heap_strdupW(const WCHAR *str)
Definition: propsheet.c:178
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3296
#define debugstr_w
Definition: kernel32.h:32
static HRESULT WINAPI WebBrowserPriv2IE9_QueryInterface(IWebBrowserPriv2IE9 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1632
GLenum GLint ref
Definition: glext.h:6028
#define FIXME(fmt,...)
Definition: debug.h:110
r reserved
Definition: btrfs.c:2865
static void navigate_bsc_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:930
#define V_ARRAYREF(A)
Definition: oleauto.h:223
#define S_FALSE
Definition: winerror.h:2357
HRESULT get_location_url(DocHost *This, BSTR *ret)
Definition: navigate.c:1142
static IBindStatusCallbackEx bsc
Definition: url.c:2150
const WCHAR * str
#define V_BOOLREF(A)
Definition: oleauto.h:225
smooth NULL
Definition: ftsmooth.c:416
static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
Definition: navigate.c:1158
static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc)
Definition: navigate.c:1439
#define INTERNET_MAX_URL_LENGTH
Definition: session.c:1410
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
Definition: navigate.c:408
static HRESULT WINAPI TargetFrame_GetFramesContainer(ITargetFrame *iface, IOleContainer **ppContainer)
Definition: navigate.c:1319
Definition: ieframe.h:104
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2235
static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight)
Definition: navigate.c:1481
#define SW_SHOW
Definition: winuser.h:769
static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, REFIID riid, void **ppv)
Definition: navigate.c:445
#define debugstr_guid
Definition: kernel32.h:35
SHDocVw::uuid CSC_NAVIGATEBACK
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
static const WCHAR dwHeight[]
Definition: provider.c:63
static HRESULT WINAPI TargetFrame_SetFrameOptions(ITargetFrame *iface, DWORD dwFlags)
Definition: navigate.c:1326
void deactivate_document(DocHost *This)
Definition: dochost.c:510
HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags, const VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
Definition: navigate.c:941
#define IDS_STATUSFMT_FIRST
Definition: resource.h:73
static HRESULT WINAPI TargetFramePriv2_AggregatedNavigation2(ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, IUri *pUri, LPCWSTR pszLocation)
Definition: navigate.c:1589
static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1400
static HRESULT WINAPI TargetFrame_QueryInterface(ITargetFrame *iface, REFIID riid, void **ppv)
Definition: navigate.c:1257
static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface)
Definition: navigate.c:1406
MmuTrapHandler callback[0x30]
Definition: mmuobject.c:44
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
Definition: navigate.c:386
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
HRESULT hres
Definition: protocol.c:465
ULONG post_data_len
Definition: navigate.c:55
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4116
__wchar_t WCHAR
Definition: xmlstorage.h:180
HRESULT set_dochost_url(DocHost *This, const WCHAR *url)
Definition: navigate.c:134
#define URL_APPLY_DEFAULT
Definition: shlwapi.h:1204
LONG HRESULT
Definition: typedefs.h:77
static HlinkFrame * impl_from_IWebBrowserPriv2IE9(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1627
static const WCHAR url[]
Definition: encode.c:1432
const GUID IID_IUnknown
static BindStatusCallback * impl_from_IBindStatusCallback(IBindStatusCallback *iface)
Definition: navigate.c:161
PVOID pvData
Definition: compat.h:2008
IHttpNegotiate IHttpNegotiate_iface
Definition: navigate.c:44
#define MAX_PATH
Definition: compat.h:26
#define swprintf(buf, format,...)
Definition: sprintf.c:56
#define WINAPI
Definition: msvc.h:6
unsigned long DWORD
Definition: ntddk_ex.h:95
#define HTTP_STATUS_OK
Definition: winhttp.h:240
static ULONG WINAPI TargetFrame_Release(ITargetFrame *iface)
Definition: navigate.c:1269
void create_doc_view_hwnd(DocHost *This)
Definition: dochost.c:479
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
Definition: heapmem.c:611
static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface)
Definition: navigate.c:1170
void set_doc_state(DocHost *This, READYSTATE doc_state)
Definition: dochost.c:234
GLbitfield flags
Definition: glext.h:7161
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
static ULONG WINAPI TargetFramePriv2_Release(ITargetFramePriv2 *iface)
Definition: navigate.c:1537
int ret
#define DISPID_NAVIGATEERROR
Definition: webchild.h:73
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648
static const CHAR post_data[]
Definition: protocol.c:217
#define InterlockedDecrement
Definition: armddk.h:52
HRESULT dochost_object_available(DocHost *This, IUnknown *doc)
Definition: dochost.c:304
void push_dochost_task(DocHost *This, task_header_t *task, task_proc_t proc, task_destr_t destr, BOOL send)
Definition: dochost.c:39
HRESULT WINAPI UrlApplySchemeW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut, DWORD dwFlags)
Definition: url.c:1817
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define DISPID_DOWNLOADBEGIN
Definition: webchild.h:41
static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext *pihlbc)
Definition: navigate.c:1176
static void doc_navigate_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:790
#define V_VT(A)
Definition: oleauto.h:211
HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker **ppmk, DWORD dwFlags)
Definition: umon.c:668
uint32_t entry
Definition: isohybrid.c:63
static HRESULT WINAPI TargetFrame_GetFrameMargins(ITargetFrame *iface, DWORD *pdwWidth, DWORD *pdwHeight)
Definition: navigate.c:1347
void notify_download_state(DocHost *dochost, BOOL is_downloading)
Definition: navigate.c:153
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
IBindStatusCallback IBindStatusCallback_iface
Definition: navigate.c:43
static IHTMLWindow2 * window
Definition: events.c:77
SAFEARRAY * post_data
Definition: navigate.c:775
static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
Definition: navigate.c:1495
ConnectionPoint * wbe2
Definition: ieframe.h:55
#define V_BSTR(A)
Definition: oleauto.h:226
static void doc_navigate_task_destr(task_header_t *t)
Definition: navigate.c:779
#define HTTP_QUERY_STATUS_CODE
Definition: wininet.h:1542
task_header_t header
Definition: navigate.c:918
static void navigate_bsc_task_destr(task_header_t *t)
Definition: navigate.c:922
static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface)
Definition: navigate.c:458
IHttpSecurity IHttpSecurity_iface
Definition: navigate.c:45
static HRESULT WINAPI TargetFrame_GetFrameSrc(ITargetFrame *iface, LPWSTR *ppszFrameSrc)
Definition: navigate.c:1312
#define ERR(fmt,...)
Definition: debug.h:109
static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, IHlink *pihlNavigate)
Definition: navigate.c:1192
IBinding * binding
Definition: navigate.c:50
static const char * debugstr_variant(const VARIANT *var)
Definition: container.c:46
#define S_OK
Definition: intsafe.h:59
void abort_dochost_tasks(DocHost *This, task_proc_t proc)
Definition: dochost.c:70
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
Definition: safearray.c:1033
HRESULT go_forward(DocHost *This)
Definition: navigate.c:1132
HRESULT WINAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *callback, IEnumFORMATETC *format, IBindCtx **pbind)
Definition: bindctx.c:899
static HRESULT WINAPI TargetFramePriv2_QueryInterface(ITargetFramePriv2 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1525
static void set_status_text(BindStatusCallback *This, ULONG statuscode, LPCWSTR str)
Definition: navigate.c:102
#define InterlockedIncrement
Definition: armddk.h:53
static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
Definition: navigate.c:276
static const WCHAR emptyW[]
Definition: navigate.c:40
static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1488
#define ARRAY_SIZE(a)
Definition: main.h:24
static SZ_HTML_CLIENTSITE_OBJECTPARAM(const WCHAR[]) const WCHAR SZ_HTML_CLIENTSITE_OBJECTPARAM[]
Definition: mshtmhst.idl:59
static HRESULT WINAPI TargetFrame_SetFrameMargins(ITargetFrame *iface, DWORD dwWidth, DWORD dwHeight)
Definition: navigate.c:1340
static BindStatusCallback * impl_from_IHttpSecurity(IHttpSecurity *iface)
Definition: navigate.c:499
#define E_NOTIMPL
Definition: ddrawi.h:99
static const IHttpSecurityVtbl HttpSecurityVtbl
Definition: navigate.c:542
static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface)
Definition: navigate.c:196
UINT WINAPI SafeArrayGetElemsize(SAFEARRAY *psa)
Definition: safearray.c:1114
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
BindStatusCallback * bsc
Definition: navigate.c:919
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
static HRESULT WINAPI TargetFrame_OnChildFrameActivate(ITargetFrame *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1361
SHDocVw::uuid CSC_NAVIGATEFORWARD
#define HTTP_QUERY_FLAG_NUMBER
Definition: wininet.h:1606
void handle_navigation_error(DocHost *doc_host, HRESULT hres, BSTR url, IHTMLWindow2 *win2)
Definition: navigate.c:315
#define URL_APPLY_GUESSSCHEME
Definition: shlwapi.h:1203
static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
Definition: navigate.c:1232
static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
Definition: navigate.c:1223
GLuint res
Definition: glext.h:9613
struct stdole::DISPPARAMS DISPPARAMS
static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface)
Definition: navigate.c:1412
unsigned int ULONG
Definition: retypes.h:1
static HRESULT WINAPI TargetFramePriv2_FindBrowserByIndex(ITargetFramePriv2 *iface, DWORD dwID, IUnknown **ppunkBrowser)
Definition: navigate.c:1582
HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk)
Definition: umon.c:732
static HRESULT WINAPI TargetFramePriv2_OnChildFrameDeactivate(ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1566
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind)
Definition: navigate.c:228
static IHttpNegotiate2 http_negotiate
Definition: protocol.c:395
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface)
Definition: navigate.c:206
#define V_VARIANTREF(A)
Definition: oleauto.h:283
static ULONG WINAPI TargetFrame_AddRef(ITargetFrame *iface)
Definition: navigate.c:1263
#define URL_APPLY_GUESSFILE
Definition: shlwapi.h:1202
static HlinkFrame * impl_from_ITargetFrame2(ITargetFrame2 *iface)
Definition: navigate.c:1395
HRESULT go_home(DocHost *This)
Definition: navigate.c:1065
WCHAR * LPWSTR
Definition: xmlstorage.h:184
WINE_DEFAULT_DEBUG_CHANNEL(ieframe)
static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate *iface, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders)
Definition: navigate.c:481
static HRESULT navigate_history(DocHost *This, unsigned travellog_pos)
Definition: navigate.c:1090
#define memset(x, y, z)
Definition: compat.h:39
static HRESULT WINAPI TargetFrame2_GetFrameSrc(ITargetFrame2 *iface, LPWSTR *ppszFrameSrc)
Definition: navigate.c:1446
static const ITargetFrameVtbl TargetFrameVtbl
Definition: navigate.c:1375
static SERVICE_STATUS status
Definition: service.c:31
BYTE * PBYTE
Definition: pedump.c:66
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:404
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv)
Definition: navigate.c:166
static HRESULT WINAPI TargetFrame_OnChildFrameDeactivate(ITargetFrame *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1368
Definition: dsound.c:943
static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl
Definition: navigate.c:1614
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54
static const WCHAR dwWidth[]
Definition: provider.c:62
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
Definition: safearray.c:1168
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved)
Definition: navigate.c:249
#define SUCCEEDED(hr)
Definition: intsafe.h:57
LONGLONG QuadPart
Definition: typedefs.h:112
static const IHlinkFrameVtbl HlinkFrameVtbl
Definition: navigate.c:1241
static ULONG WINAPI TargetFramePriv2_AddRef(ITargetFramePriv2 *iface)
Definition: navigate.c:1531
static BOOL heap_free(void *mem)
Definition: appwiz.h:75
TCHAR file_path[MAX_PATH]
Definition: sndrec32.cpp:57
static DWORD bindf
Definition: protocol.c:70
#define REG_SZ
Definition: layer.c:22
static ULONG WINAPI WebBrowserPriv2IE9_AddRef(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1638
Definition: ps.c:97
static const IHttpNegotiateVtbl HttpNegotiateVtbl
Definition: navigate.c:491
static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl
Definition: navigate.c:1659