From 530239d4886eabc774351ea914ac2e009e1f7539 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 26 Apr 2014 18:39:56 +0000 Subject: [PATCH] [IEFRAME] * Sync with Wine 1.7.17. CORE-8080 svn path=/trunk/; revision=63006 --- reactos/dll/win32/ieframe/ieframe.h | 1 + reactos/dll/win32/ieframe/ieframe.rgs | 6 +++- reactos/dll/win32/ieframe/ieframe_v1.idl | 3 ++ reactos/dll/win32/ieframe/navigate.c | 43 ++++++++++++++++++++++++ reactos/dll/win32/ieframe/shellbrowser.c | 3 +- reactos/media/doc/README.WINE | 2 +- 6 files changed, 55 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/ieframe/ieframe.h b/reactos/dll/win32/ieframe/ieframe.h index bed94de0563..31b3f22a330 100644 --- a/reactos/dll/win32/ieframe/ieframe.h +++ b/reactos/dll/win32/ieframe/ieframe.h @@ -74,6 +74,7 @@ typedef struct { IHlinkFrame IHlinkFrame_iface; ITargetFrame2 ITargetFrame2_iface; ITargetFramePriv2 ITargetFramePriv2_iface; + IWebBrowserPriv2IE9 IWebBrowserPriv2IE9_iface; IUnknown *outer; DocHost *doc_host; diff --git a/reactos/dll/win32/ieframe/ieframe.rgs b/reactos/dll/win32/ieframe/ieframe.rgs index cf8f3b45ee0..f99e6b63523 100644 --- a/reactos/dll/win32/ieframe/ieframe.rgs +++ b/reactos/dll/win32/ieframe/ieframe.rgs @@ -34,9 +34,13 @@ HKCR { shellex { - MayChangeDefaultMenu {} + MayChangeDefaultMenu } } + '{8856f961-340a-11d0-a96b-00c04fd705a2}' + { + Control + } } 'InternetShortcut' { diff --git a/reactos/dll/win32/ieframe/ieframe_v1.idl b/reactos/dll/win32/ieframe/ieframe_v1.idl index a7d3543e4ef..9b64a600043 100644 --- a/reactos/dll/win32/ieframe/ieframe_v1.idl +++ b/reactos/dll/win32/ieframe/ieframe_v1.idl @@ -16,6 +16,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#pragma makedep regtypelib +#pragma makedep register + #include "exdisp.idl" [ diff --git a/reactos/dll/win32/ieframe/navigate.c b/reactos/dll/win32/ieframe/navigate.c index 72390ee720e..7586b69424e 100644 --- a/reactos/dll/win32/ieframe/navigate.c +++ b/reactos/dll/win32/ieframe/navigate.c @@ -1437,6 +1437,45 @@ static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl = { TargetFramePriv2_AggregatedNavigation2 }; +static inline HlinkFrame *impl_from_IWebBrowserPriv2IE9(IWebBrowserPriv2IE9 *iface) +{ + return CONTAINING_RECORD(iface, HlinkFrame, IWebBrowserPriv2IE9_iface); +} + +static HRESULT WINAPI WebBrowserPriv2IE9_QueryInterface(IWebBrowserPriv2IE9 *iface, REFIID riid, void **ppv) +{ + HlinkFrame *This = impl_from_IWebBrowserPriv2IE9(iface); + return IUnknown_QueryInterface(This->outer, riid, ppv); +} + +static ULONG WINAPI WebBrowserPriv2IE9_AddRef(IWebBrowserPriv2IE9 *iface) +{ + HlinkFrame *This = impl_from_IWebBrowserPriv2IE9(iface); + return IUnknown_AddRef(This->outer); +} + +static ULONG WINAPI WebBrowserPriv2IE9_Release(IWebBrowserPriv2IE9 *iface) +{ + HlinkFrame *This = impl_from_IWebBrowserPriv2IE9(iface); + return IUnknown_Release(This->outer); +} + +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) +{ + HlinkFrame *This = impl_from_IWebBrowserPriv2IE9(iface); + FIXME("(%p)->(%p %s %s %s %s %p %s)\n", This, uri, debugstr_variant(flags), debugstr_variant(target_frame), + debugstr_variant(post_data), debugstr_variant(headers), bind_ctx, debugstr_w(url_fragment)); + return E_NOTIMPL; +} + +static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl = { + WebBrowserPriv2IE9_QueryInterface, + WebBrowserPriv2IE9_AddRef, + WebBrowserPriv2IE9_Release, + WebBrowserPriv2IE9_NavigateWithBindCtx2 +}; + BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv) { if(IsEqualGUID(&IID_IHlinkFrame, riid)) { @@ -1451,6 +1490,9 @@ BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv) }else if(IsEqualGUID(&IID_ITargetFramePriv2, riid)) { TRACE("(%p)->(IID_ITargetFramePriv2 %p)\n", This, ppv); *ppv = &This->ITargetFramePriv2_iface; + }else if(IsEqualGUID(&IID_IWebBrowserPriv2IE9, riid)) { + TRACE("(%p)->(IID_IWebBrowserPriv2IE9 %p)\n", This, ppv); + *ppv = &This->IWebBrowserPriv2IE9_iface; }else { return FALSE; } @@ -1464,6 +1506,7 @@ void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host) This->IHlinkFrame_iface.lpVtbl = &HlinkFrameVtbl; This->ITargetFrame2_iface.lpVtbl = &TargetFrame2Vtbl; This->ITargetFramePriv2_iface.lpVtbl = &TargetFramePriv2Vtbl; + This->IWebBrowserPriv2IE9_iface.lpVtbl = &WebBrowserPriv2IE9Vtbl; This->outer = outer; This->doc_host = doc_host; diff --git a/reactos/dll/win32/ieframe/shellbrowser.c b/reactos/dll/win32/ieframe/shellbrowser.c index d117c373e89..7c728bbb757 100644 --- a/reactos/dll/win32/ieframe/shellbrowser.c +++ b/reactos/dll/win32/ieframe/shellbrowser.c @@ -688,7 +688,7 @@ static HRESULT WINAPI DocObjectService_FireBeforeNavigate2( V_VT(params+3) = (VT_BYREF|VT_VARIANT); V_VARIANTREF(params+3) = &var_frame_name; V_VT(&var_frame_name) = VT_BSTR; - V_BSTR(&var_frame_name) = NULL; + V_BSTR(&var_frame_name) = lpszFrameName ? SysAllocString(lpszFrameName) : NULL; V_VT(params+4) = (VT_BYREF|VT_VARIANT); V_VARIANTREF(params+4) = &var_flags; @@ -709,6 +709,7 @@ static HRESULT WINAPI DocObjectService_FireBeforeNavigate2( SysFreeString(V_BSTR(&var_url)); SysFreeString(V_BSTR(&var_headers)); + SysFreeString(V_BSTR(&var_frame_name)); SafeArrayDestroy(post_data); *pfCancel = !!cancel; diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 89c36b1af2f..96f4e33edfd 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -81,7 +81,7 @@ reactos/dll/win32/hnetcfg # Synced to Wine-1.7.1 reactos/dll/win32/httpapi # Synced to Wine-1.7.1 reactos/dll/win32/iccvid # Synced to Wine-1.7.1 reactos/dll/win32/icmp # Out of sync -reactos/dll/win32/ieframe # Synced to Wine-1.7.1 +reactos/dll/win32/ieframe # Synced to Wine-1.7.17 reactos/dll/win32/imaadp32.acm # Synced to Wine-1.7.1 reactos/dll/win32/imagehlp # Synced to Wine-1.7.17 reactos/dll/win32/imm32 # Synced to Wine-1.7.1