Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
index 7fe395698eae53c38f4d8399c86e9ca86dde808f..ee4b00e5fa4a005dd818d8382a51c1f40d49b3f7 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
@@ -44,6 +44,8 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this.element, [UI.DropTarget.Types.Files, UI.DropTarget.Types.URIList], |
Common.UIString('Drop timeline file or URL here'), this._handleDrop.bind(this)); |
+ /** @type {!Array<!UI.ToolbarItem>} */ |
+ this._recordingOptionUIControls = []; |
this._state = Timeline.TimelinePanel.State.Idle; |
this._detailsLinkifier = new Components.Linkifier(); |
this._windowStartTime = 0; |
@@ -80,6 +82,11 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this._captureLayersAndPicturesSetting = Common.settings.createSetting('timelineCaptureLayersAndPictures', false); |
this._captureFilmStripSetting = Common.settings.createSetting('timelineCaptureFilmStrip', false); |
+ this._showScreenshotsSetting = Common.settings.createLocalSetting('timelineShowScreenshots', false); |
+ this._showScreenshotsSetting.addChangeListener(this._onModeChanged, this); |
+ this._showMemorySetting = Common.settings.createLocalSetting('timelineShowMemory', false); |
+ this._showMemorySetting.addChangeListener(this._onModeChanged, this); |
+ |
this._markUnusedCSS = Common.settings.createSetting('timelineMarkUnusedCSS', false); |
this._panelToolbar = new UI.Toolbar('', this.element); |
@@ -273,9 +280,7 @@ Timeline.TimelinePanel = class extends UI.Panel { |
* @return {!UI.ToolbarItem} |
*/ |
_createSettingCheckbox(name, setting, tooltip) { |
- if (!this._recordingOptionUIControls) |
- this._recordingOptionUIControls = []; |
- var checkboxItem = new UI.ToolbarCheckbox(name, tooltip, setting); |
+ const checkboxItem = new UI.ToolbarCheckbox(name, tooltip, setting); |
this._recordingOptionUIControls.push(checkboxItem); |
return checkboxItem; |
} |
@@ -283,15 +288,18 @@ Timeline.TimelinePanel = class extends UI.Panel { |
_recreateToolbarItems() { |
this._panelToolbar.removeToolbarItems(); |
- var perspectiveSetting = |
+ const perspectiveSetting = |
Common.settings.createSetting('timelinePerspective', Timeline.TimelinePanel.Perspectives.Load); |
// Record |
- if (Runtime.experiments.isEnabled('timelineRecordingPerspectives') && |
+ if (Runtime.experiments.isEnabled('timelineLandingPage')) { |
+ this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._toggleRecordAction)); |
+ this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButtonForId('main.reload')); |
+ } else if (Runtime.experiments.isEnabled('timelineRecordingPerspectives') && |
perspectiveSetting.get() === Timeline.TimelinePanel.Perspectives.Load) { |
- this._reloadButton = new UI.ToolbarButton(Common.UIString('Record & Reload'), 'largeicon-refresh'); |
- this._reloadButton.addEventListener(UI.ToolbarButton.Events.Click, () => SDK.targetManager.reloadPage()); |
- this._panelToolbar.appendToolbarItem(this._reloadButton); |
+ const reloadButton = new UI.ToolbarButton(Common.UIString('Record & Reload'), 'largeicon-refresh'); |
+ reloadButton.addEventListener(UI.ToolbarButton.Events.Click, () => SDK.targetManager.reloadPage()); |
+ this._panelToolbar.appendToolbarItem(reloadButton); |
} else { |
this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._toggleRecordAction)); |
} |
@@ -304,7 +312,8 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this._panelToolbar.appendSeparator(); |
// Combo |
- if (Runtime.experiments.isEnabled('timelineRecordingPerspectives')) { |
+ if (!Runtime.experiments.isEnabled('timelineLandingPage') && |
+ Runtime.experiments.isEnabled('timelineRecordingPerspectives')) { |
/** |
* @this {!Timeline.TimelinePanel} |
*/ |
@@ -362,28 +371,40 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this._onModeChanged(); |
} |
- var screenshotCheckbox = this._createSettingCheckbox( |
- Common.UIString('Screenshots'), this._captureFilmStripSetting, |
- Common.UIString('Capture screenshots while recording. (Has small performance overhead)')); |
- |
- if (!Runtime.experiments.isEnabled('timelineRecordingPerspectives') || |
- perspectiveSetting.get() === Timeline.TimelinePanel.Perspectives.Custom) { |
- this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
- Common.UIString('Network'), this._captureNetworkSetting, |
- Common.UIString('Show network requests information'))); |
- this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
- Common.UIString('JS Profile'), this._captureJSProfileSetting, |
- Common.UIString('Capture JavaScript stacks with sampling profiler. (Has small performance overhead)'))); |
- this._panelToolbar.appendToolbarItem(screenshotCheckbox); |
- this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
- Common.UIString('Memory'), this._captureMemorySetting, |
- Common.UIString('Capture memory information on every timeline event.'))); |
- this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
- Common.UIString('Paint'), this._captureLayersAndPicturesSetting, |
- Common.UIString( |
- 'Capture graphics layer positions and rasterization draw calls. (Has large performance overhead)'))); |
+ if (Runtime.experiments.isEnabled('timelineLandingPage')) { |
+ if (!this._model.isEmpty()) { |
+ this._panelToolbar.appendToolbarItem(this._createSettingCheckbox(Common.UIString('Memory'), |
+ this._showMemorySetting, Common.UIString('Show memory timeline.'))); |
+ if (this._filmStripModel.frames().length) { |
+ this._showScreenshotsSetting.set(true); |
+ this._panelToolbar.appendToolbarItem(this._createSettingCheckbox(Common.UIString('Screenshots'), |
+ this._showScreenshotsSetting, Common.UIString('Show captured screenshots.'))); |
+ } |
+ } |
} else { |
- this._panelToolbar.appendToolbarItem(screenshotCheckbox); |
+ const screenshotCheckbox = this._createSettingCheckbox( |
+ Common.UIString('Screenshots'), this._captureFilmStripSetting, |
+ Common.UIString('Capture screenshots while recording. (Has small performance overhead)')); |
+ |
+ if (!Runtime.experiments.isEnabled('timelineRecordingPerspectives') || |
+ perspectiveSetting.get() === Timeline.TimelinePanel.Perspectives.Custom) { |
+ this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
+ Common.UIString('Network'), this._captureNetworkSetting, |
+ Common.UIString('Show network requests information'))); |
+ this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
+ Common.UIString('JS Profile'), this._captureJSProfileSetting, |
+ Common.UIString('Capture JavaScript stacks with sampling profiler. (Has small performance overhead)'))); |
+ this._panelToolbar.appendToolbarItem(screenshotCheckbox); |
+ this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
+ Common.UIString('Memory'), this._captureMemorySetting, |
+ Common.UIString('Capture memory information on every timeline event.'))); |
+ this._panelToolbar.appendToolbarItem(this._createSettingCheckbox( |
+ Common.UIString('Paint'), this._captureLayersAndPicturesSetting, |
+ Common.UIString( |
+ 'Capture graphics layer positions and rasterization draw calls. (Has large performance overhead)'))); |
+ } else { |
+ this._panelToolbar.appendToolbarItem(screenshotCheckbox); |
+ } |
} |
if (Runtime.experiments.isEnabled('timelineRuleUsageRecording')) { |
@@ -535,16 +556,18 @@ Timeline.TimelinePanel = class extends UI.Panel { |
} |
_refreshViews() { |
- for (var i = 0; i < this._currentViews.length; ++i) { |
- var view = this._currentViews[i]; |
- view.refreshRecords(); |
- } |
+ this._currentViews.forEach(view => view.refreshRecords()); |
this._updateSelectionDetails(); |
} |
_onModeChanged() { |
if (this._bulkUpdate) |
return; |
+ const showMemory = Runtime.experiments.isEnabled('timelineLandingPage') |
+ ? this._showMemorySetting.get() : this._captureMemorySetting.get(); |
+ const showScreenshots = Runtime.experiments.isEnabled('timelineLandingPage') |
+ ? this._showScreenshotsSetting.get() && this._filmStripModel.frames().length |
+ : this._captureFilmStripSetting.get(); |
// Set up overview controls. |
this._overviewControls = []; |
this._overviewControls.push(new Timeline.TimelineEventOverviewResponsiveness(this._model, this._frameModel)); |
@@ -553,9 +576,9 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this._overviewControls.push(new Timeline.TimelineEventOverviewFrames(this._model, this._frameModel)); |
this._overviewControls.push(new Timeline.TimelineEventOverviewCPUActivity(this._model)); |
this._overviewControls.push(new Timeline.TimelineEventOverviewNetwork(this._model)); |
- if (this._captureFilmStripSetting.get()) |
+ if (showScreenshots) |
this._overviewControls.push(new Timeline.TimelineFilmStripOverview(this._model, this._filmStripModel)); |
- if (this._captureMemorySetting.get()) |
+ if (showMemory) |
this._overviewControls.push(new Timeline.TimelineEventOverviewMemory(this._model)); |
this._overviewPane.setOverviewControls(this._overviewControls); |
@@ -566,10 +589,12 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this._flameChart.enableNetworkPane(this._captureNetworkSetting.get()); |
this._addModeView(this._flameChart); |
- if (this._captureMemorySetting.get()) { |
- this._addModeView( |
- new Timeline.MemoryCountersGraph(this, this._model, [Timeline.TimelineUIUtils.visibleEventsFilter()])); |
+ if (showMemory) { |
+ this._addModeView(new Timeline.MemoryCountersGraph( |
+ this, this._model, [Timeline.TimelineUIUtils.visibleEventsFilter()])); |
} |
+ if (Runtime.experiments.isEnabled('timelineLandingPage')) |
+ this._flameChart.enableNetworkPane(true); |
this.doResize(); |
this.select(null); |
@@ -591,13 +616,7 @@ Timeline.TimelinePanel = class extends UI.Panel { |
* @param {boolean} enabled |
*/ |
_setUIControlsEnabled(enabled) { |
- /** |
- * @param {!UI.ToolbarButton} toolbarButton |
- */ |
- function handler(toolbarButton) { |
- toolbarButton.setEnabled(enabled); |
- } |
- this._recordingOptionUIControls.forEach(handler); |
+ this._recordingOptionUIControls.forEach(control => control.setEnabled(enabled)); |
} |
/** |
@@ -678,6 +697,7 @@ Timeline.TimelinePanel = class extends UI.Panel { |
this._sessionGeneration = null; |
this._recordingStartTime = 0; |
this._reset(); |
+ this._recreateToolbarItems(); |
} |
_reset() { |
@@ -870,6 +890,7 @@ Timeline.TimelinePanel = class extends UI.Panel { |
for (let entry of this._extensionTracingModels) |
entry.model.adjustTime(this._model.minimumRecordTime() + (entry.timeOffset / 1000) - this._recordingStartTime); |
+ this._recreateToolbarItems(); |
this._flameChart.resizeToPreferredHeights(); |
this._overviewPane.reset(); |
this._overviewPane.setBounds(this._model.minimumRecordTime(), this._model.maximumRecordTime()); |