return NS_OK;
}
-static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_iface, nsISupports *arg)
+static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_iface, nsISupports *parser_iface)
{
nsIDOMHTMLScriptElement *nsscript;
+ nsIParser *nsparser = NULL;
nsresult nsres;
TRACE("(%p)->(%p)\n", doc, script_iface);
return nsres;
}
+ if(parser_iface) {
+ nsres = nsISupports_QueryInterface(parser_iface, &IID_nsIParser, (void**)&nsparser);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIParser iface: %08x\n", nsres);
+ nsparser = NULL;
+ }
+ }
+
+ if(nsparser)
+ nsIParser_BeginEvaluatingParserInsertedScript(nsparser);
+
doc_insert_script(doc->basedoc.window, nsscript);
+
+ if(nsparser) {
+ nsIParser_EndEvaluatingParserInsertedScript(nsparser);
+ nsIParser_Release(nsparser);
+ }
+
nsIDOMHTMLScriptElement_Release(nsscript);
return NS_OK;
}
if(NS_SUCCEEDED(nsres)) {
TRACE("script node\n");
- add_script_runner(This, run_insert_script, (nsISupports*)nsscript, NULL);
+ add_script_runner(This, run_insert_script, (nsISupports*)nsscript, (nsISupports*)aParser);
nsIDOMHTMLScriptElement_Release(nsscript);
}
typedef nsISupports nsIDOMValidityState;
typedef nsISupports nsIPluginInstanceOwner;
typedef nsISupports nsIPluginStreamListener;
-typedef nsISupports nsIParser;
+typedef nsISupports nsIContentSink;
+typedef nsISupports nsIParserFilter;
+typedef nsISupports nsIDTD;
[
object,
void ParentChainChanged(nsIContent *aContent);
}
+[
+ object,
+ uuid(cbc0cbd8-bbb7-46d6-a551-378a6953a714),
+ local
+]
+interface nsIParser : nsISupports
+{
+ typedef int nsDTDMode;
+ typedef int eParserCommands;
+
+ void SetContentSink(nsIContentSink *aSink);
+ nsIContentSink *GetContentSink();
+ void GetCommand(nsACString *aCommand);
+ void SetCommand2(const char *aCommand);
+ void SetCommand(eParserCommands aParserCommand);
+ void SetDocumentCharset(const nsACString *aCharset, PRInt32 aSource);
+ void GetDocumentCharset(nsACString *oCharset, PRInt32 *oSource);
+ void SetParserFilter(nsIParserFilter *aFilter);
+ nsresult GetChannel(nsIChannel **aChannel);
+ nsresult GetDTD(nsIDTD **aDTD);
+ nsresult GetStreamListener(nsIStreamListener **aListener);
+ nsresult ContinueInterruptedParsing();
+ void BlockParser();
+ void UnblockParser();
+ PRBool IsParserEnabled();
+ PRBool IsComplete();
+ nsresult Parse(nsIURI *aURL, nsIRequestObserver *aListener, void *aKey, nsDTDMode aMode);
+ nsresult Parse2(const nsAString *aSourceBuffer, void *aKey, const nsACString *aMimeType, PRBool aLastCall, nsDTDMode aMode);
+ void *GetRootContextKey();
+ nsresult Terminate();
+ nsresult ParseFragment(const nsAString *aSourceBuffer, void *aKey, void /*nsTArray<nsString>*/ *aTagStack,
+ PRBool aXMLMode, const nsACString *aContentType, nsDTDMode aMode);
+ nsresult ParseFragment2(const nsAString *aSourceBuffer, nsIContent *aTargetNode, nsIAtom *aContextLocalName,
+ PRInt32 aContextNamespace, PRBool aQuirks);
+ nsresult BuildModel();
+ nsresult CancelParsingEvents();
+ void Reset();
+ PRBool CanInterrupt();
+ PRBool IsInsertionPointDefined();
+ void BeginEvaluatingParserInsertedScript();
+ void EndEvaluatingParserInsertedScript();
+ void MarkAsNotScriptCreated();
+ PRBool IsScriptCreated();
+}
+
[
object,
uuid(3d005225-210f-4b07-b1d9-96020574c437),
document.write("<script>"
+ "var len = document.getElementsByTagName('div').length;"
- + "external.todo_wine_ok(len === 3, 'unexpected length ' + len);"
+ + "ok(len === 3, 'unexpected length ' + len);"
+ "executed = true;"
+ "<" + "/script>");
len = document.getElementsByTagName('script').length;
-external.todo_wine_ok(len === 2, "script col length = " + len);
+ok(len === 2, "script col length = " + len);
ok(executed, "writen script not executed");
external.reportSuccess();