Jacek Caban : mshtml: Added support for IHTMLScriptElement:: put_src on detached elements.
Alexandre Julliard
julliard at winehq.org
Tue Oct 16 15:27:47 CDT 2012
Module: wine
Branch: master
Commit: b882b18402aeafd22501602969bc096145517b57
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b882b18402aeafd22501602969bc096145517b57
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Oct 16 17:09:52 2012 +0200
mshtml: Added support for IHTMLScriptElement::put_src on detached elements.
---
dlls/mshtml/htmlscript.c | 5 +++--
dlls/mshtml/htmlscript.h | 1 +
dlls/mshtml/mutation.c | 19 +++++++++++++++++++
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c
index 75e65f1..befc577 100644
--- a/dlls/mshtml/htmlscript.c
+++ b/dlls/mshtml/htmlscript.c
@@ -138,8 +138,9 @@ static HRESULT WINAPI HTMLScriptElement_put_src(IHTMLScriptElement *iface, BSTR
nsres = nsIDOMHTMLScriptElement_GetParentNode(This->nsscript, &parent);
if(NS_FAILED(nsres) || !parent) {
- FIXME("No parent, not supported detached elements\n");
- return E_NOTIMPL;
+ TRACE("No parent, not executing\n");
+ This->parse_on_bind = TRUE;
+ return S_OK;
}
nsIDOMNode_Release(parent);
diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h
index 4540d4c..8a0c1e5 100644
--- a/dlls/mshtml/htmlscript.h
+++ b/dlls/mshtml/htmlscript.h
@@ -23,6 +23,7 @@ typedef struct {
nsIDOMHTMLScriptElement *nsscript;
BOOL parsed;
+ BOOL parse_on_bind;
} HTMLScriptElement;
typedef struct {
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c
index 5e54158..fcae9ff 100644
--- a/dlls/mshtml/mutation.c
+++ b/dlls/mshtml/mutation.c
@@ -629,6 +629,7 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface,
HTMLDocumentNode *This = impl_from_nsIDocumentObserver(iface);
nsIDOMHTMLIFrameElement *nsiframe;
nsIDOMHTMLFrameElement *nsframe;
+ nsIDOMHTMLScriptElement *nsscript;
nsIDOMComment *nscomment;
nsIDOMElement *nselem;
nsresult nsres;
@@ -667,6 +668,24 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface,
nsIDOMHTMLFrameElement_Release(nsframe);
return;
}
+
+ nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMHTMLScriptElement, (void**)&nsscript);
+ if(NS_SUCCEEDED(nsres)) {
+ HTMLScriptElement *script_elem;
+ HRESULT hres;
+
+ TRACE("script element\n");
+
+ hres = script_elem_from_nsscript(This, nsscript, &script_elem);
+ nsIDOMHTMLScriptElement_Release(nsscript);
+ if(FAILED(hres))
+ return;
+
+ if(script_elem->parse_on_bind)
+ add_script_runner(This, run_insert_script, (nsISupports*)nsscript, NULL);
+
+ IHTMLScriptElement_Release(&script_elem->IHTMLScriptElement_iface);
+ }
}
static void NSAPI nsDocumentObserver_AttemptToExecuteScript(nsIDocumentObserver *iface, nsIContent *aContent,
More information about the wine-cvs
mailing list