diff options
Diffstat (limited to 'WebCore/inspector/front-end/ResourcesPanel.js')
-rw-r--r-- | WebCore/inspector/front-end/ResourcesPanel.js | 62 |
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"); |