ReactOS 0.4.17-dev-1190-g4c812f4
navigate.c File Reference
#include "ieframe.h"
#include "exdispid.h"
#include "shellapi.h"
#include "winreg.h"
#include "shlwapi.h"
#include "wininet.h"
#include "mshtml.h"
#include "perhist.h"
#include "resource.h"
#include "wine/debug.h"
Include dependency graph for navigate.c:

Go to the source code of this file.

Classes

struct  BindStatusCallback
 
struct  task_doc_navigate_t
 
struct  task_navigate_bsc_t
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ieframe)
 
static void dump_BINDINFO (BINDINFO *bi)
 
static void set_status_text (BindStatusCallback *This, ULONG statuscode, LPCWSTR str)
 
HRESULT set_dochost_url (DocHost *This, const WCHAR *url)
 
void notify_download_state (DocHost *dochost, BOOL is_downloading)
 
static BindStatusCallback * impl_from_IBindStatusCallback (IBindStatusCallback *iface)
 
static HRESULT WINAPI BindStatusCallback_QueryInterface (IBindStatusCallback *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI BindStatusCallback_AddRef (IBindStatusCallback *iface)
 
static ULONG WINAPI BindStatusCallback_Release (IBindStatusCallback *iface)
 
static HRESULT WINAPI BindStatusCallback_OnStartBinding (IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind)
 
static HRESULT WINAPI BindStatusCallback_GetPriority (IBindStatusCallback *iface, LONG *pnPriority)
 
static HRESULT WINAPI BindStatusCallback_OnLowResource (IBindStatusCallback *iface, DWORD reserved)
 
static DWORD get_http_status_code (IBinding *binding)
 
static HRESULT WINAPI BindStatusCallback_OnProgress (IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
 
void handle_navigation_error (DocHost *doc_host, HRESULT status_code, BSTR url, IHTMLWindow2 *win2)
 
static HRESULT WINAPI BindStatusCallback_OnStopBinding (IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError)
 
static HRESULT WINAPI BindStatusCallback_GetBindInfo (IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
 
static HRESULT WINAPI BindStatusCallback_OnDataAvailable (IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
 
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable (IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
 
static BindStatusCallback * impl_from_IHttpNegotiate (IHttpNegotiate *iface)
 
static HRESULT WINAPI HttpNegotiate_QueryInterface (IHttpNegotiate *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI HttpNegotiate_AddRef (IHttpNegotiate *iface)
 
static ULONG WINAPI HttpNegotiate_Release (IHttpNegotiate *iface)
 
static HRESULT WINAPI HttpNegotiate_BeginningTransaction (IHttpNegotiate *iface, LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
 
static HRESULT WINAPI HttpNegotiate_OnResponse (IHttpNegotiate *iface, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders)
 
static BindStatusCallback * impl_from_IHttpSecurity (IHttpSecurity *iface)
 
static HRESULT WINAPI HttpSecurity_QueryInterface (IHttpSecurity *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI HttpSecurity_AddRef (IHttpSecurity *iface)
 
static ULONG WINAPI HttpSecurity_Release (IHttpSecurity *iface)
 
static HRESULT WINAPI HttpSecurity_GetWindow (IHttpSecurity *iface, REFGUID rguidReason, HWND *phwnd)
 
static HRESULT WINAPI HttpSecurity_OnSecurityProblem (IHttpSecurity *iface, DWORD dwProblem)
 
static BindStatusCallback * create_callback (DocHost *doc_host, LPCWSTR url, PBYTE post_data, ULONG post_data_len, LPCWSTR headers)
 
static void on_before_navigate2 (DocHost *This, LPCWSTR url, SAFEARRAY *post_data, LPWSTR headers, VARIANT_BOOL *cancel)
 
static BOOL try_application_url (LPCWSTR url)
 
static HRESULT create_moniker (LPCWSTR url, IMoniker **mon)
 
static HRESULT bind_to_object (DocHost *This, IMoniker *mon, LPCWSTR url, IBindCtx *bindctx, IBindStatusCallback *callback)
 
static void html_window_navigate (DocHost *This, IHTMLPrivateWindow *window, BSTR url, BSTR headers, SAFEARRAY *post_data)
 
static void doc_navigate_task_destr (task_header_t *t)
 
static void doc_navigate_proc (DocHost *This, task_header_t *t)
 
static HRESULT async_doc_navigate (DocHost *This, LPCWSTR url, LPCWSTR headers, PBYTE post_data, ULONG post_data_size, BOOL async_notif)
 
static HRESULT navigate_bsc (DocHost *This, BindStatusCallback *bsc, IMoniker *mon)
 
static void navigate_bsc_task_destr (task_header_t *t)
 
static void navigate_bsc_proc (DocHost *This, task_header_t *t)
 
HRESULT navigate_url (DocHost *This, LPCWSTR url, const VARIANT *Flags, const VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
 
static HRESULT navigate_hlink (DocHost *This, IMoniker *mon, IBindCtx *bindctx, IBindStatusCallback *callback)
 
HRESULT go_home (DocHost *This)
 
static HRESULT navigate_history (DocHost *This, unsigned travellog_pos)
 
HRESULT go_back (DocHost *This)
 
HRESULT go_forward (DocHost *This)
 
HRESULT get_location_url (DocHost *This, BSTR *ret)
 
static HlinkFrame * impl_from_IHlinkFrame (IHlinkFrame *iface)
 
static HRESULT WINAPI HlinkFrame_QueryInterface (IHlinkFrame *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI HlinkFrame_AddRef (IHlinkFrame *iface)
 
static ULONG WINAPI HlinkFrame_Release (IHlinkFrame *iface)
 
static HRESULT WINAPI HlinkFrame_SetBrowseContext (IHlinkFrame *iface, IHlinkBrowseContext *pihlbc)
 
static HRESULT WINAPI HlinkFrame_GetBrowseContext (IHlinkFrame *iface, IHlinkBrowseContext **ppihlbc)
 
static HRESULT WINAPI HlinkFrame_Navigate (IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, IHlink *pihlNavigate)
 
static HRESULT WINAPI HlinkFrame_OnNavigate (IHlinkFrame *iface, DWORD grfHLNF, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
 
static HRESULT WINAPI HlinkFrame_UpdateHlink (IHlinkFrame *iface, ULONG uHLID, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
 
static HlinkFrame * impl_from_ITargetFrame (ITargetFrame *iface)
 
static HRESULT WINAPI TargetFrame_QueryInterface (ITargetFrame *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI TargetFrame_AddRef (ITargetFrame *iface)
 
static ULONG WINAPI TargetFrame_Release (ITargetFrame *iface)
 
static HRESULT WINAPI TargetFrame_SetFrameName (ITargetFrame *iface, LPCWSTR pszFrameName)
 
static HRESULT WINAPI TargetFrame_GetFrameName (ITargetFrame *iface, LPWSTR *ppszFrameName)
 
static HRESULT WINAPI TargetFrame_GetParentFrame (ITargetFrame *iface, IUnknown **ppunkParent)
 
static HRESULT WINAPI TargetFrame_FindFrame (ITargetFrame *iface, LPCWSTR pszTargetName, IUnknown *ppunkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
 
static HRESULT WINAPI TargetFrame_SetFrameSrc (ITargetFrame *iface, LPCWSTR pszFrameSrc)
 
static HRESULT WINAPI TargetFrame_GetFrameSrc (ITargetFrame *iface, LPWSTR *ppszFrameSrc)
 
static HRESULT WINAPI TargetFrame_GetFramesContainer (ITargetFrame *iface, IOleContainer **ppContainer)
 
static HRESULT WINAPI TargetFrame_SetFrameOptions (ITargetFrame *iface, DWORD dwFlags)
 
static HRESULT WINAPI TargetFrame_GetFrameOptions (ITargetFrame *iface, DWORD *pdwFlags)
 
static HRESULT WINAPI TargetFrame_SetFrameMargins (ITargetFrame *iface, DWORD dwWidth, DWORD dwHeight)
 
static HRESULT WINAPI TargetFrame_GetFrameMargins (ITargetFrame *iface, DWORD *pdwWidth, DWORD *pdwHeight)
 
static HRESULT WINAPI TargetFrame_RemoteNavigate (ITargetFrame *iface, ULONG cLength, ULONG *pulData)
 
static HRESULT WINAPI TargetFrame_OnChildFrameActivate (ITargetFrame *iface, IUnknown *pUnkChildFrame)
 
static HRESULT WINAPI TargetFrame_OnChildFrameDeactivate (ITargetFrame *iface, IUnknown *pUnkChildFrame)
 
static HlinkFrame * impl_from_ITargetFrame2 (ITargetFrame2 *iface)
 
static HRESULT WINAPI TargetFrame2_QueryInterface (ITargetFrame2 *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI TargetFrame2_AddRef (ITargetFrame2 *iface)
 
static ULONG WINAPI TargetFrame2_Release (ITargetFrame2 *iface)
 
static HRESULT WINAPI TargetFrame2_SetFrameName (ITargetFrame2 *iface, LPCWSTR pszFrameName)
 
static HRESULT WINAPI TargetFrame2_GetFrameName (ITargetFrame2 *iface, LPWSTR *ppszFrameName)
 
static HRESULT WINAPI TargetFrame2_GetParentFrame (ITargetFrame2 *iface, IUnknown **ppunkParent)
 
static HRESULT WINAPI TargetFrame2_SetFrameSrc (ITargetFrame2 *iface, LPCWSTR pszFrameSrc)
 
static HRESULT WINAPI TargetFrame2_GetFrameSrc (ITargetFrame2 *iface, LPWSTR *ppszFrameSrc)
 
static HRESULT WINAPI TargetFrame2_GetFramesContainer (ITargetFrame2 *iface, IOleContainer **ppContainer)
 
static HRESULT WINAPI TargetFrame2_SetFrameOptions (ITargetFrame2 *iface, DWORD dwFlags)
 
static HRESULT WINAPI TargetFrame2_GetFrameOptions (ITargetFrame2 *iface, DWORD *pdwFlags)
 
static HRESULT WINAPI TargetFrame2_SetFrameMargins (ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight)
 
static HRESULT WINAPI TargetFrame2_GetFrameMargins (ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight)
 
static HRESULT WINAPI TargetFrame2_FindFrame (ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
 
static HRESULT WINAPI TargetFrame2_GetTargetAlias (ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
 
static HlinkFrame * impl_from_ITargetFramePriv2 (ITargetFramePriv2 *iface)
 
static HRESULT WINAPI TargetFramePriv2_QueryInterface (ITargetFramePriv2 *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI TargetFramePriv2_AddRef (ITargetFramePriv2 *iface)
 
static ULONG WINAPI TargetFramePriv2_Release (ITargetFramePriv2 *iface)
 
static HRESULT WINAPI TargetFramePriv2_FindFrameDownwards (ITargetFramePriv2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
 
static HRESULT WINAPI TargetFramePriv2_FindFrameInContext (ITargetFramePriv2 *iface, LPCWSTR pszTargetName, IUnknown *punkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
 
static HRESULT WINAPI TargetFramePriv2_OnChildFrameActivate (ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
 
static HRESULT WINAPI TargetFramePriv2_OnChildFrameDeactivate (ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
 
static HRESULT WINAPI TargetFramePriv2_NavigateHack (ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, LPCWSTR pszUrl, LPCWSTR pszLocation)
 
static HRESULT WINAPI TargetFramePriv2_FindBrowserByIndex (ITargetFramePriv2 *iface, DWORD dwID, IUnknown **ppunkBrowser)
 
static HRESULT WINAPI TargetFramePriv2_AggregatedNavigation2 (ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, IUri *pUri, LPCWSTR pszLocation)
 
static HlinkFrame * impl_from_IWebBrowserPriv2IE9 (IWebBrowserPriv2IE9 *iface)
 
static HRESULT WINAPI WebBrowserPriv2IE9_QueryInterface (IWebBrowserPriv2IE9 *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI WebBrowserPriv2IE9_AddRef (IWebBrowserPriv2IE9 *iface)
 
static ULONG WINAPI WebBrowserPriv2IE9_Release (IWebBrowserPriv2IE9 *iface)
 
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)
 
BOOL HlinkFrame_QI (HlinkFrame *This, REFIID riid, void **ppv)
 
void HlinkFrame_Init (HlinkFrame *This, IUnknown *outer, DocHost *doc_host)
 

Variables

static const WCHAR emptyW [] = {0}
 
static const IBindStatusCallbackVtbl BindStatusCallbackVtbl
 
static const IHttpNegotiateVtbl HttpNegotiateVtbl
 
static const IHttpSecurityVtbl HttpSecurityVtbl
 
static const IHlinkFrameVtbl HlinkFrameVtbl
 
static const ITargetFrameVtbl TargetFrameVtbl
 
static const ITargetFrame2Vtbl TargetFrame2Vtbl
 
static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl
 
static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl
 

Function Documentation

◆ async_doc_navigate()

static HRESULT async_doc_navigate ( DocHost *  This,
LPCWSTR  url,
LPCWSTR  headers,
PBYTE  post_data,
ULONG  post_data_size,
BOOL  async_notif 
)
static

Definition at line 858 of file navigate.c.

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}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
DWORD task
Definition: delayimp.cpp:484
#define FALSE
Definition: types.h:117
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_UI1
Definition: compat.h:2311
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
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 abort_dochost_tasks(DocHost *This, task_proc_t proc)
Definition: dochost.c:70
static void doc_navigate_task_destr(task_header_t *t)
Definition: navigate.c:818
static void on_before_navigate2(DocHost *This, LPCWSTR url, SAFEARRAY *post_data, LPWSTR headers, VARIANT_BOOL *cancel)
Definition: navigate.c:617
static void doc_navigate_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:829
#define S_OK
Definition: intsafe.h:52
#define debugstr_w
Definition: kernel32.h:32
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static const WCHAR url[]
Definition: encode.c:1384
static const CHAR post_data[]
Definition: protocol.c:222
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
#define calloc
Definition: rosglue.h:14
vector< Header * > headers
Definition: sdkparse.cpp:39
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by navigate_history(), navigate_hlink(), and navigate_url().

◆ bind_to_object()

static HRESULT bind_to_object ( DocHost *  This,
IMoniker *  mon,
LPCWSTR  url,
IBindCtx *  bindctx,
IBindStatusCallback *  callback 
)
static

Definition at line 730 of file navigate.c.

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}
#define FIXME(fmt,...)
Definition: precomp.h:53
const GUID IID_IUnknown
#define NULL
Definition: types.h:112
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
static BOOL try_application_url(LPCWSTR url)
Definition: navigate.c:677
static HRESULT create_moniker(LPCWSTR url, IMoniker **mon)
Definition: navigate.c:710
HRESULT set_dochost_url(DocHost *This, const WCHAR *url)
Definition: navigate.c:132
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hres
Definition: protocol.c:432
static const WCHAR SZ_HTML_CLIENTSITE_OBJECTPARAM[]
Definition: mshtmhst.idl:59
short WCHAR
Definition: pedump.c:58

◆ BindStatusCallback_AddRef()

static ULONG WINAPI BindStatusCallback_AddRef ( IBindStatusCallback *  iface)
static

Definition at line 194 of file navigate.c.

195{
198
199 TRACE("(%p) ref=%ld\n", This, ref);
200
201 return ref;
202}
#define InterlockedIncrement
Definition: armddk.h:53
static BindStatusCallback * impl_from_IBindStatusCallback(IBindStatusCallback *iface)
Definition: navigate.c:159
long LONG
Definition: pedump.c:60
Definition: send.c:48

◆ BindStatusCallback_GetBindInfo()

static HRESULT WINAPI BindStatusCallback_GetBindInfo ( IBindStatusCallback *  iface,
DWORD *  grfBINDF,
BINDINFO *  pbindinfo 
)
static

Definition at line 425 of file navigate.c.

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}

◆ BindStatusCallback_GetPriority()

static HRESULT WINAPI BindStatusCallback_GetPriority ( IBindStatusCallback *  iface,
LONG *  pnPriority 
)
static

Definition at line 239 of file navigate.c.

241{
243 FIXME("(%p)->(%p)\n", This, pnPriority);
244 return E_NOTIMPL;
245}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ BindStatusCallback_OnDataAvailable()

static HRESULT WINAPI BindStatusCallback_OnDataAvailable ( IBindStatusCallback *  iface,
DWORD  grfBSCF,
DWORD  dwSize,
FORMATETC *  pformatetc,
STGMEDIUM *  pstgmed 
)
static

Definition at line 447 of file navigate.c.

449{
451 FIXME("(%p)->(%08lx %ld %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed);
452 return E_NOTIMPL;
453}
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56

◆ BindStatusCallback_OnLowResource()

static HRESULT WINAPI BindStatusCallback_OnLowResource ( IBindStatusCallback *  iface,
DWORD  reserved 
)
static

Definition at line 247 of file navigate.c.

249{
251 FIXME("(%p)->(%ld)\n", This, reserved);
252 return E_NOTIMPL;
253}
r reserved
Definition: btrfs.c:3006

◆ BindStatusCallback_OnObjectAvailable()

static HRESULT WINAPI BindStatusCallback_OnObjectAvailable ( IBindStatusCallback *  iface,
REFIID  riid,
IUnknown *  punk 
)
static

Definition at line 455 of file navigate.c.

457{
459
460 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk);
461
462 return dochost_object_available(This->doc_host, punk);
463}
HRESULT dochost_object_available(DocHost *This, IUnknown *doc)
Definition: dochost.c:304
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
_In_opt_ IUnknown * punk
Definition: shlwapi.h:158

◆ BindStatusCallback_OnProgress()

static HRESULT WINAPI BindStatusCallback_OnProgress ( IBindStatusCallback *  iface,
ULONG  ulProgress,
ULONG  ulProgressMax,
ULONG  ulStatusCode,
LPCWSTR  szStatusText 
)
static

Definition at line 274 of file navigate.c.

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}
unsigned long DWORD
Definition: ntddk_ex.h:95
static void set_status_text(BindStatusCallback *This, ULONG statuscode, LPCWSTR str)
Definition: navigate.c:100
static DWORD get_http_status_code(IBinding *binding)
Definition: navigate.c:255
void handle_navigation_error(DocHost *doc_host, HRESULT status_code, BSTR url, IHTMLWindow2 *win2)
Definition: navigate.c:313
#define HTTP_STATUS_OK
Definition: winhttp.h:301

◆ BindStatusCallback_OnStartBinding()

static HRESULT WINAPI BindStatusCallback_OnStartBinding ( IBindStatusCallback *  iface,
DWORD  dwReserved,
IBinding *  pbind 
)
static

Definition at line 226 of file navigate.c.

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}
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95

◆ BindStatusCallback_OnStopBinding()

static HRESULT WINAPI BindStatusCallback_OnStopBinding ( IBindStatusCallback *  iface,
HRESULT  hresult,
LPCWSTR  szError 
)
static

Definition at line 399 of file navigate.c.

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}
static const WCHAR emptyW[]
Definition: navigate.c:38
void notify_download_state(DocHost *dochost, BOOL is_downloading)
Definition: navigate.c:151

◆ BindStatusCallback_QueryInterface()

static HRESULT WINAPI BindStatusCallback_QueryInterface ( IBindStatusCallback *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 164 of file navigate.c.

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}
#define WARN(fmt,...)
Definition: precomp.h:61
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ BindStatusCallback_Release()

static ULONG WINAPI BindStatusCallback_Release ( IBindStatusCallback *  iface)
static

Definition at line 204 of file navigate.c.

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}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
Definition: heapmem.c:611
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:273

◆ create_callback()

static BindStatusCallback * create_callback ( DocHost *  doc_host,
LPCWSTR  url,
PBYTE  post_data,
ULONG  post_data_len,
LPCWSTR  headers 
)
static

Definition at line 589 of file navigate.c.

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}
#define malloc
Definition: debug_ros.c:4
return ret
Definition: mutex.c:147
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
static const IBindStatusCallbackVtbl BindStatusCallbackVtbl
Definition: navigate.c:465
static const IHttpSecurityVtbl HttpSecurityVtbl
Definition: navigate.c:581
static const IHttpNegotiateVtbl HttpNegotiateVtbl
Definition: navigate.c:530
IOleClientSite IOleClientSite_iface
Definition: ieframe.h:119

Referenced by navigate_hlink(), and navigate_url().

◆ create_moniker()

static HRESULT create_moniker ( LPCWSTR  url,
IMoniker **  mon 
)
static

Definition at line 710 of file navigate.c.

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}
#define ARRAY_SIZE(A)
Definition: main.h:20
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
GLsizeiptr size
Definition: glext.h:5919
#define URL_APPLY_GUESSSCHEME
Definition: shlwapi.h:518
#define URL_APPLY_DEFAULT
Definition: shlwapi.h:517
#define URL_APPLY_GUESSFILE
Definition: shlwapi.h:519
HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk)
Definition: umon.c:747
#define INTERNET_MAX_URL_LENGTH
Definition: wininet.h:51

Referenced by bind_to_object().

◆ doc_navigate_proc()

static void doc_navigate_proc ( DocHost *  This,
task_header_t *  t 
)
static

Definition at line 829 of file navigate.c.

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}
#define ERR(fmt,...)
Definition: precomp.h:57
GLdouble GLdouble t
Definition: gl.h:2047
static void html_window_navigate(DocHost *This, IHTMLPrivateWindow *window, BSTR url, BSTR headers, SAFEARRAY *post_data)
Definition: navigate.c:777

Referenced by async_doc_navigate().

◆ doc_navigate_task_destr()

static void doc_navigate_task_destr ( task_header_t *  t)
static

Definition at line 818 of file navigate.c.

819{
821
822 SysFreeString(task->url);
823 SysFreeString(task->headers);
824 if(task->post_data)
825 SafeArrayDestroy(task->post_data);
826 free(task);
827}
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347

Referenced by async_doc_navigate().

◆ dump_BINDINFO()

static void dump_BINDINFO ( BINDINFO *  bi)
static

Definition at line 56 of file navigate.c.

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}

Referenced by navigate_hlink().

◆ get_http_status_code()

static DWORD get_http_status_code ( IBinding *  binding)
static

Definition at line 255 of file navigate.c.

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}
static RPC_BINDING_HANDLE binding
Definition: server.c:166
#define DWORD
Definition: nt_native.h:44
Definition: ps.c:97
#define HTTP_QUERY_FLAG_NUMBER
Definition: wininet.h:1606
#define HTTP_QUERY_STATUS_CODE
Definition: wininet.h:1542

Referenced by BindStatusCallback_OnProgress().

◆ get_location_url()

HRESULT get_location_url ( DocHost *  This,
BSTR *  ret 
)

Definition at line 1181 of file navigate.c.

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}
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:341
#define S_FALSE
Definition: winerror.h:3451

Referenced by InternetExplorer_get_LocationURL(), WebBrowser_get_LocationName(), and WebBrowser_get_LocationURL().

◆ go_back()

HRESULT go_back ( DocHost *  This)

Definition at line 1161 of file navigate.c.

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}
#define E_FAIL
Definition: ddrawi.h:102
static HRESULT navigate_history(DocHost *This, unsigned travellog_pos)
Definition: navigate.c:1129

Referenced by InternetExplorer_GoBack(), and WebBrowser_GoBack().

◆ go_forward()

HRESULT go_forward ( DocHost *  This)

Definition at line 1171 of file navigate.c.

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}

Referenced by InternetExplorer_GoForward(), and WebBrowser_GoForward().

◆ go_home()

HRESULT go_home ( DocHost *  This)

Definition at line 1104 of file navigate.c.

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}
#define REG_SZ
Definition: layer.c:22
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
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
#define MAX_PATH
Definition: compat.h:34
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint res
Definition: glext.h:9613
static const WCHAR * navigate_url
Definition: ie.c:64
unsigned char * LPBYTE
Definition: typedefs.h:53
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by InternetExplorer_GoHome(), and WebBrowser_GoHome().

◆ handle_navigation_error()

void handle_navigation_error ( DocHost *  doc_host,
HRESULT  status_code,
BSTR  url,
IHTMLWindow2 *  win2 
)

Definition at line 313 of file navigate.c.

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}
OLECHAR * BSTR
Definition: compat.h:2293
@ VT_BSTR
Definition: compat.h:2303
@ VT_BYREF
Definition: compat.h:2342
@ VT_VARIANT
Definition: compat.h:2307
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_DISPATCH
Definition: compat.h:2304
void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams)
Definition: events.c:390
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2331
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
#define L(x)
Definition: resources.c:13
#define DISPID_NAVIGATEERROR
Definition: exdispid.h:64
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722
GLenum const GLfloat * params
Definition: glext.h:5645
unsigned int UINT
Definition: sysinfo.c:13
HRESULT get_window(DocHost *, IHTMLWindow2 **)
Definition: iehtmlwnd.c:25
static const char * nav_url
Definition: htmldoc.c:217
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
struct stdole::DISPPARAMS DISPPARAMS
#define V_BOOLREF(A)
Definition: oleauto.h:225
#define V_VARIANTREF(A)
Definition: oleauto.h:283
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_I4(A)
Definition: oleauto.h:247
#define V_DISPATCH(A)
Definition: oleauto.h:239
ConnectionPoint * wbe2
Definition: ieframe.h:54
ConnectionPointContainer cps
Definition: ieframe.h:172
IWebBrowser2 * wb
Definition: ieframe.h:132
#define swprintf
Definition: winemm.h:209
#define E_UNEXPECTED
Definition: winerror.h:3528

Referenced by BindStatusCallback_OnProgress(), BindStatusCallback_OnStopBinding(), ClOleCommandTarget_Exec(), nsChannelBSC_on_progress(), and nsChannelBSC_stop_binding().

◆ HlinkFrame_AddRef()

static ULONG WINAPI HlinkFrame_AddRef ( IHlinkFrame *  iface)
static

Definition at line 1203 of file navigate.c.

1204{
1206 return IUnknown_AddRef(This->outer);
1207}
static HlinkFrame * impl_from_IHlinkFrame(IHlinkFrame *iface)
Definition: navigate.c:1192

◆ HlinkFrame_GetBrowseContext()

static HRESULT WINAPI HlinkFrame_GetBrowseContext ( IHlinkFrame *  iface,
IHlinkBrowseContext **  ppihlbc 
)
static

Definition at line 1223 of file navigate.c.

1225{
1227 FIXME("(%p)->(%p)\n", This, ppihlbc);
1228 return E_NOTIMPL;
1229}

◆ HlinkFrame_Init()

void HlinkFrame_Init ( HlinkFrame *  This,
IUnknown *  outer,
DocHost *  doc_host 
)

Definition at line 1733 of file navigate.c.

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}
static const ITargetFrame2Vtbl TargetFrame2Vtbl
Definition: navigate.c:1541
static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl
Definition: navigate.c:1698
static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl
Definition: navigate.c:1653
static const IHlinkFrameVtbl HlinkFrameVtbl
Definition: navigate.c:1280
static const ITargetFrameVtbl TargetFrameVtbl
Definition: navigate.c:1414
static IUnknown * outer
Definition: compobj.c:82

Referenced by create_ie(), and create_webbrowser().

◆ HlinkFrame_Navigate()

static HRESULT WINAPI HlinkFrame_Navigate ( IHlinkFrame *  iface,
DWORD  grfHLNF,
LPBC  pbc,
IBindStatusCallback *  pibsc,
IHlink *  pihlNavigate 
)
static

Definition at line 1231 of file navigate.c.

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}
static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, IBindStatusCallback *callback)
Definition: navigate.c:1050
uint16_t * LPWSTR
Definition: typedefs.h:56

