mirror of
https://github.com/reactos/wine.git
synced 2024-11-24 20:30:01 +00:00
mshtml: Added IHTMLSelectionObject2 stub implementation.
This commit is contained in:
parent
88edfb5701
commit
9374056644
@ -177,6 +177,7 @@ typedef struct event_target_t event_target_t;
|
||||
XIID(IHTMLScriptElement) \
|
||||
XIID(IHTMLSelectElement) \
|
||||
XIID(IHTMLSelectionObject) \
|
||||
XIID(IHTMLSelectionObject2) \
|
||||
XIID(IHTMLStorage) \
|
||||
XIID(IHTMLStyle) \
|
||||
XIID(IHTMLStyle2) \
|
||||
|
@ -34,6 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
||||
typedef struct {
|
||||
DispatchEx dispex;
|
||||
IHTMLSelectionObject IHTMLSelectionObject_iface;
|
||||
IHTMLSelectionObject2 IHTMLSelectionObject2_iface;
|
||||
|
||||
LONG ref;
|
||||
|
||||
@ -61,6 +62,8 @@ static HRESULT WINAPI HTMLSelectionObject_QueryInterface(IHTMLSelectionObject *i
|
||||
*ppv = &This->IHTMLSelectionObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLSelectionObject, riid)) {
|
||||
*ppv = &This->IHTMLSelectionObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLSelectionObject2, riid)) {
|
||||
*ppv = &This->IHTMLSelectionObject2_iface;
|
||||
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
}else {
|
||||
@ -234,13 +237,100 @@ static const IHTMLSelectionObjectVtbl HTMLSelectionObjectVtbl = {
|
||||
HTMLSelectionObject_get_type
|
||||
};
|
||||
|
||||
static inline HTMLSelectionObject *impl_from_IHTMLSelectionObject2(IHTMLSelectionObject2 *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLSelectionObject, IHTMLSelectionObject2_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_QueryInterface(IHTMLSelectionObject2 *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IHTMLSelectionObject_QueryInterface(&This->IHTMLSelectionObject_iface, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLSelectionObject2_AddRef(IHTMLSelectionObject2 *iface)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IHTMLSelectionObject_AddRef(&This->IHTMLSelectionObject_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLSelectionObject2_Release(IHTMLSelectionObject2 *iface)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IHTMLSelectionObject_Release(&This->IHTMLSelectionObject_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_GetTypeInfoCount(IHTMLSelectionObject2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_GetTypeInfo(IHTMLSelectionObject2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_GetIDsOfNames(IHTMLSelectionObject2 *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_Invoke(IHTMLSelectionObject2 *iface, DISPID dispIdMember,
|
||||
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
|
||||
EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_createRangeCollection(IHTMLSelectionObject2 *iface, IDispatch **rangeCollection)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, rangeCollection);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_get_typeDetail(IHTMLSelectionObject2 *iface, BSTR *p)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IHTMLSelectionObject2Vtbl HTMLSelectionObject2Vtbl = {
|
||||
HTMLSelectionObject2_QueryInterface,
|
||||
HTMLSelectionObject2_AddRef,
|
||||
HTMLSelectionObject2_Release,
|
||||
HTMLSelectionObject2_GetTypeInfoCount,
|
||||
HTMLSelectionObject2_GetTypeInfo,
|
||||
HTMLSelectionObject2_GetIDsOfNames,
|
||||
HTMLSelectionObject2_Invoke,
|
||||
HTMLSelectionObject2_createRangeCollection,
|
||||
HTMLSelectionObject2_get_typeDetail
|
||||
};
|
||||
|
||||
static const tid_t HTMLSelectionObject_iface_tids[] = {
|
||||
IHTMLSelectionObject_tid,
|
||||
IHTMLSelectionObject2_tid,
|
||||
0
|
||||
};
|
||||
static dispex_static_data_t HTMLSelectionObject_dispex = {
|
||||
NULL,
|
||||
IHTMLSelectionObject_tid,
|
||||
IHTMLSelectionObject_tid, /* FIXME: We have a test for that, but it doesn't expose IHTMLSelectionObject2 iface. */
|
||||
NULL,
|
||||
HTMLSelectionObject_iface_tids
|
||||
};
|
||||
@ -256,6 +346,7 @@ HRESULT HTMLSelectionObject_Create(HTMLDocumentNode *doc, nsISelection *nsselect
|
||||
init_dispex(&selection->dispex, (IUnknown*)&selection->IHTMLSelectionObject_iface, &HTMLSelectionObject_dispex);
|
||||
|
||||
selection->IHTMLSelectionObject_iface.lpVtbl = &HTMLSelectionObjectVtbl;
|
||||
selection->IHTMLSelectionObject2_iface.lpVtbl = &HTMLSelectionObject2Vtbl;
|
||||
selection->ref = 1;
|
||||
selection->nsselection = nsselection; /* We shouldn't call AddRef here */
|
||||
|
||||
|
@ -430,6 +430,15 @@ static const IID * const img_factory_iids[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
static const IID * const selection_iids[] = {
|
||||
&IID_IUnknown,
|
||||
&IID_IDispatch,
|
||||
&IID_IDispatchEx,
|
||||
&IID_IHTMLSelectionObject,
|
||||
&IID_IHTMLSelectionObject2,
|
||||
NULL
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
const char *tag;
|
||||
REFIID *iids;
|
||||
@ -5151,6 +5160,7 @@ static void test_txtrange(IHTMLDocument2 *doc)
|
||||
ok(hres == S_OK, "IHTMLDocument2_get_selection failed: %08x\n", hres);
|
||||
|
||||
test_disp((IUnknown*)selection, &IID_IHTMLSelectionObject, "[object]");
|
||||
test_ifaces((IUnknown*)selection, selection_iids);
|
||||
|
||||
hres = IHTMLSelectionObject_createRange(selection, &disp_range);
|
||||
ok(hres == S_OK, "IHTMLSelectionObject_createRange failed: %08x\n", hres);
|
||||
|
Loading…
Reference in New Issue
Block a user