OLD | NEW |
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 * @unrestricted | 8 * @unrestricted |
9 */ | 9 */ |
10 Components.FilmStripModel = class { | 10 SDK.FilmStripModel = class { |
11 /** | 11 /** |
12 * @param {!SDK.TracingModel} tracingModel | 12 * @param {!SDK.TracingModel} tracingModel |
13 * @param {number=} zeroTime | 13 * @param {number=} zeroTime |
14 */ | 14 */ |
15 constructor(tracingModel, zeroTime) { | 15 constructor(tracingModel, zeroTime) { |
16 this.reset(tracingModel, zeroTime); | 16 this.reset(tracingModel, zeroTime); |
17 } | 17 } |
18 | 18 |
19 /** | 19 /** |
20 * @param {!SDK.TracingModel} tracingModel | 20 * @param {!SDK.TracingModel} tracingModel |
21 * @param {number=} zeroTime | 21 * @param {number=} zeroTime |
22 */ | 22 */ |
23 reset(tracingModel, zeroTime) { | 23 reset(tracingModel, zeroTime) { |
24 this._zeroTime = zeroTime || tracingModel.minimumRecordTime(); | 24 this._zeroTime = zeroTime || tracingModel.minimumRecordTime(); |
25 this._spanTime = tracingModel.maximumRecordTime() - this._zeroTime; | 25 this._spanTime = tracingModel.maximumRecordTime() - this._zeroTime; |
26 | 26 |
27 /** @type {!Array<!Components.FilmStripModel.Frame>} */ | 27 /** @type {!Array<!SDK.FilmStripModel.Frame>} */ |
28 this._frames = []; | 28 this._frames = []; |
29 var browserMain = SDK.TracingModel.browserMainThread(tracingModel); | 29 var browserMain = SDK.TracingModel.browserMainThread(tracingModel); |
30 if (!browserMain) | 30 if (!browserMain) |
31 return; | 31 return; |
32 | 32 |
33 var events = browserMain.events(); | 33 var events = browserMain.events(); |
34 for (var i = 0; i < events.length; ++i) { | 34 for (var i = 0; i < events.length; ++i) { |
35 var event = events[i]; | 35 var event = events[i]; |
36 if (event.startTime < this._zeroTime) | 36 if (event.startTime < this._zeroTime) |
37 continue; | 37 continue; |
38 if (!event.hasCategory(Components.FilmStripModel._category)) | 38 if (!event.hasCategory(SDK.FilmStripModel._category)) |
39 continue; | 39 continue; |
40 if (event.name === Components.FilmStripModel.TraceEvents.CaptureFrame) { | 40 if (event.name === SDK.FilmStripModel.TraceEvents.CaptureFrame) { |
41 var data = event.args['data']; | 41 var data = event.args['data']; |
42 if (data) | 42 if (data) |
43 this._frames.push(Components.FilmStripModel.Frame._fromEvent(this, eve
nt, this._frames.length)); | 43 this._frames.push(SDK.FilmStripModel.Frame._fromEvent(this, event, thi
s._frames.length)); |
44 } else if (event.name === Components.FilmStripModel.TraceEvents.Screenshot
) { | 44 } else if (event.name === SDK.FilmStripModel.TraceEvents.Screenshot) { |
45 this._frames.push(Components.FilmStripModel.Frame._fromSnapshot( | 45 this._frames.push(SDK.FilmStripModel.Frame._fromSnapshot( |
46 this, /** @type {!SDK.TracingModel.ObjectSnapshot} */ (event), this.
_frames.length)); | 46 this, /** @type {!SDK.TracingModel.ObjectSnapshot} */ (event), this.
_frames.length)); |
47 } | 47 } |
48 } | 48 } |
49 } | 49 } |
50 | 50 |
51 /** | 51 /** |
52 * @return {!Array<!Components.FilmStripModel.Frame>} | 52 * @return {!Array<!SDK.FilmStripModel.Frame>} |
53 */ | 53 */ |
54 frames() { | 54 frames() { |
55 return this._frames; | 55 return this._frames; |
56 } | 56 } |
57 | 57 |
58 /** | 58 /** |
59 * @return {number} | 59 * @return {number} |
60 */ | 60 */ |
61 zeroTime() { | 61 zeroTime() { |
62 return this._zeroTime; | 62 return this._zeroTime; |
63 } | 63 } |
64 | 64 |
65 /** | 65 /** |
66 * @return {number} | 66 * @return {number} |
67 */ | 67 */ |
68 spanTime() { | 68 spanTime() { |
69 return this._spanTime; | 69 return this._spanTime; |
70 } | 70 } |
71 | 71 |
72 /** | 72 /** |
73 * @param {number} timestamp | 73 * @param {number} timestamp |
74 * @return {?Components.FilmStripModel.Frame} | 74 * @return {?SDK.FilmStripModel.Frame} |
75 */ | 75 */ |
76 frameByTimestamp(timestamp) { | 76 frameByTimestamp(timestamp) { |
77 var index = this._frames.upperBound(timestamp, (timestamp, frame) => timesta
mp - frame.timestamp) - 1; | 77 var index = this._frames.upperBound(timestamp, (timestamp, frame) => timesta
mp - frame.timestamp) - 1; |
78 return index >= 0 ? this._frames[index] : null; | 78 return index >= 0 ? this._frames[index] : null; |
79 } | 79 } |
80 }; | 80 }; |
81 | 81 |
82 Components.FilmStripModel._category = 'disabled-by-default-devtools.screenshot'; | 82 SDK.FilmStripModel._category = 'disabled-by-default-devtools.screenshot'; |
83 | 83 |
84 Components.FilmStripModel.TraceEvents = { | 84 SDK.FilmStripModel.TraceEvents = { |
85 CaptureFrame: 'CaptureFrame', | 85 CaptureFrame: 'CaptureFrame', |
86 Screenshot: 'Screenshot' | 86 Screenshot: 'Screenshot' |
87 }; | 87 }; |
88 | 88 |
89 /** | 89 /** |
90 * @unrestricted | 90 * @unrestricted |
91 */ | 91 */ |
92 Components.FilmStripModel.Frame = class { | 92 SDK.FilmStripModel.Frame = class { |
93 /** | 93 /** |
94 * @param {!Components.FilmStripModel} model | 94 * @param {!SDK.FilmStripModel} model |
95 * @param {number} timestamp | 95 * @param {number} timestamp |
96 * @param {number} index | 96 * @param {number} index |
97 */ | 97 */ |
98 constructor(model, timestamp, index) { | 98 constructor(model, timestamp, index) { |
99 this._model = model; | 99 this._model = model; |
100 this.timestamp = timestamp; | 100 this.timestamp = timestamp; |
101 this.index = index; | 101 this.index = index; |
102 /** @type {?string} */ | 102 /** @type {?string} */ |
103 this._imageData = null; | 103 this._imageData = null; |
104 /** @type {?SDK.TracingModel.ObjectSnapshot} */ | 104 /** @type {?SDK.TracingModel.ObjectSnapshot} */ |
105 this._snapshot = null; | 105 this._snapshot = null; |
106 } | 106 } |
107 | 107 |
108 /** | 108 /** |
109 * @param {!Components.FilmStripModel} model | 109 * @param {!SDK.FilmStripModel} model |
110 * @param {!SDK.TracingModel.Event} event | 110 * @param {!SDK.TracingModel.Event} event |
111 * @param {number} index | 111 * @param {number} index |
112 * @return {!Components.FilmStripModel.Frame} | 112 * @return {!SDK.FilmStripModel.Frame} |
113 */ | 113 */ |
114 static _fromEvent(model, event, index) { | 114 static _fromEvent(model, event, index) { |
115 var frame = new Components.FilmStripModel.Frame(model, event.startTime, inde
x); | 115 var frame = new SDK.FilmStripModel.Frame(model, event.startTime, index); |
116 frame._imageData = event.args['data']; | 116 frame._imageData = event.args['data']; |
117 return frame; | 117 return frame; |
118 } | 118 } |
119 | 119 |
120 /** | 120 /** |
121 * @param {!Components.FilmStripModel} model | 121 * @param {!SDK.FilmStripModel} model |
122 * @param {!SDK.TracingModel.ObjectSnapshot} snapshot | 122 * @param {!SDK.TracingModel.ObjectSnapshot} snapshot |
123 * @param {number} index | 123 * @param {number} index |
124 * @return {!Components.FilmStripModel.Frame} | 124 * @return {!SDK.FilmStripModel.Frame} |
125 */ | 125 */ |
126 static _fromSnapshot(model, snapshot, index) { | 126 static _fromSnapshot(model, snapshot, index) { |
127 var frame = new Components.FilmStripModel.Frame(model, snapshot.startTime, i
ndex); | 127 var frame = new SDK.FilmStripModel.Frame(model, snapshot.startTime, index); |
128 frame._snapshot = snapshot; | 128 frame._snapshot = snapshot; |
129 return frame; | 129 return frame; |
130 } | 130 } |
131 | 131 |
132 /** | 132 /** |
133 * @return {!Components.FilmStripModel} | 133 * @return {!SDK.FilmStripModel} |
134 */ | 134 */ |
135 model() { | 135 model() { |
136 return this._model; | 136 return this._model; |
137 } | 137 } |
138 | 138 |
139 /** | 139 /** |
140 * @return {!Promise<?string>} | 140 * @return {!Promise<?string>} |
141 */ | 141 */ |
142 imageDataPromise() { | 142 imageDataPromise() { |
143 if (this._imageData || !this._snapshot) | 143 if (this._imageData || !this._snapshot) |
144 return Promise.resolve(this._imageData); | 144 return Promise.resolve(this._imageData); |
145 | 145 |
146 return /** @type {!Promise<?string>} */ (this._snapshot.objectPromise()); | 146 return /** @type {!Promise<?string>} */ (this._snapshot.objectPromise()); |
147 } | 147 } |
148 }; | 148 }; |
OLD | NEW |