HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem) { HTMLTable *ret; nsresult nsres; ret = heap_alloc_zero(sizeof(HTMLTable)); if(!ret) return E_OUTOFMEMORY; ret->element.node.vtbl = &HTMLTableImplVtbl; ret->IHTMLTable_iface.lpVtbl = &HTMLTableVtbl; ret->IHTMLTable2_iface.lpVtbl = &HTMLTable2Vtbl; ret->IHTMLTable3_iface.lpVtbl = &HTMLTable3Vtbl; HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable); /* Share the reference with nsnode */ assert(nsres == NS_OK && (nsIDOMNode*)ret->nstable == ret->element.node.nsnode); nsIDOMNode_Release(ret->element.node.nsnode); *elem = &ret->element; return S_OK; }
HRESULT HTMLBodyElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem) { HTMLBodyElement *ret; nsresult nsres; ret = heap_alloc_zero(sizeof(HTMLBodyElement)); if(!ret) return E_OUTOFMEMORY; ret->IHTMLBodyElement_iface.lpVtbl = &HTMLBodyElementVtbl; 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); ConnectionPoint_Init(&ret->cp_propnotif, &ret->textcont.element.cp_container, &IID_IPropertyNotifySink, NULL); *elem = &ret->textcont.element; return S_OK; }
HRESULT HTMLSelectElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem) { HTMLSelectElement *ret; nsresult nsres; ret = heap_alloc_zero(sizeof(HTMLSelectElement)); if(!ret) return E_OUTOFMEMORY; ret->IHTMLSelectElement_iface.lpVtbl = &HTMLSelectElementVtbl; ret->element.node.vtbl = &HTMLSelectElementImplVtbl; nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLSelectElement, (void**)&ret->nsselect); if(NS_FAILED(nsres)) { ERR("Could not get nsIDOMHTMLSelectElement interfce: %08x\n", nsres); heap_free(ret); return E_FAIL; } HTMLElement_Init(&ret->element, doc, nselem, &HTMLSelectElement_dispex); *elem = &ret->element; return S_OK; }
static HRESULT WINAPI HTMLElement2_get_tabIndex(IHTMLElement2 *iface, short *p) { HTMLElement *This = HTMLELEM2_THIS(iface); nsIDOMNSHTMLElement *nselem; PRInt32 index = 0; nsresult nsres; TRACE("(%p)->(%p)\n", This, p); nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); if(NS_FAILED(nsres)) { ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres); return E_FAIL; } nsres = nsIDOMNSHTMLElement_GetTabIndex(nselem, &index); nsIDOMNSHTMLElement_Release(nselem); if(NS_FAILED(nsres)) { ERR("GetTabIndex failed: %08x\n", nsres); return E_FAIL; } *p = index; return S_OK; }
static HRESULT WINAPI HTMLElement2_get_scrollLeft(IHTMLElement2 *iface, LONG *p) { HTMLElement *This = HTMLELEM2_THIS(iface); nsIDOMNSHTMLElement *nselem; PRInt32 left = 0; nsresult nsres; TRACE("(%p)->(%p)\n", This, p); if(!p) return E_INVALIDARG; if(!This->nselem) { FIXME("NULL nselem\n"); return E_NOTIMPL; } nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); if(NS_SUCCEEDED(nsres)) { nsres = nsIDOMNSHTMLElement_GetScrollLeft(nselem, &left); nsIDOMNSHTMLElement_Release(nselem); if(NS_FAILED(nsres)) left = 0; } *p = left; TRACE("*p = %d\n", *p); return S_OK; }
static HRESULT WINAPI HTMLDocument4_focus(IHTMLDocument4 *iface) { HTMLDocument *This = HTMLDOC4_THIS(iface); nsIDOMNSHTMLElement *nselem; nsIDOMHTMLElement *nsbody; nsresult nsres; TRACE("(%p)->()\n", This); nsres = nsIDOMHTMLDocument_GetBody(This->doc_node->nsdoc, &nsbody); if(NS_FAILED(nsres) || !nsbody) { ERR("GetBody failed: %08x\n", nsres); return E_FAIL; } nsres = nsIDOMHTMLElement_QueryInterface(nsbody, &IID_nsIDOMNSHTMLElement, (void**)&nselem); nsIDOMHTMLElement_Release(nsbody); if(NS_FAILED(nsres)) { ERR("Could not get nsIDOMNSHTMLElement: %08x\n", nsres); return E_FAIL; } nsres = nsIDOMNSHTMLElement_Focus(nselem); nsIDOMNSHTMLElement_Release(nselem); if(NS_FAILED(nsres)) { ERR("Focus failed: %08x\n", nsres); return E_FAIL; } return S_OK; }
void HTMLFrameBase_Init(HTMLFrameBase *This, HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, dispex_static_data_t *dispex_data) { nsresult nsres; This->IHTMLFrameBase_iface.lpVtbl = &HTMLFrameBaseVtbl; This->IHTMLFrameBase2_iface.lpVtbl = &HTMLFrameBase2Vtbl; HTMLElement_Init(&This->element, doc, nselem, dispex_data); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLFrameElement, (void**)&This->nsframe); if(NS_FAILED(nsres)) { nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLIFrameElement, (void**)&This->nsiframe); if(NS_FAILED(nsres)) ERR("Could not get nsIDOMHTML[I]Frame interface\n"); }else This->nsiframe = NULL; }
void HTMLFrameBase_Init(HTMLFrameBase *This, HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, dispex_static_data_t *dispex_data) { nsresult nsres; This->IHTMLFrameBase_iface.lpVtbl = &HTMLFrameBaseVtbl; This->IHTMLFrameBase2_iface.lpVtbl = &HTMLFrameBase2Vtbl; HTMLElement_Init(&This->element, doc, nselem, dispex_data); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLFrameElement, (void**)&This->nsframe); if(NS_FAILED(nsres)) { This->nsframe = NULL; nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLIFrameElement, (void**)&This->nsiframe); assert(nsres == NS_OK && (nsIDOMNode*)This->nsiframe == This->element.node.nsnode); }else { assert((nsIDOMNode*)This->nsframe == This->element.node.nsnode); This->nsiframe = NULL; } /* Share the reference with nsnode */ nsIDOMNode_Release(This->element.node.nsnode); }
HTMLElement *HTMLFormElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem) { HTMLFormElement *ret = heap_alloc_zero(sizeof(HTMLFormElement)); nsresult nsres; ret->lpHTMLFormElementVtbl = &HTMLFormElementVtbl; ret->element.node.vtbl = &HTMLFormElementImplVtbl; HTMLElement_Init(&ret->element, doc, nselem, &HTMLFormElement_dispex); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLFormElement, (void**)&ret->nsform); if(NS_FAILED(nsres)) ERR("Could not get nsIDOMHTMLFormElement interface: %08x\n", nsres); return &ret->element; }
void HTMLInputElement_Create(HTMLElement *element) { HTMLInputElement *ret = mshtml_alloc(sizeof(HTMLInputElement)); nsresult nsres; ret->lpHTMLInputElementVtbl = &HTMLInputElementVtbl; ret->element = element; nsres = nsIDOMHTMLElement_QueryInterface(element->nselem, &IID_nsIDOMHTMLInputElement, (void**)&ret->nsinput); if(NS_FAILED(nsres)) ERR("Could not get nsIDOMHTMLInputElement interface: %08lx\n", nsres); element->impl = (IUnknown*)HTMLINPUT(ret); element->destructor = HTMLInputElement_destructor; }
HTMLElement *HTMLImgElement_Create(nsIDOMHTMLElement *nselem) { HTMLImgElement *ret = heap_alloc_zero(sizeof(HTMLImgElement)); nsresult nsres; ret->lpHTMLImgElementVtbl = &HTMLImgElementVtbl; ret->element.node.vtbl = &HTMLImgElementImplVtbl; nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLImageElement, (void**)&ret->nsimg); if(NS_FAILED(nsres)) ERR("Could not get nsIDOMHTMLImageElement: %08x\n", nsres); init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLIMG(ret), &HTMLImgElement_dispex); HTMLElement_Init(&ret->element); return &ret->element; }
static HRESULT WINAPI HTMLElement2_focus(IHTMLElement2 *iface) { HTMLElement *This = HTMLELEM2_THIS(iface); nsIDOMNSHTMLElement *nselem; nsresult nsres; TRACE("(%p)\n", This); nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); if(NS_SUCCEEDED(nsres)) { nsIDOMNSHTMLElement_focus(nselem); nsIDOMNSHTMLElement_Release(nselem); }else { ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres); } return S_OK; }
HRESULT HTMLStyleElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem) { HTMLStyleElement *ret; nsresult nsres; ret = heap_alloc_zero(sizeof(*ret)); if(!ret) return E_OUTOFMEMORY; ret->IHTMLStyleElement_iface.lpVtbl = &HTMLStyleElementVtbl; ret->element.node.vtbl = &HTMLStyleElementImplVtbl; HTMLElement_Init(&ret->element, doc, nselem, &HTMLStyleElement_dispex); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLStyleElement, (void**)&ret->nsstyle); assert(nsres == NS_OK); *elem = &ret->element; return S_OK; }
static HRESULT WINAPI HTMLElement2_get_clientWidth(IHTMLElement2 *iface, LONG *p) { HTMLElement *This = HTMLELEM2_THIS(iface); nsIDOMNSHTMLElement *nselem; PRInt32 width=0; nsresult nsres; TRACE("(%p)->(%p)\n", This, p); nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); if(NS_SUCCEEDED(nsres)) { nsIDOMNSHTMLElement_GetClientWidth(nselem, &width); nsIDOMNSHTMLElement_Release(nselem); }else { ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres); } *p = width; return S_OK; }
static HRESULT WINAPI HTMLElement2_put_scrollLeft(IHTMLElement2 *iface, LONG v) { HTMLElement *This = HTMLELEM2_THIS(iface); nsIDOMNSHTMLElement *nselem; nsresult nsres; TRACE("(%p)->(%d)\n", This, v); if(!This->nselem) { FIXME("NULL nselem\n"); return E_NOTIMPL; } nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); if(NS_SUCCEEDED(nsres)) { nsIDOMNSHTMLElement_SetScrollLeft(nselem, v); nsIDOMNSHTMLElement_Release(nselem); }else { ERR("Could not get nsIDOMNSHTMLElement interface: %08x\n", nsres); } return S_OK; }
HRESULT HTMLObjectElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem) { HTMLObjectElement *ret; nsresult nsres; ret = heap_alloc_zero(sizeof(*ret)); if(!ret) return E_OUTOFMEMORY; ret->IHTMLObjectElement_iface.lpVtbl = &HTMLObjectElementVtbl; ret->IHTMLObjectElement2_iface.lpVtbl = &HTMLObjectElement2Vtbl; ret->plugin_container.element.node.vtbl = &HTMLObjectElementImplVtbl; HTMLElement_Init(&ret->plugin_container.element, doc, nselem, &HTMLObjectElement_dispex); nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLObjectElement, (void**)&ret->nsobject); /* Share nsobject reference with nsnode */ assert(nsres == NS_OK && (nsIDOMNode*)ret->nsobject == ret->plugin_container.element.node.nsnode); nsIDOMNode_Release(ret->plugin_container.element.node.nsnode); *elem = &ret->plugin_container.element; return S_OK; }