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

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

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

Powered by Google App Engine
This is Rietveld 408576698