◆ HlinkFrame_OnNavigate()

static HRESULT WINAPI HlinkFrame_OnNavigate ( IHlinkFrame *  iface,
DWORD  grfHLNF,
IMoniker *  pimkTarget,
LPCWSTR  pwzLocation,
LPCWSTR  pwzFriendlyName,
DWORD  dwreserved 
)
static

Definition at line 1262 of file navigate.c.

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}

◆ HlinkFrame_QI()

BOOL HlinkFrame_QI ( HlinkFrame *  This,
REFIID  riid,
void **  ppv 
)

Definition at line 1705 of file navigate.c.

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}
#define TRUE
Definition: types.h:120

Referenced by InternetExplorer_QueryInterface(), and WebBrowser_QueryInterface().

◆ HlinkFrame_QueryInterface()

static HRESULT WINAPI HlinkFrame_QueryInterface ( IHlinkFrame *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1197 of file navigate.c.

1198{
1200 return IUnknown_QueryInterface(This->outer, riid, ppv);
1201}

◆ HlinkFrame_Release()

static ULONG WINAPI HlinkFrame_Release ( IHlinkFrame *  iface)
static

Definition at line 1209 of file navigate.c.

1210{
1212 return IUnknown_Release(This->outer);
1213}

◆ HlinkFrame_SetBrowseContext()

static HRESULT WINAPI HlinkFrame_SetBrowseContext ( IHlinkFrame *  iface,
IHlinkBrowseContext *  pihlbc 
)
static

Definition at line 1215 of file navigate.c.

1217{
1219 FIXME("(%p)->(%p)\n", This, pihlbc);
1220 return E_NOTIMPL;
1221}

◆ HlinkFrame_UpdateHlink()

static HRESULT WINAPI HlinkFrame_UpdateHlink ( IHlinkFrame *  iface,
ULONG  uHLID,
IMoniker *  pimkTarget,
LPCWSTR  pwzLocation,
LPCWSTR  pwzFriendlyName 
)
static

Definition at line 1271 of file navigate.c.

1273{
1275 FIXME("(%p)->(%lu %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation),
1276 debugstr_w(pwzFriendlyName));
1277 return E_NOTIMPL;
1278}

◆ html_window_navigate()

static void html_window_navigate ( DocHost *  This,
IHTMLPrivateWindow *  window,
BSTR  url,
BSTR  headers,
SAFEARRAY *  post_data 
)
static

Definition at line 777 of file navigate.c.

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}
static const TCHAR empty_str[]
Definition: dialog.c:20
@ VT_ARRAY
Definition: compat.h:2341
@ VT_EMPTY
Definition: compat.h:2295
void set_doc_state(DocHost *This, READYSTATE doc_state)
Definition: dochost.c:234
static IHTMLWindow2 * window
Definition: events.c:77
#define V_ARRAY(A)
Definition: oleauto.h:222

