mshtml: Added IDispatchEx support to HTMLLocation object.
This commit is contained in:
parent
cd31fd393e
commit
a2ac4d2323
|
@ -106,6 +106,7 @@ static REFIID tid_ids[] = {
|
||||||
&IID_IHTMLGenericElement,
|
&IID_IHTMLGenericElement,
|
||||||
&IID_IHTMLImgElement,
|
&IID_IHTMLImgElement,
|
||||||
&IID_IHTMLInputElement,
|
&IID_IHTMLInputElement,
|
||||||
|
&IID_IHTMLLocation,
|
||||||
&IID_IHTMLOptionElement,
|
&IID_IHTMLOptionElement,
|
||||||
&IID_IHTMLSelectElement,
|
&IID_IHTMLSelectElement,
|
||||||
&IID_IHTMLStyle,
|
&IID_IHTMLStyle,
|
||||||
|
|
|
@ -43,12 +43,11 @@ static HRESULT WINAPI HTMLLocation_QueryInterface(IHTMLLocation *iface, REFIID r
|
||||||
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
||||||
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
|
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
|
||||||
*ppv = HTMLLOCATION(This);
|
*ppv = HTMLLOCATION(This);
|
||||||
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
|
|
||||||
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
|
|
||||||
*ppv = HTMLLOCATION(This);
|
|
||||||
}else if(IsEqualGUID(&IID_IHTMLLocation, riid)) {
|
}else if(IsEqualGUID(&IID_IHTMLLocation, riid)) {
|
||||||
TRACE("(%p)->(IID_IHTMLLocation %p)\n", This, ppv);
|
TRACE("(%p)->(IID_IHTMLLocation %p)\n", This, ppv);
|
||||||
*ppv = HTMLLOCATION(This);
|
*ppv = HTMLLOCATION(This);
|
||||||
|
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
|
||||||
|
return *ppv ? S_OK : E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(*ppv) {
|
if(*ppv) {
|
||||||
|
@ -293,6 +292,18 @@ static const IHTMLLocationVtbl HTMLLocationVtbl = {
|
||||||
HTMLLocation_toString
|
HTMLLocation_toString
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const tid_t HTMLLocation_iface_tids[] = {
|
||||||
|
IHTMLLocation_tid,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
static dispex_static_data_t HTMLLocation_dispex = {
|
||||||
|
NULL,
|
||||||
|
IHTMLLocation_tid,
|
||||||
|
NULL,
|
||||||
|
HTMLLocation_iface_tids
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
HTMLLocation *HTMLLocation_Create(HTMLDocument *doc)
|
HTMLLocation *HTMLLocation_Create(HTMLDocument *doc)
|
||||||
{
|
{
|
||||||
HTMLLocation *ret = heap_alloc(sizeof(*ret));
|
HTMLLocation *ret = heap_alloc(sizeof(*ret));
|
||||||
|
@ -301,5 +312,7 @@ HTMLLocation *HTMLLocation_Create(HTMLDocument *doc)
|
||||||
ret->ref = 1;
|
ret->ref = 1;
|
||||||
ret->doc = doc;
|
ret->doc = doc;
|
||||||
|
|
||||||
|
init_dispex(&ret->dispex, (IUnknown*)HTMLLOCATION(ret), &HTMLLocation_dispex);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,6 +102,7 @@ typedef enum {
|
||||||
IHTMLGenericElement_tid,
|
IHTMLGenericElement_tid,
|
||||||
IHTMLImgElement_tid,
|
IHTMLImgElement_tid,
|
||||||
IHTMLInputElement_tid,
|
IHTMLInputElement_tid,
|
||||||
|
IHTMLLocation_tid,
|
||||||
IHTMLOptionElement_tid,
|
IHTMLOptionElement_tid,
|
||||||
IHTMLSelectElement_tid,
|
IHTMLSelectElement_tid,
|
||||||
IHTMLStyle_tid,
|
IHTMLStyle_tid,
|
||||||
|
@ -199,6 +200,7 @@ struct ConnectionPoint {
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
DispatchEx dispex;
|
||||||
const IHTMLLocationVtbl *lpHTMLLocationVtbl;
|
const IHTMLLocationVtbl *lpHTMLLocationVtbl;
|
||||||
|
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
|
|
@ -2207,6 +2207,7 @@ static void test_location(IHTMLDocument2 *doc)
|
||||||
IHTMLLocation_Release(location2);
|
IHTMLLocation_Release(location2);
|
||||||
|
|
||||||
test_ifaces((IUnknown*)location, location_iids);
|
test_ifaces((IUnknown*)location, location_iids);
|
||||||
|
test_disp((IUnknown*)location, &IID_IHTMLLocation);
|
||||||
|
|
||||||
ref = IHTMLLocation_Release(location);
|
ref = IHTMLLocation_Release(location);
|
||||||
ok(!ref, "location chould be destroyed here\n");
|
ok(!ref, "location chould be destroyed here\n");
|
||||||
|
|
Loading…
Reference in New Issue