OLD | NEW |
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** @typedef {{startOffset: number, endOffset: number, count: number}} */ | 5 /** @typedef {{startOffset: number, endOffset: number, count: number}} */ |
6 Coverage.RangeUseCount; | 6 Coverage.RangeUseCount; |
7 | 7 |
8 /** @typedef {{end: number, count: (number|undefined)}} */ | 8 /** @typedef {{end: number, count: (number|undefined)}} */ |
9 Coverage.CoverageSegment; | 9 Coverage.CoverageSegment; |
10 | 10 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 _processJSCoverage(scriptsCoverage) { | 65 _processJSCoverage(scriptsCoverage) { |
66 for (var entry of scriptsCoverage) { | 66 for (var entry of scriptsCoverage) { |
67 var script = this._debuggerModel.scriptForId(entry.scriptId); | 67 var script = this._debuggerModel.scriptForId(entry.scriptId); |
68 if (!script) | 68 if (!script) |
69 continue; | 69 continue; |
70 var ranges = []; | 70 var ranges = []; |
71 for (var func of entry.functions) { | 71 for (var func of entry.functions) { |
72 for (var range of func.ranges) | 72 for (var range of func.ranges) |
73 ranges.push(range); | 73 ranges.push(range); |
74 } | 74 } |
75 ranges.sort((a, b) => a.startOffset - b.startOffset); | |
76 this._addCoverage(script, script.contentLength, script.lineOffset, script.
columnOffset, ranges); | 75 this._addCoverage(script, script.contentLength, script.lineOffset, script.
columnOffset, ranges); |
77 } | 76 } |
78 } | 77 } |
79 | 78 |
80 /** | 79 /** |
81 * @param {!Array<!Coverage.RangeUseCount>} ranges | 80 * @param {!Array<!Coverage.RangeUseCount>} ranges |
82 * @return {!Array<!Coverage.CoverageSegment>} | 81 * @return {!Array<!Coverage.CoverageSegment>} |
83 */ | 82 */ |
84 static _convertToDisjointSegments(ranges) { | 83 static _convertToDisjointSegments(ranges) { |
| 84 ranges.sort((a, b) => a.startOffset - b.startOffset); |
| 85 |
85 var result = []; | 86 var result = []; |
86 | |
87 var stack = []; | 87 var stack = []; |
88 for (var entry of ranges) { | 88 for (var entry of ranges) { |
89 var top = stack.peekLast(); | 89 var top = stack.peekLast(); |
90 while (top && top.endOffset <= entry.startOffset) { | 90 while (top && top.endOffset <= entry.startOffset) { |
91 append(top.endOffset, top.count); | 91 append(top.endOffset, top.count); |
92 stack.pop(); | 92 stack.pop(); |
93 top = stack.peekLast(); | 93 top = stack.peekLast(); |
94 } | 94 } |
95 append(entry.startOffset, top ? top.count : undefined); | 95 append(entry.startOffset, top ? top.count : undefined); |
96 stack.push(entry); | 96 stack.push(entry); |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 this._usedSize = 0; | 366 this._usedSize = 0; |
367 | 367 |
368 var last = 0; | 368 var last = 0; |
369 for (var segment of this._segments) { | 369 for (var segment of this._segments) { |
370 if (segment.count) | 370 if (segment.count) |
371 this._usedSize += segment.end - last; | 371 this._usedSize += segment.end - last; |
372 last = segment.end; | 372 last = segment.end; |
373 } | 373 } |
374 } | 374 } |
375 }; | 375 }; |
OLD | NEW |