Jacek Caban : mshtml: Added support for IHTMLFrameBase:: put_src call on detached element.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 18 10:25:20 CST 2014
Module: wine
Branch: master
Commit: 49c7277505edfad6488a05d66f593bb5e03f87d3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=49c7277505edfad6488a05d66f593bb5e03f87d3
Author: Jacek Caban <jacek at 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(); }
];
More information about the wine-cvs
mailing list