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 /** @type {boolean} */
     34 Event.prototype.isMetaOrCtrlForTest;
     35 
     36 /**
     37  * @type {number}
     38  */
     39 KeyboardEvent.DOM_KEY_LOCATION_NUMPAD;
     40 
     41 // FIXME: Remove after the Closure compiler roll.
     42 /** @param {*} message */
     43 function postMessage(message) {}
     44 
     45 /**
     46  * @param {string} eventName
     47  * @param {!Function} listener
     48  * @param {boolean=} capturing
     49  */
     50 function addEventListener(eventName, listener, capturing) {}
     51 
     52 /**
     53  * @param {!T} value
     54  * @param {boolean=} onlyFirst
     55  * @this {Array.<T>}
     56  * @template T
     57  */
     58 Array.prototype.remove = function(value, onlyFirst) {}
     59 /**
     60  * @param {!Array.<!T>} array
     61  * @this {Array.<!T>}
     62  * @template T
     63  */
     64 Array.prototype.pushAll = function(array) {}
     65 /**
     66  * @return {!Object.<string, boolean>}
     67  * @this {Array.<T>}
     68  * @template T
     69  */
     70 Array.prototype.keySet = function() {}
     71 /**
     72  * @param {number} index
     73  * @return {!Array.<!T>}
     74  * @this {Array.<T>}
     75  * @template T
     76  */
     77 Array.prototype.rotate = function(index) {}
     78 /**
     79  * @this {Array.<number>}
     80  */
     81 Array.prototype.sortNumbers = function() {}
     82 /**
     83  * @param {!T} object
     84  * @param {function(!T,!S):number=} comparator
     85  * @return {number}
     86  * @this {Array.<S>}
     87  * @template T,S
     88  */
     89 Array.prototype.lowerBound = function(object, comparator) {}
     90 /**
     91  * @param {!T} object
     92  * @param {function(!T,!S):number=} comparator
     93  * @return {number}
     94  * @this {Array.<S>}
     95  * @template T,S
     96  */
     97 Array.prototype.upperBound = function(object, comparator) {}
     98 /**
     99  * @param {!T} value
    100  * @param {function(!T,!S):number} comparator
    101  * @return {number}
    102  * @this {Array.<S>}
    103  * @template T,S
    104  */
    105 Array.prototype.binaryIndexOf = function(value, comparator) {}
    106 /**
    107  * @param {function(number, number): number} comparator
    108  * @param {number} leftBound
    109  * @param {number} rightBound
    110  * @param {number} sortWindowLeft
    111  * @param {number} sortWindowRight
    112  * @return {!Array.<number>}
    113  * @this {Array.<number>}
    114  */
    115 Array.prototype.sortRange = function(comparator, leftBound, rightBound, sortWindowLeft, sortWindowRight) {}
    116 
    117 /**
    118  * @param {function(!T,!T): number=} comparator
    119  * @return {!Array.<T>}
    120  * @this {Array.<T>}
    121  * @template T
    122  */
    123 Array.prototype.stableSort = function(comparator) {}
    124 
    125 /**
    126  * @this {Array.<number>}
    127  * @param {function(number,number):boolean} comparator
    128  * @param {number} left
    129  * @param {number} right
    130  * @param {number} pivotIndex
    131  * @return {number}
    132  */
    133 Array.prototype.partition = function(comparator, left, right, pivotIndex) {}
    134 
    135 /**
    136  * @this {Array.<number>}
    137  * @param {number} k
    138  * @param {function(number,number):boolean=} comparator
    139  * @return {number}
    140  */
    141 Array.prototype.qselect = function(k, comparator) {}
    142 
    143 /**
    144  * @param {string} field
    145  * @return {!Array.<!T>}
    146  * @this {Array.<!Object.<string,T>>}
    147  * @template T
    148  */
    149 Array.prototype.select = function(field) {}
    150 
    151 /**
    152  * @return {!T|undefined}
    153  * @this {Array.<T>}
    154  * @template T
    155  */
    156 Array.prototype.peekLast = function() {}
    157 
    158 /**
    159  * @param {!Array.<T>} array
    160  * @param {function(T,T):number} comparator
    161  * @return {!Array.<T>}
    162  * @this {!Array.<T>}
    163  * @template T
    164  */
    165 Array.prototype.intersectOrdered = function(array, comparator) {}
    166 
    167 /**
    168  * @param {!Array.<T>} array
    169  * @param {function(T,T):number} comparator
    170  * @return {!Array.<T>}
    171  * @this {!Array.<T>}
    172  * @template T
    173  */
    174 Array.prototype.mergeOrdered = function(array, comparator) {}
    175 
    176 // File System API
    177 /**
    178  * @constructor
    179  */
    180 function DOMFileSystem() {}
    181 
    182 /**
    183  * @type {DirectoryEntry}
    184  */
    185 DOMFileSystem.prototype.root = null;
    186 
    187 /** @interface */
    188 function InspectorFrontendHostAPI() {}
    189 /** @param {!Function=} callback */
    190 InspectorFrontendHostAPI.prototype.addFileSystem = function(callback) {}
    191 /** @param {!Function=} callback */
    192 InspectorFrontendHostAPI.prototype.append = function(url, content, callback) {}
    193 /** @param {!Function=} callback */
    194 InspectorFrontendHostAPI.prototype.indexPath = function(requestId, fileSystemPath, callback) {}
    195 /** @return {string} */
    196 InspectorFrontendHostAPI.prototype.getSelectionBackgroundColor = function() {}
    197 /** @return {string} */
    198 InspectorFrontendHostAPI.prototype.getSelectionForegroundColor = function() {}
    199 /** @return {boolean} */
    200 InspectorFrontendHost.isUnderTest = function() {}
    201 /**
    202  * Requests inspected page to be placed atop of the inspector frontend with specified bounds.
    203  * @param {{x: number, y: number, width: number, height: number}} bounds
    204  */
    205 InspectorFrontendHostAPI.prototype.setInspectedPageBounds = function(bounds) {}
    206 /**
    207  * Requests inspected page to be placed atop of the inspector frontend
    208  * with passed insets from the frontend sides, respecting minimum size passed.
    209  * @param {{top: number, left: number, right: number, bottom: number}} insets
    210  * @param {{width: number, height: number}} minSize
    211  */
    212 InspectorFrontendHostAPI.prototype.setContentsResizingStrategy = function(insets, minSize) {}
    213 /** @param {string} shortcuts */
    214 InspectorFrontendHostAPI.prototype.setWhitelistedShortcuts = function(shortcuts) {}
    215 InspectorFrontendHostAPI.prototype.inspectElementCompleted = function() {}
    216 /** @param {!Function=} callback */
    217 InspectorFrontendHostAPI.prototype.moveWindowBy = function(x, y, callback) {}
    218 /** @param {!Function=} callback */
    219 InspectorFrontendHostAPI.prototype.openInNewTab = function(url, callback) {}
    220 /** @param {!Function=} callback */
    221 InspectorFrontendHostAPI.prototype.removeFileSystem = function(fileSystemPath, callback) {}
    222 /** @param {!Function=} callback */
    223 InspectorFrontendHostAPI.prototype.requestFileSystems = function(callback) {}
    224 /** @param {!Function=} callback */
    225 InspectorFrontendHostAPI.prototype.save = function(url, content, forceSaveAs, callback) {}
    226 /** @param {!Function=} callback */
    227 InspectorFrontendHostAPI.prototype.searchInPath = function(requestId, fileSystemPath, query, callback) {}
    228 /** @param {!Function=} callback */
    229 InspectorFrontendHostAPI.prototype.stopIndexing = function(requestId, callback) {}
    230 
    231 InspectorFrontendHostAPI.prototype.bringToFront = function() {}
    232 InspectorFrontendHostAPI.prototype.openUrlOnRemoteDeviceAndInspect = function(browserId, url) {}
    233 InspectorFrontendHostAPI.prototype.closeWindow = function() {}
    234 InspectorFrontendHostAPI.prototype.copyText = function(text) {}
    235 InspectorFrontendHostAPI.prototype.inspectedURLChanged = function(url) {}
    236 InspectorFrontendHostAPI.prototype.isolatedFileSystem = function(fileSystemId, registeredName) {}
    237 InspectorFrontendHostAPI.prototype.upgradeDraggedFileSystemPermissions = function(DOMFileSystem) {}
    238 InspectorFrontendHostAPI.prototype.platform = function() {}
    239 InspectorFrontendHostAPI.prototype.port = function() {}
    240 InspectorFrontendHostAPI.prototype.recordActionTaken = function(actionCode) {}
    241 InspectorFrontendHostAPI.prototype.recordPanelShown = function(panelCode) {}
    242 InspectorFrontendHostAPI.prototype.sendMessageToBackend = function(message) {}
    243 InspectorFrontendHostAPI.prototype.sendMessageToEmbedder = function(message) {}
    244 InspectorFrontendHostAPI.prototype.setInjectedScriptForOrigin = function(origin, script) {}
    245 InspectorFrontendHostAPI.prototype.setIsDocked = function(isDocked, callback) {}
    246 InspectorFrontendHostAPI.prototype.setZoomFactor = function(zoom) {}
    247 InspectorFrontendHostAPI.prototype.subscribe = function(eventType) {}
    248 InspectorFrontendHostAPI.prototype.unsubscribe = function(eventType) {}
    249 InspectorFrontendHostAPI.prototype.zoomFactor = function() {}
    250 InspectorFrontendHostAPI.prototype.zoomIn = function() {}
    251 InspectorFrontendHostAPI.prototype.zoomOut = function() {}
    252 InspectorFrontendHostAPI.prototype.resetZoom = function() {}
    253 /** @type {InspectorFrontendHostAPI} */
    254 var InspectorFrontendHost;
    255 InspectorFrontendHost.embedderMessageAck = function(id, error) {}
    256 
    257 // FIXME: remove everything below.
    258 var FormatterWorker = {}
    259 var WebInspector = {}
    260 
    261 WebInspector.panels = {};
    262 WebInspector.inspectorFrontendEventSink = {};
    263 
    264 WebInspector.reload = function() { }
    265 
    266 /** Extensions API */
    267 
    268 /** @constructor */
    269 function AuditCategory() {}
    270 /** @constructor */
    271 function AuditResult() {}
    272 /** @constructor */
    273 function EventSink() {}
    274 /** @constructor */
    275 function ExtensionSidebarPane() {}
    276 /** @constructor */
    277 function Panel() {}
    278 /** @constructor */
    279 function PanelWithSidebar() {}
    280 /** @constructor */
    281 function Request() {}
    282 /** @constructor */
    283 function Resource() {}
    284 /** @constructor */
    285 function Timeline() {}
    286 
    287 var extensionServer;
    288 
    289 /**
    290  * @constructor
    291  */
    292 function ExtensionDescriptor() {
    293     this.startPage = "";
    294     this.name = "";
    295 }
    296 
    297 /**
    298  * @constructor
    299  */
    300 function ExtensionReloadOptions() {
    301     this.ignoreCache = false;
    302     this.injectedScript = "";
    303     this.preprocessingScript = "";
    304     this.userAgent = "";
    305 }
    306 
    307 /* jsdifflib API */
    308 var difflib = {};
    309 difflib.stringAsLines = function(text) { return []; }
    310 /** @constructor */
    311 difflib.SequenceMatcher = function(baseText, newText) { }
    312 difflib.SequenceMatcher.prototype.get_opcodes = function() { return []; }
    313 
    314 /** @constructor */
    315 var Doc = function() { }
    316 Doc.prototype = {
    317     /** @type {number} */
    318     scrollLeft: 0,
    319     /** @type {number} */
    320     scrollTop: 0
    321 }
    322 
    323 /** @constructor */
    324 var CodeMirror = function(element, config) { }
    325 CodeMirror.on = function(obj, type, handler) { }
    326 CodeMirror.prototype = {
    327     /** @type {!Doc} */
    328     doc: null,
    329     addKeyMap: function(map) { },
    330     addLineClass: function(handle, where, cls) { },
    331     /** @param {?Object=} options */
    332     addLineWidget: function(handle, node, options) { },
    333     /**
    334      * @param {string|!Object} spec
    335      * @param {!Object=} options
    336      */
    337     addOverlay: function(spec, options) { },
    338     addWidget: function(pos, node, scroll, vert, horiz) { },
    339     charCoords: function(pos, mode) { },
    340     clearGutter: function(gutterID) { },
    341     clearHistory: function() { },
    342     clipPos: function(pos) { },
    343     /** @param {string=} mode */
    344     coordsChar: function(coords, mode) { },
    345     /** @param {string=} mode */
    346     cursorCoords: function(start, mode) { },
    347     defaultCharWidth: function() { },
    348     defaultTextHeight: function() { },
    349     deleteH: function(dir, unit) { },
    350     /**
    351      * @param {*=} to
    352      * @param {*=} op
    353      */
    354     eachLine: function(from, to, op) { },
    355     execCommand: function(cmd) { },
    356     extendSelection: function(from, to) { },
    357     findMarksAt: function(pos) { },
    358     findMatchingBracket: function() { },
    359     findPosH: function(from, amount, unit, visually) { },
    360     findPosV: function(from, amount, unit, goalColumn) { },
    361     firstLine: function() { },
    362     focus: function() { },
    363     getAllMarks: function() { },
    364     /** @param {string=} start */
    365     getCursor: function(start) { },
    366     getDoc: function() { },
    367     getGutterElement: function() { },
    368     getHistory: function() { },
    369     getInputField: function(){ },
    370     getLine: function(line) { },
    371     /**
    372      * @return {!{wrapClass: string}}
    373      */
    374     getLineHandle: function(line) { },
    375     getLineNumber: function(line) { },
    376     getMode: function() { },
    377     getOption: function(option) { },
    378     /** @param {*=} lineSep */
    379     getRange: function(from, to, lineSep) { },
    380     /**
    381      * @return {!{left: number, top: number, width: number, height: number, clientWidth: number, clientHeight: number}}
    382      */
    383     getScrollInfo: function() { },
    384     getScrollerElement: function() { },
    385     getSelection: function() { },
    386     getSelections: function() { },
    387     getStateAfter: function(line) { },
    388     getTokenAt: function(pos) { },
    389     /** @param {*=} lineSep */
    390     getValue: function(lineSep) { },
    391     getViewport: function() { },
    392     getWrapperElement: function() { },
    393     hasFocus: function() { },
    394     historySize: function() { },
    395     indentLine: function(n, dir, aggressive) { },
    396     indentSelection: function(how) { },
    397     indexFromPos: function(coords) { },
    398     isClean: function() { },
    399     iterLinkedDocs: function(f) { },
    400     lastLine: function() { },
    401     lineCount: function() { },
    402     lineInfo: function(line) { },
    403     /**
    404      * @param {number} height
    405      * @param {string=} mode
    406      */
    407     lineAtHeight: function(height, mode) { },
    408     linkedDoc: function(options) { },
    409     listSelections: function() { },
    410     markClean: function() { },
    411     markText: function(from, to, options) { },
    412     moveH: function(dir, unit) { },
    413     moveV: function(dir, unit) { },
    414     off: function(type, f) { },
    415     on: function(type, f) { },
    416     operation: function(f) { },
    417     posFromIndex: function(off) { },
    418     redo: function() { },
    419     refresh: function() { },
    420     removeKeyMap: function(map) { },
    421     removeLine: function(line) { },
    422     removeLineClass: function(handle, where, cls) { },
    423     removeLineWidget: function(widget) { },
    424     removeOverlay: function(spec) { },
    425     /** @param {*=} origin */
    426     replaceRange: function(code, from, to, origin) { },
    427     replaceSelection: function(code, collapse, origin) { },
    428     /** @param {*=} margin */
    429     scrollIntoView: function(pos, margin) { },
    430     scrollTo: function(x, y) { },
    431     setBookmark: function(pos, options) { },
    432     setCursor: function(line, ch, extend) { },
    433     setExtending: function(val) { },
    434     setGutterMarker: function(line, gutterID, value) { },
    435     setHistory: function(histData) { },
    436     setLine: function(line, text) { },
    437     setOption: function(option, value) { },
    438     setSelection: function(anchor, head) { },
    439     /**
    440      * @param {number=} primaryIndex
    441      * @param {?Object=} config
    442      */
    443     setSelections: function(selections, primaryIndex, config) { },
    444     setSize: function(width, height) { },
    445     setValue: function(code) { },
    446     somethingSelected: function() { },
    447     swapDoc: function(doc) { },
    448     undo: function() { },
    449     unlinkDoc: function(other) { }
    450 }
    451 /** @type {!{cursorDiv: Element}} */
    452 CodeMirror.prototype.display;
    453 /** @type {!Object} */
    454 CodeMirror.Pass;
    455 CodeMirror.showHint = function(codeMirror, hintintFunction) { };
    456 CodeMirror.commands = {};
    457 CodeMirror.modes = {};
    458 CodeMirror.mimeModes = {};
    459 CodeMirror.getMode = function(options, spec) { };
    460 CodeMirror.overlayMode = function(mode1, mode2, squashSpans) { };
    461 CodeMirror.defineMode = function(modeName, modeConstructor) { };
    462 CodeMirror.startState = function(mode) { };
    463 
    464 /** @constructor */
    465 CodeMirror.Pos = function(line, ch) { }
    466 /** @type {number} */
    467 CodeMirror.Pos.prototype.line;
    468 /** @type {number} */
    469 CodeMirror.Pos.prototype.ch;
    470 
    471 /** @constructor */
    472 CodeMirror.StringStream = function(line)
    473 {
    474     this.pos = 0;
    475     this.start = 0;
    476 }
    477 CodeMirror.StringStream.prototype = {
    478     backUp: function (n) { },
    479     column: function () { },
    480     current: function () { },
    481     eat: function (match) { },
    482     eatSpace: function () { },
    483     eatWhile: function (match) { },
    484     eol: function () { },
    485     indentation: function () { },
    486     /**
    487      * @param {!RegExp|string} pattern
    488      * @param {boolean=} consume
    489      * @param {boolean=} caseInsensitive
    490      */
    491     match: function (pattern, consume, caseInsensitive) { },
    492     next: function () { },
    493     peek: function () { },
    494     skipTo: function (ch) { },
    495     skipToEnd: function () { },
    496     sol: function () { }
    497 }
    498 
    499 /** @type {Object.<string, !Object.<string, string>>} */
    500 CodeMirror.keyMap;
    501 
    502 /** @type {{scrollLeft: number, scrollTop: number}} */
    503 CodeMirror.doc;
    504 
    505 /**
    506  * @constructor
    507  * @extends {Event}
    508  */
    509 function ErrorEvent() {}
    510 
    511 /** @type {string} */
    512 ErrorEvent.prototype.message;
    513 
    514 /** @type {boolean} */
    515 window.dispatchStandaloneTestRunnerMessages;
    516