2 Copyright © 2001-2004 World Wide Web Consortium,
3 (Massachusetts Institute of Technology, European Research Consortium
4 for Informatics and Mathematics, Keio University). All
5 Rights Reserved. This work is distributed under the W3C® Software License [1] in the
6 hope that it will be useful, but WITHOUT ANY WARRANTY; without even
7 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9 [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
13 * Gets URI that identifies the test.
14 * @return uri identifier of test
16 function getTargetURI() {
17 return "http://www.w3.org/2001/DOM-Test-Suite/level2/events/dispatchEvent12";
20 var docsLoaded = -1000000;
24 // This function is called by the testing framework before
25 // running the test suite.
27 // If there are no configuration exceptions, asynchronous
28 // document loading is started. Otherwise, the status
29 // is set to complete and the exception is immediately
30 // raised when entering the body of the test.
32 function setUpPage() {
33 setUpPageStatus = 'running';
36 // creates test document builder, may throw exception
38 builder = createConfiguredBuilder();
43 if (typeof(this.doc) != 'undefined') {
46 docsLoaded += preload(docRef, "doc", "hc_staff");
48 if (docsLoaded == 1) {
49 setUpPageStatus = 'complete';
52 catchInitializationError(builder, ex);
53 setUpPageStatus = 'complete';
58 // This method is called on the completion of
59 // each asychronous load started in setUpTests.
61 // When every synchronous loaded document has completed,
62 // the page status is changed which allows the
63 // body of the test to be executed.
64 function loadComplete() {
65 if (++docsLoaded == 1) {
66 setUpPageStatus = 'complete';
70 //EventMonitor's require a document level variable named monitor
74 * Inner class implementation for variable other
83 function EventListenerN10035() {
88 This method is called whenever an event occurs of the type for which theEventListenerinterface was registered.
91 TheEventcontains contextual information about the event. It also contains thestopPropagationand preventDefaultmethods which are used in determining the event's flow and default action.
94 EventListenerN10035.prototype.handleEvent = function(evt) {
96 // bring class variables into function scope
102 A monitor is added, multiple calls to removeEventListener
103 are mde with similar but not identical arguments, and an event is dispatched.
104 The monitor should recieve handleEvent calls.
106 * @author Curt Arnold
107 * @see http://www.w3.org/TR/DOM-Level-2-Events/events#Events-EventTarget-dispatchEvent
108 * @see 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'])
110 function dispatchEvent12() {
112 if(checkInitialization(builder, "dispatchEvent12") != null) return;
117 monitor = new EventMonitor();
119 other = new EventListenerN10035();
121 var events = new Array();
124 if (typeof(this.doc) != 'undefined') {
127 doc = load(docRef, "doc", "hc_staff");
128 doc.addEventListener("foo", monitor.handleEvent, false);
129 doc.removeEventListener("foo", monitor.handleEvent, true);
130 doc.removeEventListener("food", monitor.handleEvent, false);
131 doc.removeEventListener("foo", other.handleEvent, false);
132 evt = doc.createEvent("Events");
133 evt.initEvent("foo",true,false);
134 preventDefault = doc.dispatchEvent(evt);
135 events = monitor.allEvents;
136 assertSize("eventCount",1,events);