ieframe: Added INewWindowManager stub implementation.

This commit is contained in:
Jacek Caban 2012-01-06 13:00:22 +01:00 committed by Alexandre Julliard
parent 9c448d1dbf
commit dcbfd3d0a5
4 changed files with 80 additions and 0 deletions

View File

@ -685,6 +685,11 @@ static HRESULT WINAPI ClServiceProvider_QueryService(IServiceProvider *iface, RE
return IShellBrowser_QueryInterface(&This->browser_service->IShellBrowser_iface, riid, ppv);
}
if(IsEqualGUID(&SID_SNewWindowManager, guidService)) {
TRACE("SID_SNewWindowManager service\n");
return INewWindowManager_QueryInterface(&This->nwm.INewWindowManager_iface, riid, ppv);
}
FIXME("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
return E_NOINTERFACE;

View File

@ -888,6 +888,7 @@ void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* c
ConnectionPointContainer_Init(&This->cps, (IUnknown*)disp);
IEHTMLWindow_Init(This);
NewWindowManager_Init(This);
}
void DocHost_Release(DocHost *This)

View File

@ -89,6 +89,11 @@ typedef struct {
DocHost *doc_host;
} IEHTMLWindow;
typedef struct {
INewWindowManager INewWindowManager_iface;
DocHost *doc_host;
} NewWindowManager;
typedef struct _IDocHostContainerVtbl
{
ULONG (*addref)(DocHost*);
@ -145,6 +150,7 @@ struct DocHost {
ConnectionPointContainer cps;
IEHTMLWindow html_window;
NewWindowManager nwm;
};
struct WebBrowser {
@ -233,6 +239,7 @@ void DocHost_Frame_Init(DocHost*) DECLSPEC_HIDDEN;
void release_dochost_client(DocHost*) DECLSPEC_HIDDEN;
void IEHTMLWindow_Init(DocHost*) DECLSPEC_HIDDEN;
void NewWindowManager_Init(DocHost*) DECLSPEC_HIDDEN;
void HlinkFrame_Init(HlinkFrame*,IUnknown*,DocHost*) DECLSPEC_HIDDEN;
BOOL HlinkFrame_QI(HlinkFrame*,REFIID,void**) DECLSPEC_HIDDEN;

View File

@ -2,6 +2,7 @@
* Implementation of IShellBrowser interface
*
* Copyright 2011 Piotr Caban for CodeWeavers
* Copyright 2012 Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -913,3 +914,69 @@ void detach_browser_service(ShellBrowser *sb)
sb->doc_host = NULL;
IShellBrowser_Release(&sb->IShellBrowser_iface);
}
static inline NewWindowManager *impl_from_INewWindowManager(INewWindowManager *iface)
{
return CONTAINING_RECORD(iface, NewWindowManager, INewWindowManager_iface);
}
static HRESULT WINAPI NewWindowManager_QueryInterface(INewWindowManager *iface, REFIID riid, void **ppv)
{
NewWindowManager *This = impl_from_INewWindowManager(iface);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->INewWindowManager_iface;
}else if(IsEqualGUID(&IID_INewWindowManager, riid)) {
TRACE("(%p)->(IID_INewWindowManager %p)\n", This, ppv);
*ppv = &This->INewWindowManager_iface;
}else {
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI NewWindowManager_AddRef(INewWindowManager *iface)
{
NewWindowManager *This = impl_from_INewWindowManager(iface);
TRACE("(%p)\n", This);
return IOleClientSite_AddRef(&This->doc_host->IOleClientSite_iface);
}
static ULONG WINAPI NewWindowManager_Release(INewWindowManager *iface)
{
NewWindowManager *This = impl_from_INewWindowManager(iface);
TRACE("(%p)\n", This);
return IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
}
static HRESULT WINAPI NewWindowManager_EvaluateNewWindow(INewWindowManager *iface, LPCWSTR pszUrl,
LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags,
DWORD dwUserActionTime)
{
NewWindowManager *This = impl_from_INewWindowManager(iface);
FIXME("(%p)->(%s %s %s %s %x %x %d)\n", This, debugstr_w(pszUrl), debugstr_w(pszName), debugstr_w(pszUrlContext),
debugstr_w(pszFeatures), fReplace, dwFlags, dwUserActionTime);
return S_OK;
}
static const INewWindowManagerVtbl NewWindowManagerVtbl = {
NewWindowManager_QueryInterface,
NewWindowManager_AddRef,
NewWindowManager_Release,
NewWindowManager_EvaluateNewWindow
};
void NewWindowManager_Init(DocHost *doc_host)
{
doc_host->nwm.INewWindowManager_iface.lpVtbl = &NewWindowManagerVtbl;
doc_host->nwm.doc_host = doc_host;
}