OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
3 * Copyright (C) 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2011 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 11 matching lines...) Expand all Loading... |
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 [ | 27 [ |
28 CheckSecurity, | 28 CheckSecurity, |
29 EventTarget, | 29 EventTarget, |
30 CustomToV8, | 30 CustomToV8, |
31 DoNotGenerateWrap, | 31 DoNotGenerateWrap, |
32 InterfaceName=Window | 32 ImplementedAs=DOMWindow |
33 ] interface DOMWindow { | 33 ] interface Window { |
34 // DOM Level 0 | 34 // DOM Level 0 |
35 [Replaceable] readonly attribute Screen screen; | 35 [Replaceable] readonly attribute Screen screen; |
36 [Replaceable] readonly attribute History history; | 36 [Replaceable] readonly attribute History history; |
37 [Replaceable] readonly attribute BarProp locationbar; | 37 [Replaceable] readonly attribute BarProp locationbar; |
38 [Replaceable] readonly attribute BarProp menubar; | 38 [Replaceable] readonly attribute BarProp menubar; |
39 [Replaceable] readonly attribute BarProp personalbar; | 39 [Replaceable] readonly attribute BarProp personalbar; |
40 [Replaceable] readonly attribute BarProp scrollbars; | 40 [Replaceable] readonly attribute BarProp scrollbars; |
41 [Replaceable] readonly attribute BarProp statusbar; | 41 [Replaceable] readonly attribute BarProp statusbar; |
42 [Replaceable] readonly attribute BarProp toolbar; | 42 [Replaceable] readonly attribute BarProp toolbar; |
43 [Replaceable, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonl
y attribute Navigator navigator; | 43 [Replaceable, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonl
y attribute Navigator navigator; |
44 [Replaceable] readonly attribute Navigator clientInformation; | 44 [Replaceable] readonly attribute Navigator clientInformation; |
45 readonly attribute Crypto crypto; | |
46 [DoNotCheckSecurity, CustomSetter, Unforgeable, Replaceable, PerWorldBinding
s, ActivityLog=AccessForIsolatedWorlds] readonly attribute Location location; | 45 [DoNotCheckSecurity, CustomSetter, Unforgeable, Replaceable, PerWorldBinding
s, ActivityLog=AccessForIsolatedWorlds] readonly attribute Location location; |
47 [MeasureAs=WindowEvent, NotEnumerable, Replaceable, CustomGetter, CustomSett
er] readonly attribute Event event; | 46 [MeasureAs=WindowEvent, NotEnumerable, Replaceable, CustomGetter, CustomSett
er] readonly attribute Event event; |
48 | 47 |
49 Selection getSelection(); | 48 Selection getSelection(); |
50 | 49 |
51 [CheckSecurityForNode] readonly attribute Element frameElement; | 50 [CheckSecurityForNode] readonly attribute Element frameElement; |
52 | 51 |
53 [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void focus(); | 52 [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void focus(); |
54 [DoNotCheckSecurity] void blur(); | 53 [DoNotCheckSecurity] void blur(); |
55 [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void close(); | 54 [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void close(); |
56 | 55 |
57 void print(); | 56 void print(); |
58 void stop(); | 57 void stop(); |
59 | 58 |
60 [Custom] DOMWindow open(DOMString url, | 59 [Custom] Window open(DOMString url, |
61 DOMString name, | 60 DOMString name, |
62 optional DOMString options); | 61 optional DOMString options); |
63 | 62 |
64 [Custom] any showModalDialog(DOMString url, | 63 [Custom] any showModalDialog(DOMString url, |
65 optional any dialogArgs, | 64 optional any dialogArgs, |
66 optional DOMString featureArgs); | 65 optional DOMString featureArgs); |
67 | 66 |
68 void alert([Default=Undefined] optional DOMString message); | 67 void alert([Default=Undefined] optional DOMString message); |
69 boolean confirm([Default=Undefined] optional DOMString message); | 68 boolean confirm([Default=Undefined] optional DOMString message); |
70 [TreatReturnedNullStringAs=Null] DOMString prompt([Default=Undefined] option
al DOMString message, | 69 [TreatReturnedNullStringAs=Null] DOMString prompt([Default=Undefined] option
al DOMString message, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long l
ength; | 105 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long l
ength; |
107 | 106 |
108 attribute DOMString name; | 107 attribute DOMString name; |
109 | 108 |
110 attribute DOMString status; | 109 attribute DOMString status; |
111 attribute DOMString defaultStatus; | 110 attribute DOMString defaultStatus; |
112 // This attribute is an alias of defaultStatus and is necessary for legacy u
ses. | 111 // This attribute is an alias of defaultStatus and is necessary for legacy u
ses. |
113 attribute DOMString defaultstatus; | 112 attribute DOMString defaultstatus; |
114 | 113 |
115 // Self referential attributes | 114 // Self referential attributes |
116 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow self; | 115 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute Window self; |
117 [DoNotCheckSecurity, Unforgeable] readonly attribute DOMWindow window; | 116 [DoNotCheckSecurity, Unforgeable] readonly attribute Window window; |
118 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow fram
es; | 117 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute Window frames; |
119 | 118 |
120 [Replaceable, DoNotCheckSecurityOnGetter, CustomSetter] readonly attribute D
OMWindow opener; | 119 [Replaceable, DoNotCheckSecurityOnGetter, CustomSetter] readonly attribute W
indow opener; |
121 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow paren
t; | 120 [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute Window parent; |
122 [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute DOMWindow top; | 121 [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute Window top; |
123 | 122 |
124 // DOM Level 2 AbstractView Interface | 123 // DOM Level 2 AbstractView Interface |
125 readonly attribute Document document; | 124 readonly attribute Document document; |
126 | 125 |
127 // CSSOM View Module | 126 // CSSOM View Module |
128 MediaQueryList matchMedia(DOMString query); | 127 MediaQueryList matchMedia(DOMString query); |
129 | 128 |
130 // styleMedia has been removed from the CSSOM View specification. | 129 // styleMedia has been removed from the CSSOM View specification. |
131 readonly attribute StyleMedia styleMedia; | 130 readonly attribute StyleMedia styleMedia; |
132 | 131 |
133 // DOM Level 2 Style Interface | 132 // DOM Level 2 Style Interface |
134 [PerWorldBindings] CSSStyleDeclaration getComputedStyle([Default=Undefined]
optional Element element, | 133 [PerWorldBindings] CSSStyleDeclaration getComputedStyle([Default=Undefined]
optional Element element, |
135 [TreatNullAs=NullS
tring, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString pseudoE
lement); | 134 [TreatNullAs=NullS
tring, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString pseudoE
lement); |
136 | 135 |
137 // WebKit extensions | 136 // WebKit extensions |
138 CSSRuleList getMatchedCSSRules([Default=Undefined] optional Element element, | 137 CSSRuleList getMatchedCSSRules([Default=Undefined] optional Element element, |
139 [TreatNullAs=NullString, TreatUndefinedAs=Nul
lString,Default=Undefined] optional DOMString pseudoElement); | 138 [TreatNullAs=NullString, TreatUndefinedAs=Nul
lString,Default=Undefined] optional DOMString pseudoElement); |
140 | 139 |
141 [Replaceable] readonly attribute double devicePixelRatio; | 140 [Replaceable] readonly attribute double devicePixelRatio; |
142 | 141 |
143 DOMPoint webkitConvertPointFromPageToNode([Default=Undefined] optional Node
node, | 142 WebKitPoint webkitConvertPointFromPageToNode([Default=Undefined] optional No
de node, |
144 [Default=Undefined] optional DOMPo
int p); | 143 [Default=Undefined] optional We
bKitPoint p); |
145 DOMPoint webkitConvertPointFromNodeToPage([Default=Undefined] optional Node
node, | 144 WebKitPoint webkitConvertPointFromNodeToPage([Default=Undefined] optional No
de node, |
146 [Default=Undefined] optional DOMPo
int p); | 145 [Default=Undefined] optional We
bKitPoint p); |
147 | 146 |
148 [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] re
adonly attribute DOMApplicationCache applicationCache; | 147 [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] re
adonly attribute DOMApplicationCache applicationCache; |
149 | 148 |
150 [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, Ge
tterRaisesException] readonly attribute Storage sessionStorage; | 149 [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, Ge
tterRaisesException] readonly attribute Storage sessionStorage; |
151 [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, Ge
tterRaisesException] readonly attribute Storage localStorage; | 150 [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, Ge
tterRaisesException] readonly attribute Storage localStorage; |
152 | 151 |
153 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS | |
154 // This is the interface orientation in degrees. Some examples are: | 152 // This is the interface orientation in degrees. Some examples are: |
155 // 0 is straight up; -90 is when the device is rotated 90 clockwise; | 153 // 0 is straight up; -90 is when the device is rotated 90 clockwise; |
156 // 90 is when rotated counter clockwise. | 154 // 90 is when rotated counter clockwise. |
157 readonly attribute long orientation; | 155 [Conditional=ORIENTATION_EVENTS] readonly attribute long orientation; |
158 #endif | |
159 | 156 |
160 [Replaceable] readonly attribute Console console; | 157 [Replaceable] readonly attribute Console console; |
161 | 158 |
162 // cross-document messaging | 159 // cross-document messaging |
163 [DoNotCheckSecurity, Custom, RaisesException] void postMessage(SerializedScr
iptValue message, DOMString targetOrigin, optional Array messagePorts); | 160 [DoNotCheckSecurity, Custom, RaisesException] void postMessage(SerializedScr
iptValue message, DOMString targetOrigin, optional Array messagePorts); |
164 | 161 |
165 [Replaceable] readonly attribute Performance performance; | 162 [Replaceable] readonly attribute Performance performance; |
166 | 163 |
167 // Timers | |
168 [Custom] long setTimeout(any handler, [Default=Undefined] optional long time
out); | |
169 void clearTimeout([Default=Undefined] optional long handle); | |
170 [Custom] long setInterval(any handler, [Default=Undefined] optional long tim
eout); | |
171 void clearInterval([Default=Undefined] optional long handle); | |
172 | |
173 [MeasureAs=UnprefixedRequestAnimationFrame] long requestAnimationFrame(Reque
stAnimationFrameCallback callback); | 164 [MeasureAs=UnprefixedRequestAnimationFrame] long requestAnimationFrame(Reque
stAnimationFrameCallback callback); |
174 void cancelAnimationFrame(long id); | 165 void cancelAnimationFrame(long id); |
175 [MeasureAs=PrefixedRequestAnimationFrame] long webkitRequestAnimationFrame(R
equestAnimationFrameCallback callback); | 166 [MeasureAs=PrefixedRequestAnimationFrame] long webkitRequestAnimationFrame(R
equestAnimationFrameCallback callback); |
176 [ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id
); | 167 [ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id
); |
177 [ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(
long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove
this when removing vendor prefix. | 168 [ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(
long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove
this when removing vendor prefix. |
178 | 169 |
179 // Base64 | 170 // Base64 |
180 [RaisesException] DOMString atob([TreatNullAs=NullString,Default=Undefined]
optional DOMString string); | 171 [RaisesException] DOMString atob([TreatNullAs=NullString,Default=Undefined]
optional DOMString string); |
181 [RaisesException] DOMString btoa([TreatNullAs=NullString,Default=Undefined]
optional DOMString string); | 172 [RaisesException] DOMString btoa([TreatNullAs=NullString,Default=Undefined]
optional DOMString string); |
182 | 173 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 // attribute EventListener onundo; | 245 // attribute EventListener onundo; |
255 | 246 |
256 // Webkit extensions | 247 // Webkit extensions |
257 attribute EventListener onreset; | 248 attribute EventListener onreset; |
258 attribute EventListener onsearch; | 249 attribute EventListener onsearch; |
259 attribute EventListener onwebkitanimationend; | 250 attribute EventListener onwebkitanimationend; |
260 attribute EventListener onwebkitanimationiteration; | 251 attribute EventListener onwebkitanimationiteration; |
261 attribute EventListener onwebkitanimationstart; | 252 attribute EventListener onwebkitanimationstart; |
262 attribute EventListener onwebkittransitionend; | 253 attribute EventListener onwebkittransitionend; |
263 attribute EventListener ontransitionend; | 254 attribute EventListener ontransitionend; |
264 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS | 255 [Conditional=ORIENTATION_EVENTS] attribute EventListener onorientationchange
; |
265 attribute EventListener onorientationchange; | |
266 #endif | |
267 [EnabledAtRuntime=touch] attribute EventListener ontouchstart; | 256 [EnabledAtRuntime=touch] attribute EventListener ontouchstart; |
268 [EnabledAtRuntime=touch] attribute EventListener ontouchmove; | 257 [EnabledAtRuntime=touch] attribute EventListener ontouchmove; |
269 [EnabledAtRuntime=touch] attribute EventListener ontouchend; | 258 [EnabledAtRuntime=touch] attribute EventListener ontouchend; |
270 [EnabledAtRuntime=touch] attribute EventListener ontouchcancel; | 259 [EnabledAtRuntime=touch] attribute EventListener ontouchcancel; |
271 | 260 |
272 [EnabledAtRuntime=deviceMotion] attribute EventListener ondevicemotion; | 261 [EnabledAtRuntime=deviceMotion] attribute EventListener ondevicemotion; |
273 [EnabledAtRuntime=deviceOrientation] attribute EventListener ondeviceorienta
tion; | 262 [EnabledAtRuntime=deviceOrientation] attribute EventListener ondeviceorienta
tion; |
274 | 263 |
275 // EventTarget interface | 264 // EventTarget interface |
276 [Custom] void addEventListener(DOMString type, | 265 [Custom] void addEventListener(DOMString type, |
(...skipping 14 matching lines...) Expand all Loading... |
291 attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add
metrics to determine when we can remove this. | 280 attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add
metrics to determine when we can remove this. |
292 attribute IDBCursorConstructor webkitIDBCursor; | 281 attribute IDBCursorConstructor webkitIDBCursor; |
293 attribute IDBDatabaseConstructor webkitIDBDatabase; | 282 attribute IDBDatabaseConstructor webkitIDBDatabase; |
294 attribute IDBFactoryConstructor webkitIDBFactory; | 283 attribute IDBFactoryConstructor webkitIDBFactory; |
295 attribute IDBIndexConstructor webkitIDBIndex; | 284 attribute IDBIndexConstructor webkitIDBIndex; |
296 attribute IDBKeyRangeConstructor webkitIDBKeyRange; | 285 attribute IDBKeyRangeConstructor webkitIDBKeyRange; |
297 attribute IDBObjectStoreConstructor webkitIDBObjectStore; | 286 attribute IDBObjectStoreConstructor webkitIDBObjectStore; |
298 attribute IDBRequestConstructor webkitIDBRequest; | 287 attribute IDBRequestConstructor webkitIDBRequest; |
299 attribute IDBTransactionConstructor webkitIDBTransaction; | 288 attribute IDBTransactionConstructor webkitIDBTransaction; |
300 | 289 |
301 // Constructors enabled at runtime but whose interface does not have Enabled
AtRuntime | 290 // Constructors whose name does not match the interface name. |
302 // extended attribute. | 291 // FIXME: Remove these once [ImplementedAs] is used and once constructor nam
es match interface names. |
303 // FIXME: Remove these. | |
304 [EnabledAtRuntime=media] attribute MediaErrorConstructor MediaError; | |
305 [EnabledAtRuntime=media] attribute TimeRangesConstructor TimeRanges; | |
306 [EnabledAtRuntime=media] attribute HTMLSourceElementConstructor HTMLSourceEl
ement; | |
307 [EnabledAtRuntime=media] attribute MediaControllerConstructor MediaControlle
r; | |
308 [EnabledAtRuntime=deviceMotion] attribute DeviceMotionEventConstructor Devic
eMotionEvent; | |
309 [EnabledAtRuntime=touch] attribute TouchConstructor Touch; | |
310 [EnabledAtRuntime=touch] attribute TouchEventConstructor TouchEvent; | |
311 [EnabledAtRuntime=touch] attribute TouchListConstructor TouchList; | |
312 [EnabledAtRuntime=webMIDI] attribute MIDIConnectionEventConstructor MIDIConn
ectionEvent; | |
313 [EnabledAtRuntime=webMIDI] attribute MIDIMessageEventConstructor MIDIMessage
Event; | |
314 [EnabledAtRuntime=mediaStream] attribute MediaStreamConstructor webkitMediaS
tream; | 292 [EnabledAtRuntime=mediaStream] attribute MediaStreamConstructor webkitMediaS
tream; |
315 [Conditional=WEB_AUDIO, EnabledAtRuntime=WebAudio] attribute AudioContextCon
structor webkitAudioContext; | 293 [Conditional=WEB_AUDIO, EnabledAtRuntime=WebAudio] attribute AudioContextCon
structor webkitAudioContext; |
316 [Conditional=WEB_AUDIO, EnabledAtRuntime=WebAudio] attribute OfflineAudioCon
textConstructor webkitOfflineAudioContext; | 294 [Conditional=WEB_AUDIO, EnabledAtRuntime=WebAudio] attribute OfflineAudioCon
textConstructor webkitOfflineAudioContext; |
317 [EnabledAtRuntime=peerConnection] attribute RTCPeerConnectionConstructor web
kitRTCPeerConnection; | 295 [EnabledAtRuntime=peerConnection] attribute RTCPeerConnectionConstructor web
kitRTCPeerConnection; |
318 [EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute Secur
ityPolicyViolationEventConstructor SecurityPolicyViolationEvent; | |
319 [EnabledAtRuntime] attribute SharedWorkerConstructor SharedWorker; // Usable
with the new operator | |
320 [EnabledAtRuntime=scriptedSpeech] attribute SpeechGrammarConstructor webkitS
peechGrammar; | 296 [EnabledAtRuntime=scriptedSpeech] attribute SpeechGrammarConstructor webkitS
peechGrammar; |
321 [EnabledAtRuntime=scriptedSpeech] attribute SpeechGrammarListConstructor web
kitSpeechGrammarList; | 297 [EnabledAtRuntime=scriptedSpeech] attribute SpeechGrammarListConstructor web
kitSpeechGrammarList; |
322 [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionConstructor web
kitSpeechRecognition; | 298 [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionConstructor web
kitSpeechRecognition; |
323 [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionErrorConstructo
r webkitSpeechRecognitionError; | 299 [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionErrorConstructo
r webkitSpeechRecognitionError; |
324 [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionEventConstructo
r webkitSpeechRecognitionEvent; | 300 [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionEventConstructo
r webkitSpeechRecognitionEvent; |
325 | |
326 // Constructors whose name does not match the interface name. | |
327 // FIXME: Remove these once [ImplementedAs] is used and once constructor nam
es match interface names. | |
328 attribute ShadowRootConstructor WebKitShadowRoot; | 301 attribute ShadowRootConstructor WebKitShadowRoot; |
329 [Conditional=WEB_AUDIO] attribute PannerNodeConstructor webkitAudioPannerNod
e; | 302 [Conditional=WEB_AUDIO] attribute PannerNodeConstructor webkitAudioPannerNod
e; |
330 | 303 |
331 // window.toString() requires special handling in V8 | 304 // window.toString() requires special handling in V8 |
332 [DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString t
oString(); | 305 [DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString t
oString(); |
333 | 306 |
334 [ImplementedAs=anonymousIndexedGetter, NotEnumerable] getter DOMWindow(unsig
ned long index); | 307 [ImplementedAs=anonymousIndexedGetter, NotEnumerable] getter Window(unsigned
long index); |
335 [Custom, NotEnumerable] getter DOMWindow (DOMString name); | 308 [Custom, NotEnumerable] getter Window (DOMString name); |
336 }; | 309 }; |
337 | 310 |
| 311 Window implements WindowTimers; |
| 312 |
OLD | NEW |