Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelinePaintProfilerView.js

Issue 2845813003: [DevTools] Host paint profiles in PaintProfilerModel (Closed)
Patch Set: addressed comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 Timeline.TimelinePaintProfilerView = class extends UI.SplitWidget { 5 Timeline.TimelinePaintProfilerView = class extends UI.SplitWidget {
6 /** 6 /**
7 * @param {!TimelineModel.TimelineFrameModel} frameModel 7 * @param {!TimelineModel.TimelineFrameModel} frameModel
8 */ 8 */
9 constructor(frameModel) { 9 constructor(frameModel) {
10 super(false, false); 10 super(false, false);
(...skipping 14 matching lines...) Expand all
25 this.setSidebarWidget(this._paintProfilerView); 25 this.setSidebarWidget(this._paintProfilerView);
26 26
27 this._logTreeView = new LayerViewer.PaintProfilerCommandLogView(); 27 this._logTreeView = new LayerViewer.PaintProfilerCommandLogView();
28 this._logAndImageSplitWidget.setSidebarWidget(this._logTreeView); 28 this._logAndImageSplitWidget.setSidebarWidget(this._logTreeView);
29 29
30 this._needsUpdateWhenVisible = false; 30 this._needsUpdateWhenVisible = false;
31 /** @type {?SDK.PaintProfilerSnapshot} */ 31 /** @type {?SDK.PaintProfilerSnapshot} */
32 this._pendingSnapshot = null; 32 this._pendingSnapshot = null;
33 /** @type {?SDK.TracingModel.Event} */ 33 /** @type {?SDK.TracingModel.Event} */
34 this._event = null; 34 this._event = null;
35 /** @type {?SDK.Target} */ 35 /** @type {?SDK.PaintProfilerModel} */
36 this._target = null; 36 this._paintProfilerModel = null;
37 /** @type {?SDK.PaintProfilerSnapshot} */ 37 /** @type {?SDK.PaintProfilerSnapshot} */
38 this._lastLoadedSnapshot = null; 38 this._lastLoadedSnapshot = null;
39 } 39 }
40 40
41 /** 41 /**
42 * @override 42 * @override
43 */ 43 */
44 wasShown() { 44 wasShown() {
45 if (this._needsUpdateWhenVisible) { 45 if (this._needsUpdateWhenVisible) {
46 this._needsUpdateWhenVisible = false; 46 this._needsUpdateWhenVisible = false;
47 this._update(); 47 this._update();
48 } 48 }
49 } 49 }
50 50
51 /** 51 /**
52 * @param {!SDK.PaintProfilerSnapshot} snapshot 52 * @param {!SDK.PaintProfilerSnapshot} snapshot
53 */ 53 */
54 setSnapshot(snapshot) { 54 setSnapshot(snapshot) {
55 this._releaseSnapshot(); 55 this._releaseSnapshot();
56 this._pendingSnapshot = snapshot; 56 this._pendingSnapshot = snapshot;
57 this._event = null; 57 this._event = null;
58 this._updateWhenVisible(); 58 this._updateWhenVisible();
59 } 59 }
60 60
61 /** 61 /**
62 * @param {!SDK.Target} target 62 * @param {!SDK.PaintProfilerModel} paintProfilerModel
63 * @param {!SDK.TracingModel.Event} event 63 * @param {!SDK.TracingModel.Event} event
64 * @return {boolean} 64 * @return {boolean}
65 */ 65 */
66 setEvent(target, event) { 66 setEvent(paintProfilerModel, event) {
67 this._releaseSnapshot(); 67 this._releaseSnapshot();
68 this._target = target; 68 this._paintProfilerModel = paintProfilerModel;
69 this._pendingSnapshot = null; 69 this._pendingSnapshot = null;
70 this._event = event; 70 this._event = event;
71 71
72 this._updateWhenVisible(); 72 this._updateWhenVisible();
73 if (this._event.name === TimelineModel.TimelineModel.RecordType.Paint) 73 if (this._event.name === TimelineModel.TimelineModel.RecordType.Paint)
74 return !!TimelineModel.TimelineData.forEvent(event).picture; 74 return !!TimelineModel.TimelineData.forEvent(event).picture;
75 if (this._event.name === TimelineModel.TimelineModel.RecordType.RasterTask) 75 if (this._event.name === TimelineModel.TimelineModel.RecordType.RasterTask)
76 return this._frameModel.hasRasterTile(this._event); 76 return this._frameModel.hasRasterTile(this._event);
77 return false; 77 return false;
78 } 78 }
79 79
80 _updateWhenVisible() { 80 _updateWhenVisible() {
81 if (this.isShowing()) 81 if (this.isShowing())
82 this._update(); 82 this._update();
83 else 83 else
84 this._needsUpdateWhenVisible = true; 84 this._needsUpdateWhenVisible = true;
85 } 85 }
86 86
87 _update() { 87 _update() {
88 this._logTreeView.setCommandLog(null, []); 88 this._logTreeView.setCommandLog([]);
89 this._paintProfilerView.setSnapshotAndLog(null, [], null); 89 this._paintProfilerView.setSnapshotAndLog(null, [], null);
90 90
91 var snapshotPromise; 91 var snapshotPromise;
92 if (this._pendingSnapshot) { 92 if (this._pendingSnapshot) {
93 snapshotPromise = Promise.resolve({rect: null, snapshot: this._pendingSnap shot}); 93 snapshotPromise = Promise.resolve({rect: null, snapshot: this._pendingSnap shot});
94 } else if (this._event.name === TimelineModel.TimelineModel.RecordType.Paint ) { 94 } else if (this._event.name === TimelineModel.TimelineModel.RecordType.Paint ) {
95 var picture = TimelineModel.TimelineData.forEvent(this._event).picture; 95 var picture = TimelineModel.TimelineData.forEvent(this._event).picture;
96 snapshotPromise = 96 snapshotPromise = picture.objectPromise()
97 picture.objectPromise() 97 .then(data => this._paintProfilerModel.loadSnapshot( data['skp64']))
98 .then(data => SDK.PaintProfilerSnapshot.load(/** @type {!SDK.Targe t} */ (this._target), data['skp64'])) 98 .then(snapshot => snapshot && {rect: null, snapshot: snapshot});
99 .then(snapshot => snapshot && {rect: null, snapshot: snapshot});
100 } else if (this._event.name === TimelineModel.TimelineModel.RecordType.Raste rTask) { 99 } else if (this._event.name === TimelineModel.TimelineModel.RecordType.Raste rTask) {
101 snapshotPromise = this._frameModel.rasterTilePromise(this._event); 100 snapshotPromise = this._frameModel.rasterTilePromise(this._event);
102 } else { 101 } else {
103 console.assert(false, 'Unexpected event type or no snapshot'); 102 console.assert(false, 'Unexpected event type or no snapshot');
104 return; 103 return;
105 } 104 }
106 snapshotPromise.then(snapshotWithRect => { 105 snapshotPromise.then(snapshotWithRect => {
107 this._releaseSnapshot(); 106 this._releaseSnapshot();
108 if (!snapshotWithRect) { 107 if (!snapshotWithRect) {
109 this._imageView.showImage(); 108 this._imageView.showImage();
110 return; 109 return;
111 } 110 }
112 var snapshot = snapshotWithRect.snapshot; 111 var snapshot = snapshotWithRect.snapshot;
113 this._lastLoadedSnapshot = snapshot; 112 this._lastLoadedSnapshot = snapshot;
114 this._imageView.setMask(snapshotWithRect.rect); 113 this._imageView.setMask(snapshotWithRect.rect);
115 snapshot.commandLog().then(log => onCommandLogDone.call(this, snapshot, sn apshotWithRect.rect, log)); 114 snapshot.commandLog().then(log => onCommandLogDone.call(this, snapshot, sn apshotWithRect.rect, log));
116 }); 115 });
117 116
118 /** 117 /**
119 * @param {!SDK.PaintProfilerSnapshot} snapshot 118 * @param {!SDK.PaintProfilerSnapshot} snapshot
120 * @param {?Protocol.DOM.Rect} clipRect 119 * @param {?Protocol.DOM.Rect} clipRect
121 * @param {!Array.<!SDK.PaintProfilerLogItem>=} log 120 * @param {!Array.<!SDK.PaintProfilerLogItem>=} log
122 * @this {Timeline.TimelinePaintProfilerView} 121 * @this {Timeline.TimelinePaintProfilerView}
123 */ 122 */
124 function onCommandLogDone(snapshot, clipRect, log) { 123 function onCommandLogDone(snapshot, clipRect, log) {
125 this._logTreeView.setCommandLog(snapshot.target(), log || []); 124 this._logTreeView.setCommandLog(log || []);
126 this._paintProfilerView.setSnapshotAndLog(snapshot, log || [], clipRect); 125 this._paintProfilerView.setSnapshotAndLog(snapshot, log || [], clipRect);
127 } 126 }
128 } 127 }
129 128
130 _releaseSnapshot() { 129 _releaseSnapshot() {
131 if (!this._lastLoadedSnapshot) 130 if (!this._lastLoadedSnapshot)
132 return; 131 return;
133 this._lastLoadedSnapshot.release(); 132 this._lastLoadedSnapshot.release();
134 this._lastLoadedSnapshot = null; 133 this._lastLoadedSnapshot = null;
135 } 134 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 } 212 }
214 213
215 /** 214 /**
216 * @param {?Protocol.DOM.Rect} maskRectangle 215 * @param {?Protocol.DOM.Rect} maskRectangle
217 */ 216 */
218 setMask(maskRectangle) { 217 setMask(maskRectangle) {
219 this._maskRectangle = maskRectangle; 218 this._maskRectangle = maskRectangle;
220 this._maskElement.classList.toggle('hidden', !maskRectangle); 219 this._maskElement.classList.toggle('hidden', !maskRectangle);
221 } 220 }
222 }; 221 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698