Module: wine Branch: master Commit: 9ce3e6b7c2bd952a360018b862e27b314de9ee4c URL: http://source.winehq.org/git/wine.git/?a=commit;h=9ce3e6b7c2bd952a360018b862...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Oct 19 23:04:19 2009 +0200
mshtml: Moved creating new element to separated function.
---
dlls/mshtml/htmldoc.c | 22 ++++++---------------- dlls/mshtml/htmlelem.c | 29 +++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 2 ++ 3 files changed, 37 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index ef3085e..f0c6360 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -911,28 +911,18 @@ static HRESULT WINAPI HTMLDocument_createElement(IHTMLDocument2 *iface, BSTR eTa IHTMLElement **newElem) { HTMLDocument *This = HTMLDOC_THIS(iface); - nsIDOMElement *nselem; + nsIDOMHTMLElement *nselem; HTMLElement *elem; - nsAString tag_str; - nsresult nsres; + HRESULT hres;
TRACE("(%p)->(%s %p)\n", This, debugstr_w(eTag), newElem);
- if(!This->nsdoc) { - WARN("NULL nsdoc\n"); - return E_UNEXPECTED; - } - - nsAString_Init(&tag_str, eTag); - nsres = nsIDOMDocument_CreateElement(This->nsdoc, &tag_str, &nselem); - nsAString_Finish(&tag_str); - if(NS_FAILED(nsres)) { - ERR("CreateElement failed: %08x\n", nsres); - return E_FAIL; - } + hres = create_nselem(This->doc_node, eTag, &nselem); + if(FAILED(hres)) + return hres;
elem = HTMLElement_Create(This->doc_node, (nsIDOMNode*)nselem, TRUE); - nsIDOMElement_Release(nselem); + nsIDOMHTMLElement_Release(nselem);
*newElem = HTMLELEM(elem); IHTMLElement_AddRef(HTMLELEM(elem)); diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index d019634..24e8e15 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -38,6 +38,35 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define HTMLELEM_THIS(iface) DEFINE_THIS(HTMLElement, HTMLElement, iface)
+HRESULT create_nselem(HTMLDocumentNode *doc, const WCHAR *tag, nsIDOMHTMLElement **ret) +{ + nsIDOMElement *nselem; + nsAString tag_str; + nsresult nsres; + + if(!doc->basedoc.nsdoc) { + WARN("NULL nsdoc\n"); + return E_UNEXPECTED; + } + + nsAString_Init(&tag_str, tag); + nsres = nsIDOMDocument_CreateElement(doc->basedoc.nsdoc, &tag_str, &nselem); + nsAString_Finish(&tag_str); + if(NS_FAILED(nsres)) { + ERR("CreateElement failed: %08x\n", nsres); + return E_FAIL; + } + + nsres = nsIDOMElement_QueryInterface(nselem, &IID_nsIDOMHTMLElement, (void**)ret); + nsIDOMElement_Release(nselem); + if(NS_FAILED(nsres)) { + ERR("Could not get nsIDOMHTMLElement iface: %08x\n", nsres); + return E_FAIL; + } + + return S_OK; +} + #define HTMLELEM_NODE_THIS(iface) DEFINE_THIS2(HTMLElement, node, iface)
static HRESULT WINAPI HTMLElement_QueryInterface(IHTMLElement *iface, diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 4106500..6fa6ec4 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -659,6 +659,8 @@ void detach_selection(HTMLDocumentNode*); void detach_ranges(HTMLDocumentNode*); HRESULT get_node_text(HTMLDOMNode*,BSTR*);
+HRESULT create_nselem(HTMLDocumentNode*,const WCHAR*,nsIDOMHTMLElement**); + HTMLDOMNode *HTMLDOMTextNode_Create(HTMLDocumentNode*,nsIDOMNode*);
HTMLElement *HTMLElement_Create(HTMLDocumentNode*,nsIDOMNode*,BOOL);