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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/components_lazy/FilmStripModel.js

Issue 2313093004: Timeline: always create filmstrip model and share single instance of it (Closed)
Patch Set: Timeline: always create filmstrip model Created 4 years, 3 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 /* 1 /*
2 * Copyright 2015 The Chromium Authors. All rights reserved. 2 * Copyright 2015 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 /** 7 /**
8 * @constructor 8 * @constructor
9 * @param {!WebInspector.TracingModel} tracingModel 9 * @param {!WebInspector.TracingModel} tracingModel
10 * @param {number=} zeroTime 10 * @param {number=} zeroTime
11 */ 11 */
12 WebInspector.FilmStripModel = function(tracingModel, zeroTime) 12 WebInspector.FilmStripModel = function(tracingModel, zeroTime)
13 { 13 {
14 this._tracingModel = tracingModel; 14 this.reset(tracingModel, zeroTime);
15 this._zeroTime = zeroTime || tracingModel.minimumRecordTime();
16
17 /** @type {!Array<!WebInspector.FilmStripModel.Frame>} */
18 this._frames = [];
19
20 var browserProcess = tracingModel.processByName("Browser");
21 if (!browserProcess)
22 return;
23 var mainThread = browserProcess.threadByName("CrBrowserMain");
24 if (!mainThread)
25 return;
26
27 var events = mainThread.events();
28 for (var i = 0; i < events.length; ++i) {
29 var event = events[i];
30 if (event.startTime < this._zeroTime)
31 continue;
32 if (!event.hasCategory(WebInspector.FilmStripModel._category))
33 continue;
34 if (event.name === WebInspector.FilmStripModel.TraceEvents.CaptureFrame) {
35 var data = event.args["data"];
36 if (data)
37 this._frames.push(WebInspector.FilmStripModel.Frame._fromEvent(t his, event, this._frames.length));
38 } else if (event.name === WebInspector.FilmStripModel.TraceEvents.Screen shot) {
39 this._frames.push(WebInspector.FilmStripModel.Frame._fromSnapshot(th is, /** @type {!WebInspector.TracingModel.ObjectSnapshot} */ (event), this._fram es.length));
40 }
41 }
42 } 15 }
43 16
44 WebInspector.FilmStripModel._category = "disabled-by-default-devtools.screenshot "; 17 WebInspector.FilmStripModel._category = "disabled-by-default-devtools.screenshot ";
45 18
46 WebInspector.FilmStripModel.TraceEvents = { 19 WebInspector.FilmStripModel.TraceEvents = {
47 CaptureFrame: "CaptureFrame", 20 CaptureFrame: "CaptureFrame",
48 Screenshot: "Screenshot" 21 Screenshot: "Screenshot"
49 } 22 }
50 23
51 WebInspector.FilmStripModel.prototype = { 24 WebInspector.FilmStripModel.prototype = {
52 /** 25 /**
26 * @param {!WebInspector.TracingModel} tracingModel
27 * @param {number=} zeroTime
28 */
29 reset: function(tracingModel, zeroTime)
alph 2016/09/08 00:03:07 you don't need to pass tracingModel all the time.
30 {
31 this._zeroTime = zeroTime || tracingModel.minimumRecordTime();
32 this._spanTime = tracingModel.maximumRecordTime() - this._zeroTime;
33
34 /** @type {!Array<!WebInspector.FilmStripModel.Frame>} */
35 this._frames = [];
36
37 var browserProcess = tracingModel.processByName("Browser");
38 if (!browserProcess)
39 return;
40 var mainThread = browserProcess.threadByName("CrBrowserMain");
41 if (!mainThread)
42 return;
43
44 var events = mainThread.events();
45 for (var i = 0; i < events.length; ++i) {
46 var event = events[i];
47 if (event.startTime < this._zeroTime)
48 continue;
49 if (!event.hasCategory(WebInspector.FilmStripModel._category))
50 continue;
51 if (event.name === WebInspector.FilmStripModel.TraceEvents.CaptureFr ame) {
52 var data = event.args["data"];
53 if (data)
54 this._frames.push(WebInspector.FilmStripModel.Frame._fromEve nt(this, event, this._frames.length));
55 } else if (event.name === WebInspector.FilmStripModel.TraceEvents.Sc reenshot) {
56 this._frames.push(WebInspector.FilmStripModel.Frame._fromSnapsho t(this, /** @type {!WebInspector.TracingModel.ObjectSnapshot} */ (event), this._ frames.length));
57 }
58 }
59 },
60
61 /**
53 * @return {!Array<!WebInspector.FilmStripModel.Frame>} 62 * @return {!Array<!WebInspector.FilmStripModel.Frame>}
54 */ 63 */
55 frames: function() 64 frames: function()
56 { 65 {
57 return this._frames; 66 return this._frames;
58 }, 67 },
59 68
60 /** 69 /**
61 * @return {number} 70 * @return {number}
62 */ 71 */
63 zeroTime: function() 72 zeroTime: function()
64 { 73 {
65 return this._zeroTime; 74 return this._zeroTime;
66 }, 75 },
67 76
68 /** 77 /**
78 * @return {number}
79 */
80 spanTime: function()
81 {
82 return this._spanTime;
83 },
84
85 /**
69 * @param {number} timestamp 86 * @param {number} timestamp
70 * @return {?WebInspector.FilmStripModel.Frame} 87 * @return {?WebInspector.FilmStripModel.Frame}
71 */ 88 */
72 frameByTimestamp: function(timestamp) 89 frameByTimestamp: function(timestamp)
73 { 90 {
74 var index = this._frames.upperBound(timestamp, (timestamp, frame) => tim estamp - frame.timestamp) - 1; 91 var index = this._frames.upperBound(timestamp, (timestamp, frame) => tim estamp - frame.timestamp) - 1;
75 return index >= 0 ? this._frames[index] : null; 92 return index >= 0 ? this._frames[index] : null;
76 } 93 }
77 } 94 }
78 95
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 * @return {!Promise<?string>} 149 * @return {!Promise<?string>}
133 */ 150 */
134 imageDataPromise: function() 151 imageDataPromise: function()
135 { 152 {
136 if (this._imageData || !this._snapshot) 153 if (this._imageData || !this._snapshot)
137 return Promise.resolve(this._imageData); 154 return Promise.resolve(this._imageData);
138 155
139 return /** @type {!Promise<?string>} */ (this._snapshot.objectPromise()) ; 156 return /** @type {!Promise<?string>} */ (this._snapshot.objectPromise()) ;
140 } 157 }
141 } 158 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698