Home | History | Annotate | Download | only in front_end
      1 /*
      2  * Copyright (C) 2011 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions are
      6  * met:
      7  *
      8  *     * Redistributions of source code must retain the above copyright
      9  * notice, this list of conditions and the following disclaimer.
     10  *     * Redistributions in binary form must reproduce the above
     11  * copyright notice, this list of conditions and the following disclaimer
     12  * in the documentation and/or other materials provided with the
     13  * distribution.
     14  *     * Neither the name of Google Inc. nor the names of its
     15  * contributors may be used to endorse or promote products derived from
     16  * this software without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 
     31 // WebKit Web Facing API
     32 
     33 /**
     34  * @param {!Object} object
     35  * @param {!Function} callback
     36  */
     37 Object.observe = function(object, callback) {}
     38 
     39 /** @type {boolean} */
     40 Event.prototype.isMetaOrCtrlForTest;
     41 
     42 /**
     43  * @type {number}
     44  */
     45 KeyboardEvent.DOM_KEY_LOCATION_NUMPAD;
     46 
     47 /**
     48  * @param {string} eventName
     49  * @param {!Function} listener
     50  * @param {boolean=} capturing
     51  */
     52 function addEventListener(eventName, listener, capturing) {}
     53 
     54 /**
     55  * @param {!T} value
     56  * @param {boolean=} onlyFirst
     57  * @this {Array.<T>}
     58  * @template T
     59  */
     60 Array.prototype.remove = function(value, onlyFirst) {}
     61 /**
     62  * @param {!Array.<!T>} array
     63  * @this {Array.<!T>}
     64  * @template T
     65  */
     66 Array.prototype.pushAll = function(array) {}
     67 /**
     68  * @return {!Object.<string, boolean>}
     69  * @this {Array.<T>}
     70  * @template T
     71  */
     72 Array.prototype.keySet = function() {}
     73 /**
     74  * @param {number} index
     75  * @return {!Array.<!T>}
     76  * @this {Array.<T>}
     77  * @template T
     78  */
     79 Array.prototype.rotate = function(index) {}
     80 /**
     81  * @this {Array.<number>}
     82  */
     83 Array.prototype.sortNumbers = function() {}
     84 /**
     85  * @param {!T} object
     86  * @param {function(!T,!S):number=} comparator
     87  * @return {number}
     88  * @this {Array.<S>}
     89  * @template T,S
     90  */
     91 Array.prototype.lowerBound = function(object, comparator) {}
     92 /**
     93  * @param {!T} object
     94  * @param {function(!T,!S):number=} comparator
     95  * @return {number}
     96  * @this {Array.<S>}
     97  * @template T,S
     98  */
     99 Array.prototype.upperBound = function(object, comparator) {}
    100 /**
    101  * @param {!T} value
    102  * @param {function(!T,!S):number} comparator
    103  * @return {number}
    104  * @this {Array.<S>}
    105  * @template T,S
    106  */
    107 Array.prototype.binaryIndexOf = function(value, comparator) {}
    108 /**
    109  * @param {function(number, number): number} comparator
    110  * @param {number} leftBound
    111  * @param {number} rightBound
    112  * @param {number} sortWindowLeft
    113  * @param {number} sortWindowRight
    114  * @return {!Array.<number>}
    115  * @this {Array.<number>}
    116  */
    117 Array.prototype.sortRange = function(comparator, leftBound, rightBound, sortWindowLeft, sortWindowRight) {}
    118 
    119 /**
    120  * @param {function(!T,!T): number=} comparator
    121  * @return {!Array.<T>}
    122  * @this {Array.<T>}
    123  * @template T
    124  */
    125 Array.prototype.stableSort = function(comparator) {}
    126 
    127 /**
    128  * @this {Array.<number>}
    129  * @param {function(number,number):boolean} comparator
    130  * @param {number} left
    131  * @param {number} right
    132  * @param {number} pivotIndex
    133  * @return {number}
    134  */
    135 Array.prototype.partition = function(comparator, left, right, pivotIndex) {}
    136 
    137 /**
    138  * @this {Array.<number>}
    139  * @param {number} k
    140  * @param {function(number,number):boolean=} comparator
    141  * @return {number}
    142  */
    143 Array.prototype.qselect = function(k, comparator) {}
    144 
    145 /**
    146  * @param {string} field
    147  * @return {!Array.<!T>}
    148  * @this {Array.<!Object.<string,T>>}
    149  * @template T
    150  */
    151 Array.prototype.select = function(field) {}
    152 
    153 /**
    154  * @return {!T|undefined}
    155  * @this {Array.<T>}
    156  * @template T
    157  */
    158 Array.prototype.peekLast = function() {}
    159 
    160 /**
    161  * @param {!Array.<T>} array
    162  * @param {function(T,T):number} comparator
    163  * @return {!Array.<T>}
    164  * @this {!Array.<T>}
    165  * @template T
    166  */
    167 Array.prototype.intersectOrdered = function(array, comparator) {}
    168 
    169 /**
    170  * @param {!Array.<T>} array
    171  * @param {function(T,T):number} comparator
    172  * @return {!Array.<T>}
    173  * @this {!Array.<T>}
    174  * @template T
    175  */
    176 Array.prototype.mergeOrdered = function(array, comparator) {}
    177 
    178 // File System API
    179 /**
    180  * @constructor
    181  */
    182 function DOMFileSystem() {}
    183 
    184 /**
    185  * @type {DirectoryEntry}
    186  */
    187 DOMFileSystem.prototype.root = null;
    188 
    189 // FIXME: remove everything below.
    190 var FormatterWorker = {}
    191 var WebInspector = {}
    192 
    193 WebInspector.panels = {};
    194 
    195 WebInspector.reload = function() { }
    196 
    197 /** Extensions API */
    198 
    199 /** @constructor */
    200 function AuditCategory() {}
    201 /** @constructor */
    202 function AuditResult() {}
    203 /** @constructor */
    204 function EventSink() {}
    205 /** @constructor */
    206 function ExtensionSidebarPane() {}
    207 /** @constructor */
    208 function Panel() {}
    209 /** @constructor */
    210 function PanelWithSidebar() {}
    211 /** @constructor */
    212 function Request() {}
    213 /** @constructor */
    214 function Resource() {}
    215 /** @constructor */
    216 function Timeline() {}
    217 
    218 var extensionServer;
    219 
    220 /**
    221  * @constructor
    222  */
    223 function ExtensionDescriptor() {
    224     this.startPage = "";
    225     this.name = "";
    226 }
    227 
    228 /**
    229  * @constructor
    230  */
    231 function ExtensionReloadOptions() {
    232     this.ignoreCache = false;
    233     this.injectedScript = "";
    234     this.preprocessingScript = "";
    235     this.userAgent = "";
    236 }
    237 
    238 /* jsdifflib API */
    239 var difflib = {};
    240 difflib.stringAsLines = function(text) { return []; }
    241 /** @constructor */
    242 difflib.SequenceMatcher = function(baseText, newText) { }
    243 difflib.SequenceMatcher.prototype.get_opcodes = function() { return []; }
    244 
    245 /** @constructor */
    246 var Doc = function() { }
    247 Doc.prototype = {
    248     /** @type {number} */
    249     scrollLeft: 0,
    250     /** @type {number} */
    251     scrollTop: 0
    252 }
    253 
    254 /** @constructor */
    255 var CodeMirror = function(element, config) { }
    256 CodeMirror.on = function(obj, type, handler) { }
    257 CodeMirror.prototype = {
    258     /** @type {!Doc} */
    259     doc: null,
    260     addKeyMap: function(map) { },
    261     addLineClass: function(handle, where, cls) { },
    262     /** @param {?Object=} options */
    263     addLineWidget: function(handle, node, options) { },
    264     /**
    265      * @param {string|!Object} spec
    266      * @param {!Object=} options
    267      */
    268     addOverlay: function(spec, options) { },
    269     addWidget: function(pos, node, scroll, vert, horiz) { },
    270     charCoords: function(pos, mode) { },
    271     clearGutter: function(gutterID) { },
    272     clearHistory: function() { },
    273     clipPos: function(pos) { },
    274     /** @param {string=} mode */
    275     coordsChar: function(coords, mode) { },
    276     /** @param {string=} mode */
    277     cursorCoords: function(start, mode) { },
    278     defaultCharWidth: function() { },
    279     defaultTextHeight: function() { },
    280     deleteH: function(dir, unit) { },
    281     /**
    282      * @param {*=} to
    283      * @param {*=} op
    284      */
    285     eachLine: function(from, to, op) { },
    286     execCommand: function(cmd) { },
    287     extendSelection: function(from, to) { },
    288     findMarksAt: function(pos) { },
    289     /**
    290      * @param {!CodeMirror.Pos} from
    291      * @param {boolean=} strict
    292      * @param {Object=} config
    293      */
    294     findMatchingBracket: function(from, strict, config) { },
    295     findPosH: function(from, amount, unit, visually) { },
    296     findPosV: function(from, amount, unit, goalColumn) { },
    297     firstLine: function() { },
    298     focus: function() { },
    299     getAllMarks: function() { },
    300     /** @param {string=} start */
    301     getCursor: function(start) { },
    302     getDoc: function() { },
    303     getGutterElement: function() { },
    304     getHistory: function() { },
    305     getInputField: function(){ },
    306     getLine: function(line) { },
    307     /**
    308      * @return {!{wrapClass: string}}
    309      */
    310     getLineHandle: function(line) { },
    311     getLineNumber: function(line) { },
    312     getMode: function() { },
    313     getOption: function(option) { },
    314     /** @param {*=} lineSep */
    315     getRange: function(from, to, lineSep) { },
    316     /**
    317      * @return {!{left: number, top: number, width: number, height: number, clientWidth: number, clientHeight: number}}
    318      */
    319     getScrollInfo: function() { },
    320     getScrollerElement: function() { },
    321     getSelection: function() { },
    322     getSelections: function() { },
    323     getStateAfter: function(line) { },
    324     getTokenAt: function(pos) { },
    325     /** @param {*=} lineSep */
    326     getValue: function(lineSep) { },
    327     getViewport: function() { },
    328     getWrapperElement: function() { },
    329     hasFocus: function() { },
    330     historySize: function() { },
    331     indentLine: function(n, dir, aggressive) { },
    332     indentSelection: function(how) { },
    333     indexFromPos: function(coords) { },
    334     isClean: function() { },
    335     iterLinkedDocs: function(f) { },
    336     lastLine: function() { },
    337     lineCount: function() { },
    338     lineInfo: function(line) { },
    339     /**
    340      * @param {number} height
    341      * @param {string=} mode
    342      */
    343     lineAtHeight: function(height, mode) { },
    344     linkedDoc: function(options) { },
    345     listSelections: function() { },
    346     markClean: function() { },
    347     markText: function(from, to, options) { },
    348     moveH: function(dir, unit) { },
    349     moveV: function(dir, unit) { },
    350     off: function(type, f) { },
    351     on: function(type, f) { },
    352     operation: function(f) { },
    353     posFromIndex: function(off) { },
    354     redo: function() { },
    355     refresh: function() { },
    356     removeKeyMap: function(map) { },
    357     removeLine: function(line) { },
    358     removeLineClass: function(handle, where, cls) { },
    359     removeLineWidget: function(widget) { },
    360     removeOverlay: function(spec) { },
    361     /** @param {*=} origin */
    362     replaceRange: function(code, from, to, origin) { },
    363     /**
    364      * @param {string} replacement
    365      * @param {string=} select
    366      */
    367     replaceSelection: function(replacement, select) { },
    368     /**
    369      * @param {!Array.<string>} textPerSelection
    370      */
    371     replaceSelections: function(textPerSelection) { },
    372     /** @param {*=} margin */
    373     scrollIntoView: function(pos, margin) { },
    374     scrollTo: function(x, y) { },
    375     setBookmark: function(pos, options) { },
    376     setCursor: function(line, ch, extend) { },
    377     setExtending: function(val) { },
    378     setGutterMarker: function(line, gutterID, value) { },
    379     setHistory: function(histData) { },
    380     setLine: function(line, text) { },
    381     setOption: function(option, value) { },
    382     setSelection: function(anchor, head) { },
    383     /**
    384      * @param {number=} primaryIndex
    385      * @param {?Object=} config
    386      */
    387     setSelections: function(selections, primaryIndex, config) { },
    388     setSize: function(width, height) { },
    389     setValue: function(code) { },
    390     somethingSelected: function() { },
    391     swapDoc: function(doc) { },
    392     undo: function() { },
    393     unlinkDoc: function(other) { }
    394 }
    395 /** @type {!{cursorDiv: Element}} */
    396 CodeMirror.prototype.display;
    397 /** @type {!Object} */
    398 CodeMirror.Pass;
    399 CodeMirror.showHint = function(codeMirror, hintintFunction) { };
    400 CodeMirror.commands = {};
    401 CodeMirror.modes = {};
    402 CodeMirror.mimeModes = {};
    403 CodeMirror.getMode = function(options, spec) { };
    404 CodeMirror.overlayMode = function(mode1, mode2, squashSpans) { };
    405 CodeMirror.defineMode = function(modeName, modeConstructor) { };
    406 CodeMirror.startState = function(mode) { };
    407 
    408 /** @constructor */
    409 CodeMirror.Pos = function(line, ch) { }
    410 /** @type {number} */
    411 CodeMirror.Pos.prototype.line;
    412 /** @type {number} */
    413 CodeMirror.Pos.prototype.ch;
    414 
    415 /**
    416  * @param {!CodeMirror.Pos} pos1
    417  * @param {!CodeMirror.Pos} pos2
    418  * @return {number}
    419  */
    420 CodeMirror.cmpPos = function(pos1, pos2) { };
    421 
    422 /** @constructor */
    423 CodeMirror.StringStream = function(line)
    424 {
    425     this.pos = 0;
    426     this.start = 0;
    427 }
    428 CodeMirror.StringStream.prototype = {
    429     backUp: function (n) { },
    430     column: function () { },
    431     current: function () { },
    432     eat: function (match) { },
    433     eatSpace: function () { },
    434     eatWhile: function (match) { },
    435     eol: function () { },
    436     indentation: function () { },
    437     /**
    438      * @param {!RegExp|string} pattern
    439      * @param {boolean=} consume
    440      * @param {boolean=} caseInsensitive
    441      */
    442     match: function (pattern, consume, caseInsensitive) { },
    443     next: function () { },
    444     peek: function () { },
    445     skipTo: function (ch) { },
    446     skipToEnd: function () { },
    447     sol: function () { }
    448 }
    449 
    450 /** @type {Object.<string, !Object.<string, string>>} */
    451 CodeMirror.keyMap;
    452 
    453 /** @type {{scrollLeft: number, scrollTop: number}} */
    454 CodeMirror.doc;
    455 
    456 /**
    457  * @constructor
    458  * @extends {Event}
    459  */
    460 function ErrorEvent() {}
    461 
    462 /** @type {string} */
    463 ErrorEvent.prototype.message;
    464 
    465 /** @type {boolean} */
    466 window.dispatchStandaloneTestRunnerMessages;
    467 
    468 /**
    469  * @param {function()} onCatch
    470  */
    471 Promise.prototype.catch = function(onCatch) {};
    472 
    473 // FIXME: Remove once ES6 is supported natively by JS compiler.
    474 
    475 /** @typedef {string} */
    476 var symbol;
    477 
    478 /**
    479  * @param {string} description
    480  * @return {symbol}
    481  */
    482 function Symbol(description) {}
    483