Referenced by doc_navigate_proc().

◆ HttpNegotiate_AddRef()

static ULONG WINAPI HttpNegotiate_AddRef ( IHttpNegotiate *  iface)
static

Definition at line 491 of file navigate.c.

492{
494 return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
495}
static BindStatusCallback * impl_from_IHttpNegotiate(IHttpNegotiate *iface)
Definition: navigate.c:479

◆ HttpNegotiate_BeginningTransaction()

static HRESULT WINAPI HttpNegotiate_BeginningTransaction ( IHttpNegotiate *  iface,
LPCWSTR  szURL,
LPCWSTR  szHeaders,
DWORD  dwReserved,
LPWSTR *  pszAdditionalHeaders 
)
static

Definition at line 503 of file navigate.c.

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}
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
#define lstrlenW
Definition: compat.h:750

◆ HttpNegotiate_OnResponse()

static HRESULT WINAPI HttpNegotiate_OnResponse ( IHttpNegotiate *  iface,
DWORD  dwResponseCode,
LPCWSTR  szResponseHeaders,
LPCWSTR  szRequestHeaders,
LPWSTR *  pszAdditionalRequestHeaders 
)
static

Definition at line 520 of file navigate.c.

523{
525 TRACE("(%p)->(%ld %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders),
526 debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders);
527 return S_OK;
528}

