Commit dcbfd3d0 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

ieframe: Added INewWindowManager stub implementation.

parent 9c448d1d
...@@ -685,6 +685,11 @@ static HRESULT WINAPI ClServiceProvider_QueryService(IServiceProvider *iface, RE ...@@ -685,6 +685,11 @@ static HRESULT WINAPI ClServiceProvider_QueryService(IServiceProvider *iface, RE
return IShellBrowser_QueryInterface(&This->browser_service->IShellBrowser_iface, riid, ppv); 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); FIXME("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
return E_NOINTERFACE; return E_NOINTERFACE;
......
...@@ -888,6 +888,7 @@ void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* c ...@@ -888,6 +888,7 @@ void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* c
ConnectionPointContainer_Init(&This->cps, (IUnknown*)disp); ConnectionPointContainer_Init(&This->cps, (IUnknown*)disp);
IEHTMLWindow_Init(This); IEHTMLWindow_Init(This);
NewWindowManager_Init(This);
} }
void DocHost_Release(DocHost *This) void DocHost_Release(DocHost *This)
......
...@@ -89,6 +89,11 @@ typedef struct { ...@@ -89,6 +89,11 @@ typedef struct {
DocHost *doc_host; DocHost *doc_host;
} IEHTMLWindow; } IEHTMLWindow;
typedef struct {
INewWindowManager INewWindowManager_iface;
DocHost *doc_host;
} NewWindowManager;
typedef struct _IDocHostContainerVtbl typedef struct _IDocHostContainerVtbl
{ {
ULONG (*addref)(DocHost*); ULONG (*addref)(DocHost*);
...@@ -145,6 +150,7 @@ struct DocHost { ...@@ -145,6 +150,7 @@ struct DocHost {
ConnectionPointContainer cps; ConnectionPointContainer cps;
IEHTMLWindow html_window; IEHTMLWindow html_window;
NewWindowManager nwm;
}; };
struct WebBrowser { struct WebBrowser {
...@@ -233,6 +239,7 @@ void DocHost_Frame_Init(DocHost*) DECLSPEC_HIDDEN; ...@@ -233,6 +239,7 @@ void DocHost_Frame_Init(DocHost*) DECLSPEC_HIDDEN;
void release_dochost_client(DocHost*) DECLSPEC_HIDDEN; void release_dochost_client(DocHost*) DECLSPEC_HIDDEN;
void IEHTMLWindow_Init(DocHost*) DECLSPEC_HIDDEN; void IEHTMLWindow_Init(DocHost*) DECLSPEC_HIDDEN;
void NewWindowManager_Init(DocHost*) DECLSPEC_HIDDEN;
void HlinkFrame_Init(HlinkFrame*,IUnknown*,DocHost*) DECLSPEC_HIDDEN; void HlinkFrame_Init(HlinkFrame*,IUnknown*,DocHost*) DECLSPEC_HIDDEN;
BOOL HlinkFrame_QI(HlinkFrame*,REFIID,void**) DECLSPEC_HIDDEN; BOOL HlinkFrame_QI(HlinkFrame*,REFIID,void**) DECLSPEC_HIDDEN;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
* Implementation of IShellBrowser interface * Implementation of IShellBrowser interface
* *
* Copyright 2011 Piotr Caban for CodeWeavers * Copyright 2011 Piotr Caban for CodeWeavers
* Copyright 2012 Jacek Caban for CodeWeavers
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
...@@ -913,3 +914,69 @@ void detach_browser_service(ShellBrowser *sb) ...@@ -913,3 +914,69 @@ void detach_browser_service(ShellBrowser *sb)
sb->doc_host = NULL; sb->doc_host = NULL;
IShellBrowser_Release(&sb->IShellBrowser_iface); 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment