shdocvw: Get rid of *_THIS macros in navigate.c.

This commit is contained in:
Jacek Caban 2010-11-13 17:48:21 +01:00 committed by Alexandre Julliard
parent 538a870b89
commit 2450a2d834
2 changed files with 83 additions and 88 deletions

View File

@ -34,8 +34,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static const WCHAR emptyW[] = {0}; static const WCHAR emptyW[] = {0};
typedef struct { typedef struct {
const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl; IBindStatusCallback IBindStatusCallback_iface;
const IHttpNegotiateVtbl *lpHttpNegotiateVtbl; IHttpNegotiate IHttpNegotiate_iface;
LONG ref; LONG ref;
@ -47,9 +47,6 @@ typedef struct {
ULONG post_data_len; ULONG post_data_len;
} BindStatusCallback; } BindStatusCallback;
#define BINDSC(x) ((IBindStatusCallback*) &(x)->lpBindStatusCallbackVtbl)
#define HTTPNEG(x) ((IHttpNegotiate*) &(x)->lpHttpNegotiateVtbl)
static void dump_BINDINFO(BINDINFO *bi) static void dump_BINDINFO(BINDINFO *bi)
{ {
static const char * const BINDINFOF_str[] = { static const char * const BINDINFOF_str[] = {
@ -130,38 +127,38 @@ static HRESULT set_dochost_url(DocHost *This, const WCHAR *url)
return S_OK; return S_OK;
} }
#define BINDSC_THIS(iface) DEFINE_THIS(BindStatusCallback, BindStatusCallback, iface) static inline BindStatusCallback *impl_from_IBindStatusCallback(IBindStatusCallback *iface)
{
return (BindStatusCallback*)((char*)iface - FIELD_OFFSET(BindStatusCallback, IBindStatusCallback_iface));
}
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface,
REFIID riid, void **ppv) REFIID riid, void **ppv)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = BINDSC(This); *ppv = &This->IBindStatusCallback_iface;
}else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) {
TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv); TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv);
*ppv = BINDSC(This); *ppv = &This->IBindStatusCallback_iface;
}else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) {
TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv); TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv);
*ppv = HTTPNEG(This); *ppv = &This->IHttpNegotiate_iface;
}else {
*ppv = NULL;
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
} }
if(*ppv) { IUnknown_AddRef((IUnknown*)*ppv);
IBindStatusCallback_AddRef(BINDSC(This)); return S_OK;
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
} }
static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface) static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
LONG ref = InterlockedIncrement(&This->ref); LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref); TRACE("(%p) ref=%d\n", This, ref);
@ -171,7 +168,7 @@ static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface)
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface) static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
LONG ref = InterlockedDecrement(&This->ref); LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref); TRACE("(%p) ref=%d\n", This, ref);
@ -192,7 +189,7 @@ static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface)
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface,
DWORD dwReserved, IBinding *pbind) DWORD dwReserved, IBinding *pbind)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind);
@ -202,7 +199,7 @@ static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *ifa
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface,
LONG *pnPriority) LONG *pnPriority)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
FIXME("(%p)->(%p)\n", This, pnPriority); FIXME("(%p)->(%p)\n", This, pnPriority);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -210,7 +207,7 @@ static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface,
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface,
DWORD reserved) DWORD reserved)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
FIXME("(%p)->(%d)\n", This, reserved); FIXME("(%p)->(%d)\n", This, reserved);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -218,7 +215,7 @@ static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *ifac
static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface,
ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
TRACE("(%p)->(%d %d %d %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, TRACE("(%p)->(%d %d %d %s)\n", This, ulProgress, ulProgressMax, ulStatusCode,
debugstr_w(szStatusText)); debugstr_w(szStatusText));
@ -247,7 +244,7 @@ static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface,
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface,
HRESULT hresult, LPCWSTR szError) HRESULT hresult, LPCWSTR szError)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError));
@ -264,7 +261,7 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *ifac
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface,
DWORD *grfBINDF, BINDINFO *pbindinfo) DWORD *grfBINDF, BINDINFO *pbindinfo)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo);
@ -276,8 +273,8 @@ static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface,
pbindinfo->stgmedData.tymed = TYMED_HGLOBAL; pbindinfo->stgmedData.tymed = TYMED_HGLOBAL;
pbindinfo->stgmedData.u.hGlobal = This->post_data; pbindinfo->stgmedData.u.hGlobal = This->post_data;
pbindinfo->cbstgmedData = This->post_data_len; pbindinfo->cbstgmedData = This->post_data_len;
pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)BINDSC(This); pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)&This->IBindStatusCallback_iface;
IBindStatusCallback_AddRef(BINDSC(This)); IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
} }
return S_OK; return S_OK;
@ -286,7 +283,7 @@ static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface,
static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface,
DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
FIXME("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); FIXME("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -294,15 +291,13 @@ static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *if
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface,
REFIID riid, IUnknown *punk) REFIID riid, IUnknown *punk)
{ {
BindStatusCallback *This = BINDSC_THIS(iface); BindStatusCallback *This = impl_from_IBindStatusCallback(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk);
return dochost_object_available(This->doc_host, punk); return dochost_object_available(This->doc_host, punk);
} }
#undef BSC_THIS
static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = { static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = {
BindStatusCallback_QueryInterface, BindStatusCallback_QueryInterface,
BindStatusCallback_AddRef, BindStatusCallback_AddRef,
@ -317,31 +312,34 @@ static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = {
BindStatusCallback_OnObjectAvailable BindStatusCallback_OnObjectAvailable
}; };
#define HTTPNEG_THIS(iface) DEFINE_THIS(BindStatusCallback, HttpNegotiate, iface) static inline BindStatusCallback *impl_from_IHttpNegotiate(IHttpNegotiate *iface)
{
return (BindStatusCallback*)((char*)iface - FIELD_OFFSET(BindStatusCallback, IHttpNegotiate_iface));
}
static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface,
REFIID riid, void **ppv) REFIID riid, void **ppv)
{ {
BindStatusCallback *This = HTTPNEG_THIS(iface); BindStatusCallback *This = impl_from_IHttpNegotiate(iface);
return IBindStatusCallback_QueryInterface(BINDSC(This), riid, ppv); return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv);
} }
static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface) static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface)
{ {
BindStatusCallback *This = HTTPNEG_THIS(iface); BindStatusCallback *This = impl_from_IHttpNegotiate(iface);
return IBindStatusCallback_AddRef(BINDSC(This)); return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface);
} }
static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface) static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface)
{ {
BindStatusCallback *This = HTTPNEG_THIS(iface); BindStatusCallback *This = impl_from_IHttpNegotiate(iface);
return IBindStatusCallback_Release(BINDSC(This)); return IBindStatusCallback_Release(&This->IBindStatusCallback_iface);
} }
static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface,
LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders) LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
{ {
BindStatusCallback *This = HTTPNEG_THIS(iface); BindStatusCallback *This = impl_from_IHttpNegotiate(iface);
TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders), TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders),
dwReserved, pszAdditionalHeaders); dwReserved, pszAdditionalHeaders);
@ -359,14 +357,12 @@ static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate *iface,
DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders,
LPWSTR *pszAdditionalRequestHeaders) LPWSTR *pszAdditionalRequestHeaders)
{ {
BindStatusCallback *This = HTTPNEG_THIS(iface); BindStatusCallback *This = impl_from_IHttpNegotiate(iface);
TRACE("(%p)->(%d %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders), TRACE("(%p)->(%d %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders),
debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders); debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders);
return S_OK; return S_OK;
} }
#undef HTTPNEG_THIS
static const IHttpNegotiateVtbl HttpNegotiateVtbl = { static const IHttpNegotiateVtbl HttpNegotiateVtbl = {
HttpNegotiate_QueryInterface, HttpNegotiate_QueryInterface,
HttpNegotiate_AddRef, HttpNegotiate_AddRef,
@ -380,8 +376,8 @@ static BindStatusCallback *create_callback(DocHost *doc_host, LPCWSTR url, PBYTE
{ {
BindStatusCallback *ret = heap_alloc(sizeof(BindStatusCallback)); BindStatusCallback *ret = heap_alloc(sizeof(BindStatusCallback));
ret->lpBindStatusCallbackVtbl = &BindStatusCallbackVtbl; ret->IBindStatusCallback_iface.lpVtbl = &BindStatusCallbackVtbl;
ret->lpHttpNegotiateVtbl = &HttpNegotiateVtbl; ret->IHttpNegotiate_iface.lpVtbl = &HttpNegotiateVtbl;
ret->ref = 1; ret->ref = 1;
ret->url = heap_strdupW(url); ret->url = heap_strdupW(url);
@ -712,12 +708,12 @@ static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mo
if(This->document) if(This->document)
deactivate_document(This); deactivate_document(This);
CreateAsyncBindCtx(0, BINDSC(bsc), 0, &bindctx); CreateAsyncBindCtx(0, &bsc->IBindStatusCallback_iface, 0, &bindctx);
if(This->frame) if(This->frame)
IOleInPlaceFrame_EnableModeless(This->frame, FALSE); IOleInPlaceFrame_EnableModeless(This->frame, FALSE);
hres = bind_to_object(This, mon, bsc->url, bindctx, BINDSC(bsc)); hres = bind_to_object(This, mon, bsc->url, bindctx, &bsc->IBindStatusCallback_iface);
if(This->frame) if(This->frame)
IOleInPlaceFrame_EnableModeless(This->frame, TRUE); IOleInPlaceFrame_EnableModeless(This->frame, TRUE);
@ -741,7 +737,7 @@ static void navigate_bsc_proc(DocHost *This, task_header_t *t)
navigate_bsc(This, task->bsc, NULL); navigate_bsc(This, task->bsc, NULL);
IBindStatusCallback_Release(BINDSC(task->bsc)); IBindStatusCallback_Release(&task->bsc->IBindStatusCallback_iface);
} }
@ -849,7 +845,7 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
}else { }else {
bsc = create_callback(This, url, post_data, post_data_len, headers); bsc = create_callback(This, url, post_data, post_data_len, headers);
hres = navigate_bsc(This, bsc, mon); hres = navigate_bsc(This, bsc, mon);
IBindStatusCallback_Release(BINDSC(bsc)); IBindStatusCallback_Release(&bsc->IBindStatusCallback_iface);
} }
CoTaskMemFree(url); CoTaskMemFree(url);
@ -884,30 +880,33 @@ HRESULT go_home(DocHost *This)
return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL); return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL);
} }
#define HLINKFRAME_THIS(iface) DEFINE_THIS(HlinkFrame, IHlinkFrame, iface) static inline HlinkFrame *impl_from_IHlinkFrame(IHlinkFrame *iface)
{
return (HlinkFrame*)((char*)iface - FIELD_OFFSET(HlinkFrame, IHlinkFrame_iface));
}
static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv) static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
return IUnknown_QueryInterface(This->outer, riid, ppv); return IUnknown_QueryInterface(This->outer, riid, ppv);
} }
static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface) static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
return IUnknown_AddRef(This->outer); return IUnknown_AddRef(This->outer);
} }
static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface) static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
return IUnknown_Release(This->outer); return IUnknown_Release(This->outer);
} }
static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface,
IHlinkBrowseContext *pihlbc) IHlinkBrowseContext *pihlbc)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
FIXME("(%p)->(%p)\n", This, pihlbc); FIXME("(%p)->(%p)\n", This, pihlbc);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -915,7 +914,7 @@ static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface,
static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface,
IHlinkBrowseContext **ppihlbc) IHlinkBrowseContext **ppihlbc)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
FIXME("(%p)->(%p)\n", This, ppihlbc); FIXME("(%p)->(%p)\n", This, ppihlbc);
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -923,7 +922,7 @@ static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface,
static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc,
IBindStatusCallback *pibsc, IHlink *pihlNavigate) IBindStatusCallback *pibsc, IHlink *pihlNavigate)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
IMoniker *mon; IMoniker *mon;
LPWSTR location = NULL; LPWSTR location = NULL;
@ -954,7 +953,7 @@ static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPB
static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF,
IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved) IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
FIXME("(%p)->(%08x %p %s %s %d)\n", This, grfHLNF, pimkTarget, debugstr_w(pwzLocation), FIXME("(%p)->(%08x %p %s %s %d)\n", This, grfHLNF, pimkTarget, debugstr_w(pwzLocation),
debugstr_w(pwzFriendlyName), dwreserved); debugstr_w(pwzFriendlyName), dwreserved);
return E_NOTIMPL; return E_NOTIMPL;
@ -963,14 +962,12 @@ static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF,
static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID,
IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName) IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
{ {
HlinkFrame *This = HLINKFRAME_THIS(iface); HlinkFrame *This = impl_from_IHlinkFrame(iface);
FIXME("(%p)->(%u %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation), FIXME("(%p)->(%u %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation),
debugstr_w(pwzFriendlyName)); debugstr_w(pwzFriendlyName));
return E_NOTIMPL; return E_NOTIMPL;
} }
#undef HLINKFRAME_THIS
static const IHlinkFrameVtbl HlinkFrameVtbl = { static const IHlinkFrameVtbl HlinkFrameVtbl = {
HlinkFrame_QueryInterface, HlinkFrame_QueryInterface,
HlinkFrame_AddRef, HlinkFrame_AddRef,
@ -982,112 +979,113 @@ static const IHlinkFrameVtbl HlinkFrameVtbl = {
HlinkFrame_UpdateHlink HlinkFrame_UpdateHlink
}; };
#define TARGETFRAME2_THIS(iface) DEFINE_THIS(HlinkFrame, ITargetFrame2, iface) static inline HlinkFrame *impl_from_ITargetFrame2(ITargetFrame2 *iface)
{
return (HlinkFrame*)((char*)iface - FIELD_OFFSET(HlinkFrame, IHlinkFrame_iface));
}
static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv) static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
return IUnknown_QueryInterface(This->outer, riid, ppv); return IUnknown_QueryInterface(This->outer, riid, ppv);
} }
static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface) static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
return IUnknown_AddRef(This->outer); return IUnknown_AddRef(This->outer);
} }
static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface) static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
return IUnknown_Release(This->outer); return IUnknown_Release(This->outer);
} }
static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName) static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName)); FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName));
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName) static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%p)\n", This, ppszFrameName); FIXME("(%p)->(%p)\n", This, ppszFrameName);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent) static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%p)\n", This, ppunkParent); FIXME("(%p)->(%p)\n", This, ppunkParent);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc) static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc)); FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc));
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetFrameSrc(ITargetFrame2 *iface, LPWSTR *ppszFrameSrc) static HRESULT WINAPI TargetFrame2_GetFrameSrc(ITargetFrame2 *iface, LPWSTR *ppszFrameSrc)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->()\n", This); FIXME("(%p)->()\n", This);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer) static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%p)\n", This, ppContainer); FIXME("(%p)->(%p)\n", This, ppContainer);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags) static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%x)\n", This, dwFlags); FIXME("(%p)->(%x)\n", This, dwFlags);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags) static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%p)\n", This, pdwFlags); FIXME("(%p)->(%p)\n", This, pdwFlags);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight) static HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%d %d)\n", This, dwWidth, dwHeight); FIXME("(%p)->(%d %d)\n", This, dwWidth, dwHeight);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight) static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight); FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame) static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame); FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias) static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias)
{ {
HlinkFrame *This = TARGETFRAME2_THIS(iface); HlinkFrame *This = impl_from_ITargetFrame2(iface);
FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias); FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias);
return E_NOTIMPL; return E_NOTIMPL;
} }
#undef TARGETFRAME2_THIS
static const ITargetFrame2Vtbl TargetFrame2Vtbl = { static const ITargetFrame2Vtbl TargetFrame2Vtbl = {
TargetFrame2_QueryInterface, TargetFrame2_QueryInterface,
TargetFrame2_AddRef, TargetFrame2_AddRef,
@ -1110,10 +1108,10 @@ BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv)
{ {
if(IsEqualGUID(&IID_IHlinkFrame, riid)) { if(IsEqualGUID(&IID_IHlinkFrame, riid)) {
TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv); TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv);
*ppv = HLINKFRAME(This); *ppv = &This->IHlinkFrame_iface;
}else if(IsEqualGUID(&IID_ITargetFrame2, riid)) { }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) {
TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv); TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv);
*ppv = TARGETFRAME2(This); *ppv = &This->ITargetFrame2_iface;
}else { }else {
return FALSE; return FALSE;
} }
@ -1124,8 +1122,8 @@ BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv)
void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host) void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host)
{ {
This->lpIHlinkFrameVtbl = &HlinkFrameVtbl; This->IHlinkFrame_iface.lpVtbl = &HlinkFrameVtbl;
This->lpITargetFrame2Vtbl = &TargetFrame2Vtbl; This->ITargetFrame2_iface.lpVtbl = &TargetFrame2Vtbl;
This->outer = outer; This->outer = outer;
This->doc_host = doc_host; This->doc_host = doc_host;

View File

@ -69,8 +69,8 @@ typedef struct {
} ConnectionPointContainer; } ConnectionPointContainer;
typedef struct { typedef struct {
const IHlinkFrameVtbl *lpIHlinkFrameVtbl; IHlinkFrame IHlinkFrame_iface;
const ITargetFrame2Vtbl *lpITargetFrame2Vtbl; ITargetFrame2 ITargetFrame2_iface;
IUnknown *outer; IUnknown *outer;
DocHost *doc_host; DocHost *doc_host;
@ -197,9 +197,6 @@ struct InternetExplorer {
#define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl) #define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl)
#define INPLACEFRAME(x) ((IOleInPlaceFrame*) &(x)->lpOleInPlaceFrameVtbl) #define INPLACEFRAME(x) ((IOleInPlaceFrame*) &(x)->lpOleInPlaceFrameVtbl)
#define HLINKFRAME(x) ((IHlinkFrame*) &(x)->lpIHlinkFrameVtbl)
#define TARGETFRAME2(x) ((ITargetFrame2*) &(x)->lpITargetFrame2Vtbl)
void WebBrowser_OleObject_Init(WebBrowser*); void WebBrowser_OleObject_Init(WebBrowser*);
void WebBrowser_ViewObject_Init(WebBrowser*); void WebBrowser_ViewObject_Init(WebBrowser*);
void WebBrowser_Persist_Init(WebBrowser*); void WebBrowser_Persist_Init(WebBrowser*);