◆ HttpNegotiate_QueryInterface()

static HRESULT WINAPI HttpNegotiate_QueryInterface ( IHttpNegotiate *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 484 of file navigate.c.

486{
488 return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
489}

◆ HttpNegotiate_Release()

static ULONG WINAPI HttpNegotiate_Release ( IHttpNegotiate *  iface)
static

Definition at line 497 of file navigate.c.

498{
500 return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
501}

◆ HttpSecurity_AddRef()

static ULONG WINAPI HttpSecurity_AddRef ( IHttpSecurity *  iface)
static

Definition at line 549 of file navigate.c.

550{
552 return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
553}
static BindStatusCallback * impl_from_IHttpSecurity(IHttpSecurity *iface)
Definition: navigate.c:538

◆ HttpSecurity_GetWindow()

static HRESULT WINAPI HttpSecurity_GetWindow ( IHttpSecurity *  iface,
REFGUID  rguidReason,
HWND *  phwnd 
)
static

Definition at line 561 of file navigate.c.

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}

◆ HttpSecurity_OnSecurityProblem()

static HRESULT WINAPI HttpSecurity_OnSecurityProblem ( IHttpSecurity *  iface,
DWORD  dwProblem 
)
static

Definition at line 574 of file navigate.c.

575{
577 FIXME("(%p)->(%lu)\n", This, dwProblem);
578 return S_FALSE;
579}

