static HRESULT WINAPI HTMLTextAreaElement_get_form(IHTMLTextAreaElement *iface, IHTMLFormElement **p) { HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface); nsIDOMHTMLFormElement *nsform; nsIDOMNode *nsnode; HTMLDOMNode *node; nsresult nsres; HRESULT hres; TRACE("(%p)->(%p)\n", This, p); nsres = nsIDOMHTMLTextAreaElement_GetForm(This->nstextarea, &nsform); assert(nsres == NS_OK); if(!nsform) { *p = NULL; return S_OK; } nsres = nsIDOMHTMLFormElement_QueryInterface(nsform, &IID_nsIDOMNode, (void**)&nsnode); nsIDOMHTMLFormElement_Release(nsform); assert(nsres == NS_OK); hres = get_node(This->element.node.doc, nsnode, TRUE, &node); nsIDOMNode_Release(nsnode); if(FAILED(hres)) return hres; hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLFormElement, (void**)p); IHTMLDOMNode_Release(&node->IHTMLDOMNode_iface); return hres; }
static void HTMLFormElement_destructor(HTMLDOMNode *iface) { HTMLFormElement *This = HTMLFORM_NODE_THIS(iface); if(This->nsform) nsIDOMHTMLFormElement_Release(This->nsform); HTMLElement_destructor(&This->element.node); }
static void HTMLFormElement_destructor(HTMLDOMNode *iface) { HTMLFormElement *This = impl_from_HTMLDOMNode(iface); if(This->nsform) nsIDOMHTMLFormElement_Release(This->nsform); HTMLElement_destructor(&This->element.node); }
static void HTMLFormElement_unlink(HTMLDOMNode *iface) { HTMLFormElement *This = impl_from_HTMLDOMNode(iface); if(This->nsform) { nsIDOMHTMLFormElement *nsform = This->nsform; This->nsform = NULL; nsIDOMHTMLFormElement_Release(nsform); } }
static HRESULT WINAPI HTMLSelectElement_get_form(IHTMLSelectElement *iface, IHTMLFormElement **p) { HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface); nsIDOMHTMLFormElement *nsform; nsIDOMNode *form_node; HTMLDOMNode *node; HRESULT hres; nsresult nsres; TRACE("(%p)->(%p)\n", This, p); if(!p) return E_POINTER; nsres = nsIDOMHTMLSelectElement_GetForm(This->nsselect, &nsform); FIXME("get form %08x : %p\n", nsres, nsform); if (NS_FAILED(nsres)) { ERR("GetForm failed: %08x, nsform: %p\n", nsres, nsform); *p = NULL; return E_FAIL; } if (nsform == NULL) { TRACE("nsform not found\n"); *p = NULL; return S_OK; } nsres = nsIDOMHTMLFormElement_QueryInterface(nsform, &IID_nsIDOMNode, (void**)&form_node); nsIDOMHTMLFormElement_Release(nsform); assert(nsres == NS_OK); hres = get_node(This->element.node.doc, form_node, TRUE, &node); nsIDOMNode_Release(form_node); if (FAILED(hres)) return hres; hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)p); node_release(node); return hres; }