w3c_indexeddb.js (18164B)
1 /* 2 * Copyright 2011 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 /** 18 * @fileoverview Definitions for W3C's IndexedDB API. In Chrome all the 19 * IndexedDB classes are prefixed with 'webkit'. In order to access constants 20 * and static methods of these classes they must be duplicated with the 21 * prefix here. 22 * @see http://www.w3.org/TR/IndexedDB/ 23 * 24 * @externs 25 * @author guido.tapia@picnet.com.au (Guido Tapia) 26 */ 27 28 /** @type {IDBFactory} */ 29 Window.prototype.moz_indexedDB; 30 31 /** @type {IDBFactory} */ 32 Window.prototype.mozIndexedDB; 33 34 /** @type {IDBFactory} */ 35 Window.prototype.webkitIndexedDB; 36 37 /** @type {IDBFactory} */ 38 Window.prototype.msIndexedDB; 39 40 /** @type {IDBFactory} */ 41 Window.prototype.indexedDB; 42 43 /** 44 * @constructor 45 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBFactory 46 */ 47 function IDBFactory() {} 48 49 /** 50 * @param {string} name The name of the database to open. 51 * @param {number=} opt_version The version at which to open the database. 52 * @return {!IDBOpenDBRequest} The IDBRequest object. 53 */ 54 IDBFactory.prototype.open = function(name, opt_version) {}; 55 56 /** 57 * @param {string} name The name of the database to delete. 58 * @return {!IDBOpenDBRequest} The IDBRequest object. 59 */ 60 IDBFactory.prototype.deleteDatabase = function(name) {}; 61 62 /** 63 * @constructor 64 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBDatabaseException 65 */ 66 function IDBDatabaseException() {} 67 68 /** 69 * @constructor 70 * @extends {IDBDatabaseException} 71 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBDatabaseException 72 */ 73 function webkitIDBDatabaseException() {} 74 75 /** 76 * @const 77 * @type {number} 78 */ 79 IDBDatabaseException.UNKNOWN_ERR; 80 81 /** 82 * @const 83 * @type {number} 84 */ 85 webkitIDBDatabaseException.UNKNOWN_ERR; 86 87 /** 88 * @const 89 * @type {number} 90 */ 91 IDBDatabaseException.NON_TRANSIENT_ERR; 92 93 /** 94 * @const 95 * @type {number} 96 */ 97 webkitIDBDatabaseException.NON_TRANSIENT_ERR; 98 99 /** 100 * @const 101 * @type {number} 102 */ 103 IDBDatabaseException.NOT_FOUND_ERR; 104 105 /** 106 * @const 107 * @type {number} 108 */ 109 webkitIDBDatabaseException.NOT_FOUND_ERR; 110 111 /** 112 * @const 113 * @type {number} 114 */ 115 IDBDatabaseException.CONSTRAINT_ERR; 116 117 /** 118 * @const 119 * @type {number} 120 */ 121 webkitIDBDatabaseException.CONSTRAINT_ERR; 122 123 /** 124 * @const 125 * @type {number} 126 */ 127 IDBDatabaseException.DATA_ERR; 128 129 /** 130 * @const 131 * @type {number} 132 */ 133 webkitIDBDatabaseException.DATA_ERR; 134 135 /** 136 * @const 137 * @type {number} 138 */ 139 IDBDatabaseException.NOT_ALLOWED_ERR; 140 141 /** 142 * @const 143 * @type {number} 144 */ 145 webkitIDBDatabaseException.NOT_ALLOWED_ERR; 146 147 /** 148 * @const 149 * @type {number} 150 */ 151 IDBDatabaseException.TRANSACTION_INACTIVE_ERR; 152 153 /** 154 * @const 155 * @type {number} 156 */ 157 webkitIDBDatabaseException.TRANSACTION_INACTIVE_ERR; 158 159 /** 160 * @const 161 * @type {number} 162 */ 163 IDBDatabaseException.ABORT_ERR; 164 165 /** 166 * @const 167 * @type {number} 168 */ 169 webkitIDBDatabaseException.ABORT_ERR; 170 171 /** 172 * @const 173 * @type {number} 174 */ 175 IDBDatabaseException.READ_ONLY_ERR; 176 177 /** 178 * @const 179 * @type {number} 180 */ 181 webkitIDBDatabaseException.READ_ONLY_ERR; 182 183 /** 184 * @const 185 * @type {number} 186 */ 187 IDBDatabaseException.TIMEOUT_ERR; 188 189 /** 190 * @const 191 * @type {number} 192 */ 193 webkitIDBDatabaseException.TIMEOUT_ERR; 194 195 /** 196 * @const 197 * @type {number} 198 */ 199 IDBDatabaseException.QUOTA_ERR; 200 201 /** 202 * @const 203 * @type {number} 204 */ 205 webkitIDBDatabaseException.QUOTA_ERR; 206 207 /** 208 * @const 209 * @type {number} 210 */ 211 IDBDatabaseException.prototype.code; 212 213 /** 214 * @const 215 * @type {number} 216 */ 217 webkitIDBDatabaseException.prototype.code; 218 219 /** 220 * @const 221 * @type {string} 222 */ 223 IDBDatabaseException.prototype.message; 224 225 /** 226 * @const 227 * @type {string} 228 */ 229 webkitIDBDatabaseException.prototype.message; 230 231 /** 232 * @constructor 233 * @implements {EventTarget} 234 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBRequest 235 */ 236 function IDBRequest() {} 237 238 /** 239 * @param {boolean=} opt_useCapture 240 * @override 241 */ 242 IDBRequest.prototype.addEventListener = 243 function(type, listener, opt_useCapture) {}; 244 245 /** 246 * @param {boolean=} opt_useCapture 247 * @override 248 */ 249 IDBRequest.prototype.removeEventListener = 250 function(type, listener, opt_useCapture) {}; 251 252 /** @override */ 253 IDBRequest.prototype.dispatchEvent = function(evt) {}; 254 255 /** 256 * @constructor 257 * @extends {IDBRequest} 258 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBRequest 259 */ 260 function webkitIDBRequest() {} 261 262 /** 263 * @type {number} 264 * @const 265 */ 266 IDBRequest.LOADING; 267 268 /** 269 * @type {number} 270 * @const 271 */ 272 webkitIDBRequest.LOADING; 273 274 /** 275 * @type {number} 276 * @const 277 */ 278 IDBRequest.DONE; 279 280 /** 281 * @type {number} 282 * @const 283 */ 284 webkitIDBRequest.DONE; 285 286 /** @type {number} */ 287 IDBRequest.prototype.readyState; // readonly 288 289 /** @type {function(!Event)} */ 290 IDBRequest.prototype.onsuccess = function(e) {}; 291 292 /** @type {function(!Event)} */ 293 IDBRequest.prototype.onerror = function(e) {}; 294 295 /** @type {*} */ 296 IDBRequest.prototype.result; // readonly 297 298 /** 299 * @type {number} 300 * @deprecated Use "error" 301 */ 302 IDBRequest.prototype.errorCode; // readonly 303 304 305 /** @type {!DOMError} */ 306 IDBRequest.prototype.error; // readonly 307 308 /** @type {Object} */ 309 IDBRequest.prototype.source; // readonly 310 311 /** @type {IDBTransaction} */ 312 IDBRequest.prototype.transaction; // readonly 313 314 /** 315 * @constructor 316 * @extends {IDBRequest} 317 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBOpenDBRequest 318 */ 319 function IDBOpenDBRequest() {} 320 321 /** 322 * @type {function(!IDBVersionChangeEvent)} 323 */ 324 IDBOpenDBRequest.prototype.onblocked = function(e) {}; 325 326 /** 327 * @type {function(!IDBVersionChangeEvent)} 328 */ 329 IDBOpenDBRequest.prototype.onupgradeneeded = function(e) {}; 330 331 /** 332 * @constructor 333 * @implements {EventTarget} 334 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBDatabase 335 */ 336 function IDBDatabase() {} 337 338 /** 339 * @type {string} 340 * @const 341 */ 342 IDBDatabase.prototype.name; 343 344 /** 345 * @type {string} 346 * @const 347 */ 348 IDBDatabase.prototype.description; 349 350 /** 351 * @type {string} 352 * @const 353 */ 354 IDBDatabase.prototype.version; 355 356 /** 357 * @type {DOMStringList} 358 * @const 359 */ 360 IDBDatabase.prototype.objectStoreNames; 361 362 /** 363 * @param {string} name The name of the object store. 364 * @param {Object=} opt_parameters Parameters to be passed 365 * creating the object store. 366 * @return {!IDBObjectStore} The created/open object store. 367 */ 368 IDBDatabase.prototype.createObjectStore = 369 function(name, opt_parameters) {}; 370 371 /** 372 * @param {string} name The name of the object store to remove. 373 */ 374 IDBDatabase.prototype.deleteObjectStore = function(name) {}; 375 376 /** 377 * @param {string} version The new version of the database. 378 * @return {!IDBRequest} The IDBRequest object. 379 */ 380 IDBDatabase.prototype.setVersion = function(version) {}; 381 382 /** 383 * @param {Array.<string>} storeNames The stores to open in this transaction. 384 * @param {(number|string)=} mode The mode for opening the object stores. 385 * @return {!IDBTransaction} The IDBRequest object. 386 */ 387 IDBDatabase.prototype.transaction = function(storeNames, mode) {}; 388 389 /** 390 * Closes the database connection. 391 */ 392 IDBDatabase.prototype.close = function() {}; 393 394 /** 395 * @type {Function} 396 */ 397 IDBDatabase.prototype.onabort = function() {}; 398 399 /** 400 * @type {Function} 401 */ 402 IDBDatabase.prototype.onerror = function() {}; 403 404 /** 405 * @type {Function} 406 */ 407 IDBDatabase.prototype.onversionchange = function() {}; 408 409 /** 410 * @param {boolean=} opt_useCapture 411 * @override 412 */ 413 IDBDatabase.prototype.addEventListener = 414 function(type, listener, opt_useCapture) {}; 415 416 /** 417 * @param {boolean=} opt_useCapture 418 * @override 419 */ 420 IDBDatabase.prototype.removeEventListener = 421 function(type, listener, opt_useCapture) {}; 422 423 /** @override */ 424 IDBDatabase.prototype.dispatchEvent = function(evt) {}; 425 426 /** 427 * Typedef for valid key types according to the w3 specification. Note that this 428 * is slightly wider than what is actually allowed, as all Array elements must 429 * have a valid key type. 430 * @see http://www.w3.org/TR/IndexedDB/#key-construct 431 * @typedef {number|string|!Date|!Array.<?>} 432 */ 433 var IDBKeyType; 434 435 /** 436 * @constructor 437 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBObjectStore 438 */ 439 function IDBObjectStore() {} 440 441 /** 442 * @type {string} 443 */ 444 IDBObjectStore.prototype.name; 445 446 /** 447 * @type {string} 448 */ 449 IDBObjectStore.prototype.keyPath; 450 451 /** 452 * @type {DOMStringList} 453 */ 454 IDBObjectStore.prototype.indexNames; 455 456 /** @type {IDBTransaction} */ 457 IDBObjectStore.prototype.transaction; 458 459 /** @type {boolean} */ 460 IDBObjectStore.prototype.autoIncrement; 461 462 /** 463 * @param {*} value The value to put into the object store. 464 * @param {IDBKeyType=} key The key of this value. 465 * @return {!IDBRequest} The IDBRequest object. 466 */ 467 IDBObjectStore.prototype.put = function(value, key) {}; 468 469 /** 470 * @param {*} value The value to add into the object store. 471 * @param {IDBKeyType=} key The key of this value. 472 * @return {!IDBRequest} The IDBRequest object. 473 */ 474 IDBObjectStore.prototype.add = function(value, key) {}; 475 476 /** 477 * @param {IDBKeyType} key The key of this value. 478 * @return {!IDBRequest} The IDBRequest object. 479 */ 480 IDBObjectStore.prototype.delete = function(key) {}; 481 482 /** 483 * @param {IDBKeyType|!IDBKeyRange} key The key of the document to retrieve. 484 * @return {!IDBRequest} The IDBRequest object. 485 */ 486 IDBObjectStore.prototype.get = function(key) {}; 487 488 /** 489 * @return {!IDBRequest} The IDBRequest object. 490 */ 491 IDBObjectStore.prototype.clear = function() {}; 492 493 /** 494 * @param {IDBKeyRange=} range The range of the cursor. 495 * @param {(number|string)=} direction The direction of cursor enumeration. 496 * @return {!IDBRequest} The IDBRequest object. 497 */ 498 IDBObjectStore.prototype.openCursor = function(range, direction) {}; 499 500 /** 501 * @param {string} name The name of the index. 502 * @param {string|!Array.<string>} keyPath The path to the index key. 503 * @param {Object=} opt_paramters Optional parameters 504 * for the created index. 505 * @return {!IDBIndex} The IDBIndex object. 506 */ 507 IDBObjectStore.prototype.createIndex = function(name, keyPath, opt_paramters) {}; 508 509 /** 510 * @param {string} name The name of the index to retrieve. 511 * @return {!IDBIndex} The IDBIndex object. 512 */ 513 IDBObjectStore.prototype.index = function(name) {}; 514 515 /** 516 * @param {string} indexName The name of the index to remove. 517 */ 518 IDBObjectStore.prototype.deleteIndex = function(indexName) {}; 519 520 /** 521 * @param {(IDBKeyType|IDBKeyRange)=} key The key of this value. 522 * @return {!IDBRequest} The IDBRequest object. 523 * @see http://www.w3.org/TR/IndexedDB/#widl-IDBObjectStore-count 524 */ 525 IDBObjectStore.prototype.count = function(key) {}; 526 527 /** 528 * @constructor 529 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBIndex 530 */ 531 function IDBIndex() {} 532 533 /** 534 * @type {string} 535 * @const 536 */ 537 IDBIndex.prototype.name; 538 539 /** 540 * @type {!IDBObjectStore} 541 * @const 542 */ 543 IDBIndex.prototype.objectStore; 544 545 /** 546 * @type {string} 547 * @const 548 */ 549 IDBIndex.prototype.keyPath; 550 551 /** 552 * @type {boolean} 553 * @const 554 */ 555 IDBIndex.prototype.unique; 556 557 /** 558 * @param {IDBKeyRange=} range The range of the cursor. 559 * @param {(number|string)=} direction The direction of cursor enumeration. 560 * @return {!IDBRequest} The IDBRequest object. 561 */ 562 IDBIndex.prototype.openCursor = function(range, direction) {}; 563 564 /** 565 * @param {IDBKeyRange=} range The range of the cursor. 566 * @param {(number|string)=} direction The direction of cursor enumeration. 567 * @return {!IDBRequest} The IDBRequest object. 568 */ 569 IDBIndex.prototype.openKeyCursor = function(range, direction) {}; 570 571 /** 572 * @param {IDBKeyType|!IDBKeyRange} key The id of the object to retrieve. 573 * @return {!IDBRequest} The IDBRequest object. 574 */ 575 IDBIndex.prototype.get = function(key) {}; 576 577 /** 578 * @param {IDBKeyType|!IDBKeyRange} key The id of the object to retrieve. 579 * @return {!IDBRequest} The IDBRequest object. 580 */ 581 IDBIndex.prototype.getKey = function(key) {}; 582 583 /** 584 * @constructor 585 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBCursor 586 */ 587 function IDBCursor() {} 588 589 /** 590 * @constructor 591 * @extends {IDBCursor} 592 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBCursor 593 */ 594 function webkitIDBCursor() {} 595 596 /** 597 * @const 598 * @type {number} 599 */ 600 IDBCursor.NEXT; 601 602 /** 603 * @const 604 * @type {number} 605 */ 606 webkitIDBCursor.NEXT; 607 608 /** 609 * @const 610 * @type {number} 611 */ 612 IDBCursor.NEXT_NO_DUPLICATE; 613 614 /** 615 * @const 616 * @type {number} 617 */ 618 webkitIDBCursor.NEXT_NO_DUPLICATE; 619 620 /** 621 * @const 622 * @type {number} 623 */ 624 IDBCursor.PREV; 625 626 /** 627 * @const 628 * @type {number} 629 */ 630 webkitIDBCursor.PREV; 631 632 /** 633 * @const 634 * @type {number} 635 */ 636 IDBCursor.PREV_NO_DUPLICATE; 637 638 /** 639 * @const 640 * @type {number} 641 */ 642 webkitIDBCursor.PREV_NO_DUPLICATE; 643 644 /** 645 * @type {*} 646 * @const 647 */ 648 IDBCursor.prototype.source; 649 650 /** 651 * @type {number} 652 * @const 653 */ 654 IDBCursor.prototype.direction; 655 656 /** 657 * @type {IDBKeyType} 658 * @const 659 */ 660 IDBCursor.prototype.key; 661 662 /** 663 * @type {number} 664 * @const 665 */ 666 IDBCursor.prototype.primaryKey; 667 668 /** 669 * @param {*} value The new value for the current object in the cursor. 670 * @return {!IDBRequest} The IDBRequest object. 671 */ 672 IDBCursor.prototype.update = function(value) {}; 673 674 /** 675 * Note: Must be quoted to avoid parse error. 676 * @param {IDBKeyType=} key Continue enumerating the cursor from the specified 677 * key (or next). 678 */ 679 IDBCursor.prototype.continue = function(key) {}; 680 681 /** 682 * @param {number} count Number of times to iterate the cursor. 683 */ 684 IDBCursor.prototype.advance = function(count) {}; 685 686 /** 687 * Note: Must be quoted to avoid parse error. 688 * @return {!IDBRequest} The IDBRequest object. 689 */ 690 IDBCursor.prototype.delete = function() {}; 691 692 /** 693 * @constructor 694 * @extends {IDBCursor} 695 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBCursorWithValue 696 */ 697 function IDBCursorWithValue() {} 698 699 /** @type {*} */ 700 IDBCursorWithValue.prototype.value; // readonly 701 702 /** 703 * @constructor 704 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBTransaction 705 */ 706 function IDBTransaction() {} 707 708 /** 709 * @constructor 710 * @extends {IDBTransaction} 711 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBTransaction 712 */ 713 function webkitIDBTransaction() {} 714 715 /** 716 * @const 717 * @type {number} 718 */ 719 IDBTransaction.READ_WRITE; 720 721 /** 722 * @const 723 * @type {number} 724 */ 725 webkitIDBTransaction.READ_WRITE; 726 727 /** 728 * @const 729 * @type {number} 730 */ 731 IDBTransaction.READ_ONLY; 732 733 /** 734 * @const 735 * @type {number} 736 */ 737 webkitIDBTransaction.READ_ONLY; 738 739 /** 740 * @const 741 * @type {number} 742 */ 743 IDBTransaction.VERSION_CHANGE; 744 745 /** 746 * @const 747 * @type {number} 748 */ 749 webkitIDBTransaction.VERSION_CHANGE; 750 751 /** 752 * @type {number|string} 753 * @const 754 */ 755 IDBTransaction.prototype.mode; 756 757 /** 758 * @type {IDBDatabase} 759 * @const 760 */ 761 IDBTransaction.prototype.db; 762 763 /** 764 * @param {string} name The name of the object store to retrieve. 765 * @return {!IDBObjectStore} The object store. 766 */ 767 IDBTransaction.prototype.objectStore = function(name) {}; 768 769 /** 770 * Aborts the transaction. 771 */ 772 IDBTransaction.prototype.abort = function() {}; 773 774 /** 775 * @type {Function} 776 */ 777 IDBTransaction.prototype.onabort = function() {}; 778 779 /** 780 * @type {Function} 781 */ 782 IDBTransaction.prototype.oncomplete = function() {}; 783 784 /** 785 * @type {Function} 786 */ 787 IDBTransaction.prototype.onerror = function() {}; 788 789 /** 790 * @constructor 791 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBKeyRange 792 */ 793 function IDBKeyRange() {} 794 795 /** 796 * @constructor 797 * @extends {IDBKeyRange} 798 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBKeyRange 799 */ 800 function webkitIDBKeyRange() {} 801 802 /** 803 * @type {*} 804 * @const 805 */ 806 IDBKeyRange.prototype.lower; 807 808 /** 809 * @type {*} 810 * @const 811 */ 812 IDBKeyRange.prototype.upper; 813 814 /** 815 * @type {*} 816 * @const 817 */ 818 IDBKeyRange.prototype.lowerOpen; 819 820 /** 821 * @type {*} 822 * @const 823 */ 824 IDBKeyRange.prototype.upperOpen; 825 826 /** 827 * @param {IDBKeyType} value The single key value of this range. 828 * @return {!IDBKeyRange} The key range. 829 */ 830 IDBKeyRange.only = function(value) {}; 831 832 /** 833 * @param {IDBKeyType} value The single key value of this range. 834 * @return {!IDBKeyRange} The key range. 835 */ 836 webkitIDBKeyRange.only = function(value) {}; 837 838 /** 839 * @param {IDBKeyType} bound Creates a lower bound key range. 840 * @param {boolean=} open Open the key range. 841 * @return {!IDBKeyRange} The key range. 842 */ 843 IDBKeyRange.lowerBound = function(bound, open) {}; 844 845 /** 846 * @param {IDBKeyType} bound Creates a lower bound key range. 847 * @param {boolean=} open Open the key range. 848 * @return {!IDBKeyRange} The key range. 849 */ 850 webkitIDBKeyRange.lowerBound = function(bound, open) {}; 851 852 /** 853 * @param {IDBKeyType} bound Creates an upper bound key range. 854 * @param {boolean=} open Open the key range. 855 * @return {!IDBKeyRange} The key range. 856 */ 857 IDBKeyRange.upperBound = function(bound, open) {}; 858 859 /** 860 * @param {IDBKeyType} bound Creates an upper bound key range. 861 * @param {boolean=} open Open the key range. 862 * @return {!IDBKeyRange} The key range. 863 */ 864 webkitIDBKeyRange.upperBound = function(bound, open) {}; 865 866 /** 867 * @param {IDBKeyType} left The left bound value. 868 * @param {IDBKeyType} right The right bound value. 869 * @param {boolean=} openLeft Whether the left bound value should be excluded. 870 * @param {boolean=} openRight Whether the right bound value should be excluded. 871 * @return {!IDBKeyRange} The key range. 872 */ 873 IDBKeyRange.bound = function(left, right, openLeft, openRight) {}; 874 875 /** 876 * @param {IDBKeyType} left The left bound value. 877 * @param {IDBKeyType} right The right bound value. 878 * @param {boolean=} openLeft Whether the left bound value should be excluded. 879 * @param {boolean=} openRight Whether the right bound value should be excluded. 880 * @return {!IDBKeyRange} The key range. 881 */ 882 webkitIDBKeyRange.bound = function(left, right, openLeft, openRight) {}; 883 884 /** 885 * @constructor 886 * @extends {Event} 887 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBVersionChangeEvent 888 */ 889 function IDBVersionChangeEvent() {} 890 891 /** 892 * @type {number} 893 * @const 894 */ 895 IDBVersionChangeEvent.prototype.oldVersion; 896 897 /** 898 * @type {?number} 899 * @const 900 */ 901 IDBVersionChangeEvent.prototype.newVersion; 902 903 /** 904 * @constructor 905 * @extends {IDBVersionChangeEvent} 906 * @see http://www.w3.org/TR/IndexedDB/#idl-def-IDBVersionChangeEvent 907 */ 908 function webkitIDBVersionChangeEvent() {} 909 910 /** 911 * @type {string} 912 * @const 913 */ 914 webkitIDBVersionChangeEvent.prototype.version;