◆ HttpSecurity_QueryInterface()

static HRESULT WINAPI HttpSecurity_QueryInterface ( IHttpSecurity *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 543 of file navigate.c.

544{
546 return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
547}

◆ HttpSecurity_Release()

static ULONG WINAPI HttpSecurity_Release ( IHttpSecurity *  iface)
static

Definition at line 555 of file navigate.c.

556{
558 return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
559}

◆ impl_from_IBindStatusCallback()

◆ impl_from_IHlinkFrame()

static HlinkFrame * impl_from_IHlinkFrame ( IHlinkFrame *  iface)
inlinestatic

◆ impl_from_IHttpNegotiate()

static BindStatusCallback * impl_from_IHttpNegotiate ( IHttpNegotiate *  iface)
inlinestatic

◆ impl_from_IHttpSecurity()

static BindStatusCallback * impl_from_IHttpSecurity ( IHttpSecurity *  iface)
inlinestatic

◆ impl_from_ITargetFrame()

◆ impl_from_ITargetFrame2()

◆ impl_from_ITargetFramePriv2()

◆ impl_from_IWebBrowserPriv2IE9()

static HlinkFrame * impl_from_IWebBrowserPriv2IE9 ( IWebBrowserPriv2IE9 *  iface)
inlinestatic

Definition at line 1666 of file navigate.c.

1667{
1668 return CONTAINING_RECORD(iface, HlinkFrame, IWebBrowserPriv2IE9_iface);
1669}

Referenced by WebBrowserPriv2IE9_AddRef(), WebBrowserPriv2IE9_NavigateWithBindCtx2(), WebBrowserPriv2IE9_QueryInterface(), and WebBrowserPriv2IE9_Release().

◆ navigate_bsc()

static HRESULT navigate_bsc ( DocHost *  This,
BindStatusCallback *  bsc,
IMoniker *  mon 
)
static

Definition at line 910 of file navigate.c.

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}
void on_commandstate_change(DocHost *doc_host, LONG command, BOOL enable)
Definition: dochost.c:83
void deactivate_document(DocHost *This)
Definition: dochost.c:515
static BOOL bind_to_object
Definition: url.c:171
Definition: xmldoc.c:231
IBindStatusCallback IBindStatusCallback_iface
Definition: xmldoc.c:232
HRESULT WINAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *callback, IEnumFORMATETC *format, IBindCtx **pbind)
Definition: bindctx.c:899

Referenced by navigate_bsc_proc(), and navigate_hlink().

◆ navigate_bsc_proc()

static void navigate_bsc_proc ( DocHost *  This,
task_header_t *  t 
)
static

Definition at line 969 of file navigate.c.

970{
972
973 if(!This->hwnd)
975
976 navigate_bsc(This, task->bsc, NULL);
977}
void create_doc_view_hwnd(DocHost *This)
Definition: dochost.c:484
static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mon)
Definition: navigate.c:910

Referenced by navigate_url().

◆ navigate_bsc_task_destr()

static void navigate_bsc_task_destr ( task_header_t *  t)
static

Definition at line 961 of file navigate.c.

962{
964
965 IBindStatusCallback_Release(&task->bsc->IBindStatusCallback_iface);
966 free(task);
967}

Referenced by navigate_url().

◆ navigate_history()

static HRESULT navigate_history ( DocHost *  This,
unsigned  travellog_pos 
)
static

Definition at line 1129 of file navigate.c.

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}
void update_navigation_commands(DocHost *dochost)
Definition: dochost.c:106
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235
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
uint32_t entry
Definition: isohybrid.c:63
Definition: ieframe.h:103
LONGLONG QuadPart
Definition: typedefs.h:114

Referenced by go_back(), and go_forward().

◆ navigate_hlink()

static HRESULT navigate_hlink ( DocHost *  This,
IMoniker *  mon,
IBindCtx *  bindctx,
IBindStatusCallback *  callback 
)
static

Definition at line 1050 of file navigate.c.

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}
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 IPrintDialogCallback callback
Definition: printdlg.c:325
static DWORD bindf
Definition: protocol.c:70
static IHttpNegotiate2 http_negotiate
Definition: protocol.c:393
BYTE * PBYTE
Definition: pedump.c:66
#define memset(x, y, z)
Definition: compat.h:39
uint32_t ULONG
Definition: typedefs.h:59
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
Definition: urlmon_main.c:561

Referenced by HlinkFrame_Navigate(), and TargetFramePriv2_AggregatedNavigation2().

◆ navigate_url()

HRESULT navigate_url ( DocHost *  This,
LPCWSTR  url,
const VARIANT *  Flags,
const VARIANT *  TargetFrameName,
VARIANT *  PostData,
VARIANT *  Headers 
)

Definition at line 980 of file navigate.c.

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}
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
@ VT_ERROR
Definition: compat.h:2305
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
UINT WINAPI SafeArrayGetElemsize(SAFEARRAY *psa)
Definition: safearray.c:1114
static const char * debugstr_variant(const VARIANT *var)
Definition: dom.c:505
static void navigate_bsc_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:969
static void navigate_bsc_task_destr(task_header_t *t)
Definition: navigate.c:961
#define V_ARRAYREF(A)
Definition: oleauto.h:223
#define V_ISBYREF(A)
Definition: oleauto.h:217

◆ notify_download_state()

void notify_download_state ( DocHost *  dochost,
BOOL  is_downloading 
)

Definition at line 151 of file navigate.c.

152{
153 DISPPARAMS dwl_dp = {NULL};
154 TRACE("(%x)\n", is_downloading);
155 dochost->busy = is_downloading ? VARIANT_TRUE : VARIANT_FALSE;
157}
#define DISPID_DOWNLOADCOMPLETE
Definition: exdispid.h:26
#define DISPID_DOWNLOADBEGIN
Definition: exdispid.h:28
static BOOL is_downloading
Definition: webbrowser.c:168
VARIANT_BOOL busy
Definition: ieframe.h:154

Referenced by BindStatusCallback_OnStopBinding(), ClOleCommandTarget_Exec(), and navigate_bsc().

◆ on_before_navigate2()

static void on_before_navigate2 ( DocHost *  This,
LPCWSTR  url,
SAFEARRAY *  post_data,
LPWSTR  headers,
VARIANT_BOOL *  cancel 
)
static

Definition at line 617 of file navigate.c.

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}
HRESULT WINAPI PathCreateFromUrlW(const WCHAR *url, WCHAR *path, DWORD *pcchPath, DWORD dwReserved)
Definition: path.c:3049
#define DISPID_BEFORENAVIGATE2
Definition: exdispid.h:43
TCHAR file_path[MAX_PATH]
Definition: sndrec32.cpp:57

Referenced by async_doc_navigate(), doc_navigate_proc(), and navigate_bsc().

◆ set_dochost_url()

HRESULT set_dochost_url ( DocHost *  This,
const WCHAR *  url 
)

Definition at line 132 of file navigate.c.

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}
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94

Referenced by bind_to_object(), BindStatusCallback_OnProgress(), DocObjectService_FireNavigateComplete2(), and html_window_navigate().

◆ set_status_text()

static void set_status_text ( BindStatusCallback *  This,
ULONG  statuscode,
LPCWSTR  str 
)
static

Definition at line 100 of file navigate.c.

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}
#define IDS_STATUSFMT_MAXLEN
Definition: resource.h:83
#define IDS_STATUSFMT_FIRST
Definition: resource.h:78
#define DISPID_STATUSTEXTCHANGE
Definition: exdispid.h:24
GLuint buffer
Definition: glext.h:5915
HINSTANCE ieframe_instance
Definition: ieframe_main.c:32
const WCHAR * str
#define LoadStringW
Definition: utils.h:64
Definition: dsound.c:943
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:626
void * arg
Definition: msvc.h:10

Referenced by BindStatusCallback_OnProgress(), and BindStatusCallback_OnStopBinding().

◆ TargetFrame2_AddRef()

