diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index e5ae4e0212b..defa10a4625 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -3791,6 +3791,84 @@ static const IHTMLElement4Vtbl HTMLElement4Vtbl = { HTMLElement4_get_onfocusout }; +static inline HTMLElement *impl_from_IHTMLUniqueName(IHTMLUniqueName *iface) +{ + return CONTAINING_RECORD(iface, HTMLElement, IHTMLUniqueName_iface); +} + +static HRESULT WINAPI HTMLUniqueName_QueryInterface(IHTMLUniqueName *iface, REFIID riid, void **ppv) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IHTMLElement_QueryInterface(&This->IHTMLElement_iface, riid, ppv); +} + +static ULONG WINAPI HTMLUniqueName_AddRef(IHTMLUniqueName *iface) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IHTMLElement_AddRef(&This->IHTMLElement_iface); +} + +static ULONG WINAPI HTMLUniqueName_Release(IHTMLUniqueName *iface) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IHTMLElement_Release(&This->IHTMLElement_iface); +} + +static HRESULT WINAPI HTMLUniqueName_GetTypeInfoCount(IHTMLUniqueName *iface, UINT *pctinfo) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo); +} + +static HRESULT WINAPI HTMLUniqueName_GetTypeInfo(IHTMLUniqueName *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI HTMLUniqueName_GetIDsOfNames(IHTMLUniqueName *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames, + lcid, rgDispId); +} + +static HRESULT WINAPI HTMLUniqueName_Invoke(IHTMLUniqueName *iface, DISPID dispIdMember, REFIID riid, + LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid, + wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI HTMLUniqueName_get_uniqueNumber(IHTMLUniqueName *iface, LONG *p) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLUniqueName_get_uniqueID(IHTMLUniqueName *iface, BSTR *p) +{ + HTMLElement *This = impl_from_IHTMLUniqueName(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static const IHTMLUniqueNameVtbl HTMLUniqueNameVtbl = { + HTMLUniqueName_QueryInterface, + HTMLUniqueName_AddRef, + HTMLUniqueName_Release, + HTMLUniqueName_GetTypeInfoCount, + HTMLUniqueName_GetTypeInfo, + HTMLUniqueName_GetIDsOfNames, + HTMLUniqueName_Invoke, + HTMLUniqueName_get_uniqueNumber, + HTMLUniqueName_get_uniqueID +}; + static inline HTMLElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) { return CONTAINING_RECORD(iface, HTMLElement, node); @@ -3812,6 +3890,8 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) *ppv = &This->IHTMLElement3_iface; }else if(IsEqualGUID(&IID_IHTMLElement4, riid)) { *ppv = &This->IHTMLElement4_iface; + }else if(IsEqualGUID(&IID_IHTMLUniqueName, riid)) { + *ppv = &This->IHTMLUniqueName_iface; }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { *ppv = &This->cp_container.IConnectionPointContainer_iface; }else { @@ -4072,6 +4152,7 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen This->IHTMLElement2_iface.lpVtbl = &HTMLElement2Vtbl; This->IHTMLElement3_iface.lpVtbl = &HTMLElement3Vtbl; This->IHTMLElement4_iface.lpVtbl = &HTMLElement4Vtbl; + This->IHTMLUniqueName_iface.lpVtbl = &HTMLUniqueNameVtbl; if(dispex_data && !dispex_data->vtbl) dispex_data->vtbl = &HTMLElement_dispex_vtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 2b8fa827978..b613f70c35c 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -706,6 +706,7 @@ typedef struct { IHTMLElement2 IHTMLElement2_iface; IHTMLElement3 IHTMLElement3_iface; IHTMLElement4 IHTMLElement4_iface; + IHTMLUniqueName IHTMLUniqueName_iface; nsIDOMHTMLElement *nselem; HTMLStyle *style; diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index e90fc708d52..9a9cc85022e 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -179,6 +179,7 @@ static const IID * const doc_obj_iids[] = { &IID_IHTMLElement2, \ &IID_IHTMLElement3, \ &IID_IHTMLElement4, \ + &IID_IHTMLUniqueName, \ &IID_IDispatchEx static const IID * const elem_iids[] = {