static HRESULT WINAPI HTMLDocument3_createTextNode(IHTMLDocument3 *iface, BSTR text, IHTMLDOMNode **newTextNode) { HTMLDocument *This = impl_from_IHTMLDocument3(iface); nsIDOMText *nstext; HTMLDOMNode *node; nsAString text_str; nsresult nsres; HRESULT hres; TRACE("(%p)->(%s %p)\n", This, debugstr_w(text), newTextNode); if(!This->doc_node->nsdoc) { WARN("NULL nsdoc\n"); return E_UNEXPECTED; } nsAString_InitDepend(&text_str, text); nsres = nsIDOMHTMLDocument_CreateTextNode(This->doc_node->nsdoc, &text_str, &nstext); nsAString_Finish(&text_str); if(NS_FAILED(nsres)) { ERR("CreateTextNode failed: %08x\n", nsres); return E_FAIL; } hres = HTMLDOMTextNode_Create(This->doc_node, (nsIDOMNode*)nstext, &node); nsIDOMText_Release(nstext); if(FAILED(hres)) return hres; *newTextNode = &node->IHTMLDOMNode_iface; return S_OK; }
static HRESULT WINAPI HTMLDOMTextNode_splitText(IHTMLDOMTextNode *iface, LONG offset, IHTMLDOMNode **pRetNode) { HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface); HTMLDOMNode *node; nsIDOMText *text; nsresult nsres; HRESULT hres; TRACE("(%p)->(%d %p)\n", This, offset, pRetNode); nsres = nsIDOMText_SplitText(This->nstext, offset, &text); if(NS_FAILED(nsres)) { ERR("SplitText failed: %x08x\n", nsres); return E_FAIL; } if(!text) { *pRetNode = NULL; return S_OK; } hres = get_node(This->node.doc, (nsIDOMNode*)text, TRUE, &node); nsIDOMText_Release(text); if(FAILED(hres)) return hres; *pRetNode = &node->IHTMLDOMNode_iface; return S_OK; }