static ULONG WINAPI TargetFrame2_AddRef ( ITargetFrame2 *  iface)
static

Definition at line 1445 of file navigate.c.

1446{
1448 return IUnknown_AddRef(This->outer);
1449}
static HlinkFrame * impl_from_ITargetFrame2(ITargetFrame2 *iface)
Definition: navigate.c:1434

◆ TargetFrame2_FindFrame()

static HRESULT WINAPI TargetFrame2_FindFrame ( ITargetFrame2 *  iface,
LPCWSTR  pszTargetName,
DWORD  dwFlags,
IUnknown **  ppunkTargetFrame 
)
static

Definition at line 1527 of file navigate.c.

1528{
1530 FIXME("(%p)->(%s %lx %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
1531 return E_NOTIMPL;
1532}
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ TargetFrame2_GetFrameMargins()

static HRESULT WINAPI TargetFrame2_GetFrameMargins ( ITargetFrame2 *  iface,
DWORD *  pdwWidth,
DWORD *  pdwHeight 
)
static

Definition at line 1520 of file navigate.c.

1521{
1523 FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
1524 return E_NOTIMPL;
1525}

◆ TargetFrame2_GetFrameName()

static HRESULT WINAPI TargetFrame2_GetFrameName ( ITargetFrame2 *  iface,
LPWSTR *  ppszFrameName 
)
static

Definition at line 1464 of file navigate.c.

1465{
1467 FIXME("(%p)->(%p)\n", This, ppszFrameName);
1468 return E_NOTIMPL;
1469}

◆ TargetFrame2_GetFrameOptions()

static HRESULT WINAPI TargetFrame2_GetFrameOptions ( ITargetFrame2 *  iface,
DWORD *  pdwFlags 
)
static

Definition at line 1506 of file navigate.c.

1507{
1509 FIXME("(%p)->(%p)\n", This, pdwFlags);
1510 return E_NOTIMPL;
1511}

◆ TargetFrame2_GetFramesContainer()

static HRESULT WINAPI TargetFrame2_GetFramesContainer ( ITargetFrame2 *  iface,
IOleContainer **  ppContainer 
)
static

Definition at line 1492 of file navigate.c.

1493{
1495 FIXME("(%p)->(%p)\n", This, ppContainer);
1496 return E_NOTIMPL;
1497}

◆ TargetFrame2_GetFrameSrc()

static HRESULT WINAPI TargetFrame2_GetFrameSrc ( ITargetFrame2 *  iface,
LPWSTR *  ppszFrameSrc 
)
static

Definition at line 1485 of file navigate.c.

1486{
1488 FIXME("(%p)->()\n", This);
1489 return E_NOTIMPL;
1490}

◆ TargetFrame2_GetParentFrame()

static HRESULT WINAPI TargetFrame2_GetParentFrame ( ITargetFrame2 *  iface,
IUnknown **  ppunkParent 
)
static

Definition at line 1471 of file navigate.c.

1472{
1474 FIXME("(%p)->(%p)\n", This, ppunkParent);
1475 return E_NOTIMPL;
1476}

◆ TargetFrame2_GetTargetAlias()

static HRESULT WINAPI TargetFrame2_GetTargetAlias ( ITargetFrame2 *  iface,
LPCWSTR  pszTargetName,
LPWSTR *  ppszTargetAlias 
)
static

Definition at line 1534 of file navigate.c.

1535{
1537 FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias);
1538 return E_NOTIMPL;
1539}

◆ TargetFrame2_QueryInterface()

static HRESULT WINAPI TargetFrame2_QueryInterface ( ITargetFrame2 *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1439 of file navigate.c.

1440{
1442 return IUnknown_QueryInterface(This->outer, riid, ppv);
1443}

◆ TargetFrame2_Release()

static ULONG WINAPI TargetFrame2_Release ( ITargetFrame2 *  iface)
static

Definition at line 1451 of file navigate.c.

1452{
1454 return IUnknown_Release(This->outer);
1455}

◆ TargetFrame2_SetFrameMargins()

static HRESULT WINAPI TargetFrame2_SetFrameMargins ( ITargetFrame2 *  iface,
DWORD  dwWidth,
DWORD  dwHeight 
)
static

Definition at line 1513 of file navigate.c.

1514{
1516 FIXME("(%p)->(%ld %ld)\n", This, dwWidth, dwHeight);
1517 return E_NOTIMPL;
1518}

◆ TargetFrame2_SetFrameName()

static HRESULT WINAPI TargetFrame2_SetFrameName ( ITargetFrame2 *  iface,
LPCWSTR  pszFrameName 
)
static

Definition at line 1457 of file navigate.c.

1458{
1460 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
1461 return E_NOTIMPL;
1462}

◆ TargetFrame2_SetFrameOptions()

static HRESULT WINAPI TargetFrame2_SetFrameOptions ( ITargetFrame2 *  iface,
DWORD  dwFlags 
)
static

Definition at line 1499 of file navigate.c.

1500{
1502 FIXME("(%p)->(%lx)\n", This, dwFlags);
1503 return E_NOTIMPL;
1504}

◆ TargetFrame2_SetFrameSrc()

static HRESULT WINAPI TargetFrame2_SetFrameSrc ( ITargetFrame2 *  iface,
LPCWSTR  pszFrameSrc 
)
static

Definition at line 1478 of file navigate.c.

1479{
1481 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
1482 return E_NOTIMPL;
1483}

◆ TargetFrame_AddRef()

static ULONG WINAPI TargetFrame_AddRef ( ITargetFrame *  iface)
static

Definition at line 1302 of file navigate.c.

1303{
1305 return IUnknown_AddRef(This->outer);
1306}
static HlinkFrame * impl_from_ITargetFrame(ITargetFrame *iface)
Definition: navigate.c:1291

◆ TargetFrame_FindFrame()

static HRESULT WINAPI TargetFrame_FindFrame ( ITargetFrame *  iface,
LPCWSTR  pszTargetName,
IUnknown *  ppunkContextFrame,
DWORD  dwFlags,
IUnknown **  ppunkTargetFrame 
)
static

Definition at line 1335 of file navigate.c.

1337{
1339 FIXME("(%p)->(%s %p %lx %p)\n", This, debugstr_w(pszTargetName),
1340 ppunkContextFrame, dwFlags, ppunkTargetFrame);
1341 return E_NOTIMPL;
1342}

◆ TargetFrame_GetFrameMargins()

static HRESULT WINAPI TargetFrame_GetFrameMargins ( ITargetFrame *  iface,
DWORD *  pdwWidth,
DWORD *  pdwHeight 
)
static

Definition at line 1386 of file navigate.c.

1387{
1389 FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
1390 return E_NOTIMPL;
1391}

◆ TargetFrame_GetFrameName()

static HRESULT WINAPI TargetFrame_GetFrameName ( ITargetFrame *  iface,
LPWSTR *  ppszFrameName 
)
static

Definition at line 1321 of file navigate.c.

1322{
1324 FIXME("(%p)->(%p)\n", This, ppszFrameName);
1325 return E_NOTIMPL;
1326}

◆ TargetFrame_GetFrameOptions()

static HRESULT WINAPI TargetFrame_GetFrameOptions ( ITargetFrame *  iface,
DWORD *  pdwFlags 
)
static

Definition at line 1372 of file navigate.c.

1373{
1375 FIXME("(%p)->(%p)\n", This, pdwFlags);
1376 return E_NOTIMPL;
1377}

◆ TargetFrame_GetFramesContainer()

static HRESULT WINAPI TargetFrame_GetFramesContainer ( ITargetFrame *  iface,
IOleContainer **  ppContainer 
)
static

Definition at line 1358 of file navigate.c.

1359{
1361 FIXME("(%p)->(%p)\n", This, ppContainer);
1362 return E_NOTIMPL;
1363}

◆ TargetFrame_GetFrameSrc()

static HRESULT WINAPI TargetFrame_GetFrameSrc ( ITargetFrame *  iface,
LPWSTR *  ppszFrameSrc 
)
static

Definition at line 1351 of file navigate.c.

1352{
1354 FIXME("(%p)->(%p)\n", This, ppszFrameSrc);
1355 return E_NOTIMPL;
1356}

◆ TargetFrame_GetParentFrame()

static HRESULT WINAPI TargetFrame_GetParentFrame ( ITargetFrame *  iface,
IUnknown **  ppunkParent 
)
static

Definition at line 1328 of file navigate.c.

1329{
1331 FIXME("(%p)->(%p)\n", This, ppunkParent);
1332 return E_NOTIMPL;
1333}

◆ TargetFrame_OnChildFrameActivate()

static HRESULT WINAPI TargetFrame_OnChildFrameActivate ( ITargetFrame *  iface,
IUnknown *  pUnkChildFrame 
)
static

Definition at line 1400 of file navigate.c.

1401{
1403 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1404 return E_NOTIMPL;
1405}

◆ TargetFrame_OnChildFrameDeactivate()

static HRESULT WINAPI TargetFrame_OnChildFrameDeactivate ( ITargetFrame *  iface,
IUnknown *  pUnkChildFrame 
)
static

Definition at line 1407 of file navigate.c.

1408{
1410 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1411 return E_NOTIMPL;
1412}

◆ TargetFrame_QueryInterface()

static HRESULT WINAPI TargetFrame_QueryInterface ( ITargetFrame *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1296 of file navigate.c.

1297{
1299 return IUnknown_QueryInterface(This->outer, riid, ppv);
1300}

◆ TargetFrame_Release()

static ULONG WINAPI TargetFrame_Release ( ITargetFrame *  iface)
static

Definition at line 1308 of file navigate.c.

1309{
1311 return IUnknown_Release(This->outer);
1312}

◆ TargetFrame_RemoteNavigate()

static HRESULT WINAPI TargetFrame_RemoteNavigate ( ITargetFrame *  iface,
ULONG  cLength,
ULONG *  pulData 
)
static

Definition at line 1393 of file navigate.c.

1394{
1396 FIXME("(%p)->(%lu %p)\n", This, cLength, pulData);
1397 return E_NOTIMPL;
1398}

◆ TargetFrame_SetFrameMargins()

static HRESULT WINAPI TargetFrame_SetFrameMargins ( ITargetFrame *  iface,
DWORD  dwWidth,
DWORD  dwHeight 
)
static

Definition at line 1379 of file navigate.c.

1380{
1382 FIXME("(%p)->(%ld %ld)\n", This, dwWidth, dwHeight);
1383 return E_NOTIMPL;
1384}

◆ TargetFrame_SetFrameName()

static HRESULT WINAPI TargetFrame_SetFrameName ( ITargetFrame *  iface,
LPCWSTR  pszFrameName 
)
static

Definition at line 1314 of file navigate.c.

1315{
1317 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
1318 return E_NOTIMPL;
1319}

◆ TargetFrame_SetFrameOptions()

static HRESULT WINAPI TargetFrame_SetFrameOptions ( ITargetFrame *  iface,
DWORD  dwFlags 
)
static

Definition at line 1365 of file navigate.c.

1366{
1368 FIXME("(%p)->(%lx)\n", This, dwFlags);
1369 return E_NOTIMPL;
1370}

◆ TargetFrame_SetFrameSrc()

static HRESULT WINAPI TargetFrame_SetFrameSrc ( ITargetFrame *  iface,
LPCWSTR  pszFrameSrc 
)
static

Definition at line 1344 of file navigate.c.

1345{
1347 FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
1348 return E_NOTIMPL;
1349}

◆ TargetFramePriv2_AddRef()

static ULONG WINAPI TargetFramePriv2_AddRef ( ITargetFramePriv2 *  iface)
static

Definition at line 1570 of file navigate.c.

1571{
1573 return IUnknown_AddRef(This->outer);
1574}
static HlinkFrame * impl_from_ITargetFramePriv2(ITargetFramePriv2 *iface)
Definition: navigate.c:1559

◆ TargetFramePriv2_AggregatedNavigation2()

static HRESULT WINAPI TargetFramePriv2_AggregatedNavigation2 ( ITargetFramePriv2 *  iface,
DWORD  grfHLNF,
LPBC  pbc,
IBindStatusCallback *  pibsc,
LPCWSTR  pszTargetName,
IUri *  pUri,
LPCWSTR  pszLocation 
)
static

Definition at line 1628 of file navigate.c.

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}
HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker **ppmk, DWORD dwFlags)
Definition: umon.c:683

