kolibrios/contrib/network/netsurf/libdom/test/testcases/tests/level2/events/dispatchEvent13.xml
Yogev Ezra bb2bbc6b91 Move NetSurf to /contrib folder
git-svn-id: svn://kolibrios.org@4364 a494cfbc-eb01-0410-851d-a64ba20cac60
2013-12-15 14:01:21 +00:00

85 lines
3.9 KiB
XML

<?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>