mshtml: Improved error handling in element constructors.
This commit is contained in:
parent
a8b94a0377
commit
ecc551b911
|
@ -534,19 +534,27 @@ static dispex_static_data_t HTMLAnchorElement_dispex = {
|
||||||
HTMLAnchorElement_iface_tids
|
HTMLAnchorElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLAnchorElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLAnchorElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLAnchorElement *ret = heap_alloc_zero(sizeof(HTMLAnchorElement));
|
HTMLAnchorElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLAnchorElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLAnchorElementVtbl = &HTMLAnchorElementVtbl;
|
ret->lpHTMLAnchorElementVtbl = &HTMLAnchorElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLAnchorElementImplVtbl;
|
ret->element.node.vtbl = &HTMLAnchorElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLAnchorElement, (void**)&ret->nsanchor);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLAnchorElement iface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLAnchorElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLAnchorElement_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLAnchorElement, (void**)&ret->nsanchor);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLAnchorElement iface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -812,24 +812,29 @@ static dispex_static_data_t HTMLBodyElement_dispex = {
|
||||||
HTMLBodyElement_iface_tids
|
HTMLBodyElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLBodyElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLBodyElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLBodyElement *ret = heap_alloc_zero(sizeof(HTMLBodyElement));
|
HTMLBodyElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
TRACE("(%p)->(%p)\n", ret, nselem);
|
ret = heap_alloc_zero(sizeof(HTMLBodyElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLBodyElementVtbl = &HTMLBodyElementVtbl;
|
ret->lpHTMLBodyElementVtbl = &HTMLBodyElementVtbl;
|
||||||
ret->textcont.element.node.vtbl = &HTMLBodyElementImplVtbl;
|
ret->textcont.element.node.vtbl = &HTMLBodyElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLBodyElement, (void**)&ret->nsbody);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsDOMHTMLBodyElement: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLTextContainer_Init(&ret->textcont, doc, nselem, &HTMLBodyElement_dispex);
|
HTMLTextContainer_Init(&ret->textcont, doc, nselem, &HTMLBodyElement_dispex);
|
||||||
|
|
||||||
ConnectionPoint_Init(&ret->cp_propnotif, &ret->textcont.element.cp_container, &IID_IPropertyNotifySink, NULL);
|
ConnectionPoint_Init(&ret->cp_propnotif, &ret->textcont.element.cp_container, &IID_IPropertyNotifySink, NULL);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLBodyElement,
|
*elem = &ret->textcont.element;
|
||||||
(void**)&ret->nsbody);
|
return S_OK;
|
||||||
if(NS_FAILED(nsres))
|
|
||||||
ERR("Could not get nsDOMHTMLBodyElement: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->textcont.element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ static const WCHAR trW[] = {'T','R',0};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const WCHAR *name;
|
const WCHAR *name;
|
||||||
HTMLElement *(*constructor)(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT (*constructor)(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
} tag_desc_t;
|
} tag_desc_t;
|
||||||
|
|
||||||
static const tag_desc_t tag_descs[] = {
|
static const tag_desc_t tag_descs[] = {
|
||||||
|
@ -1742,8 +1742,7 @@ HRESULT HTMLElement_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, BOOL use_g
|
||||||
|
|
||||||
tag = get_tag_desc(class_name);
|
tag = get_tag_desc(class_name);
|
||||||
if(tag) {
|
if(tag) {
|
||||||
elem = tag->constructor(doc, nselem);
|
hres = tag->constructor(doc, nselem, &elem);
|
||||||
hres = elem ? S_OK : E_OUTOFMEMORY;
|
|
||||||
}else if(use_generic) {
|
}else if(use_generic) {
|
||||||
hres = HTMLGenericElement_Create(doc, nselem, &elem);
|
hres = HTMLGenericElement_Create(doc, nselem, &elem);
|
||||||
}else {
|
}else {
|
||||||
|
|
|
@ -267,13 +267,18 @@ static dispex_static_data_t HTMLEmbedElement_dispex = {
|
||||||
HTMLEmbedElement_iface_tids
|
HTMLEmbedElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLEmbedElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLEmbedElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLEmbedElement *ret = heap_alloc_zero(sizeof(*ret));
|
HTMLEmbedElement *ret;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(*ret));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpIHTMLEmbedElementVtbl = &HTMLEmbedElementVtbl;
|
ret->lpIHTMLEmbedElementVtbl = &HTMLEmbedElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLEmbedElementImplVtbl;
|
ret->element.node.vtbl = &HTMLEmbedElementImplVtbl;
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLEmbedElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLEmbedElement_dispex);
|
||||||
return &ret->element;
|
*elem = &ret->element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -663,19 +663,27 @@ static dispex_static_data_t HTMLFormElement_dispex = {
|
||||||
HTMLFormElement_iface_tids
|
HTMLFormElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLFormElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLFormElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLFormElement *ret = heap_alloc_zero(sizeof(HTMLFormElement));
|
HTMLFormElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLFormElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLFormElementVtbl = &HTMLFormElementVtbl;
|
ret->lpHTMLFormElementVtbl = &HTMLFormElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLFormElementImplVtbl;
|
ret->element.node.vtbl = &HTMLFormElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLFormElement, (void**)&ret->nsform);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLFormElement interface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLFormElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLFormElement_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLFormElement, (void**)&ret->nsform);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLFormElement interface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -292,16 +292,19 @@ static dispex_static_data_t HTMLFrameElement_dispex = {
|
||||||
HTMLFrameElement_iface_tids
|
HTMLFrameElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLFrameElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLFrameElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLFrameElement *ret;
|
HTMLFrameElement *ret;
|
||||||
|
|
||||||
ret = heap_alloc_zero(sizeof(HTMLFrameElement));
|
ret = heap_alloc_zero(sizeof(HTMLFrameElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->framebase.element.node.vtbl = &HTMLFrameElementImplVtbl;
|
ret->framebase.element.node.vtbl = &HTMLFrameElementImplVtbl;
|
||||||
ret->lpIHTMLFrameElement3Vtbl = &HTMLFrameElement3Vtbl;
|
ret->lpIHTMLFrameElement3Vtbl = &HTMLFrameElement3Vtbl;
|
||||||
|
|
||||||
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLFrameElement_dispex);
|
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLFrameElement_dispex);
|
||||||
|
|
||||||
return &ret->framebase.element;
|
*elem = &ret->framebase.element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,16 +270,19 @@ static dispex_static_data_t HTMLIFrame_dispex = {
|
||||||
HTMLIFrame_iface_tids
|
HTMLIFrame_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLIFrame_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLIFrame_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLIFrame *ret;
|
HTMLIFrame *ret;
|
||||||
|
|
||||||
ret = heap_alloc_zero(sizeof(HTMLIFrame));
|
ret = heap_alloc_zero(sizeof(HTMLIFrame));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpIHTMLIFrameElementVtbl = &HTMLIFrameElementVtbl;
|
ret->lpIHTMLIFrameElementVtbl = &HTMLIFrameElementVtbl;
|
||||||
ret->framebase.element.node.vtbl = &HTMLIFrameImplVtbl;
|
ret->framebase.element.node.vtbl = &HTMLIFrameImplVtbl;
|
||||||
|
|
||||||
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLIFrame_dispex);
|
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLIFrame_dispex);
|
||||||
|
|
||||||
return &ret->framebase.element;
|
*elem = &ret->framebase.element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -666,21 +666,29 @@ static dispex_static_data_t HTMLImgElement_dispex = {
|
||||||
HTMLImgElement_iface_tids
|
HTMLImgElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLImgElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLImgElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLImgElement *ret = heap_alloc_zero(sizeof(HTMLImgElement));
|
HTMLImgElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLImgElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLImgElementVtbl = &HTMLImgElementVtbl;
|
ret->lpHTMLImgElementVtbl = &HTMLImgElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLImgElementImplVtbl;
|
ret->element.node.vtbl = &HTMLImgElementImplVtbl;
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLImageElement, (void**)&ret->nsimg);
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLImageElement, (void**)&ret->nsimg);
|
||||||
if(NS_FAILED(nsres))
|
if(NS_FAILED(nsres)) {
|
||||||
ERR("Could not get nsIDOMHTMLImageElement: %08x\n", nsres);
|
ERR("Could not get nsIDOMHTMLImageElement: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLImgElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLImgElement_dispex);
|
||||||
|
|
||||||
return &ret->element;
|
*elem = &ret->element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HTMLIMGFACTORY_THIS(iface) DEFINE_THIS(HTMLImageElementFactory, HTMLImageElementFactory, iface)
|
#define HTMLIMGFACTORY_THIS(iface) DEFINE_THIS(HTMLImageElementFactory, HTMLImageElementFactory, iface)
|
||||||
|
|
|
@ -1212,21 +1212,28 @@ static dispex_static_data_t HTMLInputElement_dispex = {
|
||||||
HTMLInputElement_iface_tids
|
HTMLInputElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLInputElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLInputElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLInputElement *ret = heap_alloc_zero(sizeof(HTMLInputElement));
|
HTMLInputElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLInputElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLInputElementVtbl = &HTMLInputElementVtbl;
|
ret->lpHTMLInputElementVtbl = &HTMLInputElementVtbl;
|
||||||
ret->lpHTMLInputTextElementVtbl = &HTMLInputTextElementVtbl;
|
ret->lpHTMLInputTextElementVtbl = &HTMLInputTextElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLInputElementImplVtbl;
|
ret->element.node.vtbl = &HTMLInputElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLInputElement, (void**)&ret->nsinput);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLInputElement interface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLInputElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLInputElement_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLInputElement,
|
*elem = &ret->element;
|
||||||
(void**)&ret->nsinput);
|
return S_OK;
|
||||||
if(NS_FAILED(nsres))
|
|
||||||
ERR("Could not get nsIDOMHTMLInputElement interface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -457,19 +457,27 @@ static dispex_static_data_t HTMLObjectElement_dispex = {
|
||||||
HTMLObjectElement_iface_tids
|
HTMLObjectElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLObjectElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLObjectElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLObjectElement *ret = heap_alloc_zero(sizeof(*ret));
|
HTMLObjectElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(*ret));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpIHTMLObjectElementVtbl = &HTMLObjectElementVtbl;
|
ret->lpIHTMLObjectElementVtbl = &HTMLObjectElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLObjectElementImplVtbl;
|
ret->element.node.vtbl = &HTMLObjectElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLObjectElement, (void**)&ret->nsobject);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLObjectElement iface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLObjectElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLObjectElement_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLObjectElement, (void**)&ret->nsobject);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLObjectElement iface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -356,21 +356,29 @@ static dispex_static_data_t HTMLOptionElement_dispex = {
|
||||||
HTMLOptionElement_iface_tids
|
HTMLOptionElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLOptionElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLOptionElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLOptionElement *ret = heap_alloc_zero(sizeof(HTMLOptionElement));
|
HTMLOptionElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLOptionElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLOptionElementVtbl = &HTMLOptionElementVtbl;
|
ret->lpHTMLOptionElementVtbl = &HTMLOptionElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLOptionElementImplVtbl;
|
ret->element.node.vtbl = &HTMLOptionElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLOptionElement, (void**)&ret->nsoption);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLOptionElement interface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLOptionElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLOptionElement_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLOptionElement, (void**)&ret->nsoption);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLOptionElement interface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HTMLOPTFACTORY_THIS(iface) DEFINE_THIS(HTMLOptionElementFactory, HTMLOptionElementFactory, iface)
|
#define HTMLOPTFACTORY_THIS(iface) DEFINE_THIS(HTMLOptionElementFactory, HTMLOptionElementFactory, iface)
|
||||||
|
|
|
@ -343,19 +343,27 @@ static dispex_static_data_t HTMLScriptElement_dispex = {
|
||||||
HTMLScriptElement_iface_tids
|
HTMLScriptElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLScriptElement *ret = heap_alloc_zero(sizeof(HTMLScriptElement));
|
HTMLScriptElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLScriptElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLScriptElementVtbl = &HTMLScriptElementVtbl;
|
ret->lpHTMLScriptElementVtbl = &HTMLScriptElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLScriptElementImplVtbl;
|
ret->element.node.vtbl = &HTMLScriptElementImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLScriptElement, (void**)&ret->nsscript);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLScriptElement: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLScriptElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLScriptElement_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLScriptElement, (void**)&ret->nsscript);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLScriptElement: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -636,20 +636,28 @@ static dispex_static_data_t HTMLSelectElement_dispex = {
|
||||||
HTMLSelectElement_tids
|
HTMLSelectElement_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLSelectElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLSelectElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLSelectElement *ret = heap_alloc_zero(sizeof(HTMLSelectElement));
|
HTMLSelectElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLSelectElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLSelectElementVtbl = &HTMLSelectElementVtbl;
|
ret->lpHTMLSelectElementVtbl = &HTMLSelectElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLSelectElementImplVtbl;
|
ret->element.node.vtbl = &HTMLSelectElementImplVtbl;
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLSelectElement_dispex);
|
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLSelectElement,
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLSelectElement,
|
||||||
(void**)&ret->nsselect);
|
(void**)&ret->nsselect);
|
||||||
if(NS_FAILED(nsres))
|
if(NS_FAILED(nsres)) {
|
||||||
ERR("Could not get nsIDOMHTMLSelectElement interfce: %08x\n", nsres);
|
ERR("Could not get nsIDOMHTMLSelectElement interfce: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
return &ret->element;
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLSelectElement_dispex);
|
||||||
|
|
||||||
|
*elem = &ret->element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,13 +267,18 @@ static dispex_static_data_t HTMLStyleElement_dispex = {
|
||||||
HTMLStyleElement_iface_tids
|
HTMLStyleElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLStyleElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLStyleElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLStyleElement *ret = heap_alloc_zero(sizeof(*ret));
|
HTMLStyleElement *ret;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(*ret));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpIHTMLStyleElementVtbl = &HTMLStyleElementVtbl;
|
ret->lpIHTMLStyleElementVtbl = &HTMLStyleElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLStyleElementImplVtbl;
|
ret->element.node.vtbl = &HTMLStyleElementImplVtbl;
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLStyleElement_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLStyleElement_dispex);
|
||||||
return &ret->element;
|
*elem = &ret->element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -571,21 +571,28 @@ static dispex_static_data_t HTMLTable_dispex = {
|
||||||
HTMLTable_iface_tids
|
HTMLTable_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLTable *ret = heap_alloc_zero(sizeof(HTMLTable));
|
HTMLTable *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLTable));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->element.node.vtbl = &HTMLTableImplVtbl;
|
ret->element.node.vtbl = &HTMLTableImplVtbl;
|
||||||
ret->lpHTMLTableVtbl = &HTMLTableVtbl;
|
ret->lpHTMLTableVtbl = &HTMLTableVtbl;
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex);
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLTableElement iface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex);
|
||||||
ConnectionPoint_Init(&ret->cp, &ret->element.cp_container, &DIID_HTMLTableEvents, NULL);
|
ConnectionPoint_Init(&ret->cp, &ret->element.cp_container, &DIID_HTMLTableEvents, NULL);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLTableElement iface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -314,19 +314,27 @@ static dispex_static_data_t HTMLTableRow_dispex = {
|
||||||
HTMLTableRow_iface_tids
|
HTMLTableRow_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLTableRow_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLTableRow_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLTableRow *ret = heap_alloc_zero(sizeof(HTMLTableRow));
|
HTMLTableRow *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLTableRow));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLTableRowVtbl = &HTMLTableRowVtbl;
|
ret->lpHTMLTableRowVtbl = &HTMLTableRowVtbl;
|
||||||
ret->element.node.vtbl = &HTMLTableRowImplVtbl;
|
ret->element.node.vtbl = &HTMLTableRowImplVtbl;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableRowElement, (void**)&ret->nsrow);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMHTMLTableRowElement iface: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableRow_dispex);
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableRow_dispex);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableRowElement, (void**)&ret->nsrow);
|
*elem = &ret->element;
|
||||||
if(NS_FAILED(nsres))
|
return S_OK;
|
||||||
ERR("Could not get nsIDOMHTMLTableRowElement iface: %08x\n", nsres);
|
|
||||||
|
|
||||||
return &ret->element;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -464,20 +464,28 @@ static dispex_static_data_t HTMLTextAreaElement_dispex = {
|
||||||
HTMLTextAreaElement_iface_tids
|
HTMLTextAreaElement_iface_tids
|
||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement *HTMLTextAreaElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
HRESULT HTMLTextAreaElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||||
{
|
{
|
||||||
HTMLTextAreaElement *ret = heap_alloc_zero(sizeof(HTMLTextAreaElement));
|
HTMLTextAreaElement *ret;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(HTMLTextAreaElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret->lpHTMLTextAreaElementVtbl = &HTMLTextAreaElementVtbl;
|
ret->lpHTMLTextAreaElementVtbl = &HTMLTextAreaElementVtbl;
|
||||||
ret->element.node.vtbl = &HTMLTextAreaElementImplVtbl;
|
ret->element.node.vtbl = &HTMLTextAreaElementImplVtbl;
|
||||||
|
|
||||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTextAreaElement_dispex);
|
|
||||||
|
|
||||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTextAreaElement,
|
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTextAreaElement,
|
||||||
(void**)&ret->nstextarea);
|
(void**)&ret->nstextarea);
|
||||||
if(NS_FAILED(nsres))
|
if(NS_FAILED(nsres)) {
|
||||||
ERR("Could not get nsDOMHTMLInputElement: %08x\n", nsres);
|
ERR("Could not get nsDOMHTMLInputElement: %08x\n", nsres);
|
||||||
|
heap_free(ret);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
return &ret->element;
|
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTextAreaElement_dispex);
|
||||||
|
|
||||||
|
*elem = &ret->element;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -822,22 +822,22 @@ HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**);
|
||||||
|
|
||||||
HRESULT HTMLElement_Create(HTMLDocumentNode*,nsIDOMNode*,BOOL,HTMLElement**);
|
HRESULT HTMLElement_Create(HTMLDocumentNode*,nsIDOMNode*,BOOL,HTMLElement**);
|
||||||
HRESULT HTMLCommentElement_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLElement**);
|
HRESULT HTMLCommentElement_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLElement**);
|
||||||
HTMLElement *HTMLAnchorElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLAnchorElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLBodyElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLBodyElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLEmbedElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLEmbedElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLFormElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLFormElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLFrameElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLFrameElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLIFrame_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLIFrame_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLStyleElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLStyleElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLImgElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLImgElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLInputElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLInputElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLObjectElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLObjectElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLOptionElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLOptionElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLScriptElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLSelectElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLSelectElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLTable_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLTable_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLTableRow_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLTableRow_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HTMLElement *HTMLTextAreaElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*);
|
HRESULT HTMLTextAreaElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
HRESULT HTMLGenericElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
HRESULT HTMLGenericElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**);
|
||||||
|
|
||||||
void HTMLDOMNode_Init(HTMLDocumentNode*,HTMLDOMNode*,nsIDOMNode*);
|
void HTMLDOMNode_Init(HTMLDocumentNode*,HTMLDOMNode*,nsIDOMNode*);
|
||||||
|
|
Loading…
Reference in New Issue