[HtmlUnit] SVN: [15526] trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ javascript/host/event/Event2Test.java
rbri--- via HtmlUnit-develop <[email protected]> Fri, 17 Aug 2018 19:21:50 +0000
| Newsgroups | gmane.comp.java.htmlunit.devel |
|---|---|
| Message-ID | <[email protected]> |
Revision: 15526
http://sourceforge.net/p/htmlunit/code/15526
Author: rbri
Date: 2018-08-17 19:21:47 +0000 (Fri, 17 Aug 2018)
Log Message:
-----------
next step in event refactoring (wip)
Modified Paths:
--------------
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/Event2Test.java
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/Event2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/Event2Test.java 2018-08-17 18:17:29 UTC (rev 15525)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/Event2Test.java 2018-08-17 19:21:47 UTC (rev 15526)
@@ -28,6 +28,7 @@
import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
import com.gargoylesoftware.htmlunit.BrowserRunner.BuggyWebDriver;
import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented;
+import com.gargoylesoftware.htmlunit.html.HtmlPageTest;
import com.gargoylesoftware.htmlunit.WebDriverTestCase;
/**
@@ -874,4 +875,87 @@
loadPageWithAlerts2(html);
}
+
+ /**
+ * @throws Exception if an error occurs
+ */
+ @Test
+ @Alerts({"anchor onclick prevented=false",
+ "document onclick prevented=false",
+ "window onclick prevented=true"})
+ public void returnPriority() throws Exception {
+ final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_
+ + "<html><head>\n"
+ + "<script>\n"
+ + " function log(msg) {\n"
+ + " window.document.title += msg + ';';\n"
+ + " }\n"
+ + "</script>\n"
+ + "</head>\n"
+ + "<body>\n"
+ + "<a id='tester' href='javascript:log(\"FIRED\")'>test: onclick return value</a>\n"
+ + "<script>\n"
+ + " tester.onclick = function (event) { "
+ + "log('anchor onclick prevented=' + event.defaultPrevented); return true }\n"
+ + " document.onclick = function (event) { "
+ + "log('document onclick prevented=' + event.defaultPrevented); return false }\n"
+ + " window.onclick = function (event) { "
+ + "log('window onclick prevented=' + event.defaultPrevented); return true; }\n"
+ + "</script>\n"
+ + "</body></html>";
+
+ final WebDriver driver = loadPage2(html);
+ driver.findElement(By.id("tester")).click();
+
+ final String text = driver.getTitle().trim().replaceAll(";", "\n").trim();
+ assertEquals(String.join("\n", getExpectedAlerts()), text);
+ }
+
+ /**
+ * BeforeUnloadEvent's returnValue behaves differently to other events.
+ * @throws Exception if an error occurs
+ */
+ @Test
+ @Alerts(DEFAULT = {"nullwindow at beforeunload rv=",
+ "window onbeforeunload rv=1",
+ "window at beforeunload rv=1"},
+ IE = {"nullwindow at beforeunload rv=undefined",
+ "window onbeforeunload rv=1",
+ "window at beforeunload rv=2"})
+ public void returnPriority2() throws Exception {
+ final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_
+ + "<html><head>\n"
+ + "<script>\n"
+ + " output = '';\n"
+ + " function log(msg) {\n"
+ + " var output = localStorage.getItem('output');\n"
+ + " output += msg + ';';\n"
+ + " localStorage.setItem('output', output);\n"
+ + " }\n"
+ + "</script>\n"
+ + "</head>\n"
+ + "<body>\n"
+ + "<button id='tester' onclick='window.location.reload()'>test: onbeforeunload return value</button>\n"
+
+ + "<button id='getResult' "
+ + "onclick='window.document.title=localStorage.getItem(\"output\")'>get result</button>\n"
+ + "<script>\n"
+ + " window.addEventListener('beforeunload', function (event) { "
+ + "log('window at beforeunload rv=' + event.returnValue); event.returnValue='1' });\n"
+ + " window.onbeforeunload = function (event) { "
+ + "log('window onbeforeunload rv=' + event.returnValue); return '2' }\n"
+ + " window.addEventListener('beforeunload', function (event) { "
+ + "log('window at beforeunload rv=' + event.returnValue); event.returnValue='3' });\n"
+ + "</script>\n"
+ + "</body></html>";
+
+ final WebDriver driver = loadPage2(html);
+ driver.findElement(By.id("tester")).click();
+ driver.switchTo().alert().accept();
+ Thread.sleep(200); // avoid stale element exception in FF60
+
+ driver.findElement(By.id("getResult")).click();
+ final String text = driver.getTitle().trim().replaceAll(";", "\n").trim();
+ assertEquals(String.join("\n", getExpectedAlerts()), text);
+ }
}
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot