Home | History | Annotate | Download | only in common
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 
      6 /**
      7  * @fileoverview Definitions for the Chromium extensions API used by ChromeVox.
      8  *
      9  * @externs
     10  */
     11 
     12 
     13 /**
     14  * @const
     15  */
     16 chrome.app = {};
     17 
     18 
     19 /**
     20  * @const
     21  */
     22 chrome.extension = {};
     23 
     24 
     25 /** @type {!Object|undefined} */
     26 chrome.extension.lastError = {};
     27 
     28 
     29 /**
     30  * @type {string|undefined}
     31  */
     32 chrome.extension.lastError.message;
     33 
     34 
     35 /** @type {boolean|undefined} */
     36 chrome.extension.inIncognitoContext;
     37 
     38 
     39 /**
     40  * @param {string|Object.<string>=} opt_extensionIdOrConnectInfo Either the
     41  *     extensionId to connect to, in which case connectInfo params can be
     42  *     passed in the next optional argument, or the connectInfo params.
     43  * @param {Object.<string>=} opt_connectInfo The connectInfo object,
     44  *     if arg1 was the extensionId to connect to.
     45  * @return {Port} New port.
     46  */
     47 chrome.extension.connect = function(
     48     opt_extensionIdOrConnectInfo, opt_connectInfo) {};
     49 
     50 
     51 /**
     52  * @return {Window} The global JS object for the background page.
     53  */
     54 chrome.extension.getBackgroundPage = function() {};
     55 
     56 
     57 /**
     58  * @param {string} path A path to a resource within an extension expressed
     59  *     relative to it's install directory.
     60  * @return {string} The fully-qualified URL to the resource.
     61  */
     62 chrome.extension.getURL = function(path) {};
     63 
     64 
     65 /**
     66  * @param {function(boolean): void} callback Callback function.
     67  */
     68 chrome.extension.isAllowedIncognitoAccess = function(callback) {};
     69 
     70 
     71 /**
     72  * @param {string|*} extensionIdOrRequest Either the extensionId to send the
     73  *     request to, in which case the request is passed as the next arg, or the
     74  *     request.
     75  * @param {*=} opt_request The request value, if arg1 was the extensionId.
     76  * @param {function(*): void=} opt_callback The callback function which
     77  *     takes a JSON response object sent by the handler of the request.
     78  */
     79 chrome.extension.sendMessage = function(
     80     extensionIdOrRequest, opt_request, opt_callback) {};
     81 
     82 
     83 /** @type {ChromeEvent} */
     84 chrome.extension.onConnect;
     85 
     86 
     87 /** @type {ChromeEvent} */
     88 chrome.extension.onConnectExternal;
     89 
     90 
     91 /** @type {ChromeEvent} */
     92 chrome.extension.onMessage;
     93 
     94 
     95 /**
     96  * @const
     97  */
     98 chrome.runtime = {};
     99 
    100 
    101 /** @type {!Object|undefined} */
    102 chrome.runtime.lastError = {};
    103 
    104 
    105 /**
    106  * @type {string|undefined}
    107  */
    108 chrome.runtime.lastError.message;
    109 
    110 
    111 /** @type {string} */
    112 chrome.runtime.id;
    113 
    114 
    115 /**
    116  * @param {function(!Window=): void} callback Callback function.
    117  */
    118 chrome.runtime.getBackgroundPage = function(callback) {};
    119 
    120 
    121 
    122 /**
    123  * Manifest information returned from chrome.runtime.getManifest. See
    124  * http://developer.chrome.com/extensions/manifest.html. Note that there are
    125  * several other fields not included here. They should be added to these externs
    126  * as needed.
    127  * @constructor
    128  */
    129 chrome.runtime.Manifest = function() {};
    130 
    131 
    132 /** @type {string} */
    133 chrome.runtime.Manifest.prototype.name;
    134 
    135 
    136 /** @type {string} */
    137 chrome.runtime.Manifest.prototype.version;
    138 
    139 
    140 /** @type {number|undefined} */
    141 chrome.runtime.Manifest.prototype.manifest_version;
    142 
    143 
    144 /** @type {string|undefined} */
    145 chrome.runtime.Manifest.prototype.description;
    146 
    147 
    148 /** @type {!chrome.runtime.Manifest.Oauth2|undefined} */
    149 chrome.runtime.Manifest.prototype.oauth2;
    150 
    151 
    152 
    153 /**
    154  * Oauth2 info in the manifest.
    155  * See http://developer.chrome.com/apps/app_identity.html#update_manifest.
    156  * @constructor
    157  */
    158 chrome.runtime.Manifest.Oauth2 = function() {};
    159 
    160 
    161 /** @type {string} */
    162 chrome.runtime.Manifest.Oauth2.prototype.client_id;
    163 
    164 /**@type {!Array.<string>} */
    165 chrome.runtime.Manifest.Oauth2.prototype.scopes;
    166 
    167 
    168 /**
    169  * http://developer.chrome.com/extensions/runtime.html#method-getManifest
    170  * @return {!chrome.runtime.Manifest} The full manifest file of the app or
    171  *     extension.
    172  */
    173 chrome.runtime.getManifest = function() {};
    174 
    175 
    176 /**
    177  * @param {string} path A path to a resource within an extension expressed
    178  *     relative to it's install directory.
    179  * @return {string} The fully-qualified URL to the resource.
    180  */
    181 chrome.runtime.getURL = function(path) {};
    182 
    183 /**
    184  * @param {string|!Object.<string>=} opt_extensionIdOrConnectInfo Either the
    185  *     extensionId to connect to, in which case connectInfo params can be
    186  *     passed in the next optional argument, or the connectInfo params.
    187  * @param {!Object.<string>=} opt_connectInfo The connectInfo object,
    188  *     if arg1 was the extensionId to connect to.
    189  * @return {!Port} New port.
    190  */
    191 chrome.runtime.connect = function(
    192     opt_extensionIdOrConnectInfo, opt_connectInfo) {};
    193 
    194 
    195 /**
    196  * @param {string|*} extensionIdOrMessage Either the extensionId to send the
    197  *     message to, in which case the message is passed as the next arg, or the
    198  *     message itself.
    199  * @param {(*|Object|function(*): void)=} opt_messageOrOptsOrCallback
    200  *     One of:
    201  *     The message, if arg1 was the extensionId.
    202  *     The options for message sending, if arg1 was the message and this
    203  *     argument is not a function.
    204  *     The callback, if arg1 was the message and this argument is a function.
    205  * @param {(Object|function(*): void)=} opt_optsOrCallback
    206  *     Either the options for message sending, if arg2 was the message,
    207  *     or the callback.
    208  * @param {function(*): void=} opt_callback The callback function which
    209  *     takes a JSON response object sent by the handler of the request.
    210  */
    211 chrome.runtime.sendMessage = function(
    212     extensionIdOrMessage, opt_messageOrOptsOrCallback, opt_optsOrCallback,
    213     opt_callback) {};
    214 
    215 
    216 /**
    217  *
    218  * @param {function(!Object)} callback
    219  */
    220 chrome.runtime.getPlatformInfo = function(callback) {};
    221 
    222 
    223 /** @type {!chrome.runtime.PortEvent} */
    224 chrome.runtime.onConnect;
    225 
    226 
    227 /** @type {!chrome.runtime.PortEvent} */
    228 chrome.runtime.onConnectExternal;
    229 
    230 
    231 /** @type {!chrome.runtime.MessageSenderEvent} */
    232 chrome.runtime.onMessage;
    233 
    234 
    235 /** @type {!chrome.runtime.MessageSenderEvent} */
    236 chrome.runtime.onMessageExternal;
    237 
    238 
    239 /**
    240  * Event whose listeners take a Port parameter.
    241  * @constructor
    242  */
    243 chrome.runtime.PortEvent = function() {};
    244 
    245 
    246 /**
    247  * @param {function(!Port): void} callback Callback.
    248  */
    249 chrome.runtime.PortEvent.prototype.addListener = function(callback) {};
    250 
    251 
    252 /**
    253  * @param {function(!Port): void} callback Callback.
    254  */
    255 chrome.runtime.PortEvent.prototype.removeListener = function(callback) {};
    256 
    257 
    258 /**
    259  * @param {function(!Port): void} callback Callback.
    260  * @return {boolean}
    261  */
    262 chrome.runtime.PortEvent.prototype.hasListener = function(callback) {};
    263 
    264 
    265 /**
    266  * @return {boolean}
    267  */
    268 chrome.runtime.PortEvent.prototype.hasListeners = function() {};
    269 
    270 
    271 
    272 /**
    273  * Event whose listeners take a MessageSender and additional parameters.
    274  * @constructor
    275  */
    276 chrome.runtime.MessageSenderEvent = function() {};
    277 
    278 
    279 /**
    280  * @param {function(*, !MessageSender, function(*): void): (boolean|undefined)}
    281  *     callback Callback.
    282  */
    283 chrome.runtime.MessageSenderEvent.prototype.addListener = function(callback) {};
    284 
    285 
    286 /**
    287  * @param {function(*, !MessageSender, function(*): void): (boolean|undefined)}
    288  *     callback Callback.
    289  */
    290 chrome.runtime.MessageSenderEvent.prototype.removeListener = function(callback)
    291     {};
    292 
    293 
    294 /**
    295  * @param {function(*, !MessageSender, function(*): void): (boolean|undefined)}
    296  *     callback Callback.
    297  * @return {boolean}
    298  */
    299 chrome.runtime.MessageSenderEvent.prototype.hasListener = function(callback) {};
    300 
    301 
    302 /**
    303  * @return {boolean}
    304  */
    305 chrome.runtime.MessageSenderEvent.prototype.hasListeners = function() {};
    306 
    307 
    308 /**
    309  * @const
    310  */
    311 chrome.tabs = {};
    312 
    313 
    314 /**
    315  * @param {number?} windowId Window Id.
    316  * @param {Object?} options parameters of image capture, such as the format of
    317  *    the resulting image.
    318  * @param {function(string): void} callback Callback function which accepts
    319  *    the data URL string of a JPEG encoding of the visible area of the
    320  *    captured tab. May be assigned to the 'src' property of an HTML Image
    321  *    element for display.
    322  */
    323 chrome.tabs.captureVisibleTab = function(windowId, options, callback) {};
    324 
    325 
    326 /**
    327  * @param {number} tabId Tab Id.
    328  * @param {Object.<string>=} opt_connectInfo Info Object.
    329  */
    330 chrome.tabs.connect = function(tabId, opt_connectInfo) {};
    331 
    332 
    333 /**
    334  * @param {Object} createProperties Info object.
    335  * @param {function(Tab): void=} opt_callback The callback function.
    336  */
    337 chrome.tabs.create = function(createProperties, opt_callback) {};
    338 
    339 
    340 /**
    341  * @param {number?} tabId Tab id.
    342  * @param {function(string): void} callback Callback function.
    343  */
    344 chrome.tabs.detectLanguage = function(tabId, callback) {};
    345 
    346 
    347 /**
    348  * @param {number?} tabId Tab id.
    349  * @param {Object?} details An object which may have 'code', 'file',
    350  *    or 'allFrames' keys.
    351  * @param {function(): void=} opt_callback Callback function.
    352  */
    353 chrome.tabs.executeScript = function(tabId, details, opt_callback) {};
    354 
    355 
    356 /**
    357  * @param {number} tabId Tab id.
    358  * @param {function(Tab): void} callback Callback.
    359  */
    360 chrome.tabs.get = function(tabId, callback) {};
    361 
    362 
    363 /**
    364  * Note: as of 2012-04-12, this function is no longer documented on
    365  * the public web pages, but there are still existing usages
    366  *
    367  * @param {number?} windowId Window id.
    368  * @param {function(Array.<Tab>): void} callback Callback.
    369  */
    370 chrome.tabs.getAllInWindow = function(windowId, callback) {};
    371 
    372 
    373 /**
    374  * @param {function(Tab): void} callback Callback.
    375  */
    376 chrome.tabs.getCurrent = function(callback) {};
    377 
    378 
    379 /**
    380  * Note: as of 2012-04-12, this function is no longer documented on
    381  * the public web pages, but there are still existing usages.
    382  *
    383  * @param {number?} windowId Window id.
    384  * @param {function(Tab): void} callback Callback.
    385  */
    386 chrome.tabs.getSelected = function(windowId, callback) {};
    387 
    388 
    389 /**
    390  * @param {Object.<string, (number|Array.<number>)>} highlightInfo
    391  *     An object with 'windowId' (number) and 'tabs'
    392  *     (number or array of numbers) keys.
    393  * @param {function(Window): void} callback Callback function invoked
    394  *    with each appropriate Window.
    395  */
    396 chrome.tabs.highlight = function(highlightInfo, callback) {};
    397 
    398 
    399 /**
    400  * @param {number?} tabId Tab id.
    401  * @param {Object?} details An object which may have 'code', 'file',
    402  *     or 'allFrames' keys.
    403  * @param {function(): void=} opt_callback Callback function.
    404  */
    405 chrome.tabs.insertCSS = function(tabId, details, opt_callback) {};
    406 
    407 
    408 /**
    409  * @param {number} tabId Tab id.
    410  * @param {Object.<string, number>} moveProperties An object with 'index'
    411  *     and optional 'windowId' keys.
    412  * @param {function(Tab): void=} opt_callback Callback.
    413  */
    414 chrome.tabs.move = function(tabId, moveProperties, opt_callback) {};
    415 
    416 
    417 /**
    418  * @param {Object.<string, (number|string)>} queryInfo An object which may have
    419  *     'active', 'pinned', 'highlighted', 'status', 'title', 'url', 'windowId',
    420  *     and 'windowType' keys.
    421  * @param {function(Array.<Tab>): void=} opt_callback Callback.
    422  * @return {!Array.<Tab>}
    423  */
    424 chrome.tabs.query = function(queryInfo, opt_callback) {};
    425 
    426 
    427 /**
    428  * @param {number=} opt_tabId Tab id.
    429  * @param {Object.<string, boolean>=} opt_reloadProperties An object which
    430  *   may have a 'bypassCache' key.
    431  * @param {function(): void=} opt_callback The callback function invoked
    432  *    after the tab has been reloaded.
    433  */
    434 chrome.tabs.reload = function(opt_tabId, opt_reloadProperties, opt_callback) {};
    435 
    436 
    437 /**
    438  * @param {number|Array.<number>} tabIds A tab ID or an array of tab IDs.
    439  * @param {function(Tab): void=} opt_callback Callback.
    440  */
    441 chrome.tabs.remove = function(tabIds, opt_callback) {};
    442 
    443 
    444 /**
    445  * @param {number} tabId Tab id.
    446  * @param {*} request The request value of any type.
    447  * @param {function(*): void=} opt_callback The callback function which
    448  *     takes a JSON response object sent by the handler of the request.
    449  */
    450 chrome.tabs.sendMessage = function(tabId, request, opt_callback) {};
    451 
    452 
    453 /**
    454  * @param {number} tabId Tab id.
    455  * @param {*} request The request value of any type.
    456  * @param {function(*): void=} opt_callback The callback function which
    457  *     takes a JSON response object sent by the handler of the request.
    458  */
    459 chrome.tabs.sendRequest = function(tabId, request, opt_callback) {};
    460 
    461 
    462 /**
    463  * @param {number} tabId Tab id.
    464  * @param {Object.<string, (string|boolean)>} updateProperties An object which
    465  *     may have 'url' or 'selected' key.
    466  * @param {function(Tab): void=} opt_callback Callback.
    467  */
    468 chrome.tabs.update = function(tabId, updateProperties, opt_callback) {};
    469 
    470 
    471 /** @type {ChromeEvent} */
    472 chrome.tabs.onActiveChanged;
    473 
    474 
    475 /** @type {ChromeEvent} */
    476 chrome.tabs.onActivated;
    477 
    478 
    479 /** @type {ChromeEvent} */
    480 chrome.tabs.onAttached;
    481 
    482 
    483 /** @type {ChromeEvent} */
    484 chrome.tabs.onCreated;
    485 
    486 
    487 /** @type {ChromeEvent} */
    488 chrome.tabs.onDetached;
    489 
    490 
    491 /** @type {ChromeEvent} */
    492 chrome.tabs.onHighlightChanged;
    493 
    494 
    495 /** @type {ChromeEvent} */
    496 chrome.tabs.onMoved;
    497 
    498 
    499 /** @type {ChromeEvent} */
    500 chrome.tabs.onRemoved;
    501 
    502 
    503 /** @type {ChromeEvent} */
    504 chrome.tabs.onUpdated;
    505 
    506 
    507 /** @type {ChromeEvent} */
    508 chrome.tabs.onReplaced;
    509 
    510 /**
    511  * @const
    512  */
    513 chrome.windows = {};
    514 
    515 
    516 /**
    517  * @param {Object=} opt_createData May have many keys to specify parameters.
    518  *     Or the callback.
    519  * @param {function(ChromeWindow): void=} opt_callback Callback.
    520  */
    521 chrome.windows.create = function(opt_createData, opt_callback) {};
    522 
    523 
    524 /**
    525  * @param {number} id Window id.
    526  * @param {Object=} opt_getInfo May have 'populate' key. Or the callback.
    527  * @param {function(!ChromeWindow): void=} opt_callback Callback when
    528  *     opt_getInfo is an object.
    529  */
    530 chrome.windows.get = function(id, opt_getInfo, opt_callback) {};
    531 
    532 
    533 /**
    534  * @param {Object=} opt_getInfo May have 'populate' key. Or the callback.
    535  * @param {function(!Array.<!ChromeWindow>): void=} opt_callback Callback.
    536  */
    537 chrome.windows.getAll = function(opt_getInfo, opt_callback) {};
    538 
    539 
    540 /**
    541  * @param {Object=} opt_getInfo May have 'populate' key. Or the callback.
    542  * @param {function(ChromeWindow): void=} opt_callback Callback.
    543  */
    544 chrome.windows.getCurrent = function(opt_getInfo, opt_callback) { };
    545 
    546 
    547 /**
    548  * @param {Object=} opt_getInfo May have 'populate' key. Or the callback.
    549  * @param {function(ChromeWindow): void=} opt_callback Callback.
    550  */
    551 chrome.windows.getLastFocused = function(opt_getInfo, opt_callback) { };
    552 
    553 
    554 /**
    555  * @param {number} tabId Tab Id.
    556  * @param {function(): void=} opt_callback Callback.
    557  */
    558 chrome.windows.remove = function(tabId, opt_callback) {};
    559 
    560 
    561 /**
    562  * @param {number} tabId Tab Id.
    563  * @param {Object} updateProperties An object which may have many keys for
    564  *     various options.
    565  * @param {function(): void=} opt_callback Callback.
    566  */
    567 chrome.windows.update = function(tabId, updateProperties, opt_callback) {};
    568 
    569 
    570 /** @type {ChromeEvent} */
    571 chrome.windows.onCreated;
    572 
    573 
    574 /** @type {ChromeEvent} */
    575 chrome.windows.onFocusChanged;
    576 
    577 
    578 /** @type {ChromeEvent} */
    579 chrome.windows.onRemoved;
    580 
    581 
    582 /**
    583  * @type {number}
    584  */
    585 chrome.windows.WINDOW_ID_NONE;
    586 
    587 
    588 /**
    589  * @type {number}
    590  */
    591 chrome.windows.WINDOW_ID_CURRENT;
    592 
    593 
    594 /**
    595  * @const
    596  */
    597 chrome.i18n = {};
    598 
    599 
    600 /**
    601  * @param {function(Array.<string>): void} callback The callback function which
    602  *     accepts an array of the accept languages of the browser, such as
    603  *     'en-US','en','zh-CN'.
    604  */
    605 chrome.i18n.getAcceptLanguages = function(callback) {};
    606 
    607 
    608 /**
    609  * @param {string} messageName
    610  * @param {(string|Array.<string>)=} opt_args
    611  * @return {string}
    612  */
    613 chrome.i18n.getMessage = function(messageName, opt_args) {};
    614 
    615 
    616 /**
    617  * Chrome Text-to-Speech API.
    618  * @const
    619  */
    620 chrome.tts = {};
    621 
    622 
    623 
    624 /**
    625  * An event from the TTS engine to communicate the status of an utterance.
    626  * @constructor
    627  */
    628 function TtsEvent() {}
    629 
    630 
    631 /** @type {string} */
    632 TtsEvent.prototype.type;
    633 
    634 
    635 /** @type {number} */
    636 TtsEvent.prototype.charIndex;
    637 
    638 
    639 /** @type {string} */
    640 TtsEvent.prototype.errorMessage;
    641 
    642 
    643 
    644 /**
    645  * A description of a voice available for speech synthesis.
    646  * @constructor
    647  */
    648 function TtsVoice() {}
    649 
    650 
    651 /** @type {string} */
    652 TtsVoice.prototype.voiceName;
    653 
    654 
    655 /** @type {string} */
    656 TtsVoice.prototype.lang;
    657 
    658 
    659 /** @type {string} */
    660 TtsVoice.prototype.gender;
    661 
    662 
    663 /** @type {string} */
    664 TtsVoice.prototype.extensionId;
    665 
    666 
    667 /** @type {Array.<string>} */
    668 TtsVoice.prototype.eventTypes;
    669 
    670 
    671 /**
    672  * Gets an array of all available voices.
    673  * @param {function(Array.<TtsVoice>)=} opt_callback An optional callback
    674  *     function.
    675  */
    676 chrome.tts.getVoices = function(opt_callback) {};
    677 
    678 
    679 /**
    680  * Checks if the engine is currently speaking.
    681  * @param {function(boolean)=} opt_callback The callback function.
    682  */
    683 chrome.tts.isSpeaking = function(opt_callback) {};
    684 
    685 
    686 /**
    687  * Speaks text using a text-to-speech engine.
    688  * @param {string} utterance The text to speak, either plain text or a complete,
    689  *     well-formed SSML document. Speech engines that do not support SSML will
    690  *     strip away the tags and speak the text. The maximum length of the text is
    691  *     32,768 characters.
    692  * @param {Object=} opt_options The speech options.
    693  * @param {function()=} opt_callback Called right away, before speech finishes.
    694  */
    695 chrome.tts.speak = function(utterance, opt_options, opt_callback) {};
    696 
    697 
    698 /**
    699  * Stops any current speech.
    700  */
    701 chrome.tts.stop = function() {};
    702 
    703 
    704 /**
    705  * @const
    706  */
    707 chrome.history = {};
    708 
    709 
    710 /**
    711  * @param {Object.<string, string>} details Object with a 'url' key.
    712  */
    713 chrome.history.addUrl = function(details) {};
    714 
    715 
    716 /**
    717  * @param {function(): void} callback Callback function.
    718  */
    719 chrome.history.deleteAll = function(callback) {};
    720 
    721 
    722 /**
    723  * @param {Object.<string, string>} range Object with 'startTime'
    724  *     and 'endTime' keys.
    725  * @param {function(): void} callback Callback function.
    726  */
    727 chrome.history.deleteRange = function(range, callback) {};
    728 
    729 
    730 /**
    731  * @param {Object.<string, string>} details Object with a 'url' key.
    732  */
    733 chrome.history.deleteUrl = function(details) {};
    734 
    735 
    736 /**
    737  * @param {Object.<string, string>} details Object with a 'url' key.
    738  * @param {function(!Array.<!VisitItem>): void} callback Callback function.
    739  * @return {!Array.<!VisitItem>}
    740  */
    741 chrome.history.getVisits = function(details, callback) {};
    742 
    743 
    744 /**
    745  * @param {Object.<string, string>} query Object with a 'text' (string)
    746  *     key and optional 'startTime' (number), 'endTime' (number) and
    747  *     'maxResults' keys.
    748  * @param {function(!Array.<!HistoryItem>): void} callback Callback function.
    749  * @return {!Array.<!HistoryItem>}
    750  */
    751 chrome.history.search = function(query, callback) {};
    752 
    753 
    754 /** @type {ChromeEvent} */
    755 chrome.history.onVisitRemoved;
    756 
    757 
    758 /** @type {ChromeEvent} */
    759 chrome.history.onVisited;
    760 
    761 
    762 /**
    763  * @const
    764  */
    765 chrome.permissions = {};
    766 
    767 
    768 /**
    769  * @typedef {{
    770  *   permissions: (Array.<string>|undefined),
    771  *   origins: (Array.<string>|undefined)
    772  * }}
    773 * @see http://developer.chrome.com/extensions/permissions.html#type-Permissions
    774 */
    775 chrome.permissions.Permissions;
    776 
    777 
    778 /**
    779  * @param {!chrome.permissions.Permissions} permissions
    780  * @param {function(boolean): void} callback Callback function.
    781  */
    782 chrome.permissions.contains = function(permissions, callback) {};
    783 
    784 
    785 /**
    786  * @param {function(!chrome.permissions.Permissions): void} callback
    787  *     Callback function.
    788  */
    789 chrome.permissions.getAll = function(callback) {};
    790 
    791 
    792 /**
    793  * @param {!chrome.permissions.Permissions} permissions
    794  * @param {function(boolean): void=} opt_callback Callback function.
    795  */
    796 chrome.permissions.remove = function(permissions, opt_callback) {};
    797 
    798 
    799 /**
    800  * @param {!chrome.permissions.Permissions} permissions
    801  * @param {function(boolean): void=} opt_callback Callback function.
    802  */
    803 chrome.permissions.request = function(permissions, opt_callback) {};
    804 
    805 
    806 /** @type {!ChromeEvent} */
    807 chrome.permissions.onAdded;
    808 
    809 
    810 /** @type {!ChromeEvent} */
    811 chrome.permissions.onRemoved;
    812 
    813 
    814 /**
    815  */
    816 chrome.power = {};
    817 
    818 
    819 /**
    820  * @param {string} level A string describing the degree to which power
    821  *     management should be disabled, should be either "system" or "display".
    822  */
    823 chrome.power.requestKeepAwake = function(level) {};
    824 
    825 
    826 /**
    827  * Releases a request previously made via requestKeepAwake().
    828  */
    829 chrome.power.releaseKeepAwake = function() {};
    830 
    831 
    832 /**
    833  * @constructor
    834  */
    835 function Tab() {}
    836 
    837 
    838 /** @type {number} */
    839 Tab.prototype.id;
    840 
    841 
    842 /** @type {number} */
    843 Tab.prototype.index;
    844 
    845 
    846 /** @type {number} */
    847 Tab.prototype.windowId;
    848 
    849 
    850 /** @type {number} */
    851 Tab.prototype.openerTabId;
    852 
    853 
    854 /** @type {boolean} */
    855 Tab.prototype.highlighted;
    856 
    857 
    858 /** @type {boolean} */
    859 Tab.prototype.active;
    860 
    861 
    862 /** @type {boolean} */
    863 Tab.prototype.pinned;
    864 
    865 
    866 /** @type {string} */
    867 Tab.prototype.url;
    868 
    869 
    870 /** @type {string} */
    871 Tab.prototype.title;
    872 
    873 
    874 /** @type {string} */
    875 Tab.prototype.favIconUrl;
    876 
    877 
    878 /** @type {string} */
    879 Tab.prototype.status;
    880 
    881 
    882 /** @type {boolean} */
    883 Tab.prototype.incognito;
    884 
    885 
    886 
    887 /**
    888  * @constructor
    889  */
    890 function ChromeWindow() {}
    891 
    892 
    893 /** @type {number} */
    894 ChromeWindow.prototype.id;
    895 
    896 
    897 /** @type {boolean} */
    898 ChromeWindow.prototype.focused;
    899 
    900 
    901 /** @type {number} */
    902 ChromeWindow.prototype.top;
    903 
    904 
    905 /** @type {number} */
    906 ChromeWindow.prototype.left;
    907 
    908 
    909 /** @type {number} */
    910 ChromeWindow.prototype.width;
    911 
    912 
    913 /** @type {number} */
    914 ChromeWindow.prototype.height;
    915 
    916 
    917 /** @type {Array.<Tab>} */
    918 ChromeWindow.prototype.tabs;
    919 
    920 
    921 /** @type {boolean} */
    922 ChromeWindow.prototype.incognito;
    923 
    924 
    925 /** @type {string} */
    926 ChromeWindow.prototype.type;
    927 
    928 
    929 /** @type {string} */
    930 ChromeWindow.prototype.state;
    931 
    932 
    933 /** @type {boolean} */
    934 ChromeWindow.prototype.alwaysOnTop;
    935 
    936 
    937 
    938 /**
    939  * @constructor
    940  */
    941 function ChromeEvent() {}
    942 
    943 
    944 /** @param {Function} callback */
    945 ChromeEvent.prototype.addListener = function(callback) {};
    946 
    947 
    948 /** @param {Function} callback */
    949 ChromeEvent.prototype.removeListener = function(callback) {};
    950 
    951 
    952 /**
    953  * @param {Function} callback
    954  * @return {boolean}
    955  */
    956 ChromeEvent.prototype.hasListener = function(callback) {};
    957 
    958 
    959 /** @return {boolean} */
    960 ChromeEvent.prototype.hasListeners = function(callback) {};
    961 
    962 
    963 /**
    964  * @constructor
    965  */
    966 function Port() {}
    967 
    968 
    969 /** @type {string} */
    970 Port.prototype.name;
    971 
    972 
    973 /** @type {ChromeEvent} */
    974 Port.prototype.onDisconnect;
    975 
    976 
    977 /** @type {ChromeEvent} */
    978 Port.prototype.onMessage;
    979 
    980 
    981 /** @type {MessageSender} */
    982 Port.prototype.sender;
    983 
    984 
    985 /**
    986  * @param {Object.<string>} obj Message object.
    987  */
    988 Port.prototype.postMessage = function(obj) {};
    989 
    990 
    991 /**
    992  * Note: as of 2012-04-12, this function is no longer documented on
    993  * the public web pages, but there are still existing usages.
    994  */
    995 Port.prototype.disconnect = function() {};
    996 
    997 
    998 
    999 /**
   1000  * @constructor
   1001  */
   1002 function MessageSender() {}
   1003 
   1004 
   1005 /** @type {!Tab|undefined} */
   1006 MessageSender.prototype.tab;
   1007 
   1008 
   1009 /** @type {string|undefined} */
   1010 MessageSender.prototype.id;
   1011 
   1012 
   1013 /** @type {string|undefined} */
   1014 MessageSender.prototype.url;
   1015 
   1016 
   1017 /** @type {string|undefined} */
   1018 MessageSender.prototype.tlsChannelId;
   1019 
   1020 
   1021 
   1022 /**
   1023  * @constructor
   1024  */
   1025 function BookmarkTreeNode() {}
   1026 
   1027 
   1028 /** @type {string} */
   1029 BookmarkTreeNode.prototype.id;
   1030 
   1031 
   1032 /** @type {string} */
   1033 BookmarkTreeNode.prototype.parentId;
   1034 
   1035 
   1036 /** @type {number} */
   1037 BookmarkTreeNode.prototype.index;
   1038 
   1039 
   1040 /** @type {string} */
   1041 BookmarkTreeNode.prototype.url;
   1042 
   1043 
   1044 /** @type {string} */
   1045 BookmarkTreeNode.prototype.title;
   1046 
   1047 
   1048 /** @type {number} */
   1049 BookmarkTreeNode.prototype.dateAdded;
   1050 
   1051 
   1052 /** @type {number} */
   1053 BookmarkTreeNode.prototype.dateGroupModified;
   1054 
   1055 
   1056 /** @type {Array.<BookmarkTreeNode>} */
   1057 BookmarkTreeNode.prototype.children;
   1058 
   1059 
   1060 
   1061 /**
   1062  * @constructor
   1063  */
   1064 function Cookie() {}
   1065 
   1066 
   1067 /** @type {string} */
   1068 Cookie.prototype.name;
   1069 
   1070 
   1071 /** @type {string} */
   1072 Cookie.prototype.value;
   1073 
   1074 
   1075 /** @type {string} */
   1076 Cookie.prototype.domain;
   1077 
   1078 
   1079 /** @type {boolean} */
   1080 Cookie.prototype.hostOnly;
   1081 
   1082 
   1083 /** @type {string} */
   1084 Cookie.prototype.path;
   1085 
   1086 
   1087 /** @type {boolean} */
   1088 Cookie.prototype.secure;
   1089 
   1090 
   1091 /** @type {boolean} */
   1092 Cookie.prototype.httpOnly;
   1093 
   1094 
   1095 /** @type {boolean} */
   1096 Cookie.prototype.session;
   1097 
   1098 
   1099 /** @type {number} */
   1100 Cookie.prototype.expirationDate;
   1101 
   1102 
   1103 /** @type {string} */
   1104 Cookie.prototype.storeId;
   1105 
   1106 
   1107 
   1108 /**
   1109  * @constructor
   1110  */
   1111 function Debuggee() {}
   1112 
   1113 
   1114 /** @type {number} */
   1115 Debuggee.prototype.tabId;
   1116 
   1117 
   1118 /**
   1119  * @constructor
   1120  */
   1121 function HistoryItem() {}
   1122 
   1123 
   1124 /** @type {string} */
   1125 HistoryItem.prototype.id;
   1126 
   1127 
   1128 /** @type {string} */
   1129 HistoryItem.prototype.url;
   1130 
   1131 
   1132 /** @type {string} */
   1133 HistoryItem.prototype.title;
   1134 
   1135 
   1136 /** @type {number} */
   1137 HistoryItem.prototype.lastVisitTime;
   1138 
   1139 
   1140 /** @type {number} */
   1141 HistoryItem.prototype.visitCount;
   1142 
   1143 
   1144 /** @type {number} */
   1145 HistoryItem.prototype.typedCount;
   1146 
   1147 
   1148 
   1149 /**
   1150  * @constructor
   1151  */
   1152 function VisitItem() {}
   1153 
   1154 
   1155 /** @type {string} */
   1156 VisitItem.prototype.id;
   1157 
   1158 
   1159 /** @type {string} */
   1160 VisitItem.prototype.visitId;
   1161 
   1162 
   1163 /** @type {number} */
   1164 VisitItem.prototype.visitTime;
   1165 
   1166 
   1167 /** @type {string} */
   1168 VisitItem.prototype.referringVisitId;
   1169 
   1170 
   1171 /** @type {string} */
   1172 VisitItem.prototype.transition;
   1173