summaryrefslogtreecommitdiff
path: root/src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js')
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js154
1 files changed, 60 insertions, 94 deletions
diff --git a/src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js b/src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js
index 75e4062898..cfec9dafab 100644
--- a/src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js
+++ b/src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js
@@ -57,10 +57,13 @@ WebInspector.AbstractTimelinePanel.prototype = {
// Should be implemented by the concrete subclasses.
},
- createInterface: function()
+ get items()
{
- this._createFilterPanel();
+ return this._items;
+ },
+ createInterface: function()
+ {
this.containerElement = document.createElement("div");
this.containerElement.id = "resources-container";
this.containerElement.addEventListener("scroll", this._updateDividersLabelBarPosition.bind(this), false);
@@ -70,10 +73,20 @@ WebInspector.AbstractTimelinePanel.prototype = {
this.sidebarElement.id = "resources-sidebar";
this.populateSidebar();
- this._createGraph();
+ this._containerContentElement = document.createElement("div");
+ this._containerContentElement.id = "resources-container-content";
+ this.containerElement.appendChild(this._containerContentElement);
+
+ this.summaryBar = new WebInspector.SummaryBar(this.categories);
+ this.summaryBar.element.id = "resources-summary";
+ this._containerContentElement.appendChild(this.summaryBar.element);
+
+ this._timelineGrid = new WebInspector.TimelineGrid();
+ this._containerContentElement.appendChild(this._timelineGrid.element);
+ this.itemsGraphsElement = this._timelineGrid.itemsGraphsElement;
},
- _createFilterPanel: function()
+ createFilterPanel: function()
{
this.filterBarElement = document.createElement("div");
this.filterBarElement.id = "resources-filter";
@@ -108,14 +121,14 @@ WebInspector.AbstractTimelinePanel.prototype = {
createFilterElement.call(this, category);
},
- _showCategory: function(category)
+ showCategory: function(category)
{
var filterClass = "filter-" + category.toLowerCase();
this.itemsGraphsElement.addStyleClass(filterClass);
this.itemsTreeElement.childrenListElement.addStyleClass(filterClass);
},
- _hideCategory: function(category)
+ hideCategory: function(category)
{
var filterClass = "filter-" + category.toLowerCase();
this.itemsGraphsElement.removeStyleClass(filterClass);
@@ -132,7 +145,7 @@ WebInspector.AbstractTimelinePanel.prototype = {
continue;
child.removeStyleClass("selected");
- this._hideCategory(child.category);
+ this.hideCategory(child.category);
}
}
@@ -148,7 +161,7 @@ WebInspector.AbstractTimelinePanel.prototype = {
// Something other than All is being selected, so we want to unselect All.
if (this.filterAllElement.hasStyleClass("selected")) {
this.filterAllElement.removeStyleClass("selected");
- this._hideCategory("all");
+ this.hideCategory("all");
}
}
@@ -158,7 +171,7 @@ WebInspector.AbstractTimelinePanel.prototype = {
unselectAll.call(this);
target.addStyleClass("selected");
- this._showCategory(target.category);
+ this.showCategory(target.category);
return;
}
@@ -166,18 +179,18 @@ WebInspector.AbstractTimelinePanel.prototype = {
// If selectMultiple is turned on, and we were selected, we just
// want to unselect ourselves.
target.removeStyleClass("selected");
- this._hideCategory(target.category);
+ this.hideCategory(target.category);
} else {
// If selectMultiple is turned on, and we weren't selected, we just
// want to select ourselves.
target.addStyleClass("selected");
- this._showCategory(target.category);
+ this.showCategory(target.category);
}
},
_updateFilter: function(e)
{
- var isMac = InspectorController.platform().indexOf("mac-") === 0;
+ var isMac = WebInspector.isMac();
var selectMultiple = false;
if (isMac && e.metaKey && !e.ctrlKey && !e.altKey && !e.shiftKey)
selectMultiple = true;
@@ -191,83 +204,21 @@ WebInspector.AbstractTimelinePanel.prototype = {
this.containerElement.scrollTop = 0;
},
- _createGraph: function()
- {
- this._containerContentElement = document.createElement("div");
- this._containerContentElement.id = "resources-container-content";
- this.containerElement.appendChild(this._containerContentElement);
-
- this.summaryBar = new WebInspector.SummaryBar(this.categories);
- this.summaryBar.element.id = "resources-summary";
- this._containerContentElement.appendChild(this.summaryBar.element);
-
- this.itemsGraphsElement = document.createElement("div");
- this.itemsGraphsElement.id = "resources-graphs";
- this._containerContentElement.appendChild(this.itemsGraphsElement);
-
- this.dividersElement = document.createElement("div");
- this.dividersElement.id = "resources-dividers";
- this._containerContentElement.appendChild(this.dividersElement);
-
- this.eventDividersElement = document.createElement("div");
- this.eventDividersElement.id = "resources-event-dividers";
- this._containerContentElement.appendChild(this.eventDividersElement);
-
- this.dividersLabelBarElement = document.createElement("div");
- this.dividersLabelBarElement.id = "resources-dividers-label-bar";
- this._containerContentElement.appendChild(this.dividersLabelBarElement);
- },
-
updateGraphDividersIfNeeded: function(force)
{
if (!this.visible) {
this.needsRefresh = true;
return false;
}
-
- if (document.body.offsetWidth <= 0) {
- // The stylesheet hasn't loaded yet or the window is closed,
- // so we can't calculate what is need. Return early.
- return false;
- }
-
- var dividerCount = Math.round(this.dividersElement.offsetWidth / 64);
- var slice = this.calculator.boundarySpan / dividerCount;
- if (!force && this._currentDividerSlice === slice)
- return false;
-
- this._currentDividerSlice = slice;
-
- this.dividersElement.removeChildren();
- this.eventDividersElement.removeChildren();
- this.dividersLabelBarElement.removeChildren();
-
- for (var i = 1; i <= dividerCount; ++i) {
- var divider = document.createElement("div");
- divider.className = "resources-divider";
- if (i === dividerCount)
- divider.addStyleClass("last");
- divider.style.left = ((i / dividerCount) * 100) + "%";
-
- this.dividersElement.appendChild(divider.cloneNode());
-
- var label = document.createElement("div");
- label.className = "resources-divider-label";
- if (!isNaN(slice))
- label.textContent = this.calculator.formatValue(slice * i);
- divider.appendChild(label);
-
- this.dividersLabelBarElement.appendChild(divider);
- }
+ return this._timelineGrid.updateDividers(force, this.calculator);
},
_updateDividersLabelBarPosition: function()
{
- var scrollTop = this.containerElement.scrollTop;
- var dividersTop = (scrollTop < this.summaryBar.element.offsetHeight ? this.summaryBar.element.offsetHeight : scrollTop);
- this.dividersElement.style.top = scrollTop + "px";
- this.eventDividersElement.style.top = scrollTop + "px";
- this.dividersLabelBarElement.style.top = dividersTop + "px";
+ const scrollTop = this.containerElement.scrollTop;
+ const offsetHeight = this.summaryBar.element.offsetHeight;
+ const dividersTop = (scrollTop < offsetHeight ? offsetHeight : scrollTop);
+ this._timelineGrid.setScrollAndDividerTop(scrollTop, dividersTop);
},
get needsRefresh()
@@ -309,13 +260,20 @@ WebInspector.AbstractTimelinePanel.prototype = {
resize: function()
{
+ WebInspector.Panel.prototype.resize.call(this);
+
this.updateGraphDividersIfNeeded();
},
updateMainViewWidth: function(width)
{
this._containerContentElement.style.left = width + "px";
- this.updateGraphDividersIfNeeded();
+ this.resize();
+ },
+
+ invalidateAllItems: function()
+ {
+ this._staleItems = this._items.slice();
},
refresh: function()
@@ -323,21 +281,22 @@ WebInspector.AbstractTimelinePanel.prototype = {
this.needsRefresh = false;
var staleItemsLength = this._staleItems.length;
+
var boundariesChanged = false;
for (var i = 0; i < staleItemsLength; ++i) {
var item = this._staleItems[i];
- if (!item._itemTreeElement) {
+ if (!item._itemsTreeElement) {
// Create the timeline tree element and graph.
- item._itemTreeElement = this.createItemTreeElement(item);
- item._itemTreeElement._itemGraph = this.createItemGraph(item);
+ item._itemsTreeElement = this.createItemTreeElement(item);
+ item._itemsTreeElement._itemGraph = this.createItemGraph(item);
- this.itemsTreeElement.appendChild(item._itemTreeElement);
- this.itemsGraphsElement.appendChild(item._itemTreeElement._itemGraph.graphElement);
+ this.itemsTreeElement.appendChild(item._itemsTreeElement);
+ this.itemsGraphsElement.appendChild(item._itemsTreeElement._itemGraph.graphElement);
}
- if (item._itemTreeElement.refresh)
- item._itemTreeElement.refresh();
+ if (item._itemsTreeElement.refresh)
+ item._itemsTreeElement.refresh();
if (this.calculator.updateBoundaries(item))
boundariesChanged = true;
@@ -345,12 +304,14 @@ WebInspector.AbstractTimelinePanel.prototype = {
if (boundariesChanged) {
// The boundaries changed, so all item graphs are stale.
- this._staleItems = this._items;
+ this._staleItems = this._items.slice();
staleItemsLength = this._staleItems.length;
}
+
+ const isBarOpaqueAtLeft = this.sidebarTree.selectedTreeElement && this.sidebarTree.selectedTreeElement.isBarOpaqueAtLeft;
for (var i = 0; i < staleItemsLength; ++i)
- this._staleItems[i]._itemTreeElement._itemGraph.refresh(this.calculator);
+ this._staleItems[i]._itemsTreeElement._itemGraph.refresh(this.calculator, isBarOpaqueAtLeft);
this._staleItems = [];
@@ -394,7 +355,7 @@ WebInspector.AbstractTimelinePanel.prototype = {
this._calculator = x;
this._calculator.reset();
- this._staleItems = this._items;
+ this._staleItems = this._items.slice();
this.refresh();
},
@@ -408,12 +369,12 @@ WebInspector.AbstractTimelinePanel.prototype = {
{
this._items.remove(item, true);
- if (item._itemTreeElement) {
- this.itemsTreeElement.removeChild(resource._itemTreeElement);
- this.itemsGraphsElement.removeChild(resource._itemTreeElement._itemGraph.graphElement);
+ if (item._itemsTreeElement) {
+ this.itemsTreeElement.removeChild(item._itemsTreeElement);
+ this.itemsGraphsElement.removeChild(item._itemsTreeElement._itemGraph.graphElement);
}
- delete item._itemTreeElement;
+ delete item._itemsTreeElement;
this.adjustScrollPosition();
},
@@ -458,6 +419,11 @@ WebInspector.AbstractTimelinePanel.prototype = {
// Prevent the container from being scrolled off the end.
if ((this.containerElement.scrollTop + this.containerElement.offsetHeight) > this.sidebarElement.offsetHeight)
this.containerElement.scrollTop = (this.sidebarElement.offsetHeight - this.containerElement.offsetHeight);
+ },
+
+ addEventDivider: function(divider)
+ {
+ this._timelineGrid.addEventDivider(divider);
}
}