mshtml: Added IProvideMultipleTypeInfo implementation for HTMLElement object.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2017-04-21 13:50:03 +02:00 committed by Alexandre Julliard
parent 78490956f9
commit 2b8b15c22e
2 changed files with 72 additions and 0 deletions

View File

@ -4832,6 +4832,70 @@ static const IElementSelectorVtbl ElementSelectorVtbl = {
ElementSelector_querySelectorAll
};
static inline HTMLElement *impl_from_IProvideMultipleClassInfo(IProvideMultipleClassInfo *iface)
{
return CONTAINING_RECORD(iface, HTMLElement, IProvideMultipleClassInfo_iface);
}
static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideMultipleClassInfo *iface,
REFIID riid, void **ppv)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
return IHTMLElement_QueryInterface(&This->IHTMLElement_iface, riid, ppv);
}
static ULONG WINAPI ProvideClassInfo_AddRef(IProvideMultipleClassInfo *iface)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
return IHTMLElement_AddRef(&This->IHTMLElement_iface);
}
static ULONG WINAPI ProvideClassInfo_Release(IProvideMultipleClassInfo *iface)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
return IHTMLElement_Release(&This->IHTMLElement_iface);
}
static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideMultipleClassInfo *iface, ITypeInfo **ppTI)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
FIXME("(%p)->(%p)\n", This, ppTI);
return E_NOTIMPL;
}
static HRESULT WINAPI ProvideClassInfo2_GetGUID(IProvideMultipleClassInfo *iface, DWORD dwGuidKind, GUID *pGUID)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
FIXME("(%p)->(%u %p)\n", This, dwGuidKind, pGUID);
return E_NOTIMPL;
}
static HRESULT WINAPI ProvideMultipleClassInfo_GetMultiTypeInfoCount(IProvideMultipleClassInfo *iface, ULONG *pcti)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
FIXME("(%p)->(%p)\n", This, pcti);
*pcti = 1;
return S_OK;
}
static HRESULT WINAPI ProvideMultipleClassInfo_GetInfoOfIndex(IProvideMultipleClassInfo *iface, ULONG iti,
DWORD dwFlags, ITypeInfo **pptiCoClass, DWORD *pdwTIFlags, ULONG *pcdispidReserved, IID *piidPrimary, IID *piidSource)
{
HTMLElement *This = impl_from_IProvideMultipleClassInfo(iface);
FIXME("(%p)->(%u %x %p %p %p %p %p)\n", This, iti, dwFlags, pptiCoClass, pdwTIFlags, pcdispidReserved, piidPrimary, piidSource);
return E_NOTIMPL;
}
static const IProvideMultipleClassInfoVtbl ProvideMultipleClassInfoVtbl = {
ProvideClassInfo_QueryInterface,
ProvideClassInfo_AddRef,
ProvideClassInfo_Release,
ProvideClassInfo_GetClassInfo,
ProvideClassInfo2_GetGUID,
ProvideMultipleClassInfo_GetMultiTypeInfoCount,
ProvideMultipleClassInfo_GetInfoOfIndex
};
static inline HTMLElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
{
return CONTAINING_RECORD(iface, HTMLElement, node);
@ -4861,6 +4925,12 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
*ppv = &This->IElementSelector_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
*ppv = &This->cp_container.IConnectionPointContainer_iface;
}else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
*ppv = &This->IProvideMultipleClassInfo_iface;
}else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) {
*ppv = &This->IProvideMultipleClassInfo_iface;
}else if(IsEqualGUID(&IID_IProvideMultipleClassInfo, riid)) {
*ppv = &This->IProvideMultipleClassInfo_iface;
}else {
return HTMLDOMNode_QI(&This->node, riid, ppv);
}
@ -5137,6 +5207,7 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen
This->IHTMLElement6_iface.lpVtbl = &HTMLElement6Vtbl;
This->IHTMLUniqueName_iface.lpVtbl = &HTMLUniqueNameVtbl;
This->IElementSelector_iface.lpVtbl = &ElementSelectorVtbl;
This->IProvideMultipleClassInfo_iface.lpVtbl = &ProvideMultipleClassInfoVtbl;
if(dispex_data && !dispex_data->vtbl)
dispex_data->vtbl = &HTMLElement_dispex_vtbl;

View File

@ -745,6 +745,7 @@ typedef struct {
IHTMLElement6 IHTMLElement6_iface;
IHTMLUniqueName IHTMLUniqueName_iface;
IElementSelector IElementSelector_iface;
IProvideMultipleClassInfo IProvideMultipleClassInfo_iface;
nsIDOMHTMLElement *nselem;
HTMLStyle *style;