iphone.js (11098B)
1 /* 2 * Copyright 2009 The Closure Compiler Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /** 17 * @fileoverview Definitions for all iPhone extensions. Created from: 18 * http://developer.apple.com/library/safari/navigation/ 19 * 20 * @externs 21 * @author agrieve@google.com (Andrew Grieve) 22 */ 23 24 /** 25 * The Touch class represents a single touch on the surface. A touch is the 26 * presence or movement of a finger that is part of a unique multi-touch 27 * sequence. 28 * @see http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/TouchClassReference/Touch/Touch.html 29 * @constructor 30 */ 31 function Touch() {} 32 33 /** 34 * The x-coordinate of the touch's location relative to the window's viewport. 35 * @type {number} 36 */ 37 Touch.prototype.clientX; 38 39 /** 40 * The y-coordinate of the touch's location relative to the window's viewport. 41 * @type {number} 42 */ 43 Touch.prototype.clientY; 44 45 /** 46 * The unique identifier for this touch object. 47 * @type {number} 48 */ 49 Touch.prototype.identifier; 50 51 /** 52 * The x-coordinate of the touch's location in page coordinates. 53 * @type {number} 54 */ 55 Touch.prototype.pageX; 56 57 /** 58 * The y-coordinate of the touch's location in page coordinates. 59 * @type {number} 60 */ 61 Touch.prototype.pageY; 62 63 /** 64 * The x-coordinate of the touch's location in screen coordinates. 65 * @type {number} 66 */ 67 Touch.prototype.screenX; 68 69 /** 70 * The y-coordinate of the touch's location in screen coordinates. 71 * @type {number} 72 */ 73 Touch.prototype.screenY; 74 75 /** 76 * The target of this touch. 77 * @type {EventTarget} 78 */ 79 Touch.prototype.target; 80 81 /** 82 * Creates a new Touch object. 83 * @see http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html#//apple_ref/javascript/instm/Document/createTouch 84 * @param {Window} view 85 * @param {EventTarget} target 86 * @param {number} identifier 87 * @param {number} pageX 88 * @param {number} pageY 89 * @param {number} screenX 90 * @param {number} screenY 91 * @return {Touch} 92 */ 93 Document.prototype.createTouch = function(view, target, identifier, pageX, 94 pageY, screenX, screenY) {}; 95 96 /** 97 * The TouchList class is used to represent a collection of Touch objects. 98 * @see http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/TouchListClassReference/TouchList/TouchList.html 99 * @constructor 100 */ 101 function TouchList() {} 102 103 /** 104 * The number of Touch objects in this TouchList object. 105 * @type {number} 106 */ 107 TouchList.prototype.length; 108 109 /** 110 * Returns the Touch object at the given index. 111 * @param {number} index 112 * @return {!Touch} 113 */ 114 TouchList.prototype.item = function(index) {}; 115 116 /** 117 * Creates a new TouchList object. 118 * @see http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html#//apple_ref/javascript/instm/Document/createTouchList 119 * @param {Array.<Touch>} touches 120 * @return {TouchList} 121 */ 122 Document.prototype.createTouchList = function(touches) {}; 123 124 /** 125 * The TouchEvent class encapsulates information about a touch event. 126 * 127 * <p>The system continually sends TouchEvent objects to an application as 128 * fingers touch and move across a surface. A touch event provides a snapshot of 129 * all touches during a multi-touch sequence, most importantly the touches that 130 * are new or have changed for a particular target. A multi-touch sequence 131 * begins when a finger first touches the surface. Other fingers may 132 * subsequently touch the surface, and all fingers may move across the surface. 133 * The sequence ends when the last of these fingers is lifted from the surface. 134 * An application receives touch event objects during each phase of any touch. 135 * </p> 136 * 137 * <p>The different types of TouchEvent objects that can occur are: 138 * <ul> 139 * <li>touchstart - Sent when a finger for a given event touches the surface. 140 * <li>touchmove - Sent when a given event moves on the surface. 141 * <li>touchend - Sent when a given event lifts from the surface. 142 * <li>touchcancel - Sent when the system cancels tracking for the touch. 143 * </ul> 144 * TouchEvent objects are combined together to form high-level GestureEvent 145 * objects that are also sent during a multi-touch sequence.</p> 146 * 147 * @see http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/TouchEventClassReference/TouchEvent/TouchEvent.html 148 * @extends {UIEvent} 149 * @constructor 150 */ 151 function TouchEvent() {} 152 153 /** 154 * A collection of Touch objects representing all touches associated with this 155 * target. 156 * @type {TouchList} 157 */ 158 TouchEvent.prototype.touches; 159 160 /** 161 * A collection of Touch objects representing all touches associated with this 162 * target. 163 * @type {TouchList} 164 */ 165 TouchEvent.prototype.targetTouches; 166 167 /** 168 * A collection of Touch objects representing all touches that changed in this event. 169 * @type {TouchList} 170 */ 171 TouchEvent.prototype.changedTouches; 172 173 /** 174 * The distance between two fingers since the start of an event as a multiplier 175 * of the initial distance. The initial value is 1.0. If less than 1.0, the 176 * gesture is pinch close (to zoom out). If greater than 1.0, the gesture is 177 * pinch open (to zoom in). 178 * @type {number} 179 */ 180 TouchEvent.prototype.scale; 181 182 /** 183 * The delta rotation since the start of an event, in degrees, where clockwise 184 * is positive and counter-clockwise is negative. The initial value is 0.0. 185 * @type {number} 186 */ 187 TouchEvent.prototype.rotation; 188 189 /** 190 * Initializes a newly created TouchEvent object. 191 * @param {string} type 192 * @param {boolean} canBubble 193 * @param {boolean} cancelable 194 * @param {Window} view 195 * @param {number} detail 196 * @param {number} screenX 197 * @param {number} screenY 198 * @param {number} clientX 199 * @param {number} clientY 200 * @param {boolean} ctrlKey 201 * @param {boolean} altKey 202 * @param {boolean} shiftKey 203 * @param {boolean} metaKey 204 * @param {TouchList} touches 205 * @param {TouchList} targetTouches 206 * @param {TouchList} changedTouches 207 * @param {number} scale 208 * @param {number} rotation 209 */ 210 TouchEvent.prototype.initTouchEvent = function(type, canBubble, cancelable, 211 view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, 212 metaKey, touches, targetTouches, changedTouches, scale, rotation) {}; 213 214 /** 215 * The GestureEvent class encapsulates information about a multi-touch gesture. 216 * 217 * GestureEvent objects are high-level events that encapsulate the low-level 218 * TouchEvent objects. Both GestureEvent and TouchEvent events are sent during 219 * a multi-touch sequence. Gesture events contain scaling and rotation 220 * information allowing gestures to be combined, if supported by the platform. 221 * If not supported, one gesture ends before another starts. Listen for 222 * GestureEvent events if you want to respond to gestures only, not process 223 * the low-level TouchEvent objects. 224 * 225 * @see http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/GestureEventClassReference/GestureEvent/GestureEvent.html 226 * @extends {UIEvent} 227 * @constructor 228 */ 229 function GestureEvent() {} 230 231 /** 232 * The distance between two fingers since the start of an event as a multiplier 233 * of the initial distance. The initial value is 1.0. If less than 1.0, the 234 * gesture is pinch close (to zoom out). If greater than 1.0, the gesture is 235 * pinch open (to zoom in). 236 * @type {number} 237 */ 238 GestureEvent.prototype.scale; 239 240 /** 241 * The delta rotation since the start of an event, in degrees, where clockwise 242 * is positive and counter-clockwise is negative. The initial value is 0.0. 243 * @type {number} 244 */ 245 GestureEvent.prototype.rotation; 246 247 /** 248 * The target of this gesture. 249 * @type {EventTarget} 250 */ 251 GestureEvent.prototype.target; 252 253 /** 254 * Initializes a newly created GestureEvent object. 255 * @param {string} type 256 * @param {boolean} canBubble 257 * @param {boolean} cancelable 258 * @param {Window} view 259 * @param {number} detail 260 * @param {number} screenX 261 * @param {number} screenY 262 * @param {number} clientX 263 * @param {number} clientY 264 * @param {boolean} ctrlKey 265 * @param {boolean} altKey 266 * @param {boolean} shiftKey 267 * @param {boolean} metaKey 268 * @param {EventTarget} target 269 * @param {number} scale 270 * @param {number} rotation 271 */ 272 GestureEvent.prototype.initGestureEvent = function(type, canBubble, cancelable, 273 view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, 274 metaKey, target, scale, rotation) {}; 275 276 /** 277 * Specifies the JavaScript method to invoke when the system cancels tracking 278 * for the touch. 279 * @type {?function(!TouchEvent)} 280 */ 281 Element.prototype.ontouchcancel; 282 283 /** 284 * Specifies the JavaScript method to invoke when a given event lifts from the 285 * surface. 286 * @type {?function(!TouchEvent)} 287 */ 288 Element.prototype.ontouchend; 289 290 /** 291 * Specifies the JavaScript method to invoke when a finger for a given event 292 * moves on the surface. 293 * @type {?function(!TouchEvent)} 294 */ 295 Element.prototype.ontouchmove; 296 297 /** 298 * Specifies the JavaScript method to invoke when a finger for a given event 299 * touches the surface. 300 * @type {?function(!TouchEvent)} 301 */ 302 Element.prototype.ontouchstart; 303 304 /** 305 * Specifies the JavaScript method to invoke when a gesture is started by 306 * two or more fingers touching the surface. 307 * @type {?function(!GestureEvent)} 308 */ 309 Element.prototype.ongesturestart; 310 311 /** 312 * Specifies the JavaScript method to invoke when fingers are moved during a 313 * gesture. 314 * @type {?function(!GestureEvent)} 315 */ 316 Element.prototype.ongesturechange; 317 318 /** 319 * Specifies the JavaScript method to invoke when a gesture ends (when there are 320 * 0 or 1 fingers touching the surface). 321 * @type {?function(!GestureEvent)} 322 */ 323 Element.prototype.ongestureend; 324 325 /** 326 * Specifies the JavaScript method to invoke when the browser device's 327 * orientation changes, i.e.the device is rotated. 328 * @type {?function(!Event)} 329 * @see http://developer.apple.com/library/IOS/#documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html 330 */ 331 Window.prototype.onorientationchange; 332 333 /** 334 * Returns the orientation of the browser's device, one of [-90, 0, 90, 180]. 335 * @type {number} 336 * @see http://developer.apple.com/library/IOS/#documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html 337 */ 338 Window.prototype.orientation; 339 340 /** 341 * @implicitCast 342 * @type {boolean} 343 */ 344 HTMLInputElement.prototype.autocorrect; 345 346 /** 347 * @implicitCast 348 * @type {boolean} 349 */ 350 HTMLInputElement.prototype.autocapitalize; 351 352 /** 353 * @implicitCast 354 * @type {boolean} 355 */ 356 HTMLTextAreaElement.prototype.autocorrect; 357 358 /** 359 * @implicitCast 360 * @type {boolean} 361 */ 362 HTMLTextAreaElement.prototype.autocapitalize;