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