From: <rb...@us...> - 2014-01-29 18:29:53
|
Revision: 9089 http://sourceforge.net/p/htmlunit/code/9089 Author: rbri Date: 2014-01-29 18:29:49 +0000 (Wed, 29 Jan 2014) Log Message: ----------- Load iframe content when iframe is child of a node added by setting innerHTML Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/BaseFrameElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLIFrameElement2Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/BaseFrameElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/BaseFrameElement.java 2014-01-29 18:25:34 UTC (rev 9088) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/BaseFrameElement.java 2014-01-29 18:29:49 UTC (rev 9089) @@ -19,6 +19,7 @@ import java.net.URL; import java.util.Map; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -392,6 +393,18 @@ /** * <span style="color:red">INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.</span><br/> * + * Marks this frame to load the source when added to page. + */ + public void markLoadSrcWhenAddedToPage() { + final String src = getSrcAttribute(); + if (StringUtils.isNoneEmpty(src) && !WebClient.ABOUT_BLANK.equals(src)) { + loadSrcWhenAddedToPage_ = true; + } + } + + /** + * <span style="color:red">INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.</span><br/> + * * Marks this frame as created by javascript. This is needed to handle * some special IE behavior. */ Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2014-01-29 18:25:34 UTC (rev 9088) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2014-01-29 18:29:49 UTC (rev 9089) @@ -76,6 +76,7 @@ import com.gargoylesoftware.htmlunit.ScriptResult; import com.gargoylesoftware.htmlunit.SgmlPage; import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.BaseFrameElement; import com.gargoylesoftware.htmlunit.html.DomAttr; import com.gargoylesoftware.htmlunit.html.DomCharacterData; import com.gargoylesoftware.htmlunit.html.DomComment; @@ -960,6 +961,12 @@ final String valueAsString = Context.toString(value); parseHtmlSnippet(domNode, true, valueAsString); + for (final DomNode node : domNode.getDescendants()) { + if (node instanceof BaseFrameElement) { + ((BaseFrameElement) node).markLoadSrcWhenAddedToPage(); + } + } + final boolean createFragment = getBrowserVersion().hasFeature(JS_INNER_HTML_CREATES_DOC_FRAGMENT_AS_PARENT); // if the parentNode has null parentNode in IE, // create a DocumentFragment to be the parentNode's parentNode. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLIFrameElement2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLIFrameElement2Test.java 2014-01-29 18:25:34 UTC (rev 9088) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLIFrameElement2Test.java 2014-01-29 18:29:49 UTC (rev 9089) @@ -265,7 +265,6 @@ */ @Test @Alerts({ "createIFrame", "loaded" }) - @NotYetImplemented public void documentCreateElement_iFrameInsideDiv() throws Exception { final String html = "<html>\n" |