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

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineIRModel.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineIRModel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineIRModel.js b/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineIRModel.js
index e31fc1a5e2a5f1a7489e23b2b7b3b3fe5bbf3790..18d1f1d68ce5bb9a856bba79dd11d139443fd7ea 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineIRModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineIRModel.js
@@ -1,333 +1,321 @@
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-
/**
- * @constructor
+ * @unrestricted
*/
-WebInspector.TimelineIRModel = function()
-{
+WebInspector.TimelineIRModel = class {
+ constructor() {
+ this.reset();
+ }
+
+ /**
+ * @param {!WebInspector.TracingModel.Event} event
+ * @return {!WebInspector.TimelineIRModel.Phases}
+ */
+ static phaseForEvent(event) {
+ return event[WebInspector.TimelineIRModel._eventIRPhase];
+ }
+
+ /**
+ * @param {?Array<!WebInspector.TracingModel.AsyncEvent>} inputLatencies
+ * @param {?Array<!WebInspector.TracingModel.AsyncEvent>} animations
+ */
+ populate(inputLatencies, animations) {
+ var eventTypes = WebInspector.TimelineIRModel.InputEvents;
+ var phases = WebInspector.TimelineIRModel.Phases;
+
this.reset();
+ if (!inputLatencies)
+ return;
+ this._processInputLatencies(inputLatencies);
+ if (animations)
+ this._processAnimations(animations);
+ var range = new WebInspector.SegmentedRange();
+ range.appendRange(this._drags); // Drags take lower precedence than animation, as we can't detect them reliably.
+ range.appendRange(this._cssAnimations);
+ range.appendRange(this._scrolls);
+ range.appendRange(this._responses);
+ this._segments = range.segments();
+ }
+
+ /**
+ * @param {!Array<!WebInspector.TracingModel.AsyncEvent>} events
+ */
+ _processInputLatencies(events) {
+ var eventTypes = WebInspector.TimelineIRModel.InputEvents;
+ var phases = WebInspector.TimelineIRModel.Phases;
+ var thresholdsMs = WebInspector.TimelineIRModel._mergeThresholdsMs;
+
+ var scrollStart;
+ var flingStart;
+ var touchStart;
+ var firstTouchMove;
+ var mouseWheel;
+ var mouseDown;
+ var mouseMove;
+
+ for (var i = 0; i < events.length; ++i) {
+ var event = events[i];
+ if (i > 0 && events[i].startTime < events[i - 1].startTime)
+ console.assert(false, 'Unordered input events');
+ var type = this._inputEventType(event.name);
+ switch (type) {
+ case eventTypes.ScrollBegin:
+ this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
+ scrollStart = event;
+ break;
+
+ case eventTypes.ScrollEnd:
+ if (scrollStart)
+ this._scrolls.append(this._segmentForEventRange(scrollStart, event, phases.Scroll));
+ else
+ this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
+ scrollStart = null;
+ break;
+
+ case eventTypes.ScrollUpdate:
+ touchStart = null; // Since we're scrolling now, disregard other touch gestures.
+ this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
+ break;
+
+ case eventTypes.FlingStart:
+ if (flingStart) {
+ WebInspector.console.error(
+ WebInspector.UIString('Two flings at the same time? %s vs %s', flingStart.startTime, event.startTime));
+ break;
+ }
+ flingStart = event;
+ break;
+
+ case eventTypes.FlingCancel:
+ // FIXME: also process renderer fling events.
+ if (!flingStart)
+ break;
+ this._scrolls.append(this._segmentForEventRange(flingStart, event, phases.Fling));
+ flingStart = null;
+ break;
+
+ case eventTypes.ImplSideFling:
+ this._scrolls.append(this._segmentForEvent(event, phases.Fling));
+ break;
+
+ case eventTypes.ShowPress:
+ case eventTypes.Tap:
+ case eventTypes.KeyDown:
+ case eventTypes.KeyDownRaw:
+ case eventTypes.KeyUp:
+ case eventTypes.Char:
+ case eventTypes.Click:
+ case eventTypes.ContextMenu:
+ this._responses.append(this._segmentForEvent(event, phases.Response));
+ break;
+
+ case eventTypes.TouchStart:
+ // We do not produce any response segment for TouchStart -- there's either going to be one upon
+ // TouchMove for drag, or one for GestureTap.
+ if (touchStart) {
+ WebInspector.console.error(
+ WebInspector.UIString('Two touches at the same time? %s vs %s', touchStart.startTime, event.startTime));
+ break;
+ }
+ touchStart = event;
+ event.steps[0][WebInspector.TimelineIRModel._eventIRPhase] = phases.Response;
+ firstTouchMove = null;
+ break;
+
+ case eventTypes.TouchCancel:
+ touchStart = null;
+ break;
+
+ case eventTypes.TouchMove:
+ if (firstTouchMove) {
+ this._drags.append(this._segmentForEvent(event, phases.Drag));
+ } else if (touchStart) {
+ firstTouchMove = event;
+ this._responses.append(this._segmentForEventRange(touchStart, event, phases.Response));
+ }
+ break;
+
+ case eventTypes.TouchEnd:
+ touchStart = null;
+ break;
+
+ case eventTypes.MouseDown:
+ mouseDown = event;
+ mouseMove = null;
+ break;
+
+ case eventTypes.MouseMove:
+ if (mouseDown && !mouseMove && mouseDown.startTime + thresholdsMs.mouse > event.startTime) {
+ this._responses.append(this._segmentForEvent(mouseDown, phases.Response));
+ this._responses.append(this._segmentForEvent(event, phases.Response));
+ } else if (mouseDown) {
+ this._drags.append(this._segmentForEvent(event, phases.Drag));
+ }
+ mouseMove = event;
+ break;
+
+ case eventTypes.MouseUp:
+ this._responses.append(this._segmentForEvent(event, phases.Response));
+ mouseDown = null;
+ break;
+
+ case eventTypes.MouseWheel:
+ // Do not consider first MouseWheel as trace viewer's implementation does -- in case of MouseWheel it's not really special.
+ if (mouseWheel && canMerge(thresholdsMs.mouse, mouseWheel, event))
+ this._scrolls.append(this._segmentForEventRange(mouseWheel, event, phases.Scroll));
+ else
+ this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
+ mouseWheel = event;
+ break;
+ }
+ }
+
+ /**
+ * @param {number} threshold
+ * @param {!WebInspector.TracingModel.AsyncEvent} first
+ * @param {!WebInspector.TracingModel.AsyncEvent} second
+ * @return {boolean}
+ */
+ function canMerge(threshold, first, second) {
+ return first.endTime < second.startTime && second.startTime < first.endTime + threshold;
+ }
+ }
+
+ /**
+ * @param {!Array<!WebInspector.TracingModel.AsyncEvent>} events
+ */
+ _processAnimations(events) {
+ for (var i = 0; i < events.length; ++i)
+ this._cssAnimations.append(this._segmentForEvent(events[i], WebInspector.TimelineIRModel.Phases.Animation));
+ }
+
+ /**
+ * @param {!WebInspector.TracingModel.AsyncEvent} event
+ * @param {!WebInspector.TimelineIRModel.Phases} phase
+ * @return {!WebInspector.Segment}
+ */
+ _segmentForEvent(event, phase) {
+ this._setPhaseForEvent(event, phase);
+ return new WebInspector.Segment(event.startTime, event.endTime, phase);
+ }
+
+ /**
+ * @param {!WebInspector.TracingModel.AsyncEvent} startEvent
+ * @param {!WebInspector.TracingModel.AsyncEvent} endEvent
+ * @param {!WebInspector.TimelineIRModel.Phases} phase
+ * @return {!WebInspector.Segment}
+ */
+ _segmentForEventRange(startEvent, endEvent, phase) {
+ this._setPhaseForEvent(startEvent, phase);
+ this._setPhaseForEvent(endEvent, phase);
+ return new WebInspector.Segment(startEvent.startTime, endEvent.endTime, phase);
+ }
+
+ /**
+ * @param {!WebInspector.TracingModel.AsyncEvent} asyncEvent
+ * @param {!WebInspector.TimelineIRModel.Phases} phase
+ */
+ _setPhaseForEvent(asyncEvent, phase) {
+ asyncEvent.steps[0][WebInspector.TimelineIRModel._eventIRPhase] = phase;
+ }
+
+ /**
+ * @return {!Array<!WebInspector.Segment>}
+ */
+ interactionRecords() {
+ return this._segments;
+ }
+
+ reset() {
+ var thresholdsMs = WebInspector.TimelineIRModel._mergeThresholdsMs;
+
+ this._segments = [];
+ this._drags = new WebInspector.SegmentedRange(merge.bind(null, thresholdsMs.mouse));
+ this._cssAnimations = new WebInspector.SegmentedRange(merge.bind(null, thresholdsMs.animation));
+ this._responses = new WebInspector.SegmentedRange(merge.bind(null, 0));
+ this._scrolls = new WebInspector.SegmentedRange(merge.bind(null, thresholdsMs.animation));
+
+ /**
+ * @param {number} threshold
+ * @param {!WebInspector.Segment} first
+ * @param {!WebInspector.Segment} second
+ */
+ function merge(threshold, first, second) {
+ return first.end + threshold >= second.begin && first.data === second.data ? first : null;
+ }
+ }
+
+ /**
+ * @param {string} eventName
+ * @return {?WebInspector.TimelineIRModel.InputEvents}
+ */
+ _inputEventType(eventName) {
+ var prefix = 'InputLatency::';
+ if (!eventName.startsWith(prefix)) {
+ if (eventName === WebInspector.TimelineIRModel.InputEvents.ImplSideFling)
+ return /** @type {!WebInspector.TimelineIRModel.InputEvents} */ (eventName);
+ console.error('Unrecognized input latency event: ' + eventName);
+ return null;
+ }
+ return /** @type {!WebInspector.TimelineIRModel.InputEvents} */ (eventName.substr(prefix.length));
+ }
};
/**
* @enum {string}
*/
WebInspector.TimelineIRModel.Phases = {
- Idle: "Idle",
- Response: "Response",
- Scroll: "Scroll",
- Fling: "Fling",
- Drag: "Drag",
- Animation: "Animation",
- Uncategorized: "Uncategorized"
+ Idle: 'Idle',
+ Response: 'Response',
+ Scroll: 'Scroll',
+ Fling: 'Fling',
+ Drag: 'Drag',
+ Animation: 'Animation',
+ Uncategorized: 'Uncategorized'
};
/**
* @enum {string}
*/
WebInspector.TimelineIRModel.InputEvents = {
- Char: "Char",
- Click: "GestureClick",
- ContextMenu: "ContextMenu",
- FlingCancel: "GestureFlingCancel",
- FlingStart: "GestureFlingStart",
- ImplSideFling: WebInspector.TimelineModel.RecordType.ImplSideFling,
- KeyDown: "KeyDown",
- KeyDownRaw: "RawKeyDown",
- KeyUp: "KeyUp",
- LatencyScrollUpdate: "ScrollUpdate",
- MouseDown: "MouseDown",
- MouseMove: "MouseMove",
- MouseUp: "MouseUp",
- MouseWheel: "MouseWheel",
- PinchBegin: "GesturePinchBegin",
- PinchEnd: "GesturePinchEnd",
- PinchUpdate: "GesturePinchUpdate",
- ScrollBegin: "GestureScrollBegin",
- ScrollEnd: "GestureScrollEnd",
- ScrollUpdate: "GestureScrollUpdate",
- ScrollUpdateRenderer: "ScrollUpdate",
- ShowPress: "GestureShowPress",
- Tap: "GestureTap",
- TapCancel: "GestureTapCancel",
- TapDown: "GestureTapDown",
- TouchCancel: "TouchCancel",
- TouchEnd: "TouchEnd",
- TouchMove: "TouchMove",
- TouchStart: "TouchStart"
+ Char: 'Char',
+ Click: 'GestureClick',
+ ContextMenu: 'ContextMenu',
+ FlingCancel: 'GestureFlingCancel',
+ FlingStart: 'GestureFlingStart',
+ ImplSideFling: WebInspector.TimelineModel.RecordType.ImplSideFling,
+ KeyDown: 'KeyDown',
+ KeyDownRaw: 'RawKeyDown',
+ KeyUp: 'KeyUp',
+ LatencyScrollUpdate: 'ScrollUpdate',
+ MouseDown: 'MouseDown',
+ MouseMove: 'MouseMove',
+ MouseUp: 'MouseUp',
+ MouseWheel: 'MouseWheel',
+ PinchBegin: 'GesturePinchBegin',
+ PinchEnd: 'GesturePinchEnd',
+ PinchUpdate: 'GesturePinchUpdate',
+ ScrollBegin: 'GestureScrollBegin',
+ ScrollEnd: 'GestureScrollEnd',
+ ScrollUpdate: 'GestureScrollUpdate',
+ ScrollUpdateRenderer: 'ScrollUpdate',
+ ShowPress: 'GestureShowPress',
+ Tap: 'GestureTap',
+ TapCancel: 'GestureTapCancel',
+ TapDown: 'GestureTapDown',
+ TouchCancel: 'TouchCancel',
+ TouchEnd: 'TouchEnd',
+ TouchMove: 'TouchMove',
+ TouchStart: 'TouchStart'
};
WebInspector.TimelineIRModel._mergeThresholdsMs = {
- animation: 1,
- mouse: 40,
+ animation: 1,
+ mouse: 40,
};
-WebInspector.TimelineIRModel._eventIRPhase = Symbol("eventIRPhase");
-
-/**
- * @param {!WebInspector.TracingModel.Event} event
- * @return {!WebInspector.TimelineIRModel.Phases}
- */
-WebInspector.TimelineIRModel.phaseForEvent = function(event)
-{
- return event[WebInspector.TimelineIRModel._eventIRPhase];
-};
-
-WebInspector.TimelineIRModel.prototype = {
- /**
- * @param {?Array<!WebInspector.TracingModel.AsyncEvent>} inputLatencies
- * @param {?Array<!WebInspector.TracingModel.AsyncEvent>} animations
- */
- populate: function(inputLatencies, animations)
- {
- var eventTypes = WebInspector.TimelineIRModel.InputEvents;
- var phases = WebInspector.TimelineIRModel.Phases;
-
- this.reset();
- if (!inputLatencies)
- return;
- this._processInputLatencies(inputLatencies);
- if (animations)
- this._processAnimations(animations);
- var range = new WebInspector.SegmentedRange();
- range.appendRange(this._drags); // Drags take lower precedence than animation, as we can't detect them reliably.
- range.appendRange(this._cssAnimations);
- range.appendRange(this._scrolls);
- range.appendRange(this._responses);
- this._segments = range.segments();
- },
-
- /**
- * @param {!Array<!WebInspector.TracingModel.AsyncEvent>} events
- */
- _processInputLatencies: function(events)
- {
- var eventTypes = WebInspector.TimelineIRModel.InputEvents;
- var phases = WebInspector.TimelineIRModel.Phases;
- var thresholdsMs = WebInspector.TimelineIRModel._mergeThresholdsMs;
-
- var scrollStart;
- var flingStart;
- var touchStart;
- var firstTouchMove;
- var mouseWheel;
- var mouseDown;
- var mouseMove;
-
- for (var i = 0; i < events.length; ++i) {
- var event = events[i];
- if (i > 0 && events[i].startTime < events[i - 1].startTime)
- console.assert(false, "Unordered input events");
- var type = this._inputEventType(event.name);
- switch (type) {
-
- case eventTypes.ScrollBegin:
- this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
- scrollStart = event;
- break;
-
- case eventTypes.ScrollEnd:
- if (scrollStart)
- this._scrolls.append(this._segmentForEventRange(scrollStart, event, phases.Scroll));
- else
- this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
- scrollStart = null;
- break;
-
- case eventTypes.ScrollUpdate:
- touchStart = null; // Since we're scrolling now, disregard other touch gestures.
- this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
- break;
-
- case eventTypes.FlingStart:
- if (flingStart) {
- WebInspector.console.error(WebInspector.UIString("Two flings at the same time? %s vs %s", flingStart.startTime, event.startTime));
- break;
- }
- flingStart = event;
- break;
-
- case eventTypes.FlingCancel:
- // FIXME: also process renderer fling events.
- if (!flingStart)
- break;
- this._scrolls.append(this._segmentForEventRange(flingStart, event, phases.Fling));
- flingStart = null;
- break;
-
- case eventTypes.ImplSideFling:
- this._scrolls.append(this._segmentForEvent(event, phases.Fling));
- break;
-
- case eventTypes.ShowPress:
- case eventTypes.Tap:
- case eventTypes.KeyDown:
- case eventTypes.KeyDownRaw:
- case eventTypes.KeyUp:
- case eventTypes.Char:
- case eventTypes.Click:
- case eventTypes.ContextMenu:
- this._responses.append(this._segmentForEvent(event, phases.Response));
- break;
-
- case eventTypes.TouchStart:
- // We do not produce any response segment for TouchStart -- there's either going to be one upon
- // TouchMove for drag, or one for GestureTap.
- if (touchStart) {
- WebInspector.console.error(WebInspector.UIString("Two touches at the same time? %s vs %s", touchStart.startTime, event.startTime));
- break;
- }
- touchStart = event;
- event.steps[0][WebInspector.TimelineIRModel._eventIRPhase] = phases.Response;
- firstTouchMove = null;
- break;
-
- case eventTypes.TouchCancel:
- touchStart = null;
- break;
-
- case eventTypes.TouchMove:
- if (firstTouchMove) {
- this._drags.append(this._segmentForEvent(event, phases.Drag));
- } else if (touchStart) {
- firstTouchMove = event;
- this._responses.append(this._segmentForEventRange(touchStart, event, phases.Response));
- }
- break;
-
- case eventTypes.TouchEnd:
- touchStart = null;
- break;
-
- case eventTypes.MouseDown:
- mouseDown = event;
- mouseMove = null;
- break;
-
- case eventTypes.MouseMove:
- if (mouseDown && !mouseMove && mouseDown.startTime + thresholdsMs.mouse > event.startTime) {
- this._responses.append(this._segmentForEvent(mouseDown, phases.Response));
- this._responses.append(this._segmentForEvent(event, phases.Response));
- } else if (mouseDown) {
- this._drags.append(this._segmentForEvent(event, phases.Drag));
- }
- mouseMove = event;
- break;
-
- case eventTypes.MouseUp:
- this._responses.append(this._segmentForEvent(event, phases.Response));
- mouseDown = null;
- break;
-
- case eventTypes.MouseWheel:
- // Do not consider first MouseWheel as trace viewer's implementation does -- in case of MouseWheel it's not really special.
- if (mouseWheel && canMerge(thresholdsMs.mouse, mouseWheel, event))
- this._scrolls.append(this._segmentForEventRange(mouseWheel, event, phases.Scroll));
- else
- this._scrolls.append(this._segmentForEvent(event, phases.Scroll));
- mouseWheel = event;
- break;
- }
- }
-
- /**
- * @param {number} threshold
- * @param {!WebInspector.TracingModel.AsyncEvent} first
- * @param {!WebInspector.TracingModel.AsyncEvent} second
- * @return {boolean}
- */
- function canMerge(threshold, first, second)
- {
- return first.endTime < second.startTime && second.startTime < first.endTime + threshold;
- }
- },
-
- /**
- * @param {!Array<!WebInspector.TracingModel.AsyncEvent>} events
- */
- _processAnimations: function(events)
- {
- for (var i = 0; i < events.length; ++i)
- this._cssAnimations.append(this._segmentForEvent(events[i], WebInspector.TimelineIRModel.Phases.Animation));
- },
-
- /**
- * @param {!WebInspector.TracingModel.AsyncEvent} event
- * @param {!WebInspector.TimelineIRModel.Phases} phase
- * @return {!WebInspector.Segment}
- */
- _segmentForEvent: function(event, phase)
- {
- this._setPhaseForEvent(event, phase);
- return new WebInspector.Segment(event.startTime, event.endTime, phase);
- },
+WebInspector.TimelineIRModel._eventIRPhase = Symbol('eventIRPhase');
- /**
- * @param {!WebInspector.TracingModel.AsyncEvent} startEvent
- * @param {!WebInspector.TracingModel.AsyncEvent} endEvent
- * @param {!WebInspector.TimelineIRModel.Phases} phase
- * @return {!WebInspector.Segment}
- */
- _segmentForEventRange: function(startEvent, endEvent, phase)
- {
- this._setPhaseForEvent(startEvent, phase);
- this._setPhaseForEvent(endEvent, phase);
- return new WebInspector.Segment(startEvent.startTime, endEvent.endTime, phase);
- },
-
- /**
- * @param {!WebInspector.TracingModel.AsyncEvent} asyncEvent
- * @param {!WebInspector.TimelineIRModel.Phases} phase
- */
- _setPhaseForEvent: function(asyncEvent, phase)
- {
- asyncEvent.steps[0][WebInspector.TimelineIRModel._eventIRPhase] = phase;
- },
-
- /**
- * @return {!Array<!WebInspector.Segment>}
- */
- interactionRecords: function()
- {
- return this._segments;
- },
-
- reset: function()
- {
- var thresholdsMs = WebInspector.TimelineIRModel._mergeThresholdsMs;
-
- this._segments = [];
- this._drags = new WebInspector.SegmentedRange(merge.bind(null, thresholdsMs.mouse));
- this._cssAnimations = new WebInspector.SegmentedRange(merge.bind(null, thresholdsMs.animation));
- this._responses = new WebInspector.SegmentedRange(merge.bind(null, 0));
- this._scrolls = new WebInspector.SegmentedRange(merge.bind(null, thresholdsMs.animation));
-
- /**
- * @param {number} threshold
- * @param {!WebInspector.Segment} first
- * @param {!WebInspector.Segment} second
- */
- function merge(threshold, first, second)
- {
- return first.end + threshold >= second.begin && first.data === second.data ? first : null;
- }
- },
-
- /**
- * @param {string} eventName
- * @return {?WebInspector.TimelineIRModel.InputEvents}
- */
- _inputEventType: function(eventName)
- {
- var prefix = "InputLatency::";
- if (!eventName.startsWith(prefix)) {
- if (eventName === WebInspector.TimelineIRModel.InputEvents.ImplSideFling)
- return /** @type {!WebInspector.TimelineIRModel.InputEvents} */ (eventName);
- console.error("Unrecognized input latency event: " + eventName);
- return null;
- }
- return /** @type {!WebInspector.TimelineIRModel.InputEvents} */ (eventName.substr(prefix.length));
- }
-};

Powered by Google App Engine
This is Rietveld 408576698