Module: wine Branch: master Commit: 49c7277505edfad6488a05d66f593bb5e03f87d3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=49c7277505edfad6488a05d66f...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Nov 18 15:00:58 2014 +0100
mshtml: Added support for IHTMLFrameBase::put_src call on detached element.
---
dlls/mshtml/htmlframebase.c | 17 +++++++++++++++-- dlls/mshtml/tests/nav_test.html | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlframebase.c b/dlls/mshtml/htmlframebase.c index 9808379..e0c64f4 100644 --- a/dlls/mshtml/htmlframebase.c +++ b/dlls/mshtml/htmlframebase.c @@ -134,8 +134,21 @@ static HRESULT WINAPI HTMLFrameBase_put_src(IHTMLFrameBase *iface, BSTR v) TRACE("(%p)->(%s)\n", This, debugstr_w(v));
if(!This->content_window || !This->element.node.doc || !This->element.node.doc->basedoc.window) { - FIXME("detached element\n"); - return E_FAIL; + nsAString nsstr; + nsresult nsres; + + nsAString_InitDepend(&nsstr, v); + if(This->nsframe) + nsres = nsIDOMHTMLFrameElement_SetSrc(This->nsframe, &nsstr); + else + nsres = nsIDOMHTMLIFrameElement_SetSrc(This->nsiframe, &nsstr); + nsAString_Finish(&nsstr); + if(NS_FAILED(nsres)) { + ERR("SetSrc failed: %08x\n", nsres); + return E_FAIL; + } + + return S_OK; }
return navigate_url(This->content_window, v, This->element.node.doc->basedoc.window->uri, BINDING_NAVIGATED); diff --git a/dlls/mshtml/tests/nav_test.html b/dlls/mshtml/tests/nav_test.html index 536b238..11c4c0c 100644 --- a/dlls/mshtml/tests/nav_test.html +++ b/dlls/mshtml/tests/nav_test.html @@ -43,9 +43,24 @@ function window_navigate_test() { iframe.contentWindow.navigate("about:blank"); }
+function detached_src_test() { + var iframe = document.createElement("iframe"); + var onload_called = false; + + iframe.onload = function() { + onload_called = true; + next_test(); + } + + iframe.src = "blank.html"; + document.body.appendChild(iframe); + ok(onload_called === false, "called onload too early?"); +} + var tests = [ nav_back_test, window_navigate_test, + detached_src_test, function() { external.reportSuccess(); } ];