summaryrefslogtreecommitdiff
path: root/test/testcases/tests/level2/events/dispatchEvent13.xml
diff options
context:
space:
mode:
Diffstat (limited to 'test/testcases/tests/level2/events/dispatchEvent13.xml')
-rw-r--r--test/testcases/tests/level2/events/dispatchEvent13.xml84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/testcases/tests/level2/events/dispatchEvent13.xml b/test/testcases/tests/level2/events/dispatchEvent13.xml
new file mode 100644
index 0000000..f1b2d84
--- /dev/null
+++ b/test/testcases/tests/level2/events/dispatchEvent13.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="test-to-html.xsl" type="text/xml"?>
+<!--
+
+Copyright (c) 2001 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. This program is distributed under the W3C's Software
+Intellectual Property License. This program is distributed in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+
+-->
+<!DOCTYPE test SYSTEM "dom2.dtd">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="dispatchEvent13">
+<metadata>
+<title>dispatchEvent13</title>
+<creator>Curt Arnold</creator>
+<description>
+Two listeners are registered on the same target, each of which will remove both itself and
+the other on the first event. Only one should see the event since event listeners
+can never be invoked after being removed.
+</description>
+<date qualifier="created">2002-05-30</date>
+<subject resource="http://www.w3.org/TR/DOM-Level-2-Events/events#Events-EventTarget-dispatchEvent"/>
+<subject resource="http://www.w3.org/TR/DOM-Level-2-Events/events#xpointer(id('Events-EventTarget-dispatchEvent')/raises/exception[@name='EventException']/descr/p[substring-before(.,':')='UNSPECIFIED_EVENT_TYPE_ERR'])"/>
+</metadata>
+<var name="doc" type="Document"/>
+<var name="target" type="EventTarget"/>
+<var name="evt" type="Event"/>
+<var name="preventDefault" type="boolean"/>
+<var name="listeners" type="List"/>
+<var name="events" type="List"/>
+<!-- definition of private class instance that implements EventListener -->
+<var name="listener1" type="EventListener">
+ <!-- instance scope variables,
+ value attributes are passed via constructor -->
+ <var name="events" type="List" value="events"/>
+ <var name="listeners" type="List" value="listeners"/>
+ <!-- implementation of handleEvent method
+ any parameters (in this case 'evt') are
+ predefined -->
+ <handleEvent>
+ <!-- method scope variables -->
+ <var name="target" type="EventTarget"/>
+ <var name="listener" type="EventListener"/>
+ <!-- add event to the collection -->
+ <append collection="events" item="evt"/>
+ <!-- remove this and the other listener -->
+ <currentTarget var="target" obj="evt"/>
+ <for-each collection="listeners" member="listener">
+ <removeEventListener obj="target" type='"foo"' listener="listener" useCapture="false"/>
+ </for-each>
+ </handleEvent>
+</var>
+<!-- identical implementation of EventListener -->
+<var name="listener2" type="EventListener">
+ <var name="events" type="List" value="events"/>
+ <var name="listeners" type="List" value="listeners"/>
+ <handleEvent>
+ <var name="target" type="EventTarget"/>
+ <var name="listener" type="EventListener"/>
+ <!-- add event to the collection -->
+ <append collection="events" item="evt"/>
+ <!-- remove this and the other listener -->
+ <currentTarget var="target" obj="evt"/>
+ <for-each collection="listeners" member="listener">
+ <removeEventListener obj="target" type='"foo"' listener="listener" useCapture="false"/>
+ </for-each>
+ </handleEvent>
+</var>
+<load var="doc" href="hc_staff" willBeModified="true"/>
+<append collection="listeners" item="listener1"/>
+<append collection="listeners" item="listener2"/>
+<addEventListener obj="doc" type='"foo"' listener="listener1" useCapture="false"/>
+<addEventListener obj="doc" type='"foo"' listener="listener2" useCapture="false"/>
+<createEvent var="evt" obj="doc" eventType='"Events"'/>
+<initEvent obj="evt" eventTypeArg='"foo"' canBubbleArg="true" cancelableArg="false"/>
+<dispatchEvent var="preventDefault" obj="doc" evt="evt"/>
+<assertSize id="eventCount" collection="events" size="1"/>
+</test>