Changeset 205674 in webkit
- Timestamp:
- Sep 8, 2016 4:13:57 PM (8 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r205651 r205674 1 2016-09-08 Nikita Vasilyev <nvasilyev@apple.com> 2 3 Web Inspector: Add a button to navigation bar to toggle Control Flow Profiler 4 https://bugs.webkit.org/show_bug.cgi?id=160973 5 <rdar://problem/27912606> 6 7 Reviewed by Brian Burg. 8 9 * Localizations/en.lproj/localizedStrings.js: 10 Add "Fade unexecuted code" and "Do not fade unexecuted code". 11 12 * UserInterface/Base/Main.js: 13 (WebInspector.loaded): 14 Add a setting to remember whether Code Coverage Profiler is on or off between Web Inspector reloads. 15 16 * UserInterface/Views/SourceCodeTextEditor.js: 17 (WebInspector.SourceCodeTextEditor.prototype.shown): 18 (WebInspector.SourceCodeTextEditor.prototype.canShowTypeAnnotations): 19 (WebInspector.SourceCodeTextEditor.prototype.canShowCoverageHints): 20 (WebInspector.SourceCodeTextEditor.prototype.contentDidChange): 21 (WebInspector.SourceCodeTextEditor.prototype.toggleTypeAnnotations): 22 (WebInspector.SourceCodeTextEditor.prototype.toggleUnexecutedCodeHighlights): 23 (WebInspector.SourceCodeTextEditor.prototype.prettyPrint): 24 (WebInspector.SourceCodeTextEditor.prototype._proceedPopulateWithContent): 25 (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState): 26 (WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled): 27 (WebInspector.SourceCodeTextEditor.prototype._enableScrollEventsForTypeTokenAnnotator): 28 (WebInspector.SourceCodeTextEditor.prototype._enableScrollEventsForControlFlowAnnotator): 29 (WebInspector.SourceCodeTextEditor.prototype._disableScrollEventsForControlFlowAnnotator): 30 (WebInspector.SourceCodeTextEditor.prototype._createTypeTokenScrollEventHandler): 31 (WebInspector.SourceCodeTextEditor.prototype._createControlFlowScrollEventHandler): 32 (WebInspector.SourceCodeTextEditor.prototype.canBeFormatted): Deleted. 33 (WebInspector.SourceCodeTextEditor.prototype.dialogWasDismissed): Deleted. 34 (WebInspector.SourceCodeTextEditor.prototype.showPopoverForTypes): Deleted. 35 (WebInspector.SourceCodeTextEditor.prototype._addBreakpointWithEditorLineInfo): Deleted. 36 (WebInspector.SourceCodeTextEditor.prototype._removeBreakpointWithEditorLineInfo): Deleted. 37 (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression): Deleted. 38 (WebInspector.SourceCodeTextEditor.prototype._dismissEditingController): Deleted. 39 (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidStartEditing): Deleted. 40 (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidFinishEditing): Deleted. 41 (WebInspector.SourceCodeTextEditor.prototype._getAssociatedScript): Deleted. 42 (WebInspector.SourceCodeTextEditor.prototype._createTypeTokenAnnotator): Deleted. 43 Make Code Coverage profiler independent from Type Profiler. 44 45 * UserInterface/Views/TextContentView.js: 46 (WebInspector.TextContentView): 47 (WebInspector.TextContentView.prototype.get navigationItems): 48 (WebInspector.TextContentView.prototype.get textEditor): Deleted. 49 * UserInterface/Views/TextEditor.js: 50 (WebInspector.TextEditor.prototype.get hasModified): 51 (WebInspector.TextEditor.prototype.canShowCoverageHints): 52 * UserInterface/Views/TextResourceContentView.js: 53 (WebInspector.TextResourceContentView): 54 (WebInspector.TextResourceContentView.prototype.get navigationItems): 55 (WebInspector.TextResourceContentView.prototype._contentDidPopulate): 56 (WebInspector.TextResourceContentView.prototype._toggleTypeAnnotations): 57 (WebInspector.TextResourceContentView.prototype._toggleUnexecutedCodeHighlights): 58 (WebInspector.TextResourceContentView.prototype._enableControlFlowProfilerSettingChanged): 59 (WebInspector.TextResourceContentView.prototype._contentWillPopulate): Deleted. 60 * UserInterface/Views/ScriptContentView.js: 61 (WebInspector.ScriptContentView): 62 (WebInspector.ScriptContentView.prototype.get navigationItems): 63 (WebInspector.ScriptContentView.prototype._contentDidPopulate): 64 (WebInspector.ScriptContentView.prototype._toggleTypeAnnotations): 65 (WebInspector.ScriptContentView.prototype._toggleUnexecutedCodeHighlights): 66 (WebInspector.ScriptContentView.prototype._enableControlFlowProfilerSettingChanged): 67 (WebInspector.ScriptContentView.prototype._contentWillPopulate): Deleted. 68 Add the [C] icon right next to the [T] (Type Profiler) icon. 69 1 70 2016-09-08 Joseph Pecoraro <pecoraro@apple.com> 2 71 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r205651 r205674 1 var localizedStrings = new Object;1 var localizedStrings = new Object; 2 2 3 3 localizedStrings[" (Prototype)"] = " (Prototype)"; … … 250 250 localizedStrings["Disabled"] = "Disabled"; 251 251 localizedStrings["Display"] = "Display"; 252 localizedStrings["Do not fade unexecuted code"] = "Do not fade unexecuted code"; 252 253 localizedStrings["Dock to bottom of window"] = "Dock to bottom of window"; 253 254 localizedStrings["Dock to right of window"] = "Dock to right of window"; … … 333 334 localizedStrings["Extension Scripts"] = "Extension Scripts"; 334 335 localizedStrings["Extra Scripts"] = "Extra Scripts"; 336 localizedStrings["Fade unexecuted code"] = "Fade unexecuted code"; 335 337 localizedStrings["Family"] = "Family"; 336 338 localizedStrings["Features"] = "Features"; -
trunk/Source/WebInspectorUI/UserInterface/Base/Main.js
r205529 r205674 163 163 if (this.showJavaScriptTypeInformationSetting.value && window.RuntimeAgent && RuntimeAgent.enableTypeProfiler) { 164 164 RuntimeAgent.enableTypeProfiler(); 165 if (RuntimeAgent.enableControlFlowProfiler) 166 RuntimeAgent.enableControlFlowProfiler(); 167 } 165 } 166 167 this.enableControlFlowProfilerSetting = new WebInspector.Setting("enable-control-flow-profiler", false); 168 if (this.enableControlFlowProfilerSetting.value && window.RuntimeAgent && RuntimeAgent.enableControlFlowProfiler) 169 RuntimeAgent.enableControlFlowProfiler(); 168 170 169 171 // COMPATIBILITY (iOS 8): Page.setShowPaintRects did not exist. -
trunk/Source/WebInspectorUI/UserInterface/Views/ScriptContentView.js
r199169 r205674 64 64 this._showTypesButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._toggleTypeAnnotations, this); 65 65 this._showTypesButtonNavigationItem.enabled = false; 66 67 66 WebInspector.showJavaScriptTypeInformationSetting.addEventListener(WebInspector.Setting.Event.Changed, this._showJavaScriptTypeInformationSettingChanged, this); 67 68 let toolTipCodeCoverage = WebInspector.UIString("Fade unexecuted code"); 69 let activatedToolTipCodeCoverage = WebInspector.UIString("Do not fade unexecuted code"); 70 this._codeCoverageButtonNavigationItem = new WebInspector.ActivateButtonNavigationItem("code-coverage", toolTipCodeCoverage, activatedToolTipCodeCoverage, "Images/NavigationItemCodeCoverage.svg", 13, 14); 71 this._codeCoverageButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._toggleUnexecutedCodeHighlights, this); 72 this._codeCoverageButtonNavigationItem.enabled = false; 73 WebInspector.enableControlFlowProfilerSetting.addEventListener(WebInspector.Setting.Event.Changed, this._enableControlFlowProfilerSettingChanged, this); 68 74 } 69 75 … … 72 78 get navigationItems() 73 79 { 74 return [this._prettyPrintButtonNavigationItem, this._showTypesButtonNavigationItem ];80 return [this._prettyPrintButtonNavigationItem, this._showTypesButtonNavigationItem, this._codeCoverageButtonNavigationItem]; 75 81 } 76 82 … … 203 209 { 204 210 this._prettyPrintButtonNavigationItem.enabled = this._textEditor.canBeFormatted(); 211 205 212 this._showTypesButtonNavigationItem.enabled = this._textEditor.canShowTypeAnnotations(); 206 213 this._showTypesButtonNavigationItem.activated = WebInspector.showJavaScriptTypeInformationSetting.value; 214 215 this._codeCoverageButtonNavigationItem.enabled = this._textEditor.canShowCoverageHints(); 216 this._codeCoverageButtonNavigationItem.activated = WebInspector.enableControlFlowProfilerSetting.value; 207 217 } 208 218 … … 215 225 _toggleTypeAnnotations(event) 216 226 { 217 this._textEditor.toggleTypeAnnotations(); 227 this._showTypesButtonNavigationItem.enabled = false; 228 this._textEditor.toggleTypeAnnotations().then(() => { 229 this._showTypesButtonNavigationItem.enabled = true; 230 }) 231 } 232 233 _toggleUnexecutedCodeHighlights(event) 234 { 235 this._codeCoverageButtonNavigationItem.enabled = false; 236 this._textEditor.toggleUnexecutedCodeHighlights().then(() => { 237 this._codeCoverageButtonNavigationItem.enabled = true; 238 }); 218 239 } 219 240 … … 223 244 } 224 245 246 _enableControlFlowProfilerSettingChanged(event) 247 { 248 this._codeCoverageButtonNavigationItem.activated = WebInspector.enableControlFlowProfilerSetting.value; 249 } 250 225 251 _textEditorFormattingDidChange(event) 226 252 { -
trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js
r205401 r205674 102 102 if (this._typeTokenAnnotator) 103 103 this._typeTokenAnnotator.resume(); 104 if (!this._typeTokenScrollHandler && this._typeTokenAnnotator) 105 this._enableScrollEventsForTypeTokenAnnotator(); 106 } else { 107 if (this._typeTokenAnnotator) 108 this._setTypeTokenAnnotatorEnabledState(false); 109 } 110 111 if (WebInspector.enableControlFlowProfilerSetting.value) { 104 112 if (this._basicBlockAnnotator) 105 113 this._basicBlockAnnotator.resume(); 106 if (!this._typeTokenScrollHandler && (this._typeTokenAnnotator || this._basicBlockAnnotator)) 107 this._enableScrollEventsForTypeTokenAnnotator(); 114 115 if (!this._controlFlowScrollHandler && this._basicBlockAnnotator) 116 this._enableScrollEventsForControlFlowAnnotator(); 108 117 } else { 109 if (this._typeTokenAnnotator || this._basicBlockAnnotator) 110 this._setTypeTokenAnnotatorEnabledState(false); 118 this._basicBlockAnnotatorEnabled = false; 111 119 } 112 120 } … … 162 170 canShowTypeAnnotations() 163 171 { 164 return !!this._typeTokenAnnotator; 172 // Type annotations for modified scripts are currently unsupported. 173 return !!this._getAssociatedScript() && !this.hasModified; 174 } 175 176 canShowCoverageHints() 177 { 178 // Code coverage hints for modified scripts are currently unsupported. 179 return !!this._getAssociatedScript() && !this.hasModified; 165 180 } 166 181 … … 250 265 this._updateEditableMarkers(range); 251 266 252 if (this._typeTokenAnnotator || this._basicBlockAnnotator) { 267 if (this._basicBlockAnnotator) { 268 this._basicBlockAnnotatorEnabled = false; 269 this._basicBlockAnnotator = null; 270 } 271 272 if (this._typeTokenAnnotator) { 253 273 this._setTypeTokenAnnotatorEnabledState(false); 254 274 this._typeTokenAnnotator = null; 255 this._basicBlockAnnotator = null;256 275 } 257 276 } … … 264 283 var newActivatedState = !this._typeTokenAnnotator.isActive(); 265 284 if (newActivatedState && this._isProbablyMinified && !this.formatted) { 266 this.updateFormattedState(true).then(() => {285 return this.updateFormattedState(true).then(() => { 267 286 this._setTypeTokenAnnotatorEnabledState(newActivatedState); 268 287 }); 269 return;270 288 } 271 289 272 290 this._setTypeTokenAnnotatorEnabledState(newActivatedState); 273 return newActivatedState; 291 return Promise.resolve(); 292 } 293 294 toggleUnexecutedCodeHighlights() 295 { 296 if (!this._basicBlockAnnotator) 297 return false; 298 299 let newActivatedState = !this._basicBlockAnnotator.isActive(); 300 if (newActivatedState && this._isProbablyMinified && !this.formatted) { 301 return this.updateFormattedState(true).then(() => { 302 this._basicBlockAnnotatorEnabled = newActivatedState; 303 }); 304 } 305 306 this._basicBlockAnnotatorEnabled = newActivatedState; 307 return Promise.resolve(); 274 308 } 275 309 … … 300 334 // after so that they clear their annotations in a known state and insert new annotations 301 335 // in the new state. 302 var shouldResumeTypeTokenAnnotator = this._typeTokenAnnotator && this._typeTokenAnnotator.isActive(); 336 303 337 var shouldResumeBasicBlockAnnotator = this._basicBlockAnnotator && this._basicBlockAnnotator.isActive(); 304 if (shouldResumeTypeTokenAnnotator || shouldResumeBasicBlockAnnotator) 338 if (shouldResumeBasicBlockAnnotator) 339 this._basicBlockAnnotatorEnabled = false; 340 341 let shouldResumeTypeTokenAnnotator = this._typeTokenAnnotator && this._typeTokenAnnotator.isActive(); 342 if (shouldResumeTypeTokenAnnotator) 305 343 this._setTypeTokenAnnotatorEnabledState(false); 306 344 307 345 return super.prettyPrint(pretty).then(() => { 308 346 if (pretty || !this._isProbablyMinified) { 309 if (shouldResumeTypeTokenAnnotator || shouldResumeBasicBlockAnnotator) 347 if (shouldResumeBasicBlockAnnotator) 348 this._basicBlockAnnotatorEnabled = true; 349 350 if (shouldResumeTypeTokenAnnotator) 310 351 this._setTypeTokenAnnotatorEnabledState(true); 311 352 } else { 312 353 console.assert(!pretty && this._isProbablyMinified); 313 if (this._typeTokenAnnotator || this._basicBlockAnnotator) 314 this._setTypeTokenAnnotatorEnabledState(false); 354 if (this._basicBlockAnnotator) 355 this._basicBlockAnnotatorEnabled = false; 356 357 this._setTypeTokenAnnotatorEnabledState(false); 315 358 } 316 359 }); … … 393 436 this.string = content; 394 437 395 this._ makeTypeTokenAnnotator();396 this._makeBasicBlockAnnotator();397 398 if (WebInspector.showJavaScriptTypeInformationSetting.value) { 399 if (this._basicBlockAnnotator || this._typeTokenAnnotator)400 this._setTypeTokenAnnotatorEnabledState(true);401 }438 this._createBasicBlockAnnotator(); 439 if (WebInspector.enableControlFlowProfilerSetting.value && this._basicBlockAnnotator) 440 this._basicBlockAnnotatorEnabled = true; 441 442 this._createTypeTokenAnnotator(); 443 if (WebInspector.showJavaScriptTypeInformationSetting.value) 444 this._setTypeTokenAnnotatorEnabledState(true); 402 445 403 446 this._contentDidPopulate(); … … 1679 1722 _setTypeTokenAnnotatorEnabledState(shouldActivate) 1680 1723 { 1681 console.assert(this._typeTokenAnnotator);1682 1724 if (!this._typeTokenAnnotator) 1683 1725 return; … … 1685 1727 if (shouldActivate) { 1686 1728 console.assert(this.visible, "Annotators should not be enabled if the TextEditor is not visible"); 1687 1688 1729 RuntimeAgent.enableTypeProfiler(); 1689 if (RuntimeAgent.enableControlFlowProfiler)1690 RuntimeAgent.enableControlFlowProfiler();1691 1692 1730 this._typeTokenAnnotator.reset(); 1693 if (this._basicBlockAnnotator) {1694 console.assert(!this._basicBlockAnnotator.isActive());1695 this._basicBlockAnnotator.reset();1696 }1697 1731 1698 1732 if (!this._typeTokenScrollHandler) … … 1706 1740 1707 1741 this._typeTokenAnnotator.clear(); 1708 if (this._basicBlockAnnotator)1709 this._basicBlockAnnotator.clear();1710 1742 1711 1743 if (this._typeTokenScrollHandler) … … 1716 1748 1717 1749 this._updateTokenTrackingControllerState(); 1750 } 1751 1752 set _basicBlockAnnotatorEnabled(shouldActivate) 1753 { 1754 if (!this._basicBlockAnnotator) 1755 return; 1756 1757 if (shouldActivate) { 1758 console.assert(this.visible, "Annotators should not be enabled if the TextEditor is not visible"); 1759 1760 RuntimeAgent.enableControlFlowProfiler(); 1761 1762 console.assert(!this._basicBlockAnnotator.isActive()); 1763 this._basicBlockAnnotator.reset(); 1764 1765 if (!this._controlFlowScrollHandler) 1766 this._enableScrollEventsForControlFlowAnnotator(); 1767 } else { 1768 this._basicBlockAnnotator.clear(); 1769 1770 if (this._controlFlowScrollHandler) 1771 this._disableScrollEventsForControlFlowAnnotator(); 1772 } 1773 1774 WebInspector.enableControlFlowProfilerSetting.value = shouldActivate; 1718 1775 } 1719 1776 … … 1729 1786 } 1730 1787 1731 _ makeTypeTokenAnnotator()1788 _createTypeTokenAnnotator() 1732 1789 { 1733 1790 // COMPATIBILITY (iOS 8): Runtime.getRuntimeTypesForVariablesAtOffsets did not exist yet. … … 1742 1799 } 1743 1800 1744 _ makeBasicBlockAnnotator()1801 _createBasicBlockAnnotator() 1745 1802 { 1746 1803 // COMPATIBILITY (iOS 8): Runtime.getBasicBlocks did not exist yet. … … 1759 1816 // Pause updating type tokens while scrolling to prevent frame loss. 1760 1817 console.assert(!this._typeTokenScrollHandler); 1761 this._typeTokenScrollHandler = this._ makeTypeTokenScrollEventHandler();1818 this._typeTokenScrollHandler = this._createTypeTokenScrollEventHandler(); 1762 1819 this.addScrollHandler(this._typeTokenScrollHandler); 1820 } 1821 1822 _enableScrollEventsForControlFlowAnnotator() 1823 { 1824 console.assert(!this._controlFlowScrollHandler); 1825 this._controlFlowScrollHandler = this._createControlFlowScrollEventHandler(); 1826 this.addScrollHandler(this._controlFlowScrollHandler); 1763 1827 } 1764 1828 … … 1770 1834 } 1771 1835 1772 _makeTypeTokenScrollEventHandler() 1773 { 1774 var timeoutIdentifier = null; 1775 function scrollHandler() 1776 { 1836 _disableScrollEventsForControlFlowAnnotator() 1837 { 1838 console.assert(this._controlFlowScrollHandler); 1839 this.removeScrollHandler(this._controlFlowScrollHandler); 1840 this._controlFlowScrollHandler = null; 1841 } 1842 1843 _createTypeTokenScrollEventHandler() 1844 { 1845 let timeoutIdentifier = null; 1846 let scrollHandler = () => { 1777 1847 if (timeoutIdentifier) 1778 1848 clearTimeout(timeoutIdentifier); … … 1780 1850 if (this._typeTokenAnnotator) 1781 1851 this._typeTokenAnnotator.pause(); 1782 if (this._basicBlockAnnotator)1783 this._basicBlockAnnotator.pause();1784 1852 } 1785 1853 1786 timeoutIdentifier = setTimeout( function(){1854 timeoutIdentifier = setTimeout(() => { 1787 1855 timeoutIdentifier = null; 1788 1856 if (this._typeTokenAnnotator) 1789 1857 this._typeTokenAnnotator.resume(); 1858 }, WebInspector.SourceCodeTextEditor.DurationToUpdateTypeTokensAfterScrolling); 1859 }; 1860 1861 return scrollHandler; 1862 } 1863 1864 _createControlFlowScrollEventHandler() 1865 { 1866 let timeoutIdentifier = null; 1867 let scrollHandler = () => { 1868 if (timeoutIdentifier) 1869 clearTimeout(timeoutIdentifier); 1870 else if (this._basicBlockAnnotator) 1871 this._basicBlockAnnotator.pause(); 1872 1873 timeoutIdentifier = setTimeout(() => { 1874 timeoutIdentifier = null; 1790 1875 if (this._basicBlockAnnotator) 1791 1876 this._basicBlockAnnotator.resume(); 1792 } .bind(this), WebInspector.SourceCodeTextEditor.DurationToUpdateTypeTokensAfterScrolling);1793 } 1794 1795 return scrollHandler .bind(this);1877 }, WebInspector.SourceCodeTextEditor.DurationToUpdateTypeTokensAfterScrolling); 1878 }; 1879 1880 return scrollHandler; 1796 1881 } 1797 1882 -
trunk/Source/WebInspectorUI/UserInterface/Views/TextContentView.js
r205401 r205674 52 52 this._showTypesButtonNavigationItem = new WebInspector.ActivateButtonNavigationItem("show-types", toolTipTypes, activatedToolTipTypes, "Images/NavigationItemTypes.svg", 13, 14); 53 53 this._showTypesButtonNavigationItem.enabled = false; 54 55 let toolTipCodeCoverage = WebInspector.UIString("Fade unexecuted code"); 56 let activatedToolTipCodeCoverage = WebInspector.UIString("Do not fade unexecuted code"); 57 this._codeCoverageButtonNavigationItem = new WebInspector.ActivateButtonNavigationItem("code-coverage", toolTipCodeCoverage, activatedToolTipCodeCoverage, "Images/NavigationItemCodeCoverage.svg", 13, 14); 58 this._codeCoverageButtonNavigationItem.enabled = false; 54 59 } 55 60 … … 63 68 get navigationItems() 64 69 { 65 return [this._prettyPrintButtonNavigationItem, this._showTypesButtonNavigationItem ];70 return [this._prettyPrintButtonNavigationItem, this._showTypesButtonNavigationItem, this._codeCoverageButtonNavigationItem]; 66 71 } 67 72 -
trunk/Source/WebInspectorUI/UserInterface/Views/TextEditor.js
r205425 r205674 138 138 } 139 139 140 get hasModified() 141 { 142 let historySize = this._codeMirror.historySize().undo; 143 144 // Formatting code creates a history item. 145 if (this._formatted) 146 historySize--; 147 148 return historySize > 0; 149 } 150 140 151 updateFormattedState(formatted) 141 152 { … … 156 167 157 168 canShowTypeAnnotations() 169 { 170 return false; 171 } 172 173 canShowCoverageHints() 158 174 { 159 175 return false; -
trunk/Source/WebInspectorUI/UserInterface/Views/TextResourceContentView.js
r201019 r205674 54 54 this._showTypesButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._toggleTypeAnnotations, this); 55 55 this._showTypesButtonNavigationItem.enabled = false; 56 57 56 WebInspector.showJavaScriptTypeInformationSetting.addEventListener(WebInspector.Setting.Event.Changed, this._showJavaScriptTypeInformationSettingChanged, this); 57 58 let toolTipCodeCoverage = WebInspector.UIString("Fade unexecuted code"); 59 let activatedToolTipCodeCoverage = WebInspector.UIString("Do not fade unexecuted code"); 60 this._codeCoverageButtonNavigationItem = new WebInspector.ActivateButtonNavigationItem("code-coverage", toolTipCodeCoverage, activatedToolTipCodeCoverage, "Images/NavigationItemCodeCoverage.svg", 13, 14); 61 this._codeCoverageButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._toggleUnexecutedCodeHighlights, this); 62 this._codeCoverageButtonNavigationItem.enabled = false; 63 WebInspector.enableControlFlowProfilerSetting.addEventListener(WebInspector.Setting.Event.Changed, this._enableControlFlowProfilerSettingChanged, this); 58 64 } 59 65 … … 62 68 get navigationItems() 63 69 { 64 return [this._prettyPrintButtonNavigationItem, this._showTypesButtonNavigationItem ];70 return [this._prettyPrintButtonNavigationItem, this._showTypesButtonNavigationItem, this._codeCoverageButtonNavigationItem]; 65 71 } 66 72 … … 197 203 { 198 204 this._prettyPrintButtonNavigationItem.enabled = this._textEditor.canBeFormatted(); 205 199 206 this._showTypesButtonNavigationItem.enabled = this._textEditor.canShowTypeAnnotations(); 200 207 this._showTypesButtonNavigationItem.activated = WebInspector.showJavaScriptTypeInformationSetting.value; 208 209 this._codeCoverageButtonNavigationItem.enabled = this._textEditor.canShowCoverageHints(); 210 this._codeCoverageButtonNavigationItem.activated = WebInspector.enableControlFlowProfilerSetting.value; 201 211 } 202 212 … … 209 219 _toggleTypeAnnotations(event) 210 220 { 211 this._textEditor.toggleTypeAnnotations(); 221 this._showTypesButtonNavigationItem.enabled = false; 222 this._textEditor.toggleTypeAnnotations().then(() => { 223 this._showTypesButtonNavigationItem.enabled = true; 224 }) 225 } 226 227 _toggleUnexecutedCodeHighlights(event) 228 { 229 this._codeCoverageButtonNavigationItem.enabled = false; 230 this._textEditor.toggleUnexecutedCodeHighlights().then(() => { 231 this._codeCoverageButtonNavigationItem.enabled = true; 232 }); 212 233 } 213 234 … … 215 236 { 216 237 this._showTypesButtonNavigationItem.activated = WebInspector.showJavaScriptTypeInformationSetting.value; 238 } 239 240 _enableControlFlowProfilerSettingChanged(event) 241 { 242 this._codeCoverageButtonNavigationItem.activated = WebInspector.enableControlFlowProfilerSetting.value; 217 243 } 218 244
Note: See TracChangeset
for help on using the changeset viewer.