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

Unified Diff: third_party/WebKit/Source/devtools/front_end/ui_lazy/TimelineOverviewPane.js

Issue 2623743002: DevTools: extract modules (non-extensions) (Closed)
Patch Set: rebaseline 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/ui_lazy/TimelineOverviewPane.js
diff --git a/third_party/WebKit/Source/devtools/front_end/ui_lazy/TimelineOverviewPane.js b/third_party/WebKit/Source/devtools/front_end/ui_lazy/TimelineOverviewPane.js
deleted file mode 100644
index 7b6de362cde3401c170ad9b597ff15c36ba7eada..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/devtools/front_end/ui_lazy/TimelineOverviewPane.js
+++ /dev/null
@@ -1,606 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/**
- * @unrestricted
- */
-UI.TimelineOverviewPane = class extends UI.VBox {
- /**
- * @param {string} prefix
- */
- constructor(prefix) {
- super();
- this.element.id = prefix + '-overview-pane';
-
- this._overviewCalculator = new UI.TimelineOverviewCalculator();
- this._overviewGrid = new UI.OverviewGrid(prefix);
- this.element.appendChild(this._overviewGrid.element);
- this._cursorArea = this._overviewGrid.element.createChild('div', 'overview-grid-cursor-area');
- this._cursorElement = this._overviewGrid.element.createChild('div', 'overview-grid-cursor-position');
- this._cursorArea.addEventListener('mousemove', this._onMouseMove.bind(this), true);
- this._cursorArea.addEventListener('mouseleave', this._hideCursor.bind(this), true);
-
- this._overviewGrid.setResizeEnabled(false);
- this._overviewGrid.addEventListener(UI.OverviewGrid.Events.WindowChanged, this._onWindowChanged, this);
- this._overviewGrid.setClickHandler(this._onClick.bind(this));
- this._overviewControls = [];
- this._markers = new Map();
-
- this._popoverHelper = new UI.PopoverHelper(this._cursorArea);
- this._popoverHelper.initializeCallbacks(
- this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this));
- this._popoverHelper.setTimeout(0);
-
- this._updateThrottler = new Common.Throttler(100);
-
- this._cursorEnabled = false;
- this._cursorPosition = 0;
- this._lastWidth = 0;
- }
-
- /**
- * @param {!Element} element
- * @param {!Event} event
- * @return {!Element|!AnchorBox|undefined}
- */
- _getPopoverAnchor(element, event) {
- return this._cursorArea;
- }
-
- /**
- * @param {!Element} anchor
- * @param {!UI.Popover} popover
- */
- _showPopover(anchor, popover) {
- this._buildPopoverContents().then(maybeShowPopover.bind(this));
- /**
- * @this {UI.TimelineOverviewPane}
- * @param {!DocumentFragment} fragment
- */
- function maybeShowPopover(fragment) {
- if (!fragment.firstChild)
- return;
- var content = new UI.TimelineOverviewPane.PopoverContents();
- this._popoverContents = content.contentElement.createChild('div');
- this._popoverContents.appendChild(fragment);
- this._popover = popover;
- popover.showView(content, this._cursorElement);
- }
- }
-
- _onHidePopover() {
- this._popover = null;
- this._popoverContents = null;
- }
-
- /**
- * @param {!Event} event
- */
- _onMouseMove(event) {
- if (!this._cursorEnabled)
- return;
- this._cursorPosition = event.offsetX + event.target.offsetLeft;
- this._cursorElement.style.left = this._cursorPosition + 'px';
- this._cursorElement.style.visibility = 'visible';
- if (!this._popover)
- return;
- this._buildPopoverContents().then(updatePopover.bind(this));
- this._popover.positionElement(this._cursorElement);
-
- /**
- * @param {!DocumentFragment} fragment
- * @this {UI.TimelineOverviewPane}
- */
- function updatePopover(fragment) {
- if (!this._popoverContents)
- return;
- this._popoverContents.removeChildren();
- this._popoverContents.appendChild(fragment);
- }
- }
-
- /**
- * @return {!Promise<!DocumentFragment>}
- */
- _buildPopoverContents() {
- var document = this.element.ownerDocument;
- var x = this._cursorPosition;
- var promises = this._overviewControls.map(control => control.popoverElementPromise(x));
- return Promise.all(promises).then(buildFragment);
-
- /**
- * @param {!Array<?Element>} elements
- * @return {!DocumentFragment}
- */
- function buildFragment(elements) {
- var fragment = document.createDocumentFragment();
- elements.remove(null);
- fragment.appendChildren.apply(fragment, elements);
- return fragment;
- }
- }
-
- _hideCursor() {
- this._cursorElement.style.visibility = 'hidden';
- }
-
- /**
- * @override
- */
- wasShown() {
- this._update();
- }
-
- /**
- * @override
- */
- willHide() {
- this._popoverHelper.hidePopover();
- }
-
- /**
- * @override
- */
- onResize() {
- var width = this.element.offsetWidth;
- if (width === this._lastWidth)
- return;
- this._lastWidth = width;
- this.scheduleUpdate();
- }
-
- /**
- * @param {!Array.<!UI.TimelineOverview>} overviewControls
- */
- setOverviewControls(overviewControls) {
- for (var i = 0; i < this._overviewControls.length; ++i)
- this._overviewControls[i].dispose();
-
- for (var i = 0; i < overviewControls.length; ++i) {
- overviewControls[i].setCalculator(this._overviewCalculator);
- overviewControls[i].show(this._overviewGrid.element);
- }
- this._overviewControls = overviewControls;
- this._update();
- }
-
- /**
- * @param {number} minimumBoundary
- * @param {number} maximumBoundary
- */
- setBounds(minimumBoundary, maximumBoundary) {
- this._overviewCalculator.setBounds(minimumBoundary, maximumBoundary);
- this._overviewGrid.setResizeEnabled(true);
- this._cursorEnabled = true;
- }
-
- scheduleUpdate() {
- this._updateThrottler.schedule(process.bind(this));
- /**
- * @this {UI.TimelineOverviewPane}
- * @return {!Promise.<undefined>}
- */
- function process() {
- this._update();
- return Promise.resolve();
- }
- }
-
- _update() {
- if (!this.isShowing())
- return;
- this._overviewCalculator.setDisplayWindow(this._overviewGrid.clientWidth());
- for (var i = 0; i < this._overviewControls.length; ++i)
- this._overviewControls[i].update();
- this._overviewGrid.updateDividers(this._overviewCalculator);
- this._updateMarkers();
- this._updateWindow();
- }
-
- /**
- * @param {!Map<number, !Element>} markers
- */
- setMarkers(markers) {
- this._markers = markers;
- this._updateMarkers();
- }
-
- _updateMarkers() {
- var filteredMarkers = new Map();
- for (var time of this._markers.keys()) {
- var marker = this._markers.get(time);
- var position = Math.round(this._overviewCalculator.computePosition(time));
- // Limit the number of markers to one per pixel.
- if (filteredMarkers.has(position))
- continue;
- filteredMarkers.set(position, marker);
- marker.style.left = position + 'px';
- }
- this._overviewGrid.removeEventDividers();
- this._overviewGrid.addEventDividers(filteredMarkers.valuesArray());
- }
-
- reset() {
- this._windowStartTime = 0;
- this._windowEndTime = Infinity;
- this._overviewCalculator.reset();
- this._overviewGrid.reset();
- this._overviewGrid.setResizeEnabled(false);
- this._overviewGrid.updateDividers(this._overviewCalculator);
- this._cursorEnabled = false;
- this._hideCursor();
- this._markers = new Map();
- for (var i = 0; i < this._overviewControls.length; ++i)
- this._overviewControls[i].reset();
- this._popoverHelper.hidePopover();
- this._update();
- }
-
- /**
- * @param {!Event} event
- * @return {boolean}
- */
- _onClick(event) {
- for (var overviewControl of this._overviewControls) {
- if (overviewControl.onClick(event))
- return true;
- }
- return false;
- }
-
- /**
- * @param {!Common.Event} event
- */
- _onWindowChanged(event) {
- if (this._muteOnWindowChanged)
- return;
- // Always use first control as a time converter.
- if (!this._overviewControls.length)
- return;
- var windowTimes =
- this._overviewControls[0].windowTimes(this._overviewGrid.windowLeft(), this._overviewGrid.windowRight());
- this._windowStartTime = windowTimes.startTime;
- this._windowEndTime = windowTimes.endTime;
- this.dispatchEventToListeners(UI.TimelineOverviewPane.Events.WindowChanged, windowTimes);
- }
-
- /**
- * @param {number} startTime
- * @param {number} endTime
- */
- requestWindowTimes(startTime, endTime) {
- if (startTime === this._windowStartTime && endTime === this._windowEndTime)
- return;
- this._windowStartTime = startTime;
- this._windowEndTime = endTime;
- this._updateWindow();
- this.dispatchEventToListeners(
- UI.TimelineOverviewPane.Events.WindowChanged, {startTime: startTime, endTime: endTime});
- }
-
- _updateWindow() {
- if (!this._overviewControls.length)
- return;
- var windowBoundaries = this._overviewControls[0].windowBoundaries(this._windowStartTime, this._windowEndTime);
- this._muteOnWindowChanged = true;
- this._overviewGrid.setWindow(windowBoundaries.left, windowBoundaries.right);
- this._muteOnWindowChanged = false;
- }
-};
-
-/** @enum {symbol} */
-UI.TimelineOverviewPane.Events = {
- WindowChanged: Symbol('WindowChanged')
-};
-
-/**
- * @unrestricted
- */
-UI.TimelineOverviewPane.PopoverContents = class extends UI.VBox {
- constructor() {
- super(true);
- this.contentElement.classList.add('timeline-overview-popover');
- }
-};
-
-/**
- * @implements {UI.TimelineGrid.Calculator}
- * @unrestricted
- */
-UI.TimelineOverviewCalculator = class {
- constructor() {
- this.reset();
- }
-
- /**
- * @override
- * @return {number}
- */
- paddingLeft() {
- return this._paddingLeft;
- }
-
- /**
- * @override
- * @param {number} time
- * @return {number}
- */
- computePosition(time) {
- return (time - this._minimumBoundary) / this.boundarySpan() * this._workingArea + this._paddingLeft;
- }
-
- /**
- * @param {number} position
- * @return {number}
- */
- positionToTime(position) {
- return (position - this._paddingLeft) / this._workingArea * this.boundarySpan() + this._minimumBoundary;
- }
-
- /**
- * @param {number} minimumBoundary
- * @param {number} maximumBoundary
- */
- setBounds(minimumBoundary, maximumBoundary) {
- this._minimumBoundary = minimumBoundary;
- this._maximumBoundary = maximumBoundary;
- }
-
- /**
- * @param {number} clientWidth
- * @param {number=} paddingLeft
- */
- setDisplayWindow(clientWidth, paddingLeft) {
- this._paddingLeft = paddingLeft || 0;
- this._workingArea = clientWidth - this._paddingLeft;
- }
-
- reset() {
- this.setBounds(0, 100);
- }
-
- /**
- * @override
- * @param {number} value
- * @param {number=} precision
- * @return {string}
- */
- formatValue(value, precision) {
- return Number.preciseMillisToString(value - this.zeroTime(), precision);
- }
-
- /**
- * @override
- * @return {number}
- */
- maximumBoundary() {
- return this._maximumBoundary;
- }
-
- /**
- * @override
- * @return {number}
- */
- minimumBoundary() {
- return this._minimumBoundary;
- }
-
- /**
- * @override
- * @return {number}
- */
- zeroTime() {
- return this._minimumBoundary;
- }
-
- /**
- * @override
- * @return {number}
- */
- boundarySpan() {
- return this._maximumBoundary - this._minimumBoundary;
- }
-};
-
-/**
- * @interface
- */
-UI.TimelineOverview = function() {};
-
-UI.TimelineOverview.prototype = {
- /**
- * @param {!Element} parentElement
- * @param {?Element=} insertBefore
- */
- show(parentElement, insertBefore) {},
-
- update() {},
-
- dispose() {},
-
- reset() {},
-
- /**
- * @param {number} x
- * @return {!Promise<?Element>}
- */
- popoverElementPromise(x) {},
-
- /**
- * @param {!Event} event
- * @return {boolean}
- */
- onClick(event) {},
-
- /**
- * @param {number} windowLeft
- * @param {number} windowRight
- * @return {!{startTime: number, endTime: number}}
- */
- windowTimes(windowLeft, windowRight) {},
-
- /**
- * @param {number} startTime
- * @param {number} endTime
- * @return {!{left: number, right: number}}
- */
- windowBoundaries(startTime, endTime) {},
-
- timelineStarted() {},
-
- timelineStopped() {},
-};
-
-/**
- * @implements {UI.TimelineOverview}
- * @unrestricted
- */
-UI.TimelineOverviewBase = class extends UI.VBox {
- constructor() {
- super();
- /** @type {?UI.TimelineOverviewCalculator} */
- this._calculator = null;
- this._canvas = this.element.createChild('canvas', 'fill');
- this._context = this._canvas.getContext('2d');
- }
-
- /** @return {number} */
- width() {
- return this._canvas.width;
- }
-
- /** @return {number} */
- height() {
- return this._canvas.height;
- }
-
- /** @return {!CanvasRenderingContext2D} */
- context() {
- return this._context;
- }
-
- /**
- * @protected
- * @return {?UI.TimelineOverviewCalculator}
- */
- calculator() {
- return this._calculator;
- }
-
- /**
- * @override
- */
- update() {
- this.resetCanvas();
- }
-
- /**
- * @override
- */
- dispose() {
- this.detach();
- }
-
- /**
- * @override
- */
- reset() {
- }
-
- /**
- * @override
- * @param {number} x
- * @return {!Promise<?Element>}
- */
- popoverElementPromise(x) {
- return Promise.resolve(/** @type {?Element} */ (null));
- }
-
- /**
- * @override
- */
- timelineStarted() {
- }
-
- /**
- * @override
- */
- timelineStopped() {
- }
-
- /**
- * @param {!UI.TimelineOverviewCalculator} calculator
- */
- setCalculator(calculator) {
- this._calculator = calculator;
- }
-
- /**
- * @override
- * @param {!Event} event
- * @return {boolean}
- */
- onClick(event) {
- return false;
- }
-
- /**
- * @override
- * @param {number} windowLeft
- * @param {number} windowRight
- * @return {!{startTime: number, endTime: number}}
- */
- windowTimes(windowLeft, windowRight) {
- var absoluteMin = this._calculator.minimumBoundary();
- var timeSpan = this._calculator.maximumBoundary() - absoluteMin;
- return {startTime: absoluteMin + timeSpan * windowLeft, endTime: absoluteMin + timeSpan * windowRight};
- }
-
- /**
- * @override
- * @param {number} startTime
- * @param {number} endTime
- * @return {!{left: number, right: number}}
- */
- windowBoundaries(startTime, endTime) {
- var absoluteMin = this._calculator.minimumBoundary();
- var timeSpan = this._calculator.maximumBoundary() - absoluteMin;
- var haveRecords = absoluteMin > 0;
- return {
- left: haveRecords && startTime ? Math.min((startTime - absoluteMin) / timeSpan, 1) : 0,
- right: haveRecords && endTime < Infinity ? (endTime - absoluteMin) / timeSpan : 1
- };
- }
-
- resetCanvas() {
- this._canvas.width = this.element.clientWidth * window.devicePixelRatio;
- this._canvas.height = this.element.clientHeight * window.devicePixelRatio;
- }
-};

Powered by Google App Engine
This is Rietveld 408576698