/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview Definitions for all the extensions over the * W3C's DOM3 specification in HTML5. This file depends on * w3c_dom3.js. The whole file has been fully type annotated. * * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/index.html * @see http://dev.w3.org/html5/spec/Overview.html * * This also includes Typed Array definitions from * http://www.khronos.org/registry/typedarray/specs/latest/ * * This relies on w3c_event.js being included first. * * @externs */ /* * JSON API. */ /** * @see https://developer.mozilla.org/En/Using_native_JSON */ Window.prototype.JSON = {}; /** * @param {string} text * @param {(function(string, *) : *)=} opt_reviver * @return {*} * @throws {Error} * @nosideeffects * @see http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ */ Window.prototype.JSON.parse = function(text, opt_reviver) {}; /** * @param {*} value * @param {(Array.|(function(string, *) : *)|null)=} opt_replacer * @param {(number|string)=} opt_space * @return {string} * @throws {Error} * @nosideeffects * @see http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ */ Window.prototype.JSON.stringify = function(value, opt_replacer, opt_space) {}; /** * @constructor * @extends {HTMLElement} */ function HTMLCanvasElement() {} /** @type {number} */ HTMLCanvasElement.prototype.width; /** @type {number} */ HTMLCanvasElement.prototype.height; /** * @param {string=} opt_type * @return {string} * @throws {Error} * @nosideeffects */ HTMLCanvasElement.prototype.toDataURL = function(opt_type) {}; /** * @param {string} contextId * @param {Object=} opt_args * @return {Object} */ HTMLCanvasElement.prototype.getContext = function(contextId, opt_args) {}; /** * @constructor */ function CanvasRenderingContext2D() {} /** @type {HTMLCanvasElement} */ CanvasRenderingContext2D.prototype.canvas; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.save = function() {}; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.restore = function() {}; /** * @param {number} x * @param {number} y * @return {undefined} */ CanvasRenderingContext2D.prototype.scale = function(x, y) {}; /** * @param {number} angle * @return {undefined} */ CanvasRenderingContext2D.prototype.rotate = function(angle) {}; /** * @param {number} x * @param {number} y * @return {undefined} */ CanvasRenderingContext2D.prototype.translate = function(x, y) {}; /** * @param {number} m11 * @param {number} m12 * @param {number} m21 * @param {number} m22 * @param {number} dx * @param {number} dy * @return {undefined} */ CanvasRenderingContext2D.prototype.transform = function( m11, m12, m21, m22, dx, dy) {}; /** * @param {number} m11 * @param {number} m12 * @param {number} m21 * @param {number} m22 * @param {number} dx * @param {number} dy * @return {undefined} */ CanvasRenderingContext2D.prototype.setTransform = function( m11, m12, m21, m22, dx, dy) {}; /** * @param {number} x0 * @param {number} y0 * @param {number} x1 * @param {number} y1 * @return {CanvasGradient} * @throws {Error} * @nosideeffects */ CanvasRenderingContext2D.prototype.createLinearGradient = function( x0, y0, x1, y1) {}; /** * @param {number} x0 * @param {number} y0 * @param {number} r0 * @param {number} x1 * @param {number} y1 * @param {number} r1 * @return {CanvasGradient} * @throws {Error} * @nosideeffects */ CanvasRenderingContext2D.prototype.createRadialGradient = function( x0, y0, r0, x1, y1, r1) {}; /** * @param {HTMLImageElement|HTMLCanvasElement} image * @param {string} repetition * @return {CanvasPattern} * @throws {Error} * @nosideeffects */ CanvasRenderingContext2D.prototype.createPattern = function( image, repetition) {}; /** * @param {number} x * @param {number} y * @param {number} w * @param {number} h * @return {undefined} */ CanvasRenderingContext2D.prototype.clearRect = function(x, y, w, h) {}; /** * @param {number} x * @param {number} y * @param {number} w * @param {number} h * @return {undefined} */ CanvasRenderingContext2D.prototype.fillRect = function(x, y, w, h) {}; /** * @param {number} x * @param {number} y * @param {number} w * @param {number} h * @return {undefined} */ CanvasRenderingContext2D.prototype.strokeRect = function(x, y, w, h) {}; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.beginPath = function() {}; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.closePath = function() {}; /** * @param {number} x * @param {number} y * @return {undefined} */ CanvasRenderingContext2D.prototype.moveTo = function(x, y) {}; /** * @param {number} x * @param {number} y * @return {undefined} */ CanvasRenderingContext2D.prototype.lineTo = function(x, y) {}; /** * @param {number} cpx * @param {number} cpy * @param {number} x * @param {number} y * @return {undefined} */ CanvasRenderingContext2D.prototype.quadraticCurveTo = function( cpx, cpy, x, y) {}; /** * @param {number} cp1x * @param {number} cp1y * @param {number} cp2x * @param {number} cp2y * @param {number} x * @param {number} y * @return {undefined} */ CanvasRenderingContext2D.prototype.bezierCurveTo = function( cp1x, cp1y, cp2x, cp2y, x, y) {}; /** * @param {number} x1 * @param {number} y1 * @param {number} x2 * @param {number} y2 * @param {number} radius * @return {undefined} */ CanvasRenderingContext2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {}; /** * @param {number} x * @param {number} y * @param {number} w * @param {number} h * @return {undefined} */ CanvasRenderingContext2D.prototype.rect = function(x, y, w, h) {}; /** * @param {number} x * @param {number} y * @param {number} radius * @param {number} startAngle * @param {number} endAngle * @param {boolean} anticlockwise * @return {undefined} */ CanvasRenderingContext2D.prototype.arc = function( x, y, radius, startAngle, endAngle, anticlockwise) {}; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.fill = function() {}; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.stroke = function() {}; /** * @return {undefined} */ CanvasRenderingContext2D.prototype.clip = function() {}; /** * @param {number} x * @param {number} y * @return {boolean} * @nosideeffects */ CanvasRenderingContext2D.prototype.isPointInPath = function(x, y) {}; /** * @param {string} text * @param {number} x * @param {number} y * @param {number=} opt_maxWidth * @return {undefined} */ CanvasRenderingContext2D.prototype.fillText = function( text, x, y, opt_maxWidth) {}; /** * @param {string} text * @param {number} x * @param {number} y * @param {number=} opt_maxWidth * @return {undefined} */ CanvasRenderingContext2D.prototype.strokeText = function( text, x, y, opt_maxWidth) {}; /** * @param {string} text * @return {TextMetrics} * @nosideeffects */ CanvasRenderingContext2D.prototype.measureText = function(text) {}; /** * @param {HTMLImageElement|HTMLCanvasElement|Image|HTMLVideoElement} image * @param {number} dx Destination x coordinate. * @param {number} dy Destination y coordinate. * @param {number=} opt_dw Destination box width. Defaults to the image width. * @param {number=} opt_dh Destination box height. Defaults to the image height. * @param {number=} opt_sx Source box x coordinate. Used to select a portion of * the source image to draw. Defaults to 0. * @param {number=} opt_sy Source box y coordinate. Used to select a portion of * the source image to draw. Defaults to 0. * @param {number=} opt_sw Source box width. Used to select a portion of * the source image to draw. Defaults to the full image width. * @param {number=} opt_sh Source box height. Used to select a portion of * the source image to draw. Defaults to the full image height. * @return {undefined} */ CanvasRenderingContext2D.prototype.drawImage = function( image, dx, dy, opt_dw, opt_dh, opt_sx, opt_sy, opt_sw, opt_sh) {}; /** * @param {number} sw * @param {number} sh * @return {ImageData} * @nosideeffects */ CanvasRenderingContext2D.prototype.createImageData = function(sw, sh) {}; /** * @param {number} sx * @param {number} sy * @param {number} sw * @param {number} sh * @return {ImageData} * @throws {Error} * @nosideeffects */ CanvasRenderingContext2D.prototype.getImageData = function(sx, sy, sw, sh) {}; /** * @param {ImageData} imagedata * @param {number} dx * @param {number} dy * @param {number=} opt_dirtyX * @param {number=} opt_dirtyY * @param {number=} opt_dirtyWidth * @param {number=} opt_dirtyHeight * @return {undefined} */ CanvasRenderingContext2D.prototype.putImageData = function(imagedata, dx, dy, opt_dirtyX, opt_dirtyY, opt_dirtyWidth, opt_dirtyHeight) {}; /** * Note: WebKit only * @param {number|string=} opt_a * @param {number=} opt_b * @param {number=} opt_c * @param {number=} opt_d * @param {number=} opt_e * @see http://developer.apple.com/library/safari/#documentation/appleapplications/reference/WebKitDOMRef/CanvasRenderingContext2D_idl/Classes/CanvasRenderingContext2D/index.html * @return {undefined} */ CanvasRenderingContext2D.prototype.setFillColor; /** * Note: WebKit only * @param {number|string=} opt_a * @param {number=} opt_b * @param {number=} opt_c * @param {number=} opt_d * @param {number=} opt_e * @see http://developer.apple.com/library/safari/#documentation/appleapplications/reference/WebKitDOMRef/CanvasRenderingContext2D_idl/Classes/CanvasRenderingContext2D/index.html * @return {undefined} */ CanvasRenderingContext2D.prototype.setStrokeColor; /** @type {string} */ CanvasRenderingContext2D.prototype.fillColor; /** * @type {string} * @implicitCast */ CanvasRenderingContext2D.prototype.fillStyle; /** @type {string} */ CanvasRenderingContext2D.prototype.font; /** @type {number} */ CanvasRenderingContext2D.prototype.globalAlpha; /** @type {string} */ CanvasRenderingContext2D.prototype.globalCompositeOperation; /** @type {number} */ CanvasRenderingContext2D.prototype.lineWidth; /** @type {string} */ CanvasRenderingContext2D.prototype.lineCap; /** @type {string} */ CanvasRenderingContext2D.prototype.lineJoin; /** @type {number} */ CanvasRenderingContext2D.prototype.miterLimit; /** @type {number} */ CanvasRenderingContext2D.prototype.shadowBlur; /** @type {string} */ CanvasRenderingContext2D.prototype.shadowColor; /** @type {number} */ CanvasRenderingContext2D.prototype.shadowOffsetX; /** @type {number} */ CanvasRenderingContext2D.prototype.shadowOffsetY; /** * @type {string} * @implicitCast */ CanvasRenderingContext2D.prototype.strokeStyle; /** @type {string} */ CanvasRenderingContext2D.prototype.strokeColor; /** @type {string} */ CanvasRenderingContext2D.prototype.textAlign; /** @type {string} */ CanvasRenderingContext2D.prototype.textBaseline; /** * @constructor */ function CanvasGradient() {} /** * @param {number} offset * @param {string} color * @return {undefined} */ CanvasGradient.prototype.addColorStop = function(offset, color) {}; /** * @constructor */ function CanvasPattern() {} /** * @constructor */ function TextMetrics() {} /** @type {number} */ TextMetrics.prototype.width; /** * @constructor */ function ImageData() {} /** @type {Uint8ClampedArray} */ ImageData.prototype.data; /** @type {number} */ ImageData.prototype.width; /** @type {number} */ ImageData.prototype.height; /** * @constructor */ function ClientInformation() {} /** @type {boolean} */ ClientInformation.prototype.onLine; /** * @param {string} protocol * @param {string} uri * @param {string} title * @return {undefined} */ ClientInformation.prototype.registerProtocolHandler = function( protocol, uri, title) {}; /** * @param {string} mimeType * @param {string} uri * @param {string} title * @return {undefined} */ ClientInformation.prototype.registerContentHandler = function( mimeType, uri, title) {}; // HTML5 Database objects /** * @constructor */ function Database() {} /** * @type {string} */ Database.prototype.version; /** * @param {function(!SQLTransaction) : void} callback * @param {(function(!SQLError) : void)=} opt_errorCallback * @param {Function=} opt_Callback */ Database.prototype.transaction = function( callback, opt_errorCallback, opt_Callback) {}; /** * @param {function(!SQLTransaction) : void} callback * @param {(function(!SQLError) : void)=} opt_errorCallback * @param {Function=} opt_Callback */ Database.prototype.readTransaction = function( callback, opt_errorCallback, opt_Callback) {}; /** * @param {string} oldVersion * @param {string} newVersion * @param {function(!SQLTransaction) : void} callback * @param {function(!SQLError) : void} errorCallback * @param {Function} successCallback */ Database.prototype.changeVersion = function( oldVersion, newVersion, callback, errorCallback, successCallback) {}; /** * @interface */ function DatabaseCallback() {} /** * @param {!Database} db * @return {undefined} */ DatabaseCallback.prototype.handleEvent = function(db) {}; /** * @constructor */ function SQLError() {} /** * @type {number} */ SQLError.prototype.code; /** * @type {string} */ SQLError.prototype.message; /** * @constructor */ function SQLTransaction() {} /** * @param {string} sqlStatement * @param {Array.<*>=} opt_queryArgs * @param {SQLStatementCallback=} opt_callback * @param {(function(!SQLTransaction, !SQLError) : (boolean|void))=} * opt_errorCallback */ SQLTransaction.prototype.executeSql = function( sqlStatement, opt_queryArgs, opt_callback, opt_errorCallback) {}; /** * @typedef {(function(!SQLTransaction, !SQLResultSet) : void)} */ var SQLStatementCallback; /** * @constructor */ function SQLResultSet() {} /** * @type {number} */ SQLResultSet.prototype.insertId; /** * @type {number} */ SQLResultSet.prototype.rowsAffected; /** * @type {SQLResultSetRowList} */ SQLResultSet.prototype.rows; /** * @constructor */ function SQLResultSetRowList() {} /** * @type {number} */ SQLResultSetRowList.prototype.length; /** * @param {number} index * @return {Object} * @nosideeffects */ SQLResultSetRowList.prototype.item = function(index) {}; /** * @param {string} name * @param {string} version * @param {string} description * @param {number} size * @param {(DatabaseCallback|function(Database))=} opt_callback * @return {Database} */ function openDatabase(name, version, description, size, opt_callback) {} /** * @param {string} name * @param {string} version * @param {string} description * @param {number} size * @param {(DatabaseCallback|function(Database))=} opt_callback * @return {Database} */ Window.prototype.openDatabase = function(name, version, description, size, opt_callback) {}; /** * @type {boolean} */ HTMLImageElement.prototype.complete; /** * @type {string} * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#attr-img-crossorigin */ HTMLImageElement.prototype.crossOrigin; /** * The postMessage method (as defined by HTML5 spec and implemented in FF3). * @param {*} message * @param {string|Array} targetOrigin The target origin in the 2-argument * version of this function. WebKit seems to have implemented this * function wrong in the 3-argument version so that ports is the * second argument. * @param {string|Array=} ports An optional array of ports or the target * origin. WebKit seems to have implemented this * function wrong in the 3-argument version so that targetOrigin is the * third argument. * @see http://dev.w3.org/html5/postmsg/#dom-window-postmessage */ Window.prototype.postMessage = function(message, targetOrigin, ports) {}; /** * The postMessage method (as implemented in Opera). * @param {string} message */ Document.prototype.postMessage = function(message) {}; /** * Document head accessor. * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#the-head-element-0 * @type {HTMLHeadElement} */ Document.prototype.head; /** * @see https://developer.apple.com/webapps/docs/documentation/AppleApplications/Reference/SafariJSRef/DOMApplicationCache/DOMApplicationCache.html * @constructor * @implements {EventTarget} */ function DOMApplicationCache() {} /** @override */ DOMApplicationCache.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ DOMApplicationCache.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ DOMApplicationCache.prototype.dispatchEvent = function(evt) {}; /** * The object isn't associated with an application cache. This can occur if the * update process fails and there is no previous cache to revert to, or if there * is no manifest file. * @type {number} */ DOMApplicationCache.prototype.UNCACHED = 0; /** * The cache is idle. * @type {number} */ DOMApplicationCache.prototype.IDLE = 1; /** * The update has started but the resources are not downloaded yet - for * example, this can happen when the manifest file is fetched. * @type {number} */ DOMApplicationCache.prototype.CHECKING = 2; /** * The resources are being downloaded into the cache. * @type {number} */ DOMApplicationCache.prototype.DOWNLOADING = 3; /** * Resources have finished downloading and the new cache is ready to be used. * @type {number} */ DOMApplicationCache.prototype.UPDATEREADY = 4; /** * The current status of the application cache. * @type {number} */ DOMApplicationCache.prototype.status; /** * Sent when the update process finishes for the first time; that is, the first * time an application cache is saved. * @type {?function(!Event)} */ DOMApplicationCache.prototype.oncached; /** * Sent when the cache update process begins. * @type {?function(!Event)} */ DOMApplicationCache.prototype.onchecking; /** * Sent when the update process begins downloading resources in the manifest * file. * @type {?function(!Event)} */ DOMApplicationCache.prototype.ondownloading; /** * Sent when an error occurs. * @type {?function(!Event)} */ DOMApplicationCache.prototype.onerror; /** * Sent when the update process finishes but the manifest file does not change. * @type {?function(!Event)} */ DOMApplicationCache.prototype.onnoupdate; /** * Sent when each resource in the manifest file begins to download. * @type {?function(!Event)} */ DOMApplicationCache.prototype.onprogress; /** * Sent when there is an existing application cache, the update process * finishes, and there is a new application cache ready for use. * @type {?function(!Event)} */ DOMApplicationCache.prototype.onupdateready; /** * Replaces the active cache with the latest version. * @throws {DOMException} */ DOMApplicationCache.prototype.swapCache = function() {}; /** * Manually triggers the update process. * @throws {DOMException} */ DOMApplicationCache.prototype.update = function() {}; /** @type {DOMApplicationCache} */ var applicationCache; /** @type {DOMApplicationCache} */ Window.prototype.applicationCache; /** * @see https://developer.mozilla.org/En/DOM/Worker/Functions_available_to_workers * @param {...string} var_args */ Window.prototype.importScripts = function(var_args) {}; /** * @see https://developer.mozilla.org/En/DOM/Worker/Functions_available_to_workers * @param {...string} var_args */ var importScripts = function(var_args) {}; /** * @see http://dev.w3.org/html5/postmsg/ * @interface */ function Transferable() {} /** * @see http://dev.w3.org/html5/workers/ * @constructor * @implements {EventTarget} */ function WebWorker() {} /** @override */ WebWorker.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ WebWorker.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ WebWorker.prototype.dispatchEvent = function(evt) {}; /** * Stops the worker process */ WebWorker.prototype.terminate = function() {}; /** * Posts a message to the worker thread. * @param {string} message */ WebWorker.prototype.postMessage = function(message) {}; /** * Sent when the worker thread posts a message to its creator. * @type {?function(!MessageEvent)} */ WebWorker.prototype.onmessage; /** * Sent when the worker thread encounters an error. * @type {?function(!Event)} */ WebWorker.prototype.onerror; /** * @see http://dev.w3.org/html5/workers/ * @constructor * @implements {EventTarget} */ function Worker(opt_arg0) {} /** @override */ Worker.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ Worker.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ Worker.prototype.dispatchEvent = function(evt) {}; /** * Stops the worker process */ Worker.prototype.terminate = function() {}; /** * Posts a message to the worker thread. * @param {*} message * @param {Array.=} opt_transfer */ Worker.prototype.postMessage = function(message, opt_transfer) {}; /** * Posts a message to the worker thread. * @param {*} message * @param {Array.=} opt_transfer */ Worker.prototype.webkitPostMessage = function(message, opt_transfer) {}; /** * Sent when the worker thread posts a message to its creator. * @type {?function(!MessageEvent)} */ Worker.prototype.onmessage = function() {}; /** * Sent when the worker thread encounters an error. * @type {?function(!Event)} */ Worker.prototype.onerror = function() {}; /** * @see http://dev.w3.org/html5/workers/ * @param {string} scriptURL The URL of the script to run in the SharedWorker. * @param {string=} opt_name A name that can later be used to obtain a * reference to the same SharedWorker. * @constructor * @implements {EventTarget} */ function SharedWorker(scriptURL, opt_name) {} /** @override */ SharedWorker.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ SharedWorker.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ SharedWorker.prototype.dispatchEvent = function(evt) {}; /** * @type {!MessagePort} */ SharedWorker.prototype.port; /** * Called on network errors for loading the initial script. * @type {?function(!Event)} */ SharedWorker.prototype.onerror = function() {}; /** * @see http://dev.w3.org/html5/workers/ * @interface */ function WorkerLocation() {} /** @type {string} */ WorkerLocation.prototype.protocol; /** @type {string} */ WorkerLocation.prototype.host; /** @type {string} */ WorkerLocation.prototype.hostname; /** @type {string} */ WorkerLocation.prototype.port; /** @type {string} */ WorkerLocation.prototype.pathname; /** @type {string} */ WorkerLocation.prototype.search; /** @type {string} */ WorkerLocation.prototype.hash; /** * @see http://dev.w3.org/html5/workers/ * @interface * @extends {EventTarget} */ function WorkerGlobalScope() {} /** @type {WorkerGlobalScope} */ WorkerGlobalScope.prototype.self; /** @type {WorkerLocation} */ WorkerGlobalScope.prototype.location; /** * Closes the worker represented by this WorkerGlobalScope. */ WorkerGlobalScope.prototype.close = function() {}; /** * Sent when the worker encounters an error. * @type {?function(!Event)} */ WorkerGlobalScope.prototype.onerror; /** * Sent when the worker goes offline. * @type {?function(!Event)} */ WorkerGlobalScope.prototype.onoffline; /** * Sent when the worker goes online. * @type {?function(!Event)} */ WorkerGlobalScope.prototype.ononline; /** * @see http://dev.w3.org/html5/workers/ * @interface * @extends {WorkerGlobalScope} */ function DedicatedWorkerGlobalScope() {} /** * Posts a message to creator of this worker. * @param {*} message * @param {Array.=} opt_transfer */ DedicatedWorkerGlobalScope.prototype.postMessage = function(message, opt_transfer) {}; /** * Posts a message to creator of this worker. * @param {*} message * @param {Array.=} opt_transfer */ DedicatedWorkerGlobalScope.prototype.webkitPostMessage = function(message, opt_transfer) {}; /** * Sent when the creator posts a message to this worker. * @type {?function(!MessageEvent)} */ DedicatedWorkerGlobalScope.prototype.onmessage = function() {}; /** * @see http://dev.w3.org/html5/workers/ * @interface * @extends {WorkerGlobalScope} */ function SharedWorkerGlobalScope() {} /** @type {string} */ SharedWorkerGlobalScope.prototype.name; /** * Sent when a connection to this worker is opened. * @type {?function(!Event)} */ SharedWorkerGlobalScope.prototype.onconnect = function() {}; /** @type {Element} */ HTMLElement.prototype.contextMenu; /** @type {boolean} */ HTMLElement.prototype.draggable; /** * This is actually a DOMSettableTokenList property. However since that * interface isn't currently defined and no known browsers implement this * feature, just define the property for now. * * @const * @type {Object} */ HTMLElement.prototype.dropzone; /** * @see http://www.w3.org/TR/html5/dom.html#dom-getelementsbyclassname * @param {string} classNames * @return {!NodeList} * @nosideeffects */ HTMLElement.prototype.getElementsByClassName = function(classNames) {}; // NOTE: Document.prototype.getElementsByClassName is in gecko_dom.js /** @type {boolean} */ HTMLElement.prototype.hidden; /** @type {boolean} */ HTMLElement.prototype.spellcheck; /** @type {string} */ HTMLAnchorElement.prototype.hash; /** @type {string} */ HTMLAnchorElement.prototype.host; /** @type {string} */ HTMLAnchorElement.prototype.hostname; /** @type {string} */ HTMLAnchorElement.prototype.pathname; /** @type {string} */ HTMLAnchorElement.prototype.port; /** @type {string} */ HTMLAnchorElement.prototype.protocol; /** @type {string} */ HTMLAnchorElement.prototype.search; /** @type {string} */ HTMLInputElement.prototype.autocomplete; /** @type {string} */ HTMLInputElement.prototype.dirname; /** @type {FileList} */ HTMLInputElement.prototype.files; /** @type {string} */ HTMLInputElement.prototype.list; /** @type {string} */ HTMLInputElement.prototype.max; /** @type {string} */ HTMLInputElement.prototype.min; /** @type {string} */ HTMLInputElement.prototype.pattern; /** @type {boolean} */ HTMLInputElement.prototype.multiple; /** @type {string} */ HTMLInputElement.prototype.placeholder; /** @type {boolean} */ HTMLInputElement.prototype.required; /** @type {string} */ HTMLInputElement.prototype.step; /** * @constructor * @extends {HTMLElement} */ function HTMLMediaElement() {} /** @type {MediaError} */ HTMLMediaElement.prototype.error; /** @type {string} */ HTMLMediaElement.prototype.src; /** @type {string} */ HTMLMediaElement.prototype.currentSrc; /** @type {number} */ HTMLMediaElement.prototype.networkState; /** @type {boolean} */ HTMLMediaElement.prototype.autobuffer; /** @type {TimeRanges} */ HTMLMediaElement.prototype.buffered; /** * Loads the media element. */ HTMLMediaElement.prototype.load = function() {}; /** * @param {string} type Type of the element in question in question. * @return {string} Whether it can play the type. * @nosideeffects */ HTMLMediaElement.prototype.canPlayType = function(type) {}; /** @type {number} */ HTMLMediaElement.prototype.readyState; /** @type {boolean} */ HTMLMediaElement.prototype.seeking; /** @type {number} */ HTMLMediaElement.prototype.currentTime; /** @type {number} */ HTMLMediaElement.prototype.startTime; /** @type {number} */ HTMLMediaElement.prototype.duration; /** @type {boolean} */ HTMLMediaElement.prototype.paused; /** @type {number} */ HTMLMediaElement.prototype.defaultPlaybackRate; /** @type {number} */ HTMLMediaElement.prototype.playbackRate; /** @type {TimeRanges} */ HTMLMediaElement.prototype.played; /** @type {TimeRanges} */ HTMLMediaElement.prototype.seekable; /** @type {boolean} */ HTMLMediaElement.prototype.ended; /** @type {boolean} */ HTMLMediaElement.prototype.autoplay; /** @type {boolean} */ HTMLMediaElement.prototype.loop; /** * Starts playing the media. */ HTMLMediaElement.prototype.play = function() {}; /** * Pauses the media. */ HTMLMediaElement.prototype.pause = function() {}; /** @type {boolean} */ HTMLMediaElement.prototype.controls; /** @type {number} */ HTMLMediaElement.prototype.volume; /** @type {boolean} */ HTMLMediaElement.prototype.muted; /** * @constructor * @extends {HTMLMediaElement} */ function HTMLAudioElement() {} /** * @constructor * @extends {HTMLMediaElement} */ function HTMLVideoElement() {} /** * Starts displaying the video in full screen mode. */ HTMLVideoElement.prototype.webkitEnterFullscreen = function() {}; /** * Starts displaying the video in full screen mode. */ HTMLVideoElement.prototype.webkitEnterFullScreen = function() {}; /** * Stops displaying the video in full screen mode. */ HTMLVideoElement.prototype.webkitExitFullscreen = function() {}; /** * Stops displaying the video in full screen mode. */ HTMLVideoElement.prototype.webkitExitFullScreen = function() {}; /** @type {string} */ HTMLVideoElement.prototype.width; /** @type {string} */ HTMLVideoElement.prototype.height; /** @type {number} */ HTMLVideoElement.prototype.videoWidth; /** @type {number} */ HTMLVideoElement.prototype.videoHeight; /** @type {string} */ HTMLVideoElement.prototype.poster; /** @type {boolean} */ HTMLVideoElement.prototype.webkitSupportsFullscreen; /** @type {boolean} */ HTMLVideoElement.prototype.webkitDisplayingFullscreen; /** * @constructor */ function MediaError() {} /** @type {number} */ MediaError.prototype.code; // HTML5 MessageChannel /** * @see http://dev.w3.org/html5/spec/comms.html#messagechannel * @constructor */ function MessageChannel() {} /** * Returns the first port. * @type {!MessagePort} */ MessageChannel.prototype.port1; /** * Returns the second port. * @type {!MessagePort} */ MessageChannel.prototype.port2; // HTML5 MessagePort /** * @see http://dev.w3.org/html5/spec/comms.html#messageport * @constructor * @implements {EventTarget} * @implements {Transferable} */ function MessagePort() {} /** @override */ MessagePort.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ MessagePort.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ MessagePort.prototype.dispatchEvent = function(evt) {}; /** * Posts a message through the channel, optionally with the given * Array of Transferables. * @param {*} message * @param {Array.=} opt_transfer */ MessagePort.prototype.postMessage = function(message, opt_transfer) { }; /** * Begins dispatching messages received on the port. */ MessagePort.prototype.start = function() {}; /** * Disconnects the port, so that it is no longer active. */ MessagePort.prototype.close = function() {}; /** * @type {?function(!MessageEvent)} */ MessagePort.prototype.onmessage; // HTML5 MessageEvent class /** * @see http://dev.w3.org/html5/spec/comms.html#messageevent * @constructor * @extends {Event} */ function MessageEvent() {} /** * Returns the data of the message. * @type {*} */ MessageEvent.prototype.data; /** * Returns the origin of the message, for server-sent events and cross-document * messaging. * @type {string} */ MessageEvent.prototype.origin; /** * Returns the last event ID, for server-sent events. * @type {string} */ MessageEvent.prototype.lastEventId; /** * Returns the last event ID, for server-sent events. * @type {Window} */ MessageEvent.prototype.source; /** * Returns the Array of MessagePorts sent with the message, for cross-document * messaging and channel messaging. * @type {Array.} */ MessageEvent.prototype.ports; /** * Initializes the event in a manner analogous to the similarly-named methods in * the DOM Events interfaces. * @param {string} typeArg * @param {boolean} canBubbleArg * @param {boolean} cancelableArg * @param {*} dataArg * @param {string} originArg * @param {string} lastEventIdArg * @param {Window} sourceArg * @param {Array.} portsArg * @override */ MessageEvent.prototype.initMessageEvent = function(typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, portsArg) {}; /** * Initializes the event in a manner analogous to the similarly-named methods in * the DOM Events interfaces. * @param {string} namespaceURI * @param {string} typeArg * @param {boolean} canBubbleArg * @param {boolean} cancelableArg * @param {*} dataArg * @param {string} originArg * @param {string} lastEventIdArg * @param {Window} sourceArg * @param {Array.} portsArg */ MessageEvent.prototype.initMessageEventNS = function(namespaceURI, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, portsArg) {}; /** * HTML5 DataTransfer class * @see http://dev.w3.org/html5/spec/dnd.html#the-dragevent-and-datatransfer-interfaces * @constructor */ function DataTransfer() {} /** @type {string} */ DataTransfer.prototype.dropEffect; /** @type {string} */ DataTransfer.prototype.effectAllowed; /** @type {Array.} */ DataTransfer.prototype.types; /** @type {FileList} */ DataTransfer.prototype.files; /** * @param {string=} opt_format Format for which to remove data. */ DataTransfer.prototype.clearData = function(opt_format) {}; /** * @param {string} format Format for which to set data. * @param {string} data Data to add. */ DataTransfer.prototype.setData = function(format, data) {}; /** * @param {string} format Format for which to set data. * @return {string} Data for the given format. */ DataTransfer.prototype.getData = function(format) { return ''; }; /** * @param {HTMLElement} img The image to use when dragging. * @param {number} x Horizontal position of the cursor. * @param {number} y Vertical position of the cursor. */ DataTransfer.prototype.setDragImage = function(img, x, y) {}; /** * @param {HTMLElement} elem Element to receive drag result events. */ DataTransfer.prototype.addElement = function(elem) {}; /** * Addition for accessing clipboard file data that are part of the proposed * HTML5 spec. * @type {DataTransfer} */ MouseEvent.prototype.dataTransfer; /** * @constructor * @extends {Event} */ function ProgressEvent() {} /** @type {number} */ ProgressEvent.prototype.total; /** @type {number} */ ProgressEvent.prototype.loaded; /** @type {boolean} */ ProgressEvent.prototype.lengthComputable; /** * @constructor */ function TimeRanges() {} /** @type {number} */ TimeRanges.prototype.length; /** * @param {number} index The index. * @return {number} The start time of the range at index. * @throws {DOMException} */ TimeRanges.prototype.start = function(index) { return 0; }; /** * @param {number} index The index. * @return {number} The end time of the range at index. * @throws {DOMException} */ TimeRanges.prototype.end = function(index) { return 0; }; // HTML5 Web Socket class /** * @see http://dev.w3.org/html5/websockets/ * @constructor * @param {string} url * @param {string=} opt_protocol * @implements {EventTarget} */ function WebSocket(url, opt_protocol) {} /** @override */ WebSocket.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ WebSocket.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ WebSocket.prototype.dispatchEvent = function(evt) {}; /** * Returns the URL value that was passed to the constructor. * @type {string} */ WebSocket.prototype.URL; /** * The connection has not yet been established. * @type {number} */ WebSocket.prototype.CONNECTING = 0; /** * The Web Socket connection is established and communication is possible. * @type {number} */ WebSocket.prototype.OPEN = 1; /** * The connection has been closed or could not be opened. * @type {number} */ WebSocket.prototype.CLOSED = 2; /** * Represents the state of the connection. * @type {number} */ WebSocket.prototype.readyState; /** * Returns the number of bytes that have been queued but not yet sent. * @type {number} */ WebSocket.prototype.bufferedAmount; /** * An event handler called on open event. * @type {?function(!Event)} */ WebSocket.prototype.onopen; /** * An event handler called on message event. * @type {?function(!MessageEvent)} */ WebSocket.prototype.onmessage; /** * An event handler called on close event. * @type {?function(!Event)} */ WebSocket.prototype.onclose; /** * Transmits data using the connection. * @param {string|ArrayBuffer} data * @return {boolean} */ WebSocket.prototype.send = function(data) {}; /** * Closes the Web Socket connection or connection attempt, if any. */ WebSocket.prototype.close = function() {}; /** * @type {string} Sets the type of data (blob or arraybuffer) for binary data. */ WebSocket.prototype.binaryType; // HTML5 History /** * Pushes a new state into the session history. * @see http://www.w3.org/TR/html5/history.html#the-history-interface * @param {*} data New state. * @param {string} title The title for a new session history entry. * @param {string=} opt_url The URL for a new session history entry. */ History.prototype.pushState = function(data, title, opt_url) {}; /** * Replaces the current state in the session history. * @see http://www.w3.org/TR/html5/history.html#the-history-interface * @param {*} data New state. * @param {string} title The title for a session history entry. * @param {string=} opt_url The URL for a new session history entry. */ History.prototype.replaceState = function(data, title, opt_url) {}; /** * @see http://www.w3.org/TR/html5/history.html#event-definitions * @constructor * @extends {Event} */ function PopStateEvent() {} /** * @type {*} */ PopStateEvent.prototype.state; /** * Initializes the event after it has been created with document.createEvent * @param {string} typeArg * @param {boolean} canBubbleArg * @param {boolean} cancelableArg * @param {*} stateArg */ PopStateEvent.prototype.initPopStateEvent = function(typeArg, canBubbleArg, cancelableArg, stateArg) {}; /** * @see http://www.w3.org/TR/html5/history.html#event-definitions * @constructor * @extends {Event} */ function HashChangeEvent() {} /** @type {string} */ HashChangeEvent.prototype.oldURL; /** @type {string} */ HashChangeEvent.prototype.newURL; /** * Initializes the event after it has been created with document.createEvent * @param {string} typeArg * @param {boolean} canBubbleArg * @param {boolean} cancelableArg * @param {string} oldURLArg * @param {string} newURLArg */ HashChangeEvent.prototype.initHashChangeEvent = function(typeArg, canBubbleArg, cancelableArg, oldURLArg, newURLArg) {}; /** * @see http://www.w3.org/TR/html5/history.html#event-definitions * @constructor * @extends {Event} */ function PageTransitionEvent() {} /** @type {boolean} */ PageTransitionEvent.prototype.persisted; /** * Initializes the event after it has been created with document.createEvent * @param {string} typeArg * @param {boolean} canBubbleArg * @param {boolean} cancelableArg * @param {*} persistedArg */ PageTransitionEvent.prototype.initPageTransitionEvent = function(typeArg, canBubbleArg, cancelableArg, persistedArg) {}; /** * @constructor */ function FileList() {} /** @type {number} */ FileList.prototype.length; /** * @param {number} i File to return from the list. * @return {File} The ith file in the list. * @nosideeffects */ FileList.prototype.item = function(i) { return null; }; /** * @type {boolean} * @see http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#withcredentials */ XMLHttpRequest.prototype.withCredentials; /** * @type {XMLHttpRequestUpload} * @see http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#the-upload-attribute */ XMLHttpRequest.prototype.upload; /** * @param {string} mimeType The mime type to override with. */ XMLHttpRequest.prototype.overrideMimeType = function(mimeType) {}; /** * @type {string} * @see http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#the-responsetype-attribute */ XMLHttpRequest.prototype.responseType; /** * @type {*} * @see http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#the-responsetype-attribute */ XMLHttpRequest.prototype.response; /** * @type {ArrayBuffer} * Implemented as a draft spec in Firefox 4 as the way to get a requested array * buffer from an XMLHttpRequest. * @see https://developer.mozilla.org/En/Using_XMLHttpRequest#Receiving_binary_data_using_JavaScript_typed_arrays */ XMLHttpRequest.prototype.mozResponseArrayBuffer; /** * XMLHttpRequestEventTarget defines events for checking the status of a data * transfer between a client and a server. This should be a common base class * for XMLHttpRequest and XMLHttpRequestUpload. * * @constructor * @implements {EventTarget} */ function XMLHttpRequestEventTarget() {} /** @override */ XMLHttpRequestEventTarget.prototype.addEventListener = function( type, listener, useCapture) {}; /** @override */ XMLHttpRequestEventTarget.prototype.removeEventListener = function( type, listener, useCapture) {}; /** @override */ XMLHttpRequestEventTarget.prototype.dispatchEvent = function(evt) {}; /** * An event target to track the status of an upload. * * @constructor * @extends {XMLHttpRequestEventTarget} */ function XMLHttpRequestUpload() {} /** * @param {number=} opt_width * @param {number=} opt_height * @constructor * @extends {HTMLImageElement} */ function Image(opt_width, opt_height) {} /** * Dataset collection. * This is really a DOMStringMap but it behaves close enough to an object to * pass as an object. * @type {Object} * @const */ HTMLElement.prototype.dataset; /** * @constructor */ function DOMTokenList() {} /** * Returns the number of CSS classes applied to this Element. * @type {number} */ DOMTokenList.prototype.length; /** * @param {number} index The index of the item to return. * @return {string} The CSS class at the specified index. * @nosideeffects */ DOMTokenList.prototype.item = function(index) {}; /** * @param {string} token The CSS class to check for. * @return {boolean} Whether the CSS class has been applied to the Element. * @nosideeffects */ DOMTokenList.prototype.contains = function(token) {}; /** * @param {string} token The CSS class to add to this element. */ DOMTokenList.prototype.add = function(token) {}; /** * @param {string} token The CSS class to remove from this element. */ DOMTokenList.prototype.remove = function(token) {}; /** * @param {string} token The CSS class to toggle from this element. * @return {boolean} False if the token was removed; True otherwise. */ DOMTokenList.prototype.toggle = function(token) {}; /** * @return {string} A stringified representation of CSS classes. * @nosideeffects * @override */ DOMTokenList.prototype.toString = function() {}; /** * A better interface to CSS classes than className. * @type {DOMTokenList} * @see http://www.w3.org/TR/html5/elements.html#dom-classlist * @const */ HTMLElement.prototype.classList; /** * @param {number} length The length in bytes * @constructor * @noalias * @throws {Error} * @nosideeffects * @implements {Transferable} */ function ArrayBuffer(length) {} /** @type {number} */ ArrayBuffer.prototype.byteLength; /** * @param {number} begin * @param {number=} opt_end * @return {!ArrayBuffer} * @nosideeffects */ ArrayBuffer.prototype.slice = function(begin, opt_end) {}; /** * @constructor * @noalias */ function ArrayBufferView() {} /** @type {!ArrayBuffer} */ ArrayBufferView.prototype.buffer; /** @type {number} */ ArrayBufferView.prototype.byteOffset; /** @type {number} */ ArrayBufferView.prototype.byteLength; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} If the user passes a backing array, then indexed * accesses will modify the backing array. JSCompiler does not model * this well. In other words, if you have: * * var x = new ArrayBuffer(1); * var y = new Int8Array(x); * y[0] = 2; * * JSCompiler will not recognize that the last assignment modifies x. * We workaround this by marking all these arrays as @modifies {arguments}, * to introduce the possibility that x aliases y. */ function Int8Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Int8Array.BYTES_PER_ELEMENT; /** @type {number} */ Int8Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Int8Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Int8Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Int8Array} * @nosideeffects */ Int8Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Uint8Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Uint8Array.BYTES_PER_ELEMENT; /** @type {number} */ Uint8Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Uint8Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Uint8Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Uint8Array} * @nosideeffects */ Uint8Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Uint8ClampedArray(length, opt_byteOffset, opt_length) {} /** @type {number} */ Uint8ClampedArray.BYTES_PER_ELEMENT; /** @type {number} */ Uint8ClampedArray.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Uint8ClampedArray.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Uint8ClampedArray.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Uint8ClampedArray} * @nosideeffects */ Uint8ClampedArray.prototype.subarray = function(begin, opt_end) {}; /** * @typedef {Uint8ClampedArray} * @deprecated CanvasPixelArray has been replaced by Uint8ClampedArray * in the latest spec. * @see http://www.w3.org/TR/2dcontext/#imagedata */ var CanvasPixelArray; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Int16Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Int16Array.BYTES_PER_ELEMENT; /** @type {number} */ Int16Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Int16Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Int16Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Int16Array} * @nosideeffects */ Int16Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Uint16Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Uint16Array.BYTES_PER_ELEMENT; /** @type {number} */ Uint16Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Uint16Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Uint16Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Uint16Array} * @nosideeffects */ Uint16Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Int32Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Int32Array.BYTES_PER_ELEMENT; /** @type {number} */ Int32Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Int32Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Int32Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Int32Array} * @nosideeffects */ Int32Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Uint32Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Uint32Array.BYTES_PER_ELEMENT; /** @type {number} */ Uint32Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Uint32Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Uint32Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Uint32Array} * @nosideeffects */ Uint32Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Float32Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Float32Array.BYTES_PER_ELEMENT; /** @type {number} */ Float32Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Float32Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Float32Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Float32Array} * @nosideeffects */ Float32Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {number|ArrayBufferView|Array.|ArrayBuffer} length or array * or buffer * @param {number=} opt_byteOffset * @param {number=} opt_length * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @modifies {arguments} */ function Float64Array(length, opt_byteOffset, opt_length) {} /** @type {number} */ Float64Array.BYTES_PER_ELEMENT; /** @type {number} */ Float64Array.prototype.BYTES_PER_ELEMENT; /** @type {number} */ Float64Array.prototype.length; /** * @param {ArrayBufferView|Array.} array * @param {number=} opt_offset */ Float64Array.prototype.set = function(array, opt_offset) {}; /** * @param {number} begin * @param {number=} opt_end * @return {!Float64Array} * @nosideeffects */ Float64Array.prototype.subarray = function(begin, opt_end) {}; /** * @param {ArrayBuffer} buffer * @param {number=} opt_byteOffset * @param {number=} opt_byteLength * @extends {ArrayBufferView} * @constructor * @noalias * @throws {Error} * @nosideeffects */ function DataView(buffer, opt_byteOffset, opt_byteLength) {} /** * @param {number} byteOffset * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getInt8 = function(byteOffset) {}; /** * @param {number} byteOffset * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getUint8 = function(byteOffset) {}; /** * @param {number} byteOffset * @param {boolean=} opt_littleEndian * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getInt16 = function(byteOffset, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {boolean=} opt_littleEndian * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getUint16 = function(byteOffset, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {boolean=} opt_littleEndian * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getInt32 = function(byteOffset, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {boolean=} opt_littleEndian * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getUint32 = function(byteOffset, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {boolean=} opt_littleEndian * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getFloat32 = function(byteOffset, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {boolean=} opt_littleEndian * @return {number} * @throws {Error} * @nosideeffects */ DataView.prototype.getFloat64 = function(byteOffset, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {number} value * @throws {Error} */ DataView.prototype.setInt8 = function(byteOffset, value) {}; /** * @param {number} byteOffset * @param {number} value * @throws {Error} */ DataView.prototype.setUint8 = function(byteOffset, value) {}; /** * @param {number} byteOffset * @param {number} value * @param {boolean=} opt_littleEndian * @throws {Error} */ DataView.prototype.setInt16 = function(byteOffset, value, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {number} value * @param {boolean=} opt_littleEndian * @throws {Error} */ DataView.prototype.setUint16 = function(byteOffset, value, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {number} value * @param {boolean=} opt_littleEndian * @throws {Error} */ DataView.prototype.setInt32 = function(byteOffset, value, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {number} value * @param {boolean=} opt_littleEndian * @throws {Error} */ DataView.prototype.setUint32 = function(byteOffset, value, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {number} value * @param {boolean=} opt_littleEndian * @throws {Error} */ DataView.prototype.setFloat32 = function( byteOffset, value, opt_littleEndian) {}; /** * @param {number} byteOffset * @param {number} value * @param {boolean=} opt_littleEndian * @throws {Error} */ DataView.prototype.setFloat64 = function( byteOffset, value, opt_littleEndian) {}; /** * Constraint Validation API properties and methods * @see http://www.w3.org/TR/2009/WD-html5-20090423/forms.html#the-constraint-validation-api */ /** @return {boolean} */ HTMLFormElement.prototype.checkValidity = function() {}; /** @type {boolean} */ HTMLFormElement.prototype.novalidate; /** @constructor */ function ValidityState() {} /** @type {boolean} */ ValidityState.prototype.customError; /** @type {boolean} */ ValidityState.prototype.patternMismatch; /** @type {boolean} */ ValidityState.prototype.rangeOverflow; /** @type {boolean} */ ValidityState.prototype.rangeUnderflow; /** @type {boolean} */ ValidityState.prototype.stepMismatch; /** @type {boolean} */ ValidityState.prototype.typeMismatch; /** @type {boolean} */ ValidityState.prototype.tooLong; /** @type {boolean} */ ValidityState.prototype.valid; /** @type {boolean} */ ValidityState.prototype.valueMissing; /** @type {boolean} */ HTMLButtonElement.prototype.autofocus; /** * @const * @type {NodeList} */ HTMLButtonElement.prototype.labels; /** @type {string} */ HTMLButtonElement.prototype.validationMessage; /** * @const * @type {ValidityState} */ HTMLButtonElement.prototype.validity; /** @type {boolean} */ HTMLButtonElement.prototype.willValidate; /** @return {boolean} */ HTMLButtonElement.prototype.checkValidity = function() {}; /** @param {string} message */ HTMLButtonElement.prototype.setCustomValidity = function(message) {}; /** @type {boolean} */ HTMLInputElement.prototype.autofocus; /** @type {boolean} */ HTMLInputElement.prototype.formNoValidate; /** * @const * @type {NodeList} */ HTMLInputElement.prototype.labels; /** @type {string} */ HTMLInputElement.prototype.validationMessage; /** * @const * @type {ValidityState} */ HTMLInputElement.prototype.validity; /** @type {boolean} */ HTMLInputElement.prototype.willValidate; /** @return {boolean} */ HTMLInputElement.prototype.checkValidity = function() {}; /** @param {string} message */ HTMLInputElement.prototype.setCustomValidity = function(message) {}; /** @type {Element} */ HTMLLabelElement.prototype.control; /** @type {boolean} */ HTMLSelectElement.prototype.autofocus; /** * @const * @type {NodeList} */ HTMLSelectElement.prototype.labels; /** @type {string} */ HTMLSelectElement.prototype.validationMessage; /** * @const * @type {ValidityState} */ HTMLSelectElement.prototype.validity; /** @type {boolean} */ HTMLSelectElement.prototype.willValidate; /** @return {boolean} */ HTMLSelectElement.prototype.checkValidity = function() {}; /** @param {string} message */ HTMLSelectElement.prototype.setCustomValidity = function(message) {}; /** @type {boolean} */ HTMLTextAreaElement.prototype.autofocus; /** * @const * @type {NodeList} */ HTMLTextAreaElement.prototype.labels; /** @type {string} */ HTMLTextAreaElement.prototype.validationMessage; /** * @const * @type {ValidityState} */ HTMLTextAreaElement.prototype.validity; /** @type {boolean} */ HTMLTextAreaElement.prototype.willValidate; /** @return {boolean} */ HTMLTextAreaElement.prototype.checkValidity = function() {}; /** @param {string} message */ HTMLTextAreaElement.prototype.setCustomValidity = function(message) {}; /** * @constructor * @extends {HTMLElement} * @see http://www.w3.org/TR/html5/the-embed-element.html#htmlembedelement */ function HTMLEmbedElement() {} /** * @type {string} * @see http://www.w3.org/TR/html5/dimension-attributes.html#dom-dim-width */ HTMLEmbedElement.prototype.width; /** * @type {string} * @see http://www.w3.org/TR/html5/dimension-attributes.html#dom-dim-height */ HTMLEmbedElement.prototype.height; /** * @type {string} * @see http://www.w3.org/TR/html5/the-embed-element.html#dom-embed-src */ HTMLEmbedElement.prototype.src; /** * @type {string} * @see http://www.w3.org/TR/html5/the-embed-element.html#dom-embed-type */ HTMLEmbedElement.prototype.type; // Fullscreen APIs. /** * @see http://www.w3.org/TR/2012/WD-fullscreen-20120703/#dom-element-requestfullscreen */ Element.prototype.requestFullscreen = function() {}; /** * @type {boolean} * @see http://www.w3.org/TR/2012/WD-fullscreen-20120703/#dom-document-fullscreenenabled */ Document.prototype.fullscreenEnabled; /** * @type {Element} * @see http://www.w3.org/TR/2012/WD-fullscreen-20120703/#dom-document-fullscreenelement */ Document.prototype.fullscreenElement; /** * @see http://www.w3.org/TR/2012/WD-fullscreen-20120703/#dom-document-exitfullscreen */ Document.prototype.exitFullscreen = function() {}; // Externs definitions of browser current implementations. // Firefox 10 implementation. Element.prototype.mozRequestFullScreen = function() {}; Element.prototype.mozRequestFullScreenWithKeys = function() {}; /** @type {boolean} */ Document.prototype.mozFullScreen; Document.prototype.mozCancelFullScreen = function() {}; /** @type {Element} */ Document.prototype.mozFullScreenElement; /** @type {boolean} */ Document.prototype.mozFullScreenEnabled; // Chrome 21 implementation. /** * The current fullscreen element for the document is set to this element. * Valid only for Webkit browsers. * @param {number=} opt_allowKeyboardInput Whether keyboard input is desired. * Should use ALLOW_KEYBOARD_INPUT constant. */ Element.prototype.webkitRequestFullScreen = function(opt_allowKeyboardInput) {}; /** * The current fullscreen element for the document is set to this element. * Valid only for Webkit browsers. * @param {number=} opt_allowKeyboardInput Whether keyboard input is desired. * Should use ALLOW_KEYBOARD_INPUT constant. */ Element.prototype.webkitRequestFullscreen = function(opt_allowKeyboardInput) {}; /** @type {boolean} */ Document.prototype.webkitIsFullScreen; Document.prototype.webkitCancelFullScreen = function() {}; /** @type {Element} */ Document.prototype.webkitCurrentFullScreenElement; /** @type {boolean} */ Document.prototype.webkitFullScreenKeyboardInputAllowed; /** @type {number} */ Element.ALLOW_KEYBOARD_INPUT = 1; /** @type {number} */ Element.prototype.ALLOW_KEYBOARD_INPUT = 1; /** @constructor */ function MutationObserverInit() {} /** @type {boolean} */ MutationObserverInit.prototype.childList; /** @type {boolean} */ MutationObserverInit.prototype.attributes; /** @type {boolean} */ MutationObserverInit.prototype.characterData; /** @type {boolean} */ MutationObserverInit.prototype.subtree; /** @type {boolean} */ MutationObserverInit.prototype.attributeOldValue; /** @type {boolean} */ MutationObserverInit.prototype.characterDataOldValue; /** @type {Array.} */ MutationObserverInit.prototype.attributeFilter; /** @constructor */ function MutationRecord() {} /** @type {string} */ MutationRecord.prototype.type; /** @type {Node} */ MutationRecord.prototype.target; /** @type {NodeList} */ MutationRecord.prototype.addedNodes; /** @type {NodeList} */ MutationRecord.prototype.removedNodes; /** @type {Node} */ MutationRecord.prototype.previouSibling; /** @type {Node} */ MutationRecord.prototype.nextSibling; /** @type {?string} */ MutationRecord.prototype.attributeName; /** @type {?string} */ MutationRecord.prototype.attributeNamespace; /** @type {?string} */ MutationRecord.prototype.oldvalue; /** * @see http://www.w3.org/TR/domcore/#mutation-observers * @param {function(Array.)} callback * @constructor */ function MutationObserver(callback) {} /** * @param {Node} target * @param {MutationObserverInit=} options */ MutationObserver.prototype.observe = function(target, options) {}; MutationObserver.prototype.disconnect = function() {}; /** * @type {function(new:MutationObserver, function(Array.))} */ Window.prototype.MutationObserver; /** * @type {function(new:MutationObserver, function(Array.))} */ Window.prototype.WebKitMutationObserver; /** * @type {function(new:MutationObserver, function(Array.))} */ Window.prototype.MozMutationObserver;