◆ TargetFramePriv2_FindBrowserByIndex()

static HRESULT WINAPI TargetFramePriv2_FindBrowserByIndex ( ITargetFramePriv2 *  iface,
DWORD  dwID,
IUnknown **  ppunkBrowser 
)
static

Definition at line 1621 of file navigate.c.

1622{
1624 FIXME("(%p)->(%ld %p)\n", This, dwID, ppunkBrowser);
1625 return E_NOTIMPL;
1626}

◆ TargetFramePriv2_FindFrameDownwards()

static HRESULT WINAPI TargetFramePriv2_FindFrameDownwards ( ITargetFramePriv2 *  iface,
LPCWSTR  pszTargetName,
DWORD  dwFlags,
IUnknown **  ppunkTargetFrame 
)
static

Definition at line 1582 of file navigate.c.

1584{
1586 FIXME("(%p)->(%s %lx %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
1587 return E_NOTIMPL;
1588}

◆ TargetFramePriv2_FindFrameInContext()

static HRESULT WINAPI TargetFramePriv2_FindFrameInContext ( ITargetFramePriv2 *  iface,
LPCWSTR  pszTargetName,
IUnknown *  punkContextFrame,
DWORD  dwFlags,
IUnknown **  ppunkTargetFrame 
)
static

Definition at line 1590 of file navigate.c.

1592{
1594 FIXME("(%p)->(%s %p %lx %p)\n", This, debugstr_w(pszTargetName), punkContextFrame, dwFlags, ppunkTargetFrame);
1595 return E_NOTIMPL;
1596}

◆ TargetFramePriv2_NavigateHack()

static HRESULT WINAPI TargetFramePriv2_NavigateHack ( ITargetFramePriv2 *  iface,
DWORD  grfHLNF,
LPBC  pbc,
IBindStatusCallback *  pibsc,
LPCWSTR  pszTargetName,
LPCWSTR  pszUrl,
LPCWSTR  pszLocation 
)
static

Definition at line 1612 of file navigate.c.

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}

◆ TargetFramePriv2_OnChildFrameActivate()

static HRESULT WINAPI TargetFramePriv2_OnChildFrameActivate ( ITargetFramePriv2 *  iface,
IUnknown *  pUnkChildFrame 
)
static

Definition at line 1598 of file navigate.c.

1599{
1601 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1602 return E_NOTIMPL;
1603}

◆ TargetFramePriv2_OnChildFrameDeactivate()

static HRESULT WINAPI TargetFramePriv2_OnChildFrameDeactivate ( ITargetFramePriv2 *  iface,
IUnknown *  pUnkChildFrame 
)
static

Definition at line 1605 of file navigate.c.

1606{
1608 FIXME("(%p)->(%p)\n", This, pUnkChildFrame);
1609 return E_NOTIMPL;
1610}

◆ TargetFramePriv2_QueryInterface()

static HRESULT WINAPI TargetFramePriv2_QueryInterface ( ITargetFramePriv2 *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1564 of file navigate.c.

1565{
1567 return IUnknown_QueryInterface(This->outer, riid, ppv);
1568}

◆ TargetFramePriv2_Release()

static ULONG WINAPI TargetFramePriv2_Release ( ITargetFramePriv2 *  iface)
static

Definition at line 1576 of file navigate.c.

1577{
1579 return IUnknown_Release(This->outer);
1580}

◆ try_application_url()

static BOOL try_application_url ( LPCWSTR  url)
static

Definition at line 677 of file navigate.c.

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}
HRESULT WINAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
Definition: internet.c:325
#define SW_SHOW
Definition: winuser.h:786
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2738
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

Referenced by bind_to_object().

◆ WebBrowserPriv2IE9_AddRef()

static ULONG WINAPI WebBrowserPriv2IE9_AddRef ( IWebBrowserPriv2IE9 *  iface)
static

Definition at line 1677 of file navigate.c.

1678{
1680 return IUnknown_AddRef(This->outer);
1681}
static HlinkFrame * impl_from_IWebBrowserPriv2IE9(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1666

◆ WebBrowserPriv2IE9_NavigateWithBindCtx2()

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 
)
static

