summaryrefslogtreecommitdiffstats
path: root/WebCore/inspector/front-end/ResourcesPanel.js
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/inspector/front-end/ResourcesPanel.js')
-rw-r--r--WebCore/inspector/front-end/ResourcesPanel.js62
1 files changed, 56 insertions, 6 deletions
diff --git a/WebCore/inspector/front-end/ResourcesPanel.js b/WebCore/inspector/front-end/ResourcesPanel.js
index ef6aa26..8af1505 100644
--- a/WebCore/inspector/front-end/ResourcesPanel.js
+++ b/WebCore/inspector/front-end/ResourcesPanel.js
@@ -29,9 +29,7 @@
WebInspector.ResourcesPanel = function()
{
- WebInspector.AbstractTimelinePanel.call(this);
-
- this.element.addStyleClass("resources");
+ WebInspector.AbstractTimelinePanel.call(this, "resources");
this._createPanelEnabler();
@@ -43,6 +41,7 @@ WebInspector.ResourcesPanel = function()
this.createInterface();
this._createStatusbarButtons();
+ this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this), true);
this.reset();
this.filter(this.filterAllElement, false);
@@ -51,8 +50,6 @@ WebInspector.ResourcesPanel = function()
}
WebInspector.ResourcesPanel.prototype = {
- toolbarItemClass: "resources",
-
get toolbarItemLabel()
{
return WebInspector.UIString("Resources");
@@ -319,6 +316,7 @@ WebInspector.ResourcesPanel.prototype = {
{
this._resourceTrackingEnabled = true;
this.reset();
+ this.restoreSidebarWidth();
},
resourceTrackingWasDisabled: function()
@@ -329,6 +327,7 @@ WebInspector.ResourcesPanel.prototype = {
reset: function()
{
+ this._popoverHelper.hidePopup();
this.closeVisibleResource();
delete this.currentQuery;
@@ -477,6 +476,8 @@ WebInspector.ResourcesPanel.prototype = {
if (!resource)
return;
+ this._popoverHelper.hidePopup();
+
this.containerElement.addStyleClass("viewing-resource");
if (this.visibleResource && this.visibleResource._resourcesView)
@@ -735,6 +736,52 @@ WebInspector.ResourcesPanel.prototype = {
elementsToRestoreScrollPositionsFor: function()
{
return [ this.containerElement ];
+ },
+
+ _getPopoverAnchor: function(element)
+ {
+ var anchor = element.enclosingNodeOrSelfWithClass("resources-graph-bar") || element.enclosingNodeOrSelfWithClass("resources-graph-label");
+ if (!anchor)
+ return null;
+ var resource = anchor.parentElement.resource;
+ return resource && resource.timing ? anchor : null;
+ },
+
+ _showPopover: function(anchor)
+ {
+ var tableElement = document.createElement("table");
+ var resource = anchor.parentElement.resource;
+ var data = [WebInspector.UIString("Blocking"), resource.timing.requestTime === 0 ? "?" : Number.secondsToString(Math.max(resource.timing.requestTime - resource.startTime, 0)),
+ WebInspector.UIString("Proxy"), resource.timing.proxyDuration == -1 ? WebInspector.UIString("(none)") : Number.secondsToString(resource.timing.proxyDuration),
+ WebInspector.UIString("DNS Lookup"), resource.timing.dnsDuration == -1 ? WebInspector.UIString("(reused)") : Number.secondsToString(resource.timing.dnsDuration),
+ WebInspector.UIString("Connecting"), resource.timing.connectDuration == -1 ? WebInspector.UIString("(reused)") : Number.secondsToString(resource.timing.connectDuration),
+ WebInspector.UIString("Sending"), Number.secondsToString(resource.timing.sendDuration),
+ WebInspector.UIString("Waiting"), Number.secondsToString(resource.timing.waitDuration),
+ WebInspector.UIString("Receiving"), Number.secondsToString(resource.endTime - resource.responseReceivedTime)];
+
+ for (var i = 0; i < data.length; i += 2) {
+ var tr = document.createElement("tr");
+ tableElement.appendChild(tr);
+
+ var td = document.createElement("td");
+ td.textContent = data[i];
+ tr.appendChild(td);
+
+ td = document.createElement("td");
+ td.align = "right";
+ td.textContent = data[i + 1];
+ tr.appendChild(td);
+ }
+
+ var popover = new WebInspector.Popover(tableElement);
+ popover.show(anchor);
+ return popover;
+ },
+
+ hide: function()
+ {
+ WebInspector.Panel.prototype.hide.call(this);
+ this._popoverHelper.hidePopup();
}
}
@@ -858,6 +905,9 @@ WebInspector.ResourceTimeCalculator.prototype = {
else
var leftLabel = rightLabel;
+ if (resource.timing)
+ return {left: leftLabel, right: rightLabel};
+
if (hasLatency && rightLabel) {
var total = this.formatValue(resource.duration);
var tooltip = WebInspector.UIString("%s latency, %s download (%s total)", leftLabel, rightLabel, total);
@@ -868,7 +918,6 @@ WebInspector.ResourceTimeCalculator.prototype = {
if (resource.cached)
tooltip = WebInspector.UIString("%s (from cache)", tooltip);
-
return {left: leftLabel, right: rightLabel, tooltip: tooltip};
},
@@ -1208,6 +1257,7 @@ WebInspector.ResourceGraph = function(resource)
this._barAreaElement = document.createElement("div");
this._barAreaElement.className = "resources-graph-bar-area hidden";
+ this._barAreaElement.resource = resource;
this._graphElement.appendChild(this._barAreaElement);
this._barLeftElement = document.createElement("div");