Reviewed and landed by Darin.
[WebKit-https.git] / LayoutTests / dom / html / level2 / events / dispatchEvent12.js
1
2 /*
3 Copyright Â© 2001-2004 World Wide Web Consortium, 
4 (Massachusetts Institute of Technology, European Research Consortium 
5 for Informatics and Mathematics, Keio University). All 
6 Rights Reserved. This work is distributed under the W3C® Software License [1] in the 
7 hope that it will be useful, but WITHOUT ANY WARRANTY; without even 
8 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
9
10 [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
11 */
12
13
14
15    /**
16     *  Gets URI that identifies the test.
17     *  @return uri identifier of test
18     */
19 function getTargetURI() {
20       return "http://www.w3.org/2001/DOM-Test-Suite/level2/events/dispatchEvent12";
21    }
22
23 var docsLoaded = -1000000;
24 var builder = null;
25
26 //
27 //   This function is called by the testing framework before
28 //      running the test suite.
29 //
30 //   If there are no configuration exceptions, asynchronous
31 //        document loading is started.  Otherwise, the status
32 //        is set to complete and the exception is immediately
33 //        raised when entering the body of the test.
34 //
35 function setUpPage() {
36    setUpPageStatus = 'running';
37    try {
38      //
39      //   creates test document builder, may throw exception
40      //
41      builder = createConfiguredBuilder();
42
43       docsLoaded = 0;
44       
45       var docRef = null;
46       if (typeof(this.doc) != 'undefined') {
47         docRef = this.doc;
48       }
49       docsLoaded += preload(docRef, "doc", "hc_staff");
50         
51        if (docsLoaded == 1) {
52           setUpPage = 'complete';
53        }
54     } catch(ex) {
55         catchInitializationError(builder, ex);
56         setUpPage = 'complete';
57     }
58 }
59
60
61
62 //
63 //   This method is called on the completion of 
64 //      each asychronous load started in setUpTests.
65 //
66 //   When every synchronous loaded document has completed,
67 //      the page status is changed which allows the
68 //      body of the test to be executed.
69 function loadComplete() {
70     if (++docsLoaded == 1) {
71         setUpPageStatus = 'complete';
72     }
73 }
74
75 //EventMonitor's require a document level variable named monitor
76 var monitor;
77          
78      /**
79       *    Inner class implementation for variable other 
80       */
81 var other;
82
83 /**
84         * Constructor
85
86         */
87               
88 function EventListenerN10035() { 
89            }
90    
91         /**
92          *    
93 This method is called whenever an event occurs of the type for which theEventListenerinterface was registered.
94
95          * @param evt 
96 TheEventcontains contextual information about the event. It also contains thestopPropagationand preventDefaultmethods which are used in determining the event's flow and default action.
97
98          */
99 EventListenerN10035.prototype.handleEvent = function(evt) {
100          //
101          //   bring class variables into function scope
102          //
103         }
104
105 /**
106
107 A monitor is added, multiple calls to removeEventListener
108 are mde with similar but not identical arguments, and an event is dispatched.  
109 The monitor should recieve handleEvent calls.
110
111 * @author Curt Arnold
112 * @see http://www.w3.org/TR/DOM-Level-2-Events/events#Events-EventTarget-dispatchEvent
113 * @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'])
114 */
115 function dispatchEvent12() {
116    var success;
117     if(checkInitialization(builder, "dispatchEvent12") != null) return;
118     var doc;
119       var target;
120       var evt;
121       var preventDefault;
122       monitor = new EventMonitor();
123       
124       other = new EventListenerN10035();
125       
126       var events = new Array();
127
128       
129       var docRef = null;
130       if (typeof(this.doc) != 'undefined') {
131         docRef = this.doc;
132       }
133       doc = load(docRef, "doc", "hc_staff");
134       doc.addEventListener("foo", monitor.handleEvent, false);
135       doc.removeEventListener("foo", monitor.handleEvent, true);
136          doc.removeEventListener("food", monitor.handleEvent, false);
137          doc.removeEventListener("foo", other.handleEvent, false);
138          evt = doc.createEvent("Events");
139       evt.initEvent("foo",true,false);
140       preventDefault = doc.dispatchEvent(evt);
141       events = monitor.allEvents;
142 assertSize("eventCount",1,events);
143
144 }
145
146
147
148
149 function runTest() {
150    dispatchEvent12();
151 }