blob: 232aa36efe307b9c2a378073a1ee8702bf2f5408 [file] [log] [blame]
/*
* Copyright (C) 2014 Apple 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:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
*/
WebInspector.TimelineOverviewGraph = function(recording)
{
WebInspector.Object.call(this);
this.element = document.createElement("div");
this.element.classList.add(WebInspector.TimelineOverviewGraph.StyleClassName);
this._zeroTime = 0;
this._startTime = 0;
this._endTime = 5;
this._currentTime = 0;
};
WebInspector.TimelineOverviewGraph.StyleClassName = "timeline-overview-graph";
WebInspector.TimelineOverviewGraph.prototype = {
constructor: WebInspector.TimelineOverviewGraph,
__proto__: WebInspector.Object.prototype,
// Public
get zeroTime()
{
return this._zeroTime;
},
set zeroTime(x)
{
if (this._zeroTime === x)
return;
this._zeroTime = x || 0;
this.needsLayout();
},
get startTime()
{
return this._startTime;
},
set startTime(x)
{
if (this._startTime === x)
return;
this._startTime = x || 0;
this.needsLayout();
},
get endTime()
{
return this._endTime;
},
set endTime(x)
{
if (this._endTime === x)
return;
this._endTime = x || 0;
this.needsLayout();
},
get currentTime()
{
return this._currentTime;
},
set currentTime(x)
{
if (this._currentTime === x)
return;
var oldCurrentTime = this._currentTime;
this._currentTime = x || 0;
if ((this._startTime <= oldCurrentTime && oldCurrentTime <= this._endTime) || (this._startTime <= this._currentTime && this._currentTime <= this._endTime))
this.needsLayout();
},
reset: function()
{
// Implemented by sub-classes if needed.
},
updateLayout: function()
{
if (this._scheduledLayoutUpdateIdentifier) {
cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);
delete this._scheduledLayoutUpdateIdentifier;
}
// Implemented by sub-classes if needed.
},
updateLayoutIfNeeded: function()
{
if (!this._scheduledLayoutUpdateIdentifier)
return;
this.updateLayout();
},
// Protected
needsLayout: function()
{
if (this._scheduledLayoutUpdateIdentifier)
return;
this._scheduledLayoutUpdateIdentifier = requestAnimationFrame(this.updateLayout.bind(this));
}
};