Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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 Coverage.CoverageView = class extends UI.VBox { | 5 Coverage.CoverageView = class extends UI.VBox { |
| 6 constructor() { | 6 constructor() { |
| 7 super(true); | 7 super(true); |
| 8 | 8 |
| 9 /** @type {?Coverage.CoverageModel} */ | 9 /** @type {?Coverage.CoverageModel} */ |
| 10 this._model = null; | 10 this._model = null; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 */ | 126 */ |
| 127 decorate(uiSourceCode, textEditor) { | 127 decorate(uiSourceCode, textEditor) { |
| 128 var gutterType = 'CodeMirror-gutter-coverage'; | 128 var gutterType = 'CodeMirror-gutter-coverage'; |
| 129 | 129 |
| 130 var decorations = uiSourceCode.decorationsForType(Coverage.CoverageView.Line Decorator.type); | 130 var decorations = uiSourceCode.decorationsForType(Coverage.CoverageView.Line Decorator.type); |
| 131 textEditor.uninstallGutter(gutterType); | 131 textEditor.uninstallGutter(gutterType); |
| 132 if (!decorations || !decorations.size) | 132 if (!decorations || !decorations.size) |
| 133 return; | 133 return; |
| 134 | 134 |
| 135 textEditor.installGutter(gutterType, false); | 135 textEditor.installGutter(gutterType, false); |
| 136 | 136 var lastLine = 0; |
| 137 var lastData = undefined; | |
| 137 for (var decoration of decorations) { | 138 for (var decoration of decorations) { |
| 138 for (var line = decoration.range().startLine; line <= decoration.range().e ndLine; ++line) { | 139 var range = decoration.range(); |
| 139 var element = createElementWithClass('div'); | 140 var startLine = range.startLine; |
| 140 if (decoration.data()) | 141 if (lastLine && lastLine === startLine && lastData !== !!decoration.data() ) { |
|
alph
2017/03/22 22:30:58
nit: drop "lastLine &&"
| |
| 141 element.className = 'text-editor-coverage-used-marker'; | 142 var element = createElementWithClass('div', 'text-editor-coverage-mixed- marker'); |
| 142 else | 143 textEditor.setGutterDecoration(startLine, gutterType, element); |
| 143 element.className = 'text-editor-coverage-unused-marker'; | 144 startLine++; |
| 144 | 145 } else { |
| 146 startLine = Math.max(startLine, lastLine); | |
| 147 } | |
| 148 lastLine = range.endLine; | |
| 149 lastData = !!decoration.data(); | |
| 150 var className = lastData ? 'text-editor-coverage-used-marker' : 'text-edit or-coverage-unused-marker'; | |
| 151 for (var line = startLine; line <= lastLine; ++line) { | |
| 152 var element = createElementWithClass('div', className); | |
| 145 textEditor.setGutterDecoration(line, gutterType, element); | 153 textEditor.setGutterDecoration(line, gutterType, element); |
| 146 } | 154 } |
| 147 } | 155 } |
| 148 } | 156 } |
| 149 }; | 157 }; |
| 150 | 158 |
| 151 Coverage.CoverageView.LineDecorator.type = 'coverage'; | 159 Coverage.CoverageView.LineDecorator.type = 'coverage'; |
| 152 | 160 |
| 153 /** | 161 /** |
| 154 * @implements {UI.ActionDelegate} | 162 * @implements {UI.ActionDelegate} |
| 155 */ | 163 */ |
| 156 Coverage.CoverageView.RecordActionDelegate = class { | 164 Coverage.CoverageView.RecordActionDelegate = class { |
| 157 /** | 165 /** |
| 158 * @override | 166 * @override |
| 159 * @param {!UI.Context} context | 167 * @param {!UI.Context} context |
| 160 * @param {string} actionId | 168 * @param {string} actionId |
| 161 * @return {boolean} | 169 * @return {boolean} |
| 162 */ | 170 */ |
| 163 handleAction(context, actionId) { | 171 handleAction(context, actionId) { |
| 164 var coverageViewId = 'coverage'; | 172 var coverageViewId = 'coverage'; |
| 165 UI.viewManager.showView(coverageViewId) | 173 UI.viewManager.showView(coverageViewId) |
| 166 .then(() => UI.viewManager.view(coverageViewId).widget()) | 174 .then(() => UI.viewManager.view(coverageViewId).widget()) |
| 167 .then(widget => /** @type !Coverage.CoverageView} */ (widget)._toggleRec ording()); | 175 .then(widget => /** @type !Coverage.CoverageView} */ (widget)._toggleRec ording()); |
| 168 | 176 |
| 169 return true; | 177 return true; |
| 170 } | 178 } |
| 171 }; | 179 }; |
| OLD | NEW |