Definition at line 1689 of file navigate.c.

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}
GLbitfield flags
Definition: glext.h:7161
const WCHAR * uri
Definition: sec_mgr.c:1564

◆ WebBrowserPriv2IE9_QueryInterface()

static HRESULT WINAPI WebBrowserPriv2IE9_QueryInterface ( IWebBrowserPriv2IE9 *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1671 of file navigate.c.

1672{
1674 return IUnknown_QueryInterface(This->outer, riid, ppv);
1675}

◆ WebBrowserPriv2IE9_Release()

static ULONG WINAPI WebBrowserPriv2IE9_Release ( IWebBrowserPriv2IE9 *  iface)
static

Definition at line 1683 of file navigate.c.

1684{
1686 return IUnknown_Release(This->outer);
1687}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ieframe  )

Variable Documentation

◆ BindStatusCallbackVtbl

const IBindStatusCallbackVtbl BindStatusCallbackVtbl
static
Initial value:
= {
}
static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface)
Definition: navigate.c:194
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
Definition: navigate.c:455
static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
Definition: navigate.c:447
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved)
Definition: navigate.c:247
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface)
Definition: navigate.c:204
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
Definition: navigate.c:425
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority)
Definition: navigate.c:239
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError)
Definition: navigate.c:399
static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
Definition: navigate.c:274
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind)
Definition: navigate.c:226
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv)
Definition: navigate.c:164

Definition at line 465 of file navigate.c.

Referenced by create_callback(), and init_bscallback().

◆ emptyW

◆ HlinkFrameVtbl

const IHlinkFrameVtbl HlinkFrameVtbl
static
Initial value:
= {
}
static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
Definition: navigate.c:1271
static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, IHlink *pihlNavigate)
Definition: navigate.c:1231
static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext *pihlbc)
Definition: navigate.c:1215
static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
Definition: navigate.c:1197
static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
Definition: navigate.c:1262
static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface)
Definition: navigate.c:1209
static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext **ppihlbc)
Definition: navigate.c:1223
static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface)
Definition: navigate.c:1203

Definition at line 1280 of file navigate.c.

Referenced by HlinkFrame_Init().

◆ HttpNegotiateVtbl

const IHttpNegotiateVtbl HttpNegotiateVtbl
static
Initial value:
= {
}
static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface)
Definition: navigate.c:491
static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
Definition: navigate.c:503
static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface)
Definition: navigate.c:497
static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate *iface, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders)
Definition: navigate.c:520
static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, REFIID riid, void **ppv)
Definition: navigate.c:484

Definition at line 530 of file navigate.c.

Referenced by create_callback().

◆ HttpSecurityVtbl

const IHttpSecurityVtbl HttpSecurityVtbl
static
Initial value:
= {
}
static HRESULT WINAPI HttpSecurity_QueryInterface(IHttpSecurity *iface, REFIID riid, void **ppv)
Definition: navigate.c:543
static HRESULT WINAPI HttpSecurity_GetWindow(IHttpSecurity *iface, REFGUID rguidReason, HWND *phwnd)
Definition: navigate.c:561
static ULONG WINAPI HttpSecurity_Release(IHttpSecurity *iface)
Definition: navigate.c:555
static HRESULT WINAPI HttpSecurity_OnSecurityProblem(IHttpSecurity *iface, DWORD dwProblem)
Definition: navigate.c:574
static ULONG WINAPI HttpSecurity_AddRef(IHttpSecurity *iface)
Definition: navigate.c:549

Definition at line 581 of file navigate.c.

Referenced by create_callback().

◆ TargetFrame2Vtbl

const ITargetFrame2Vtbl TargetFrame2Vtbl
static
Initial value:
= {
}
static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName)
Definition: navigate.c:1464
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 HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight)
Definition: navigate.c:1513
static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc)
Definition: navigate.c:1478
static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight)
Definition: navigate.c:1520
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 HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
Definition: navigate.c:1534
static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer)
Definition: navigate.c:1492
static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface)
Definition: navigate.c:1445
static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent)
Definition: navigate.c:1471
static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName)
Definition: navigate.c:1457
static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1527
static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags)
Definition: navigate.c:1499

Definition at line 1541 of file navigate.c.

Referenced by HlinkFrame_Init().

◆ TargetFramePriv2Vtbl

const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl
static
Initial value:
= {
}
static HRESULT WINAPI TargetFramePriv2_FindFrameInContext(ITargetFramePriv2 *iface, LPCWSTR pszTargetName, IUnknown *punkContextFrame, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1590
static HRESULT WINAPI TargetFramePriv2_NavigateHack(ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, LPCWSTR pszUrl, LPCWSTR pszLocation)
Definition: navigate.c:1612
static ULONG WINAPI TargetFramePriv2_Release(ITargetFramePriv2 *iface)
Definition: navigate.c:1576
static HRESULT WINAPI TargetFramePriv2_OnChildFrameDeactivate(ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1605
static HRESULT WINAPI TargetFramePriv2_QueryInterface(ITargetFramePriv2 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1564
static HRESULT WINAPI TargetFramePriv2_AggregatedNavigation2(ITargetFramePriv2 *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, LPCWSTR pszTargetName, IUri *pUri, LPCWSTR pszLocation)
Definition: navigate.c:1628
static HRESULT WINAPI TargetFramePriv2_OnChildFrameActivate(ITargetFramePriv2 *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1598
static HRESULT WINAPI TargetFramePriv2_FindBrowserByIndex(ITargetFramePriv2 *iface, DWORD dwID, IUnknown **ppunkBrowser)
Definition: navigate.c:1621
static ULONG WINAPI TargetFramePriv2_AddRef(ITargetFramePriv2 *iface)
Definition: navigate.c:1570
static HRESULT WINAPI TargetFramePriv2_FindFrameDownwards(ITargetFramePriv2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
Definition: navigate.c:1582

Definition at line 1653 of file navigate.c.

Referenced by HlinkFrame_Init().

◆ TargetFrameVtbl

const ITargetFrameVtbl TargetFrameVtbl
static
Initial value:
= {
}
static HRESULT WINAPI TargetFrame_GetFrameName(ITargetFrame *iface, LPWSTR *ppszFrameName)
Definition: navigate.c:1321
static HRESULT WINAPI TargetFrame_RemoteNavigate(ITargetFrame *iface, ULONG cLength, ULONG *pulData)
Definition: navigate.c:1393
static HRESULT WINAPI TargetFrame_OnChildFrameDeactivate(ITargetFrame *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1407
static ULONG WINAPI TargetFrame_AddRef(ITargetFrame *iface)
Definition: navigate.c:1302
static HRESULT WINAPI TargetFrame_OnChildFrameActivate(ITargetFrame *iface, IUnknown *pUnkChildFrame)
Definition: navigate.c:1400
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 WINAPI TargetFrame_GetFrameSrc(ITargetFrame *iface, LPWSTR *ppszFrameSrc)
Definition: navigate.c:1351
static HRESULT WINAPI TargetFrame_SetFrameMargins(ITargetFrame *iface, DWORD dwWidth, DWORD dwHeight)
Definition: navigate.c:1379
static HRESULT WINAPI TargetFrame_SetFrameOptions(ITargetFrame *iface, DWORD dwFlags)
Definition: navigate.c:1365
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
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 TargetFrame_GetFrameMargins(ITargetFrame *iface, DWORD *pdwWidth, DWORD *pdwHeight)
Definition: navigate.c:1386
static ULONG WINAPI TargetFrame_Release(ITargetFrame *iface)
Definition: navigate.c:1308
static HRESULT WINAPI TargetFrame_GetFrameOptions(ITargetFrame *iface, DWORD *pdwFlags)
Definition: navigate.c:1372

Definition at line 1414 of file navigate.c.

Referenced by HlinkFrame_Init().

◆ WebBrowserPriv2IE9Vtbl

const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl
static
Initial value:
= {
}
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 WebBrowserPriv2IE9_QueryInterface(IWebBrowserPriv2IE9 *iface, REFIID riid, void **ppv)
Definition: navigate.c:1671
static ULONG WINAPI WebBrowserPriv2IE9_Release(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1683
static ULONG WINAPI WebBrowserPriv2IE9_AddRef(IWebBrowserPriv2IE9 *iface)
Definition: navigate.c:1677

Definition at line 1698 of file navigate.c.

Referenced by HlinkFrame_Init().