winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
July 2016
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
680 discussions
Start a n
N
ew thread
Jacek Caban : mshtml: Load dynamically created script elements asynchronously.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: b1f4bf1d7d0eb8368d0c9f37e02aa83c1b3d9526 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b1f4bf1d7d0eb8368d0c9f37e…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:42:06 2016 +0200 mshtml: Load dynamically created script elements asynchronously. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlscript.c | 7 ++++++- dlls/mshtml/htmlscript.h | 3 ++- dlls/mshtml/script.c | 16 ++++++++++------ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index d266276..d17884a 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -115,12 +115,17 @@ static HRESULT WINAPI HTMLScriptElement_put_src(IHTMLScriptElement *iface, BSTR return S_OK; } + if(This->binding) { + FIXME("binding in progress\n"); + return E_FAIL; + } + nsAString_Init(&src_str, NULL); nsres = nsIDOMHTMLScriptElement_GetSrc(This->nsscript, &src_str); if(NS_SUCCEEDED(nsres)) { const PRUnichar *src; nsAString_GetData(&src_str, &src); - hres = load_script(This, src); + hres = load_script(This, src, TRUE); }else { ERR("SetSrc failed: %08x\n", nsres); hres = E_FAIL; diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h index f5053ee..3d41a6c 100644 --- a/dlls/mshtml/htmlscript.h +++ b/dlls/mshtml/htmlscript.h @@ -27,6 +27,7 @@ typedef struct { BOOL pending_readystatechange_event; READYSTATE readystate; WCHAR *src_text; /* sctipt text downloaded from src */ + BSCallback *binding; /* weak reference to current binding */ } HTMLScriptElement; typedef struct { @@ -36,7 +37,7 @@ typedef struct { HRESULT script_elem_from_nsscript(HTMLDocumentNode*,nsIDOMHTMLScriptElement*,HTMLScriptElement**) DECLSPEC_HIDDEN; void bind_event_scripts(HTMLDocumentNode*) DECLSPEC_HIDDEN; -HRESULT load_script(HTMLScriptElement*,const WCHAR*) DECLSPEC_HIDDEN; +HRESULT load_script(HTMLScriptElement*,const WCHAR*,BOOL) DECLSPEC_HIDDEN; void release_script_hosts(HTMLInnerWindow*) DECLSPEC_HIDDEN; void connect_scripts(HTMLInnerWindow*) DECLSPEC_HIDDEN; diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index bd0f8d4..40deda4 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -796,7 +796,6 @@ static void parse_elem_text(ScriptHost *script_host, HTMLScriptElement *script_e TRACE("<<<\n"); else WARN("<<< %08x\n", hres); - } typedef struct { @@ -939,6 +938,8 @@ static HRESULT ScriptBSC_start_binding(BSCallback *bsc) { ScriptBSC *This = impl_from_BSCallback(bsc); + This->script_elem->binding = &This->bsc; + /* FIXME: We should find a better to decide if 'loading' state is supposed to be used by the protocol. */ if(This->scheme == URL_SCHEME_HTTPS || This->scheme == URL_SCHEME_HTTP) set_script_elem_readystate(This->script_elem, READYSTATE_LOADING); @@ -953,6 +954,9 @@ static HRESULT ScriptBSC_stop_binding(BSCallback *bsc, HRESULT result) if(SUCCEEDED(result) && !This->script_elem) result = E_UNEXPECTED; + assert(FAILED(result) || This->script_elem->binding == &This->bsc); + This->script_elem->binding = NULL; + if(This->script_elem->readystate == READYSTATE_LOADING) set_script_elem_readystate(This->script_elem, READYSTATE_LOADED); @@ -1027,7 +1031,7 @@ static const BSCallbackVtbl ScriptBSCVtbl = { }; -HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src) +HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src, BOOL async) { HTMLInnerWindow *window; ScriptBSC *bsc; @@ -1040,7 +1044,7 @@ HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src) if(strlenW(src) > sizeof(wine_schemaW)/sizeof(WCHAR) && !memcmp(src, wine_schemaW, sizeof(wine_schemaW))) src += sizeof(wine_schemaW)/sizeof(WCHAR); - TRACE("(%p %s)\n", script_elem, debugstr_w(src)); + TRACE("(%p %s %x)\n", script_elem, debugstr_w(src), async); if(!script_elem->element.node.doc || !(window = script_elem->element.node.doc->window)) { ERR("no window\n"); @@ -1061,7 +1065,7 @@ HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src) return E_OUTOFMEMORY; } - init_bscallback(&bsc->bsc, &ScriptBSCVtbl, mon, 0); + init_bscallback(&bsc->bsc, &ScriptBSCVtbl, mon, async ? BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA : 0); IMoniker_Release(mon); hres = IUri_GetScheme(uri, &bsc->scheme); @@ -1128,7 +1132,7 @@ static BOOL parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script if(NS_FAILED(nsres)) { ERR("GetSrc failed: %08x\n", nsres); }else if(*src) { - load_script(script_elem, src); + load_script(script_elem, src, FALSE); is_complete = script_elem->parsed; }else { parse_inline_script(script_host, script_elem); @@ -1273,7 +1277,7 @@ void doc_insert_script(HTMLInnerWindow *window, HTMLScriptElement *script_elem, script_elem->parsed = TRUE; parse_elem_text(script_host, script_elem, script_elem->src_text); is_complete = TRUE; - }else { + }else if(!script_elem->binding) { is_complete = parse_script_elem(script_host, script_elem); } }
1
0
0
0
Jacek Caban : mshtml: Set interactive script ready state change in the right places.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: 8ccc38cb5580a7cc58c9bf6420262d391beb2459 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8ccc38cb5580a7cc58c9bf642…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:41:06 2016 +0200 mshtml: Set interactive script ready state change in the right places. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlscript.c | 4 ++-- dlls/mshtml/htmlscript.h | 2 +- dlls/mshtml/mutation.c | 4 ++-- dlls/mshtml/script.c | 8 +++++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index 0d6dddf..d266276 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -203,7 +203,7 @@ static HRESULT WINAPI HTMLScriptElement_put_text(IHTMLScriptElement *iface, BSTR } nsIDOMNode_Release(parent); - doc_insert_script(window, This); + doc_insert_script(window, This, FALSE); return S_OK; } @@ -400,7 +400,7 @@ static HRESULT HTMLScriptElement_bind_to_tree(HTMLDOMNode *iface) } 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; } diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h index efa392d..f5053ee 100644 --- a/dlls/mshtml/htmlscript.h +++ b/dlls/mshtml/htmlscript.h @@ -40,7 +40,7 @@ HRESULT load_script(HTMLScriptElement*,const WCHAR*) DECLSPEC_HIDDEN; void release_script_hosts(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; HRESULT exec_script(HTMLInnerWindow*,const WCHAR*,const WCHAR*,VARIANT*) DECLSPEC_HIDDEN; void set_script_mode(HTMLOuterWindow*,SCRIPTMODE) DECLSPEC_HIDDEN; diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index e2fa084..8c4fc67 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -337,13 +337,13 @@ static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_ifa 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)) { iter = LIST_ENTRY(list_head(&window->script_queue), script_queue_entry_t, entry); list_remove(&iter->entry); if(!iter->script->parsed) - doc_insert_script(window, iter->script); + doc_insert_script(window, iter->script, TRUE); IHTMLScriptElement_Release(&iter->script->IHTMLScriptElement_iface); heap_free(iter); } diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index 4be6e3d..bd0f8d4 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -786,8 +786,6 @@ static void parse_elem_text(ScriptHost *script_host, HTMLScriptElement *script_e TRACE("%s\n", debugstr_w(text)); - set_script_elem_readystate(script_elem, READYSTATE_INTERACTIVE); - VariantInit(&var); memset(&excepinfo, 0, sizeof(excepinfo)); TRACE(">>>\n"); @@ -1089,6 +1087,8 @@ static void parse_inline_script(ScriptHost *script_host, HTMLScriptElement *scri nsres = nsIDOMHTMLScriptElement_GetText(script_elem->nsscript, &text_str); nsAString_GetData(&text_str, &text); + set_script_elem_readystate(script_elem, READYSTATE_INTERACTIVE); + if(NS_FAILED(nsres)) { ERR("GetText failed: %08x\n", nsres); }else if(*text) { @@ -1257,7 +1257,7 @@ static ScriptHost *get_elem_script_host(HTMLInnerWindow *window, HTMLScriptEleme 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; BOOL is_complete = FALSE; @@ -1268,6 +1268,8 @@ void doc_insert_script(HTMLInnerWindow *window, HTMLScriptElement *script_elem) if(script_host->parse) { if(script_elem->src_text) { + if(from_parser) + set_script_elem_readystate(script_elem, READYSTATE_INTERACTIVE); script_elem->parsed = TRUE; parse_elem_text(script_host, script_elem, script_elem->src_text); is_complete = TRUE;
1
0
0
0
Jacek Caban : mshtml: Set loaded script ready state if binding failed.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: 3a85711a988ed792aed5aff71b53ff2db55d8488 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3a85711a988ed792aed5aff71…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:40:47 2016 +0200 mshtml: Set loaded script ready state if binding failed. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/script.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index fa1a681..4be6e3d 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -955,10 +955,10 @@ static HRESULT ScriptBSC_stop_binding(BSCallback *bsc, HRESULT result) if(SUCCEEDED(result) && !This->script_elem) result = E_UNEXPECTED; - if(SUCCEEDED(result)) { - if(This->script_elem->readystate == READYSTATE_LOADING) - set_script_elem_readystate(This->script_elem, READYSTATE_LOADED); + if(This->script_elem->readystate == READYSTATE_LOADING) + set_script_elem_readystate(This->script_elem, READYSTATE_LOADED); + if(SUCCEEDED(result)) { script_file_available(This); }else { FIXME("binding failed %08x\n", result);
1
0
0
0
Jacek Caban : mshtml: Moved script execution logic from HTMLScriptElement: :put_src to script BSC.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: 5b1affa44641ac9c600d905e54cadc098659bec0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5b1affa44641ac9c600d905e5…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:40:36 2016 +0200 mshtml: Moved script execution logic from HTMLScriptElement::put_src to script BSC. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlscript.c | 44 ++++++++++------------------------- dlls/mshtml/htmlscript.h | 1 + dlls/mshtml/script.c | 60 ++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 66 insertions(+), 39 deletions(-) diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index 0a2d67a..0d6dddf 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -96,20 +96,12 @@ static HRESULT WINAPI HTMLScriptElement_Invoke(IHTMLScriptElement *iface, DISPID static HRESULT WINAPI HTMLScriptElement_put_src(IHTMLScriptElement *iface, BSTR v) { HTMLScriptElement *This = impl_from_IHTMLScriptElement(iface); - HTMLInnerWindow *window; - nsIDOMNode *parent; nsAString src_str; nsresult nsres; + HRESULT hres; TRACE("(%p)->(%s)\n", This, debugstr_w(v)); - if(!This->element.node.doc || !This->element.node.doc->window) { - WARN("no windoow\n"); - return E_UNEXPECTED; - } - - window = This->element.node.doc->window; - nsAString_InitDepend(&src_str, v); nsres = nsIDOMHTMLScriptElement_SetSrc(This->nsscript, &src_str); nsAString_Finish(&src_str); @@ -123,30 +115,18 @@ static HRESULT WINAPI HTMLScriptElement_put_src(IHTMLScriptElement *iface, BSTR return S_OK; } - if(window->parser_callback_cnt) { - script_queue_entry_t *queue; - - queue = heap_alloc(sizeof(*queue)); - if(!queue) - return E_OUTOFMEMORY; - - IHTMLScriptElement_AddRef(&This->IHTMLScriptElement_iface); - queue->script = This; - - list_add_tail(&window->script_queue, &queue->entry); - return S_OK; - } - - nsres = nsIDOMHTMLElement_GetParentNode(This->element.nselem, &parent); - if(NS_FAILED(nsres) || !parent) { - TRACE("No parent, not executing\n"); - This->parse_on_bind = TRUE; - return S_OK; + nsAString_Init(&src_str, NULL); + nsres = nsIDOMHTMLScriptElement_GetSrc(This->nsscript, &src_str); + if(NS_SUCCEEDED(nsres)) { + const PRUnichar *src; + nsAString_GetData(&src_str, &src); + hres = load_script(This, src); + }else { + ERR("SetSrc failed: %08x\n", nsres); + hres = E_FAIL; } - - nsIDOMNode_Release(parent); - doc_insert_script(window, This); - return S_OK; + nsAString_Finish(&src_str); + return hres; } static HRESULT WINAPI HTMLScriptElement_get_src(IHTMLScriptElement *iface, BSTR *p) diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h index 4e40f63..efa392d 100644 --- a/dlls/mshtml/htmlscript.h +++ b/dlls/mshtml/htmlscript.h @@ -36,6 +36,7 @@ typedef struct { HRESULT script_elem_from_nsscript(HTMLDocumentNode*,nsIDOMHTMLScriptElement*,HTMLScriptElement**) DECLSPEC_HIDDEN; void bind_event_scripts(HTMLDocumentNode*) DECLSPEC_HIDDEN; +HRESULT load_script(HTMLScriptElement*,const WCHAR*) DECLSPEC_HIDDEN; void release_script_hosts(HTMLInnerWindow*) DECLSPEC_HIDDEN; void connect_scripts(HTMLInnerWindow*) DECLSPEC_HIDDEN; diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index ab9be3b..fa1a681 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -866,6 +866,8 @@ static void script_file_available(ScriptBSC *bsc) HTMLScriptElement *script_elem = bsc->script_elem; HTMLInnerWindow *window = bsc->bsc.window; ScriptHost *script_host; + nsIDOMNode *parent; + nsresult nsres; HRESULT hres; assert(window != NULL); @@ -878,8 +880,38 @@ static void script_file_available(ScriptBSC *bsc) if(!script_host) return; + if(window->parser_callback_cnt) { + script_queue_entry_t *queue; + + TRACE("Adding to queue\n"); + + queue = heap_alloc(sizeof(*queue)); + if(!queue) + return; + + IHTMLScriptElement_AddRef(&script_elem->IHTMLScriptElement_iface); + queue->script = script_elem; + + list_add_tail(&window->script_queue, &queue->entry); + return; + } + + nsres = nsIDOMHTMLElement_GetParentNode(script_elem->element.nselem, &parent); + if(NS_FAILED(nsres) || !parent) { + TRACE("No parent, not executing\n"); + script_elem->parse_on_bind = TRUE; + return; + } + + nsIDOMNode_Release(parent); + + script_host = get_elem_script_host(window, script_elem); + if(!script_host) + return; + script_elem->parsed = TRUE; - parse_elem_text(script_host, script_elem, script_elem->src_text); + if(script_host->parse) + parse_elem_text(script_host, script_elem, script_elem->src_text); } static inline ScriptBSC *impl_from_BSCallback(BSCallback *iface) @@ -997,7 +1029,7 @@ static const BSCallbackVtbl ScriptBSCVtbl = { }; -static HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src) +HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src) { HTMLInnerWindow *window; ScriptBSC *bsc; @@ -1066,9 +1098,10 @@ static void parse_inline_script(ScriptHost *script_host, HTMLScriptElement *scri nsAString_Finish(&text_str); } -static void parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script_elem) +static BOOL parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script_elem) { nsAString src_str, event_str; + BOOL is_complete = FALSE; const PRUnichar *src; nsresult nsres; @@ -1081,7 +1114,7 @@ static void parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script if(*event) { TRACE("deferring event %s script evaluation\n", debugstr_w(event)); nsAString_Finish(&event_str); - return; + return FALSE; } }else { ERR("GetEvent failed: %08x\n", nsres); @@ -1096,13 +1129,15 @@ static void parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script ERR("GetSrc failed: %08x\n", nsres); }else if(*src) { load_script(script_elem, src); + is_complete = script_elem->parsed; }else { parse_inline_script(script_host, script_elem); + is_complete = TRUE; } nsAString_Finish(&src_str); - set_script_elem_readystate(script_elem, READYSTATE_COMPLETE); + return is_complete; } static GUID get_default_script_guid(HTMLInnerWindow *window) @@ -1225,13 +1260,24 @@ static ScriptHost *get_elem_script_host(HTMLInnerWindow *window, HTMLScriptEleme void doc_insert_script(HTMLInnerWindow *window, HTMLScriptElement *script_elem) { ScriptHost *script_host; + BOOL is_complete = FALSE; script_host = get_elem_script_host(window, script_elem); if(!script_host) return; - if(script_host->parse) - parse_script_elem(script_host, script_elem); + if(script_host->parse) { + if(script_elem->src_text) { + script_elem->parsed = TRUE; + parse_elem_text(script_host, script_elem, script_elem->src_text); + is_complete = TRUE; + }else { + is_complete = parse_script_elem(script_host, script_elem); + } + } + + if(is_complete) + set_script_elem_readystate(script_elem, READYSTATE_COMPLETE); } IDispatch *script_parse_event(HTMLInnerWindow *window, LPCWSTR text)
1
0
0
0
Jacek Caban : mshtml: Merge parse_extern_script and bind_script.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: eeb075dd0e38615f2e1ac9e62adf11f3b3105a82 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=eeb075dd0e38615f2e1ac9e62…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:40:04 2016 +0200 mshtml: Merge parse_extern_script and bind_script. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/script.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index 3503e69..ab9be3b 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -997,12 +997,30 @@ static const BSCallbackVtbl ScriptBSCVtbl = { }; -static HRESULT bind_script(HTMLInnerWindow *window, IUri *uri, HTMLScriptElement *script_elem) +static HRESULT load_script(HTMLScriptElement *script_elem, const WCHAR *src) { + HTMLInnerWindow *window; ScriptBSC *bsc; IMoniker *mon; + IUri *uri; HRESULT hres; + static const WCHAR wine_schemaW[] = {'w','i','n','e',':'}; + + if(strlenW(src) > sizeof(wine_schemaW)/sizeof(WCHAR) && !memcmp(src, wine_schemaW, sizeof(wine_schemaW))) + src += sizeof(wine_schemaW)/sizeof(WCHAR); + + TRACE("(%p %s)\n", script_elem, debugstr_w(src)); + + if(!script_elem->element.node.doc || !(window = script_elem->element.node.doc->window)) { + ERR("no window\n"); + return E_UNEXPECTED; + } + + hres = create_uri(src, 0, &uri); + if(FAILED(hres)) + return hres; + hres = CreateURLMonikerEx2(NULL, uri, &mon, URL_MK_UNIFORM); if(FAILED(hres)) return hres; @@ -1029,24 +1047,6 @@ static HRESULT bind_script(HTMLInnerWindow *window, IUri *uri, HTMLScriptElement return hres; } -static void parse_extern_script(ScriptHost *script_host, HTMLScriptElement *script_elem, LPCWSTR src) -{ - IUri *uri; - HRESULT hres; - - static const WCHAR wine_schemaW[] = {'w','i','n','e',':'}; - - if(strlenW(src) > sizeof(wine_schemaW)/sizeof(WCHAR) && !memcmp(src, wine_schemaW, sizeof(wine_schemaW))) - src += sizeof(wine_schemaW)/sizeof(WCHAR); - - hres = create_uri(src, 0, &uri); - if(FAILED(hres)) - return; - - hres = bind_script(script_host->window, uri, script_elem); - IUri_Release(uri); -} - static void parse_inline_script(ScriptHost *script_host, HTMLScriptElement *script_elem) { const PRUnichar *text; @@ -1095,7 +1095,7 @@ static void parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script if(NS_FAILED(nsres)) { ERR("GetSrc failed: %08x\n", nsres); }else if(*src) { - parse_extern_script(script_host, script_elem, src); + load_script(script_elem, src); }else { parse_inline_script(script_host, script_elem); }
1
0
0
0
Jacek Caban : mshtml: Store external script text in HTMLScriptElement object.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: f73f884884b74d20f6068a99c5e8c53ef91ce276 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f73f884884b74d20f6068a99c…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:39:47 2016 +0200 mshtml: Store external script text in HTMLScriptElement object. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlscript.c | 9 ++++++++- dlls/mshtml/htmlscript.h | 1 + dlls/mshtml/script.c | 12 +++++------- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index 9feb551..0a2d67a 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -391,6 +391,13 @@ static HRESULT HTMLScriptElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) return HTMLElement_QI(&This->element.node, riid, ppv); } +static void HTMLScriptElement_destructor(HTMLDOMNode *iface) +{ + HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); + heap_free(This->src_text); + HTMLElement_destructor(&This->element.node); +} + static HRESULT HTMLScriptElement_get_readystate(HTMLDOMNode *iface, BSTR *p) { HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); @@ -439,7 +446,7 @@ static void HTMLScriptElement_unlink(HTMLDOMNode *iface) static const NodeImplVtbl HTMLScriptElementImplVtbl = { HTMLScriptElement_QI, - HTMLElement_destructor, + HTMLScriptElement_destructor, HTMLElement_cpc, HTMLElement_clone, HTMLElement_handle_event, diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h index ad493c9..4e40f63 100644 --- a/dlls/mshtml/htmlscript.h +++ b/dlls/mshtml/htmlscript.h @@ -26,6 +26,7 @@ typedef struct { BOOL parse_on_bind; BOOL pending_readystatechange_event; READYSTATE readystate; + WCHAR *src_text; /* sctipt text downloaded from src */ } HTMLScriptElement; typedef struct { diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index 582c9af..3503e69 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -866,22 +866,20 @@ static void script_file_available(ScriptBSC *bsc) HTMLScriptElement *script_elem = bsc->script_elem; HTMLInnerWindow *window = bsc->bsc.window; ScriptHost *script_host; - WCHAR *text; HRESULT hres; - hres = get_binding_text(bsc, &text); + assert(window != NULL); + + hres = get_binding_text(bsc, &script_elem->src_text); if(FAILED(hres)) return; script_host = get_elem_script_host(window, script_elem); - if(!script_host) { - heap_free(text); + if(!script_host) return; - } script_elem->parsed = TRUE; - parse_elem_text(script_host, script_elem, text); - heap_free(text); + parse_elem_text(script_host, script_elem, script_elem->src_text); } static inline ScriptBSC *impl_from_BSCallback(BSCallback *iface)
1
0
0
0
Jacek Caban : mshtml: Moved parsing external script to OnStopBinding callback.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: 718a415aa1ade2ec0b5fdedbfabd55d31021b6d1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=718a415aa1ade2ec0b5fdedbf…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:37:11 2016 +0200 mshtml: Moved parsing external script to OnStopBinding callback. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/script.c | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index 773fb48..582c9af 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -92,6 +92,8 @@ struct ScriptHost { struct list entry; }; +static ScriptHost *get_elem_script_host(HTMLInnerWindow*,HTMLScriptElement*); + static void set_script_prop(ScriptHost *script_host, DWORD property, VARIANT *val) { IActiveScriptProperty *script_prop; @@ -807,7 +809,6 @@ typedef struct { DWORD size; char *buf; - HRESULT hres; } ScriptBSC; static HRESULT get_binding_text(ScriptBSC *bsc, WCHAR **ret) @@ -841,8 +842,7 @@ static HRESULT get_binding_text(ScriptBSC *bsc, WCHAR **ret) default: /* FIXME: Try to use charset from HTTP headers first */ - if(bsc->script_elem) - cp = get_document_charset(bsc->script_elem->element.node.doc); + cp = get_document_charset(bsc->script_elem->element.node.doc); /* fall through */ case BOM_UTF8: { DWORD len; @@ -861,6 +861,29 @@ static HRESULT get_binding_text(ScriptBSC *bsc, WCHAR **ret) return S_OK; } +static void script_file_available(ScriptBSC *bsc) +{ + HTMLScriptElement *script_elem = bsc->script_elem; + HTMLInnerWindow *window = bsc->bsc.window; + ScriptHost *script_host; + WCHAR *text; + HRESULT hres; + + hres = get_binding_text(bsc, &text); + if(FAILED(hres)) + return; + + script_host = get_elem_script_host(window, script_elem); + if(!script_host) { + heap_free(text); + return; + } + + script_elem->parsed = TRUE; + parse_elem_text(script_host, script_elem, text); + heap_free(text); +} + static inline ScriptBSC *impl_from_BSCallback(BSCallback *iface) { return CONTAINING_RECORD(iface, ScriptBSC, bsc); @@ -899,11 +922,14 @@ static HRESULT ScriptBSC_stop_binding(BSCallback *bsc, HRESULT result) { ScriptBSC *This = impl_from_BSCallback(bsc); - This->hres = result; + if(SUCCEEDED(result) && !This->script_elem) + result = E_UNEXPECTED; if(SUCCEEDED(result)) { if(This->script_elem->readystate == READYSTATE_LOADING) set_script_elem_readystate(This->script_elem, READYSTATE_LOADED); + + script_file_available(This); }else { FIXME("binding failed %08x\n", result); heap_free(This->buf); @@ -973,7 +999,7 @@ static const BSCallbackVtbl ScriptBSCVtbl = { }; -static HRESULT bind_script_to_text(HTMLInnerWindow *window, IUri *uri, HTMLScriptElement *script_elem, WCHAR **ret) +static HRESULT bind_script(HTMLInnerWindow *window, IUri *uri, HTMLScriptElement *script_elem) { ScriptBSC *bsc; IMoniker *mon; @@ -991,7 +1017,6 @@ static HRESULT bind_script_to_text(HTMLInnerWindow *window, IUri *uri, HTMLScrip init_bscallback(&bsc->bsc, &ScriptBSCVtbl, mon, 0); IMoniker_Release(mon); - bsc->hres = E_FAIL; hres = IUri_GetScheme(uri, &bsc->scheme); if(FAILED(hres)) @@ -1001,10 +1026,6 @@ static HRESULT bind_script_to_text(HTMLInnerWindow *window, IUri *uri, HTMLScrip bsc->script_elem = script_elem; hres = start_binding(window, &bsc->bsc, NULL); - if(SUCCEEDED(hres)) - hres = bsc->hres; - if(SUCCEEDED(hres)) - hres = get_binding_text(bsc, ret); IBindStatusCallback_Release(&bsc->bsc.IBindStatusCallback_iface); return hres; @@ -1012,7 +1033,6 @@ static HRESULT bind_script_to_text(HTMLInnerWindow *window, IUri *uri, HTMLScrip static void parse_extern_script(ScriptHost *script_host, HTMLScriptElement *script_elem, LPCWSTR src) { - WCHAR *text; IUri *uri; HRESULT hres; @@ -1025,14 +1045,8 @@ static void parse_extern_script(ScriptHost *script_host, HTMLScriptElement *scri if(FAILED(hres)) return; - hres = bind_script_to_text(script_host->window, uri, script_elem, &text); + hres = bind_script(script_host->window, uri, script_elem); IUri_Release(uri); - if(FAILED(hres) || !text) - return; - - parse_elem_text(script_host, script_elem, text); - - heap_free(text); } static void parse_inline_script(ScriptHost *script_host, HTMLScriptElement *script_elem) @@ -1083,7 +1097,6 @@ static void parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script if(NS_FAILED(nsres)) { ERR("GetSrc failed: %08x\n", nsres); }else if(*src) { - script_elem->parsed = TRUE; parse_extern_script(script_host, script_elem, src); }else { parse_inline_script(script_host, script_elem);
1
0
0
0
Jacek Caban : mshtml: Moved getting text from ScriptBSC to separated function.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: 2dd15b59d141f0cc23938b7c6ccf189502f9085b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2dd15b59d141f0cc23938b7c6…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:36:47 2016 +0200 mshtml: Moved getting text from ScriptBSC to separated function. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/script.c | 107 ++++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index f6eb7ea..773fb48 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -810,6 +810,57 @@ typedef struct { HRESULT hres; } ScriptBSC; +static HRESULT get_binding_text(ScriptBSC *bsc, WCHAR **ret) +{ + UINT cp = CP_UTF8; + WCHAR *text; + + if(!bsc->bsc.readed) { + text = heap_alloc(sizeof(WCHAR)); + if(!text) + return E_OUTOFMEMORY; + *text = 0; + *ret = text; + return S_OK; + } + + switch(bsc->bsc.bom) { + case BOM_UTF16: + if(bsc->bsc.readed % sizeof(WCHAR)) { + FIXME("The buffer is not a valid utf16 string\n"); + return E_FAIL; + } + + text = heap_alloc(bsc->bsc.readed+sizeof(WCHAR)); + if(!text) + return E_OUTOFMEMORY; + + memcpy(text, bsc->buf, bsc->bsc.readed); + text[bsc->bsc.readed/sizeof(WCHAR)] = 0; + break; + + default: + /* FIXME: Try to use charset from HTTP headers first */ + if(bsc->script_elem) + cp = get_document_charset(bsc->script_elem->element.node.doc); + /* fall through */ + case BOM_UTF8: { + DWORD len; + + len = MultiByteToWideChar(cp, 0, bsc->buf, bsc->bsc.readed, NULL, 0); + text = heap_alloc((len+1)*sizeof(WCHAR)); + if(!text) + return E_OUTOFMEMORY; + + MultiByteToWideChar(cp, 0, bsc->buf, bsc->bsc.readed, text, len); + text[len] = 0; + } + } + + *ret = text; + return S_OK; +} + static inline ScriptBSC *impl_from_BSCallback(BSCallback *iface) { return CONTAINING_RECORD(iface, ScriptBSC, bsc); @@ -924,10 +975,8 @@ static const BSCallbackVtbl ScriptBSCVtbl = { static HRESULT bind_script_to_text(HTMLInnerWindow *window, IUri *uri, HTMLScriptElement *script_elem, WCHAR **ret) { - UINT cp = CP_UTF8; ScriptBSC *bsc; IMoniker *mon; - WCHAR *text; HRESULT hres; hres = CreateURLMonikerEx2(NULL, uri, &mon, URL_MK_UNIFORM); @@ -954,59 +1003,11 @@ static HRESULT bind_script_to_text(HTMLInnerWindow *window, IUri *uri, HTMLScrip hres = start_binding(window, &bsc->bsc, NULL); if(SUCCEEDED(hres)) hres = bsc->hres; - if(FAILED(hres)) { - IBindStatusCallback_Release(&bsc->bsc.IBindStatusCallback_iface); - return hres; - } - - if(!bsc->bsc.readed) { - *ret = NULL; - return S_OK; - } - - switch(bsc->bsc.bom) { - case BOM_UTF16: - if(bsc->bsc.readed % sizeof(WCHAR)) { - FIXME("The buffer is not a valid utf16 string\n"); - hres = E_FAIL; - break; - } - - text = heap_alloc(bsc->bsc.readed+sizeof(WCHAR)); - if(!text) { - hres = E_OUTOFMEMORY; - break; - } - - memcpy(text, bsc->buf, bsc->bsc.readed); - text[bsc->bsc.readed/sizeof(WCHAR)] = 0; - break; - - default: - /* FIXME: Try to use charset from HTTP headers first */ - cp = get_document_charset(window->doc); - /* fall through */ - case BOM_UTF8: { - DWORD len; - - len = MultiByteToWideChar(cp, 0, bsc->buf, bsc->bsc.readed, NULL, 0); - text = heap_alloc((len+1)*sizeof(WCHAR)); - if(!text) { - hres = E_OUTOFMEMORY; - break; - } - - MultiByteToWideChar(cp, 0, bsc->buf, bsc->bsc.readed, text, len); - text[len] = 0; - } - } + if(SUCCEEDED(hres)) + hres = get_binding_text(bsc, ret); IBindStatusCallback_Release(&bsc->bsc.IBindStatusCallback_iface); - if(FAILED(hres)) - return hres; - - *ret = text; - return S_OK; + return hres; } static void parse_extern_script(ScriptHost *script_host, HTMLScriptElement *script_elem, LPCWSTR src)
1
0
0
0
Jacek Caban : mshtml: Use bind_to_tree callback to parse dynamically added scripts.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: 339ebdb11d9ef42e488715453b4003dbd460933c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=339ebdb11d9ef42e488715453…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:36:27 2016 +0200 mshtml: Use bind_to_tree callback to parse dynamically added scripts. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlscript.c | 21 ++++++++++++++++++++- dlls/mshtml/mutation.c | 12 +----------- dlls/mshtml/tests/exectest.html | 7 +++++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index 6c89206..9feb551 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -398,6 +398,25 @@ static HRESULT HTMLScriptElement_get_readystate(HTMLDOMNode *iface, BSTR *p) return IHTMLScriptElement_get_readyState(&This->IHTMLScriptElement_iface, p); } +static HRESULT HTMLScriptElement_bind_to_tree(HTMLDOMNode *iface) +{ + HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); + + TRACE("(%p)\n", This); + + if(!This->parse_on_bind) + return S_OK; + + if(!This->element.node.doc || !This->element.node.doc->window) { + ERR("No window\n"); + return E_UNEXPECTED; + } + + This->parse_on_bind = FALSE; + doc_insert_script(This->element.node.doc->window, This); + return S_OK; +} + static void HTMLScriptElement_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) { HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); @@ -433,7 +452,7 @@ static const NodeImplVtbl HTMLScriptElementImplVtbl = { HTMLScriptElement_get_readystate, NULL, NULL, - NULL, + HTMLScriptElement_bind_to_tree, HTMLScriptElement_traverse, HTMLScriptElement_unlink }; diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index a298ecb..e2fa084 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -767,20 +767,10 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface, 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); + add_script_runner(This, run_bind_to_tree, (nsISupports*)nsscript, NULL); 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); return; } diff --git a/dlls/mshtml/tests/exectest.html b/dlls/mshtml/tests/exectest.html index 6bf5e8e..18c6a48 100644 --- a/dlls/mshtml/tests/exectest.html +++ b/dlls/mshtml/tests/exectest.html @@ -104,17 +104,20 @@ function testPutText2() { elem.text = "exec_cnt++;"; /* forces evaluation, but src will be executed */ ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); ok(extern_cnt === 6, "< extern_cnt = " + extern_cnt + " expected 6"); + elem.text = "exec_cnt++;"; /* forces evaluation, but src will be executed */ + ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); + ok(extern_cnt === 7, "< extern_cnt = " + extern_cnt + " expected 6"); elem = document.createElement("script"); exec_cnt = 0; elem.text = "exec_cnt++;"; ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); elem.src = "externscr.js"; - ok(extern_cnt === 6, "extern_cnt = " + extern_cnt + " expected 6"); + ok(extern_cnt === 7, "extern_cnt = " + extern_cnt + " expected 7"); document.body.appendChild(elem); ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); - ok(extern_cnt === 7, "extern_cnt = " + extern_cnt + " expected 7"); + ok(extern_cnt === 8, "extern_cnt = " + extern_cnt + " expected 8"); } document.body.onload = function() {
1
0
0
0
Jacek Caban : mshtml/tests: Use relative URLs in navigation.js.
by Alexandre Julliard
20 Jul '16
20 Jul '16
Module: wine Branch: master Commit: acef7258abce77e8729a9ef7d326923a3256091e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=acef7258abce77e8729a9ef7d…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Jul 19 18:36:04 2016 +0200 mshtml/tests: Use relative URLs in navigation.js. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/tests/navigation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/mshtml/tests/navigation.js b/dlls/mshtml/tests/navigation.js index 63f3d57..ea91a56 100644 --- a/dlls/mshtml/tests/navigation.js +++ b/dlls/mshtml/tests/navigation.js @@ -24,7 +24,7 @@ function nav_parent_test() { subframe.onload = function() { var doc = subframe.contentWindow.document; - doc.body.innerHTML = '<a href="
http://winetest.org/blank2.html
" id="aid" target="_parent">test</a>'; + doc.body.innerHTML = '<a href="blank2.html" id="aid" target="_parent">test</a>'; doc.getElementById("aid").click(); }
1
0
0
0
← Newer
1
...
18
19
20
21
22
23
24
...
68
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Results per page:
10
25
50
100
200