OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 13 matching lines...) Expand all Loading... |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 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. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 /** | 31 /** |
32 * @unrestricted | 32 * @unrestricted |
33 */ | 33 */ |
34 var SourceMapV3 = class { | 34 SDK.SourceMapV3 = class { |
35 constructor() { | 35 constructor() { |
36 /** @type {number} */ this.version; | 36 /** @type {number} */ this.version; |
37 /** @type {string|undefined} */ this.file; | 37 /** @type {string|undefined} */ this.file; |
38 /** @type {!Array.<string>} */ this.sources; | 38 /** @type {!Array.<string>} */ this.sources; |
39 /** @type {!Array.<!SourceMapV3.Section>|undefined} */ this.sections; | 39 /** @type {!Array.<!SDK.SourceMapV3.Section>|undefined} */ this.sections; |
40 /** @type {string} */ this.mappings; | 40 /** @type {string} */ this.mappings; |
41 /** @type {string|undefined} */ this.sourceRoot; | 41 /** @type {string|undefined} */ this.sourceRoot; |
42 /** @type {!Array.<string>|undefined} */ this.names; | 42 /** @type {!Array.<string>|undefined} */ this.names; |
43 } | 43 } |
44 }; | 44 }; |
45 | 45 |
46 /** | 46 /** |
47 * @unrestricted | 47 * @unrestricted |
48 */ | 48 */ |
49 SourceMapV3.Section = class { | 49 SDK.SourceMapV3.Section = class { |
50 constructor() { | 50 constructor() { |
51 /** @type {!SourceMapV3} */ this.map; | 51 /** @type {!SDK.SourceMapV3} */ this.map; |
52 /** @type {!SourceMapV3.Offset} */ this.offset; | 52 /** @type {!SDK.SourceMapV3.Offset} */ this.offset; |
53 } | 53 } |
54 }; | 54 }; |
55 | 55 |
56 /** | 56 /** |
57 * @unrestricted | 57 * @unrestricted |
58 */ | 58 */ |
59 SourceMapV3.Offset = class { | 59 SDK.SourceMapV3.Offset = class { |
60 constructor() { | 60 constructor() { |
61 /** @type {number} */ this.line; | 61 /** @type {number} */ this.line; |
62 /** @type {number} */ this.column; | 62 /** @type {number} */ this.column; |
63 } | 63 } |
64 }; | 64 }; |
65 | 65 |
66 /** | 66 /** |
67 * @unrestricted | 67 * @unrestricted |
68 */ | 68 */ |
69 SDK.SourceMapEntry = class { | 69 SDK.SourceMapEntry = class { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 /** | 172 /** |
173 * @implements {SDK.SourceMap} | 173 * @implements {SDK.SourceMap} |
174 * @unrestricted | 174 * @unrestricted |
175 */ | 175 */ |
176 SDK.TextSourceMap = class { | 176 SDK.TextSourceMap = class { |
177 /** | 177 /** |
178 * Implements Source Map V3 model. See https://github.com/google/closure-compi
ler/wiki/Source-Maps | 178 * Implements Source Map V3 model. See https://github.com/google/closure-compi
ler/wiki/Source-Maps |
179 * for format description. | 179 * for format description. |
180 * @param {string} compiledURL | 180 * @param {string} compiledURL |
181 * @param {string} sourceMappingURL | 181 * @param {string} sourceMappingURL |
182 * @param {!SourceMapV3} payload | 182 * @param {!SDK.SourceMapV3} payload |
183 */ | 183 */ |
184 constructor(compiledURL, sourceMappingURL, payload) { | 184 constructor(compiledURL, sourceMappingURL, payload) { |
185 if (!SDK.TextSourceMap._base64Map) { | 185 if (!SDK.TextSourceMap._base64Map) { |
186 const base64Digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0123456789+/'; | 186 const base64Digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0123456789+/'; |
187 SDK.TextSourceMap._base64Map = {}; | 187 SDK.TextSourceMap._base64Map = {}; |
188 for (var i = 0; i < base64Digits.length; ++i) | 188 for (var i = 0; i < base64Digits.length; ++i) |
189 SDK.TextSourceMap._base64Map[base64Digits.charAt(i)] = i; | 189 SDK.TextSourceMap._base64Map[base64Digits.charAt(i)] = i; |
190 } | 190 } |
191 | 191 |
192 this._json = payload; | 192 this._json = payload; |
(...skipping 25 matching lines...) Expand all Loading... |
218 */ | 218 */ |
219 function contentLoaded(statusCode, headers, content) { | 219 function contentLoaded(statusCode, headers, content) { |
220 if (!content || statusCode >= 400) { | 220 if (!content || statusCode >= 400) { |
221 callback(null); | 221 callback(null); |
222 return; | 222 return; |
223 } | 223 } |
224 | 224 |
225 if (content.slice(0, 3) === ')]}') | 225 if (content.slice(0, 3) === ')]}') |
226 content = content.substring(content.indexOf('\n')); | 226 content = content.substring(content.indexOf('\n')); |
227 try { | 227 try { |
228 var payload = /** @type {!SourceMapV3} */ (JSON.parse(content)); | 228 var payload = /** @type {!SDK.SourceMapV3} */ (JSON.parse(content)); |
229 var baseURL = sourceMapURL.startsWith('data:') ? compiledURL : sourceMap
URL; | 229 var baseURL = sourceMapURL.startsWith('data:') ? compiledURL : sourceMap
URL; |
230 callback(new SDK.TextSourceMap(compiledURL, baseURL, payload)); | 230 callback(new SDK.TextSourceMap(compiledURL, baseURL, payload)); |
231 } catch (e) { | 231 } catch (e) { |
232 console.error(e); | 232 console.error(e); |
233 Common.console.warn('DevTools failed to parse SourceMap: ' + sourceMapUR
L); | 233 Common.console.warn('DevTools failed to parse SourceMap: ' + sourceMapUR
L); |
234 callback(null); | 234 callback(null); |
235 } | 235 } |
236 } | 236 } |
237 } | 237 } |
238 | 238 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 return a.sourceColumnNumber - b.sourceColumnNumber; | 392 return a.sourceColumnNumber - b.sourceColumnNumber; |
393 | 393 |
394 if (a.lineNumber !== b.lineNumber) | 394 if (a.lineNumber !== b.lineNumber) |
395 return a.lineNumber - b.lineNumber; | 395 return a.lineNumber - b.lineNumber; |
396 | 396 |
397 return a.columnNumber - b.columnNumber; | 397 return a.columnNumber - b.columnNumber; |
398 } | 398 } |
399 } | 399 } |
400 | 400 |
401 /** | 401 /** |
402 * @param {function(!SourceMapV3, number, number)} callback | 402 * @param {function(!SDK.SourceMapV3, number, number)} callback |
403 */ | 403 */ |
404 _eachSection(callback) { | 404 _eachSection(callback) { |
405 if (!this._json.sections) { | 405 if (!this._json.sections) { |
406 callback(this._json, 0, 0); | 406 callback(this._json, 0, 0); |
407 return; | 407 return; |
408 } | 408 } |
409 for (var section of this._json.sections) | 409 for (var section of this._json.sections) |
410 callback(section.map, section.offset.line, section.offset.column); | 410 callback(section.map, section.offset.line, section.offset.column); |
411 } | 411 } |
412 | 412 |
413 /** | 413 /** |
414 * @param {!SourceMapV3} sourceMap | 414 * @param {!SDK.SourceMapV3} sourceMap |
415 */ | 415 */ |
416 _parseSources(sourceMap) { | 416 _parseSources(sourceMap) { |
417 var sourcesList = []; | 417 var sourcesList = []; |
418 var sourceRoot = sourceMap.sourceRoot || ''; | 418 var sourceRoot = sourceMap.sourceRoot || ''; |
419 if (sourceRoot && !sourceRoot.endsWith('/')) | 419 if (sourceRoot && !sourceRoot.endsWith('/')) |
420 sourceRoot += '/'; | 420 sourceRoot += '/'; |
421 for (var i = 0; i < sourceMap.sources.length; ++i) { | 421 for (var i = 0; i < sourceMap.sources.length; ++i) { |
422 var href = sourceRoot + sourceMap.sources[i]; | 422 var href = sourceRoot + sourceMap.sources[i]; |
423 var url = Common.ParsedURL.completeURL(this._sourceMappingURL, href) || hr
ef; | 423 var url = Common.ParsedURL.completeURL(this._sourceMappingURL, href) || hr
ef; |
424 var source = sourceMap.sourcesContent && sourceMap.sourcesContent[i]; | 424 var source = sourceMap.sourcesContent && sourceMap.sourcesContent[i]; |
425 if (url === this._compiledURL && source) | 425 if (url === this._compiledURL && source) |
426 url += Common.UIString(' [sm]'); | 426 url += Common.UIString(' [sm]'); |
427 this._sourceInfos.set(url, new SDK.TextSourceMap.SourceInfo(source, null))
; | 427 this._sourceInfos.set(url, new SDK.TextSourceMap.SourceInfo(source, null))
; |
428 sourcesList.push(url); | 428 sourcesList.push(url); |
429 } | 429 } |
430 sourceMap[SDK.TextSourceMap._sourcesListSymbol] = sourcesList; | 430 sourceMap[SDK.TextSourceMap._sourcesListSymbol] = sourcesList; |
431 } | 431 } |
432 | 432 |
433 /** | 433 /** |
434 * @param {!SourceMapV3} map | 434 * @param {!SDK.SourceMapV3} map |
435 * @param {number} lineNumber | 435 * @param {number} lineNumber |
436 * @param {number} columnNumber | 436 * @param {number} columnNumber |
437 */ | 437 */ |
438 _parseMap(map, lineNumber, columnNumber) { | 438 _parseMap(map, lineNumber, columnNumber) { |
439 var sourceIndex = 0; | 439 var sourceIndex = 0; |
440 var sourceLineNumber = 0; | 440 var sourceLineNumber = 0; |
441 var sourceColumnNumber = 0; | 441 var sourceColumnNumber = 0; |
442 var nameIndex = 0; | 442 var nameIndex = 0; |
443 var sources = map[SDK.TextSourceMap._sourcesListSymbol]; | 443 var sources = map[SDK.TextSourceMap._sourcesListSymbol]; |
444 var names = map.names || []; | 444 var names = map.names || []; |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 * @param {?string} content | 589 * @param {?string} content |
590 * @param {?Array<!SDK.SourceMapEntry>} reverseMappings | 590 * @param {?Array<!SDK.SourceMapEntry>} reverseMappings |
591 */ | 591 */ |
592 constructor(content, reverseMappings) { | 592 constructor(content, reverseMappings) { |
593 this.content = content; | 593 this.content = content; |
594 this.reverseMappings = reverseMappings; | 594 this.reverseMappings = reverseMappings; |
595 } | 595 } |
596 }; | 596 }; |
597 | 597 |
598 SDK.TextSourceMap._sourcesListSymbol = Symbol('sourcesList'); | 598 SDK.TextSourceMap._sourcesListSymbol = Symbol('sourcesList'); |
OLD | NEW |