1 38 package com.gargoylesoftware.htmlunit.html; 39 40 import java.util.ArrayList; 41 import java.util.Arrays; 42 import java.util.List; 43 44 import com.gargoylesoftware.htmlunit.CollectingAlertHandler; 45 import com.gargoylesoftware.htmlunit.MockWebConnection; 46 import com.gargoylesoftware.htmlunit.WebClient; 47 import com.gargoylesoftware.htmlunit.WebTestCase; 48 49 55 public class HtmlFrameTest extends WebTestCase { 56 57 62 public HtmlFrameTest( final String name ) { 63 super( name ); 64 } 65 66 69 public void testSrcOfBlankAndEmpty() throws Exception { 70 final String firstContent 71 = "<html><head><title>first</title></head>" 72 + "<frameset cols='20%,80%'>" 73 + " <frame SRC='' id='frame1'>" 74 + " <frame SRC='about:blank' id='frame2'>" 75 + "</frameset></html>"; 76 final HtmlPage page = loadPage(firstContent); 77 78 final HtmlFrame frame1 = (HtmlFrame)page.getHtmlElementById("frame1"); 79 assertEquals( "frame1", "", ((HtmlPage)frame1.getEnclosedPage()).getTitleText() ); 80 81 final HtmlFrame frame2 = (HtmlFrame)page.getHtmlElementById("frame2"); 82 assertEquals( "frame2", "", ((HtmlPage)frame2.getEnclosedPage()).getTitleText() ); 83 } 84 85 88 public void testOnLoadHandler() throws Exception { 89 final WebClient webClient = new WebClient(); 90 final MockWebConnection webConnection = 91 new MockWebConnection(webClient); 92 final List collectedAlerts = new ArrayList(); 93 94 webClient.setAlertHandler(new CollectingAlertHandler(collectedAlerts)); 95 96 final String firstContent 97 = "<html><head><title>first</title></head>" 98 + "<frameset cols='20%,80%'>" 99 + " <frame id='frame1'>" 100 + " <frame onload='alert(this.tagName)' id='frame2'>" 101 + "</frameset></html>"; 102 final List expectedAlerts = Arrays.asList( new String[]{"FRAME"} ); 103 104 webConnection.setResponse(URL_FIRST, firstContent); 105 webClient.setWebConnection(webConnection); 106 107 final HtmlPage page = (HtmlPage) webClient.getPage(URL_FIRST); 108 assertEquals("first", page.getTitleText()); 109 110 final HtmlFrame frame1 = (HtmlFrame)page.getHtmlElementById("frame1"); 111 assertEquals("frame1", "", ((HtmlPage) frame1.getEnclosedPage()).getTitleText()); 112 113 final HtmlFrame frame2 = (HtmlFrame)page.getHtmlElementById("frame2"); 114 assertEquals("frame2", "", ((HtmlPage)frame2.getEnclosedPage()).getTitleText()); 115 116 assertEquals(expectedAlerts, collectedAlerts); 117 } 118 119 122 public void testDocumentWrite() throws Exception { 123 final String firstContent 124 = "<html><head><title>first</title></head>" 125 + "<frameset cols='20%,80%'>" 126 + " <frame SRC='' name='frame1' id='frame1'>" 127 + " <frame onload=\"frame1.document.open();frame1.document.write(" 128 + "'<html><head><title>generated</title></head><body>generated</body></html>');" 129 + "frame1.document.close()\" id='frame2'>" 130 + "</frameset></html>"; 131 final HtmlPage page = loadPage(firstContent); 132 133 assertEquals( "first", page.getTitleText() ); 134 135 final HtmlFrame frame1 = (HtmlFrame)page.getHtmlElementById("frame1"); 136 assertEquals( "frame1", "generated", ((HtmlPage)frame1.getEnclosedPage()).getTitleText() ); 137 138 final HtmlFrame frame2 = (HtmlFrame)page.getHtmlElementById("frame2"); 139 assertEquals( "frame2", "", ((HtmlPage)frame2.getEnclosedPage()).getTitleText() ); 140 } 141 142 146 public void testDeregisterNonHtmlFrame() throws Exception { 147 final WebClient webClient = new WebClient(); 148 final MockWebConnection webConnection = 149 new MockWebConnection(webClient); 150 151 final String firstContent 152 = "<html><head><title>first</title></head>" 153 + "<frameset cols='100%'>" 154 + " <frame SRC='foo.txt'>" 155 + "</frameset></html>"; 156 webConnection.setDefaultResponse("foo", 200, "OK", "text/plain"); 157 webConnection.setResponse(URL_FIRST, firstContent); 158 webClient.setWebConnection(webConnection); 159 160 final HtmlPage page = (HtmlPage) webClient.getPage(URL_FIRST); 161 assertEquals("first", page.getTitleText()); 162 163 webClient.getPage(URL_SECOND); 165 } 166 } 167 | Popular Tags |