mshtml: Set interactive script ready state change in the right places.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
3a85711a98
commit
8ccc38cb55
|
@ -203,7 +203,7 @@ static HRESULT WINAPI HTMLScriptElement_put_text(IHTMLScriptElement *iface, BSTR
|
||||||
}
|
}
|
||||||
|
|
||||||
nsIDOMNode_Release(parent);
|
nsIDOMNode_Release(parent);
|
||||||
doc_insert_script(window, This);
|
doc_insert_script(window, This, FALSE);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ static HRESULT HTMLScriptElement_bind_to_tree(HTMLDOMNode *iface)
|
||||||
}
|
}
|
||||||
|
|
||||||
This->parse_on_bind = FALSE;
|
This->parse_on_bind = FALSE;
|
||||||
doc_insert_script(This->element.node.doc->window, This);
|
doc_insert_script(This->element.node.doc->window, This, FALSE);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ HRESULT load_script(HTMLScriptElement*,const WCHAR*) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
void release_script_hosts(HTMLInnerWindow*) DECLSPEC_HIDDEN;
|
void release_script_hosts(HTMLInnerWindow*) DECLSPEC_HIDDEN;
|
||||||
void connect_scripts(HTMLInnerWindow*) DECLSPEC_HIDDEN;
|
void connect_scripts(HTMLInnerWindow*) DECLSPEC_HIDDEN;
|
||||||
void doc_insert_script(HTMLInnerWindow*,HTMLScriptElement*) DECLSPEC_HIDDEN;
|
void doc_insert_script(HTMLInnerWindow*,HTMLScriptElement*,BOOL) DECLSPEC_HIDDEN;
|
||||||
IDispatch *script_parse_event(HTMLInnerWindow*,LPCWSTR) DECLSPEC_HIDDEN;
|
IDispatch *script_parse_event(HTMLInnerWindow*,LPCWSTR) DECLSPEC_HIDDEN;
|
||||||
HRESULT exec_script(HTMLInnerWindow*,const WCHAR*,const WCHAR*,VARIANT*) DECLSPEC_HIDDEN;
|
HRESULT exec_script(HTMLInnerWindow*,const WCHAR*,const WCHAR*,VARIANT*) DECLSPEC_HIDDEN;
|
||||||
void set_script_mode(HTMLOuterWindow*,SCRIPTMODE) DECLSPEC_HIDDEN;
|
void set_script_mode(HTMLOuterWindow*,SCRIPTMODE) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -337,13 +337,13 @@ static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_ifa
|
||||||
|
|
||||||
IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
|
IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
|
||||||
|
|
||||||
doc_insert_script(window, script_elem);
|
doc_insert_script(window, script_elem, TRUE);
|
||||||
|
|
||||||
while(!list_empty(&window->script_queue)) {
|
while(!list_empty(&window->script_queue)) {
|
||||||
iter = LIST_ENTRY(list_head(&window->script_queue), script_queue_entry_t, entry);
|
iter = LIST_ENTRY(list_head(&window->script_queue), script_queue_entry_t, entry);
|
||||||
list_remove(&iter->entry);
|
list_remove(&iter->entry);
|
||||||
if(!iter->script->parsed)
|
if(!iter->script->parsed)
|
||||||
doc_insert_script(window, iter->script);
|
doc_insert_script(window, iter->script, TRUE);
|
||||||
IHTMLScriptElement_Release(&iter->script->IHTMLScriptElement_iface);
|
IHTMLScriptElement_Release(&iter->script->IHTMLScriptElement_iface);
|
||||||
heap_free(iter);
|
heap_free(iter);
|
||||||
}
|
}
|
||||||
|
|
|
@ -786,8 +786,6 @@ static void parse_elem_text(ScriptHost *script_host, HTMLScriptElement *script_e
|
||||||
|
|
||||||
TRACE("%s\n", debugstr_w(text));
|
TRACE("%s\n", debugstr_w(text));
|
||||||
|
|
||||||
set_script_elem_readystate(script_elem, READYSTATE_INTERACTIVE);
|
|
||||||
|
|
||||||
VariantInit(&var);
|
VariantInit(&var);
|
||||||
memset(&excepinfo, 0, sizeof(excepinfo));
|
memset(&excepinfo, 0, sizeof(excepinfo));
|
||||||
TRACE(">>>\n");
|
TRACE(">>>\n");
|
||||||
|
@ -1089,6 +1087,8 @@ static void parse_inline_script(ScriptHost *script_host, HTMLScriptElement *scri
|
||||||
nsres = nsIDOMHTMLScriptElement_GetText(script_elem->nsscript, &text_str);
|
nsres = nsIDOMHTMLScriptElement_GetText(script_elem->nsscript, &text_str);
|
||||||
nsAString_GetData(&text_str, &text);
|
nsAString_GetData(&text_str, &text);
|
||||||
|
|
||||||
|
set_script_elem_readystate(script_elem, READYSTATE_INTERACTIVE);
|
||||||
|
|
||||||
if(NS_FAILED(nsres)) {
|
if(NS_FAILED(nsres)) {
|
||||||
ERR("GetText failed: %08x\n", nsres);
|
ERR("GetText failed: %08x\n", nsres);
|
||||||
}else if(*text) {
|
}else if(*text) {
|
||||||
|
@ -1257,7 +1257,7 @@ static ScriptHost *get_elem_script_host(HTMLInnerWindow *window, HTMLScriptEleme
|
||||||
return get_script_host(window, &guid);
|
return get_script_host(window, &guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void doc_insert_script(HTMLInnerWindow *window, HTMLScriptElement *script_elem)
|
void doc_insert_script(HTMLInnerWindow *window, HTMLScriptElement *script_elem, BOOL from_parser)
|
||||||
{
|
{
|
||||||
ScriptHost *script_host;
|
ScriptHost *script_host;
|
||||||
BOOL is_complete = FALSE;
|
BOOL is_complete = FALSE;
|
||||||
|
@ -1268,6 +1268,8 @@ void doc_insert_script(HTMLInnerWindow *window, HTMLScriptElement *script_elem)
|
||||||
|
|
||||||
if(script_host->parse) {
|
if(script_host->parse) {
|
||||||
if(script_elem->src_text) {
|
if(script_elem->src_text) {
|
||||||
|
if(from_parser)
|
||||||
|
set_script_elem_readystate(script_elem, READYSTATE_INTERACTIVE);
|
||||||
script_elem->parsed = TRUE;
|
script_elem->parsed = TRUE;
|
||||||
parse_elem_text(script_host, script_elem, script_elem->src_text);
|
parse_elem_text(script_host, script_elem, script_elem->src_text);
|
||||||
is_complete = TRUE;
|
is_complete = TRUE;
|
||||||
|
|
Loading…
Reference in New Issue