diff options
Diffstat (limited to 'test/testcases/tests/level2/events/dispatchEvent13.xml')
-rw-r--r-- | test/testcases/tests/level2/events/dispatchEvent13.xml | 84 |
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> |