1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.event;
16
17 import org.htmlunit.WebDriverTestCase;
18 import org.htmlunit.junit.annotation.Alerts;
19 import org.htmlunit.junit.annotation.HtmlUnitNYI;
20 import org.htmlunit.util.MimeType;
21 import org.junit.jupiter.api.Test;
22
23
24
25
26
27
28
29 public class EventTargetTest extends WebDriverTestCase {
30
31
32
33
34 @Test
35 @Alerts("not defined")
36 public void cloneEvent() throws Exception {
37 final String html = DOCTYPE_HTML
38 + "<html><head><script>\n"
39 + LOG_TITLE_FUNCTION
40 + " function test() {\n"
41 + " var div = document.getElementById('myId');\n"
42 + " if (div.attachEvent) {\n"
43 + " div.attachEvent('onclick', clickFn = function() {\n"
44 + " log('called!');\n"
45 + " });\n"
46 + " var clone = div.cloneNode(true);\n"
47 + " clone.fireEvent('onclick');\n"
48 + " } else {\n"
49 + " log('not defined');\n"
50 + " }\n"
51 + " }\n"
52 + "</script></head><body onload='test()'>\n"
53 + " <div id='myId'></div>\n"
54 + "</body></html>";
55
56 loadPageVerifyTitle2(html);
57 }
58
59
60
61
62 @Test
63 @Alerts({"before dispatchEvent()", "dispatchEvent() listener",
64 "insertBefore start", "insertBefore done", "after dispatchEvent()", "external script"})
65 @HtmlUnitNYI(
66 CHROME = {"before dispatchEvent()", "dispatchEvent() listener",
67 "insertBefore start", "insertBefore done", "external script", "after dispatchEvent()"},
68 EDGE = {"before dispatchEvent()", "dispatchEvent() listener",
69 "insertBefore start", "insertBefore done", "external script", "after dispatchEvent()"},
70 FF = {"before dispatchEvent()", "dispatchEvent() listener",
71 "insertBefore start", "insertBefore done", "external script", "after dispatchEvent()"},
72 FF_ESR = {"before dispatchEvent()", "dispatchEvent() listener",
73 "insertBefore start", "insertBefore done", "external script", "after dispatchEvent()"})
74 public void dispatchEventPostponed() throws Exception {
75 getMockWebConnection().setDefaultResponse("log('external script');", MimeType.TEXT_JAVASCRIPT);
76
77 final String html = DOCTYPE_HTML
78 + "<html><head>\n"
79 + "<script>\n"
80 + LOG_TITLE_FUNCTION
81 + "function test() {\n"
82 + " var listener = function(evt) {\n"
83 + " log('dispatchEvent() listener');\n"
84
85 + " var newnode = document.createElement('script');\n"
86 + " try {\n"
87 + " newnode.setAttribute('src', 'script.js');\n"
88 + " var outernode = document.getElementById('myId');\n"
89 + " log('insertBefore start');\n"
90 + " outernode.insertBefore(newnode, null);\n"
91 + " log('insertBefore done');\n"
92 + " } catch(e) { logEx(e); }\n"
93 + " }\n"
94
95 + " document.getElementById('myId').addEventListener('TestEvent', listener);\n"
96
97 + " var myEvent = new Event('TestEvent');\n"
98
99 + " log('before dispatchEvent()');\n"
100 + " document.getElementById('myId').dispatchEvent(myEvent);\n"
101 + " log('after dispatchEvent()');\n"
102 + "}\n"
103 + "</script>\n"
104 + "</head>"
105 + "<body onload='test()'>\n"
106 + " <div id='myId'></div>\n"
107 + "</body></html>";
108
109 loadPage2(html);
110 verifyTitle2(DEFAULT_WAIT_TIME, getWebDriver(), getExpectedAlerts());
111 }
112 }