OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * Copyright (C) 2012 Intel Inc. All rights reserved. | 3 * Copyright (C) 2012 Intel Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 28 matching lines...) Expand all Loading... | |
39 super('timeline'); | 39 super('timeline'); |
40 this.registerRequiredCSS('timeline/timelinePanel.css'); | 40 this.registerRequiredCSS('timeline/timelinePanel.css'); |
41 this.element.addEventListener('contextmenu', this._contextMenu.bind(this), f alse); | 41 this.element.addEventListener('contextmenu', this._contextMenu.bind(this), f alse); |
42 this._dropTarget = new UI.DropTarget( | 42 this._dropTarget = new UI.DropTarget( |
43 this.element, [UI.DropTarget.Types.Files, UI.DropTarget.Types.URIList], | 43 this.element, [UI.DropTarget.Types.Files, UI.DropTarget.Types.URIList], |
44 Common.UIString('Drop timeline file or URL here'), this._handleDrop.bind (this)); | 44 Common.UIString('Drop timeline file or URL here'), this._handleDrop.bind (this)); |
45 | 45 |
46 /** @type {!Array<!UI.ToolbarItem>} */ | 46 /** @type {!Array<!UI.ToolbarItem>} */ |
47 this._recordingOptionUIControls = []; | 47 this._recordingOptionUIControls = []; |
48 this._state = Timeline.TimelinePanel.State.Idle; | 48 this._state = Timeline.TimelinePanel.State.Idle; |
49 this._recordingPageReload = false; | |
49 this._windowStartTime = 0; | 50 this._windowStartTime = 0; |
50 this._windowEndTime = Infinity; | 51 this._windowEndTime = Infinity; |
51 this._millisecondsToRecordAfterLoadEvent = 3000; | 52 this._millisecondsToRecordAfterLoadEvent = 3000; |
52 this._toggleRecordAction = | 53 this._toggleRecordAction = |
53 /** @type {!UI.Action }*/ (UI.actionRegistry.action('timeline.toggle-rec ording')); | 54 /** @type {!UI.Action }*/ (UI.actionRegistry.action('timeline.toggle-rec ording')); |
54 | 55 |
55 /** @type {!Array<!TimelineModel.TimelineModelFilter>} */ | 56 /** @type {!Array<!TimelineModel.TimelineModelFilter>} */ |
56 this._filters = []; | 57 this._filters = []; |
57 if (!Runtime.experiments.isEnabled('timelineShowAllEvents')) { | 58 if (!Runtime.experiments.isEnabled('timelineShowAllEvents')) { |
58 this._filters.push(Timeline.TimelineUIUtils.visibleEventsFilter()); | 59 this._filters.push(Timeline.TimelineUIUtils.visibleEventsFilter()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
98 PerfUI.TimelineOverviewPane.Events.WindowChanged, this._onWindowChanged. bind(this)); | 99 PerfUI.TimelineOverviewPane.Events.WindowChanged, this._onWindowChanged. bind(this)); |
99 this._overviewPane.show(topPaneElement); | 100 this._overviewPane.show(topPaneElement); |
100 /** @type {!Array<!Timeline.TimelineEventOverview>} */ | 101 /** @type {!Array<!Timeline.TimelineEventOverview>} */ |
101 this._overviewControls = []; | 102 this._overviewControls = []; |
102 | 103 |
103 this._statusPaneContainer = this._timelinePane.element.createChild('div', 's tatus-pane-container fill'); | 104 this._statusPaneContainer = this._timelinePane.element.createChild('div', 's tatus-pane-container fill'); |
104 | 105 |
105 this._createFileSelector(); | 106 this._createFileSelector(); |
106 | 107 |
107 SDK.targetManager.addModelListener( | 108 SDK.targetManager.addModelListener( |
108 SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.PageReloadRequested, this._pageReloadRequested, this); | |
109 SDK.targetManager.addModelListener( | |
110 SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.Load, this._loadEven tFired, this); | 109 SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.Load, this._loadEven tFired, this); |
111 | 110 |
112 if (Runtime.experiments.isEnabled('timelineMultipleMainViews')) { | 111 if (Runtime.experiments.isEnabled('timelineMultipleMainViews')) { |
113 var viewMode = Timeline.TimelinePanel.ViewMode; | 112 var viewMode = Timeline.TimelinePanel.ViewMode; |
114 this._tabbedPane = new UI.TabbedPane(); | 113 this._tabbedPane = new UI.TabbedPane(); |
115 this._tabbedPane.appendTab(viewMode.FlameChart, Common.UIString('Flame Cha rt'), new UI.VBox()); | 114 this._tabbedPane.appendTab(viewMode.FlameChart, Common.UIString('Flame Cha rt'), new UI.VBox()); |
116 this._tabbedPane.appendTab(viewMode.BottomUp, Common.UIString('Bottom-Up') , new UI.VBox()); | 115 this._tabbedPane.appendTab(viewMode.BottomUp, Common.UIString('Bottom-Up') , new UI.VBox()); |
117 this._tabbedPane.appendTab(viewMode.CallTree, Common.UIString('Call Tree') , new UI.VBox()); | 116 this._tabbedPane.appendTab(viewMode.CallTree, Common.UIString('Call Tree') , new UI.VBox()); |
118 this._tabbedPane.appendTab(viewMode.EventLog, Common.UIString('Event Log') , new UI.VBox()); | 117 this._tabbedPane.appendTab(viewMode.EventLog, Common.UIString('Event Log') , new UI.VBox()); |
119 this._tabbedPane.addEventListener(UI.TabbedPane.Events.TabSelected, this._ onMainViewChanged.bind(this)); | 118 this._tabbedPane.addEventListener(UI.TabbedPane.Events.TabSelected, this._ onMainViewChanged.bind(this)); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
210 */ | 209 */ |
211 _createSettingCheckbox(setting, tooltip) { | 210 _createSettingCheckbox(setting, tooltip) { |
212 const checkboxItem = new UI.ToolbarSettingCheckbox(setting, tooltip); | 211 const checkboxItem = new UI.ToolbarSettingCheckbox(setting, tooltip); |
213 this._recordingOptionUIControls.push(checkboxItem); | 212 this._recordingOptionUIControls.push(checkboxItem); |
214 return checkboxItem; | 213 return checkboxItem; |
215 } | 214 } |
216 | 215 |
217 _populateToolbar() { | 216 _populateToolbar() { |
218 // Record | 217 // Record |
219 this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._tog gleRecordAction)); | 218 this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._tog gleRecordAction)); |
220 this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButtonForId('mai n.reload')); | 219 this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButtonForId('tim eline.record-reload')); |
221 this._clearButton = new UI.ToolbarButton(Common.UIString('Clear'), 'largeico n-clear'); | 220 this._clearButton = new UI.ToolbarButton(Common.UIString('Clear'), 'largeico n-clear'); |
222 this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, () => this ._clear()); | 221 this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, () => this ._clear()); |
223 this._panelToolbar.appendToolbarItem(this._clearButton); | 222 this._panelToolbar.appendToolbarItem(this._clearButton); |
224 this._panelToolbar.appendSeparator(); | 223 this._panelToolbar.appendSeparator(); |
225 | 224 |
226 // View | 225 // View |
227 this._panelToolbar.appendSeparator(); | 226 this._panelToolbar.appendSeparator(); |
228 this._showScreenshotsToolbarCheckbox = | 227 this._showScreenshotsToolbarCheckbox = |
229 this._createSettingCheckbox(this._showScreenshotsSetting, Common.UIStrin g('Capture screenshots')); | 228 this._createSettingCheckbox(this._showScreenshotsSetting, Common.UIStrin g('Capture screenshots')); |
230 this._panelToolbar.appendToolbarItem(this._showScreenshotsToolbarCheckbox); | 229 this._panelToolbar.appendToolbarItem(this._showScreenshotsToolbarCheckbox); |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
500 } | 499 } |
501 | 500 |
502 /** | 501 /** |
503 * @param {boolean} enabled | 502 * @param {boolean} enabled |
504 */ | 503 */ |
505 _setUIControlsEnabled(enabled) { | 504 _setUIControlsEnabled(enabled) { |
506 this._recordingOptionUIControls.forEach(control => control.setEnabled(enable d)); | 505 this._recordingOptionUIControls.forEach(control => control.setEnabled(enable d)); |
507 } | 506 } |
508 | 507 |
509 /** | 508 /** |
510 * @param {!SDK.TracingManager} tracingManager | |
511 * @param {boolean} userInitiated | |
512 * @return {!Promise} | 509 * @return {!Promise} |
513 */ | 510 */ |
514 _startRecording(tracingManager, userInitiated) { | 511 _startRecording() { |
512 var tracingManagers = SDK.targetManager.models(SDK.TracingManager); | |
513 if (!tracingManagers.length) | |
514 return Promise.resolve(); | |
515 | |
515 console.assert(!this._statusPane, 'Status pane is already opened.'); | 516 console.assert(!this._statusPane, 'Status pane is already opened.'); |
516 this._setState(Timeline.TimelinePanel.State.StartPending); | 517 this._setState(Timeline.TimelinePanel.State.StartPending); |
517 this._showRecordingStarted(); | 518 this._showRecordingStarted(); |
518 | 519 |
519 this._autoRecordGeneration = userInitiated ? null : {tracingManager: tracing Manager}; | |
520 var enabledTraceProviders = Extensions.extensionServer.traceProviders().filt er( | 520 var enabledTraceProviders = Extensions.extensionServer.traceProviders().filt er( |
521 provider => Timeline.TimelinePanel._settingForTraceProvider(provider).ge t()); | 521 provider => Timeline.TimelinePanel._settingForTraceProvider(provider).ge t()); |
522 | 522 |
523 const recordingOptions = { | 523 const recordingOptions = { |
524 enableJSSampling: !this._disableCaptureJSProfileSetting.get(), | 524 enableJSSampling: !this._disableCaptureJSProfileSetting.get(), |
525 capturePictures: this._captureLayersAndPicturesSetting.get(), | 525 capturePictures: this._captureLayersAndPicturesSetting.get(), |
526 captureFilmStrip: this._showScreenshotsSetting.get() | 526 captureFilmStrip: this._showScreenshotsSetting.get() |
527 }; | 527 }; |
528 | 528 |
529 this._pendingPerformanceModel = new Timeline.PerformanceModel(); | 529 this._pendingPerformanceModel = new Timeline.PerformanceModel(); |
530 this._controller = new Timeline.TimelineController(tracingManager, this._pen dingPerformanceModel, this); | 530 this._controller = new Timeline.TimelineController(tracingManagers[0], this. _pendingPerformanceModel, this); |
531 Host.userMetrics.actionTaken( | 531 Host.userMetrics.actionTaken(Host.UserMetrics.Action.TimelineStarted); |
532 userInitiated ? Host.UserMetrics.Action.TimelineStarted : Host.UserMetri cs.Action.TimelinePageReloadStarted); | |
533 this._setUIControlsEnabled(false); | 532 this._setUIControlsEnabled(false); |
534 this._hideLandingPage(); | 533 this._hideLandingPage(); |
535 return this._controller.startRecording(recordingOptions, enabledTraceProvide rs) | 534 return this._controller.startRecording(recordingOptions, enabledTraceProvide rs) |
536 .then(() => this._recordingStarted()); | 535 .then(() => this._recordingStarted()); |
537 } | 536 } |
538 | 537 |
539 _stopRecording() { | 538 _stopRecording() { |
540 if (this._statusPane) { | 539 if (this._statusPane) { |
541 this._statusPane.finish(); | 540 this._statusPane.finish(); |
542 this._statusPane.updateStatus(Common.UIString('Stopping timeline\u2026')); | 541 this._statusPane.updateStatus(Common.UIString('Stopping timeline\u2026')); |
543 this._statusPane.updateProgressBar(Common.UIString('Received'), 0); | 542 this._statusPane.updateProgressBar(Common.UIString('Received'), 0); |
544 } | 543 } |
545 this._setState(Timeline.TimelinePanel.State.StopPending); | 544 this._setState(Timeline.TimelinePanel.State.StopPending); |
546 this._autoRecordGeneration = null; | |
547 this._controller.stopRecording(); | 545 this._controller.stopRecording(); |
548 this._controller = null; | 546 this._controller = null; |
549 this._setUIControlsEnabled(true); | 547 this._setUIControlsEnabled(true); |
550 } | 548 } |
551 | 549 |
552 _onSuspendStateChanged() { | 550 _onSuspendStateChanged() { |
553 this._updateTimelineControls(); | 551 this._updateTimelineControls(); |
554 } | 552 } |
555 | 553 |
556 _updateTimelineControls() { | 554 _updateTimelineControls() { |
557 var state = Timeline.TimelinePanel.State; | 555 var state = Timeline.TimelinePanel.State; |
558 this._toggleRecordAction.setToggled(this._state === state.Recording); | 556 this._toggleRecordAction.setToggled(this._state === state.Recording); |
559 this._toggleRecordAction.setEnabled(this._state === state.Recording || this. _state === state.Idle); | 557 this._toggleRecordAction.setEnabled(this._state === state.Recording || this. _state === state.Idle); |
560 this._clearButton.setEnabled(this._state === state.Idle); | 558 this._clearButton.setEnabled(this._state === state.Idle); |
561 this._panelToolbar.setEnabled(this._state !== state.Loading); | 559 this._panelToolbar.setEnabled(this._state !== state.Loading); |
562 this._dropTarget.setEnabled(this._state === state.Idle); | 560 this._dropTarget.setEnabled(this._state === state.Idle); |
563 } | 561 } |
564 | 562 |
565 _toggleRecording() { | 563 _toggleRecording() { |
566 if (this._state === Timeline.TimelinePanel.State.Idle) { | 564 if (this._state === Timeline.TimelinePanel.State.Idle) { |
567 var tracingManagers = SDK.targetManager.models(SDK.TracingManager); | 565 this._recordingPageReload = false; |
568 if (tracingManagers.length) | 566 this._startRecording(); |
569 this._startRecording(tracingManagers[0], true); | |
570 } else if (this._state === Timeline.TimelinePanel.State.Recording) { | 567 } else if (this._state === Timeline.TimelinePanel.State.Recording) { |
571 this._stopRecording(); | 568 this._stopRecording(); |
572 } | 569 } |
573 } | 570 } |
574 | 571 |
572 _recordReload() { | |
573 if (this._state !== Timeline.TimelinePanel.State.Idle) | |
574 return; | |
575 this._recordingPageReload = true; | |
576 this._startRecording(); | |
577 } | |
578 | |
575 _clear() { | 579 _clear() { |
576 this._showLandingPage(); | 580 this._showLandingPage(); |
577 this._reset(); | 581 this._reset(); |
578 } | 582 } |
579 | 583 |
580 _reset() { | 584 _reset() { |
581 PerfUI.LineLevelProfile.instance().reset(); | 585 PerfUI.LineLevelProfile.instance().reset(); |
582 this._setModel(null); | 586 this._setModel(null); |
583 delete this._selection; | 587 delete this._selection; |
584 } | 588 } |
(...skipping 25 matching lines...) Expand all Loading... | |
610 this.requestWindowTimes(0, Infinity); | 614 this.requestWindowTimes(0, Infinity); |
611 } | 615 } |
612 this._overviewPane.scheduleUpdate(); | 616 this._overviewPane.scheduleUpdate(); |
613 | 617 |
614 this.select(null); | 618 this.select(null); |
615 if (this._flameChart) | 619 if (this._flameChart) |
616 this._flameChart.resizeToPreferredHeights(); | 620 this._flameChart.resizeToPreferredHeights(); |
617 } | 621 } |
618 | 622 |
619 _recordingStarted() { | 623 _recordingStarted() { |
624 if (this._recordingPageReload) { | |
625 var target = this._controller.mainTarget(); | |
626 var resourceModel = target.model(SDK.ResourceTreeModel); | |
627 if (resourceModel) | |
628 resourceModel.reloadPage(); | |
629 } | |
620 this._reset(); | 630 this._reset(); |
621 this._setState(Timeline.TimelinePanel.State.Recording); | 631 this._setState(Timeline.TimelinePanel.State.Recording); |
622 this._showRecordingStarted(); | 632 this._showRecordingStarted(); |
623 this._statusPane.updateStatus(Common.UIString('Profiling\u2026')); | 633 this._statusPane.updateStatus(Common.UIString('Profiling\u2026')); |
624 this._statusPane.updateProgressBar(Common.UIString('Buffer usage'), 0); | 634 this._statusPane.updateProgressBar(Common.UIString('Buffer usage'), 0); |
625 this._statusPane.startTimer(); | 635 this._statusPane.startTimer(); |
626 this._hideLandingPage(); | 636 this._hideLandingPage(); |
627 } | 637 } |
628 | 638 |
629 /** | 639 /** |
(...skipping 30 matching lines...) Expand all Loading... | |
660 var recordKey = | 670 var recordKey = |
661 encloseWithTag('b', UI.shortcutRegistry.shortcutDescriptorsForAction('ti meline.toggle-recording')[0].name); | 671 encloseWithTag('b', UI.shortcutRegistry.shortcutDescriptorsForAction('ti meline.toggle-recording')[0].name); |
662 var reloadKey = encloseWithTag('b', UI.shortcutRegistry.shortcutDescriptorsF orAction('main.reload')[0].name); | 672 var reloadKey = encloseWithTag('b', UI.shortcutRegistry.shortcutDescriptorsF orAction('main.reload')[0].name); |
663 var navigateNode = encloseWithTag('b', Common.UIString('WASD')); | 673 var navigateNode = encloseWithTag('b', Common.UIString('WASD')); |
664 | 674 |
665 this._landingPage = new UI.VBox(); | 675 this._landingPage = new UI.VBox(); |
666 this._landingPage.contentElement.classList.add('timeline-landing-page', 'fil l'); | 676 this._landingPage.contentElement.classList.add('timeline-landing-page', 'fil l'); |
667 var centered = this._landingPage.contentElement.createChild('div'); | 677 var centered = this._landingPage.contentElement.createChild('div'); |
668 | 678 |
669 var recordButton = UI.createInlineButton(UI.Toolbar.createActionButton(this. _toggleRecordAction)); | 679 var recordButton = UI.createInlineButton(UI.Toolbar.createActionButton(this. _toggleRecordAction)); |
670 var reloadButton = UI.createInlineButton(UI.Toolbar.createActionButtonForId( 'main.reload')); | 680 var reloadButton = UI.createInlineButton(UI.Toolbar.createActionButtonForId( 'timeline.record-reload')); |
671 | 681 |
672 centered.createChild('p').appendChild(UI.formatLocalized( | 682 centered.createChild('p').appendChild(UI.formatLocalized( |
673 'Click the record button %s or hit %s to capture a new recording.\n' + | 683 'Click the record button %s or hit %s to capture a new recording.\n' + |
674 'Click the reload button %s or hit %s to record and evaluate the page lo ad.', | 684 'Click the reload button %s or hit %s to record and evaluate the page lo ad.', |
675 [recordButton, recordKey, reloadButton, reloadKey])); | 685 [recordButton, recordKey, reloadButton, reloadKey])); |
676 | 686 |
677 centered.createChild('p').appendChild(UI.formatLocalized( | 687 centered.createChild('p').appendChild(UI.formatLocalized( |
678 'After recording, select an area of interest in the overview by dragging .\n' + | 688 'After recording, select an area of interest in the overview by dragging .\n' + |
679 'Then, zoom and pan the timeline with the mousewheel or %s keys.\n%s', | 689 'Then, zoom and pan the timeline with the mousewheel or %s keys.\n%s', |
680 [navigateNode, learnMoreNode])); | 690 [navigateNode, learnMoreNode])); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
786 if (event.name === recordTypes.TimeStamp || event.name === recordTypes.Con soleTime) | 796 if (event.name === recordTypes.TimeStamp || event.name === recordTypes.Con soleTime) |
787 continue; | 797 continue; |
788 markers.set(event.startTime, Timeline.TimelineUIUtils.createEventDivider(e vent, zeroTime)); | 798 markers.set(event.startTime, Timeline.TimelineUIUtils.createEventDivider(e vent, zeroTime)); |
789 } | 799 } |
790 this._overviewPane.setMarkers(markers); | 800 this._overviewPane.setMarkers(markers); |
791 } | 801 } |
792 | 802 |
793 /** | 803 /** |
794 * @param {!Common.Event} event | 804 * @param {!Common.Event} event |
795 */ | 805 */ |
796 _pageReloadRequested(event) { | |
797 if (this._state !== Timeline.TimelinePanel.State.Idle || !this.isShowing()) | |
798 return; | |
799 var resourceTreeModel = /** @type {!SDK.ResourceTreeModel} */ (event.data); | |
800 var tracingManager = resourceTreeModel.target().model(SDK.TracingManager); | |
801 if (resourceTreeModel.target() !== SDK.targetManager.mainTarget() || !tracin gManager) | |
802 return; | |
803 | |
804 resourceTreeModel.suspendReload(); | |
805 this._startRecording(tracingManager, false).then(() => resourceTreeModel.res umeReload()); | |
806 } | |
807 | |
808 /** | |
809 * @param {!Common.Event} event | |
810 */ | |
811 _loadEventFired(event) { | 806 _loadEventFired(event) { |
812 if (this._state !== Timeline.TimelinePanel.State.Recording || !this._autoRec ordGeneration || | 807 if (this._state !== Timeline.TimelinePanel.State.Recording || !this._recordi ngPageReload || |
813 this._autoRecordGeneration.tracingManager.target() !== event.data.resour ceTreeModel.target()) | 808 this._controller.mainTarget() !== event.data.resourceTreeModel.target()) |
814 return; | 809 return; |
815 setTimeout(stopRecordingOnReload.bind(this, this._autoRecordGeneration), thi s._millisecondsToRecordAfterLoadEvent); | 810 setTimeout(stopRecordingOnReload.bind(this, this._controller), this._millise condsToRecordAfterLoadEvent); |
alph
2017/05/15 23:56:45
await sleep(...)
| |
816 | 811 |
817 /** | 812 /** |
813 * @param {!Timeline.TimelineController} controller | |
818 * @this {Timeline.TimelinePanel} | 814 * @this {Timeline.TimelinePanel} |
819 * @param {!Object} recordGeneration | |
820 */ | 815 */ |
821 function stopRecordingOnReload(recordGeneration) { | 816 function stopRecordingOnReload(controller) { |
822 // Check if we're still in the same recording session. | 817 // Check if we're still in the same recording session. |
823 if (this._state !== Timeline.TimelinePanel.State.Recording || this._autoRe cordGeneration !== recordGeneration) | 818 if (controller !== this._controller) |
824 return; | 819 return; |
820 this._recordingPageReload = false; | |
825 this._stopRecording(); | 821 this._stopRecording(); |
826 } | 822 } |
827 } | 823 } |
828 | 824 |
829 /** | 825 /** |
830 * @param {!Timeline.TimelineSelection} selection | 826 * @param {!Timeline.TimelineSelection} selection |
831 * @return {?TimelineModel.TimelineFrame} | 827 * @return {?TimelineModel.TimelineFrame} |
832 */ | 828 */ |
833 _frameForSelection(selection) { | 829 _frameForSelection(selection) { |
834 switch (selection.type()) { | 830 switch (selection.type()) { |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1287 * @param {string} actionId | 1283 * @param {string} actionId |
1288 * @return {boolean} | 1284 * @return {boolean} |
1289 */ | 1285 */ |
1290 handleAction(context, actionId) { | 1286 handleAction(context, actionId) { |
1291 var panel = UI.context.flavor(Timeline.TimelinePanel); | 1287 var panel = UI.context.flavor(Timeline.TimelinePanel); |
1292 console.assert(panel && panel instanceof Timeline.TimelinePanel); | 1288 console.assert(panel && panel instanceof Timeline.TimelinePanel); |
1293 switch (actionId) { | 1289 switch (actionId) { |
1294 case 'timeline.toggle-recording': | 1290 case 'timeline.toggle-recording': |
1295 panel._toggleRecording(); | 1291 panel._toggleRecording(); |
1296 return true; | 1292 return true; |
1293 case 'timeline.record-reload': | |
1294 panel._recordReload(); | |
1295 return true; | |
1297 case 'timeline.save-to-file': | 1296 case 'timeline.save-to-file': |
1298 panel._saveToFile(); | 1297 panel._saveToFile(); |
1299 return true; | 1298 return true; |
1300 case 'timeline.load-from-file': | 1299 case 'timeline.load-from-file': |
1301 panel._selectFileToLoad(); | 1300 panel._selectFileToLoad(); |
1302 return true; | 1301 return true; |
1303 case 'timeline.jump-to-previous-frame': | 1302 case 'timeline.jump-to-previous-frame': |
1304 panel._jumpToFrame(-1); | 1303 panel._jumpToFrame(-1); |
1305 return true; | 1304 return true; |
1306 case 'timeline.jump-to-next-frame': | 1305 case 'timeline.jump-to-next-frame': |
1307 panel._jumpToFrame(1); | 1306 panel._jumpToFrame(1); |
1308 return true; | 1307 return true; |
1309 } | 1308 } |
1310 return false; | 1309 return false; |
1311 } | 1310 } |
1312 }; | 1311 }; |
1313 | 1312 |
1314 Timeline.TimelinePanel._traceProviderSettingSymbol = Symbol('traceProviderSettin g'); | 1313 Timeline.TimelinePanel._traceProviderSettingSymbol = Symbol('traceProviderSettin g'); |
OLD | NEW |