mshtml: Added PluginHost's IAdviseSinkEx stub implementation.

This commit is contained in:
Jacek Caban 2010-12-06 18:49:16 +01:00 committed by Alexandre Julliard
parent 410501e6c9
commit 546f4bf5e3
3 changed files with 98 additions and 2 deletions

View File

@ -63,7 +63,7 @@ static void activate_plugin(PluginHost *host)
container.pClientSite = &host->IOleClientSite_iface;
container.dwAmbientFlags = QACONTAINER_SUPPORTSMNEMONICS|QACONTAINER_MESSAGEREFLECT|QACONTAINER_USERMODE;
container.pAdviseSink = NULL; /* FIXME */
container.pAdviseSink = &host->IAdviseSinkEx_iface;
container.pPropertyNotifySink = NULL; /* FIXME */
hres = IQuickActivate_QuickActivate(quick_activate, &container, &control);
@ -102,6 +102,12 @@ static HRESULT WINAPI PHClientSite_QueryInterface(IOleClientSite *iface, REFIID
}else if(IsEqualGUID(&IID_IOleClientSite, riid)) {
TRACE("(%p)->(IID_IOleClientSite %p)\n", This, ppv);
*ppv = &This->IOleClientSite_iface;
}else if(IsEqualGUID(&IID_IAdviseSink, riid)) {
TRACE("(%p)->(IID_IAdviseSink %p)\n", This, ppv);
*ppv = &This->IAdviseSinkEx_iface;
}else if(IsEqualGUID(&IID_IAdviseSinkEx, riid)) {
TRACE("(%p)->(IID_IAdviseSinkEx %p)\n", This, ppv);
*ppv = &This->IAdviseSinkEx_iface;
}else {
WARN("Unsupported interface %s\n", debugstr_guid(riid));
*ppv = NULL;
@ -193,6 +199,77 @@ static const IOleClientSiteVtbl OleClientSiteVtbl = {
PHClientSite_RequestNewObjectLayout
};
static inline PluginHost *impl_from_IAdviseSinkEx(IAdviseSinkEx *iface)
{
return CONTAINING_RECORD(iface, PluginHost, IAdviseSinkEx_iface);
}
static HRESULT WINAPI PHAdviseSinkEx_QueryInterface(IAdviseSinkEx *iface, REFIID riid, void **ppv)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
return IOleClientSite_QueryInterface(&This->IOleClientSite_iface, riid, ppv);
}
static ULONG WINAPI PHAdviseSinkEx_AddRef(IAdviseSinkEx *iface)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
return IOleClientSite_AddRef(&This->IOleClientSite_iface);
}
static ULONG WINAPI PHAdviseSinkEx_Release(IAdviseSinkEx *iface)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
return IOleClientSite_Release(&This->IOleClientSite_iface);
}
static void WINAPI PHAdviseSinkEx_OnDataChange(IAdviseSinkEx *iface, FORMATETC *pFormatetc, STGMEDIUM *pStgMedium)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
FIXME("(%p)->(%p %p)\n", This, pFormatetc, pStgMedium);
}
static void WINAPI PHAdviseSinkEx_OnViewChange(IAdviseSinkEx *iface, DWORD dwAspect, LONG lindex)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
FIXME("(%p)->(%d %d)\n", This, dwAspect, lindex);
}
static void WINAPI PHAdviseSinkEx_OnRename(IAdviseSinkEx *iface, IMoniker *pmk)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
FIXME("(%p)->(%p)\n", This, pmk);
}
static void WINAPI PHAdviseSinkEx_OnSave(IAdviseSinkEx *iface)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
FIXME("(%p)\n", This);
}
static void WINAPI PHAdviseSinkEx_OnClose(IAdviseSinkEx *iface)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
FIXME("(%p)\n", This);
}
static void WINAPI PHAdviseSinkEx_OnViewStatusChange(IAdviseSinkEx *iface, DWORD dwViewStatus)
{
PluginHost *This = impl_from_IAdviseSinkEx(iface);
FIXME("(%p)->(%d)\n", This, dwViewStatus);
}
static const IAdviseSinkExVtbl AdviseSinkExVtbl = {
PHAdviseSinkEx_QueryInterface,
PHAdviseSinkEx_AddRef,
PHAdviseSinkEx_Release,
PHAdviseSinkEx_OnDataChange,
PHAdviseSinkEx_OnViewChange,
PHAdviseSinkEx_OnRename,
PHAdviseSinkEx_OnSave,
PHAdviseSinkEx_OnClose,
PHAdviseSinkEx_OnViewStatusChange
};
HRESULT create_plugin_host(IUnknown *unk, PluginHost **ret)
{
PluginHost *host;
@ -202,6 +279,7 @@ HRESULT create_plugin_host(IUnknown *unk, PluginHost **ret)
return E_OUTOFMEMORY;
host->IOleClientSite_iface.lpVtbl = &OleClientSiteVtbl;
host->IAdviseSinkEx_iface.lpVtbl = &AdviseSinkExVtbl;
host->ref = 1;

View File

@ -20,6 +20,7 @@ typedef struct HTMLObjectElement HTMLObjectElement;
typedef struct {
IOleClientSite IOleClientSite_iface;
IAdviseSinkEx IAdviseSinkEx_iface;
LONG ref;

View File

@ -87,6 +87,21 @@ static const char object_ax_str[] =
"</object>"
"</body></html>";
static BOOL iface_cmp(IUnknown *iface1, IUnknown *iface2)
{
IUnknown *unk1, *unk2;
if(iface1 == iface2)
return TRUE;
IUnknown_QueryInterface(iface1, &IID_IUnknown, (void**)&unk1);
IUnknown_Release(unk1);
IUnknown_QueryInterface(iface2, &IID_IUnknown, (void**)&unk2);
IUnknown_Release(unk2);
return unk1 == unk2;
}
static HRESULT ax_qi(REFIID,void**);
static HRESULT WINAPI OleControl_QueryInterface(IOleControl *iface, REFIID riid, void **ppv)
@ -165,7 +180,6 @@ static HRESULT WINAPI QuickActivate_QuickActivate(IQuickActivate *iface, QACONTA
ok(container != NULL, "container == NULL\n");
ok(container->cbSize == sizeof(*container), "container->cbSize = %d\n", container->cbSize);
ok(container->pClientSite != NULL, "container->pClientSite == NULL\n");
todo_wine
ok(container->pAdviseSink != NULL, "container->pAdviseSink == NULL\n");
todo_wine
ok(container->pPropertyNotifySink != NULL, "container->pPropertyNotifySink == NULL\n");
@ -193,6 +207,9 @@ static HRESULT WINAPI QuickActivate_QuickActivate(IQuickActivate *iface, QACONTA
ok(!control->dwPropNotifyCookie, "control->dwPropNotifyCookie = %x\n", control->dwPropNotifyCookie);
ok(!control->dwPointerActivationPolicy, "control->dwPointerActivationPolicy = %x\n", control->dwPointerActivationPolicy);
ok(iface_cmp((IUnknown*)container->pClientSite, (IUnknown*)container->pAdviseSink),
"container->pClientSite != container->pAdviseSink\n");
return S_OK;
}