diff options
author | Shimeng (Simon) Wang <swang@google.com> | 2010-12-07 17:22:45 -0800 |
---|---|---|
committer | Shimeng (Simon) Wang <swang@google.com> | 2010-12-22 14:15:40 -0800 |
commit | 4576aa36e9a9671459299c7963ac95aa94beaea9 (patch) | |
tree | 3863574e050f168c0126ecb47c83319fab0972d8 /WebCore/inspector/front-end/NetworkPanel.js | |
parent | 55323ac613cc31553107b68603cb627264d22bb0 (diff) | |
download | external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.zip external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.tar.gz external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.tar.bz2 |
Merge WebKit at r73109: Initial merge by git.
Change-Id: I61f1a66d9642e3d8405d3ac6ccab2a53421c75d8
Diffstat (limited to 'WebCore/inspector/front-end/NetworkPanel.js')
-rw-r--r-- | WebCore/inspector/front-end/NetworkPanel.js | 184 |
1 files changed, 42 insertions, 142 deletions
diff --git a/WebCore/inspector/front-end/NetworkPanel.js b/WebCore/inspector/front-end/NetworkPanel.js index a695167..8f3cfd6 100644 --- a/WebCore/inspector/front-end/NetworkPanel.js +++ b/WebCore/inspector/front-end/NetworkPanel.js @@ -1,7 +1,7 @@ /* * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> - * Copyright (C) 2009, 2010 Google Inc. All rights reserved. + * Copyright (C) 2010 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -72,6 +72,8 @@ WebInspector.NetworkPanel = function() this._setLargerResources(WebInspector.settings.resourcesLargeRows); this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this), true); + // Enable faster hint. + this._popoverHelper.setTimeout(100); this.calculator = new WebInspector.NetworkTransferTimeCalculator(); this._filter(this._filterAllElement, false); @@ -641,27 +643,11 @@ WebInspector.NetworkPanel.prototype = { show: function() { WebInspector.Panel.prototype.show.call(this); - this._refreshIfNeeded(); - var visibleView = this.visibleView; - if (this.visibleResource) { - this.visibleView.headersVisible = true; + if (this.visibleView) this.visibleView.show(this._viewsContainerElement); - } else if (visibleView) - visibleView.show(); - // Hide any views that are visible that are not this panel's current visible view. - // This can happen when a ResourceView is visible in the Scripts panel then switched - // to the this panel. - var resourcesLength = this._resources.length; - for (var i = 0; i < resourcesLength; ++i) { - var resource = this._resources[i]; - var view = resource._resourcesView; - if (!view || view === visibleView) - continue; - view.visible = false; - } this._dataGrid.updateWidths(); this._positionSummaryBar(); }, @@ -696,13 +682,6 @@ WebInspector.NetworkPanel.prototype = { WebInspector.Panel.prototype.performSearch.call(this, query); }, - get visibleView() - { - if (this.visibleResource) - return this.visibleResource._resourcesView; - return null; - }, - refresh: function() { this._needsRefresh = false; @@ -813,28 +792,20 @@ WebInspector.NetworkPanel.prototype = { this._staleResources.push(resource); this._scheduleRefresh(); - - if (!resource || !resource._resourcesView) + + if (!resource) return; - if (WebInspector.ResourceManager.resourceViewTypeMatchesResource(resource, resource._resourcesView)) + var oldView = WebInspector.ResourceManager.existingResourceViewForResource(resource); + if (!oldView) return; - var newView = WebInspector.ResourceManager.createResourceView(resource); - - var oldView = resource._resourcesView; - var oldViewParentNode = oldView.visible ? oldView.element.parentNode : null; - resource._resourcesView.detach(); - delete resource._resourcesView; - - resource._resourcesView = newView; - - newView.headersVisible = oldView.headersVisible; - - if (oldViewParentNode) - newView.show(oldViewParentNode); + if (WebInspector.ResourceManager.resourceViewTypeMatchesResource(resource)) + return; - WebInspector.panels.scripts.viewRecreated(oldView, newView); + var newView = WebInspector.ResourceManager.recreateResourceView(resource); + if (this.visibleView === oldView) + this.visibleView = newView; }, canShowSourceLine: function(url, line) @@ -856,22 +827,15 @@ WebInspector.NetworkPanel.prototype = { this._toggleViewingResourceMode(); - if (this.visibleResource && this.visibleResource._resourcesView) - this.visibleResource._resourcesView.hide(); + if (this.visibleView) { + this.visibleView.detach(); + delete this.visibleView; + } - var view = WebInspector.ResourceManager.resourceViewForResource(resource); - view.headersVisible = true; + var view = new WebInspector.NetworkItemView(resource); view.show(this._viewsContainerElement); + this.visibleView = view; - if (line) { - view.selectContentTab(); - if (view.revealLine) - view.revealLine(line); - if (view.highlightLine) - view.highlightLine(line); - } - - this.visibleResource = resource; this.updateSidebarWidth(); }, @@ -879,9 +843,10 @@ WebInspector.NetworkPanel.prototype = { { this.element.removeStyleClass("viewing-resource"); - if (this.visibleResource && this.visibleResource._resourcesView) - this.visibleResource._resourcesView.hide(); - delete this.visibleResource; + if (this.visibleView) { + this.visibleView.detach(); + delete this.visibleView; + } if (this._lastSelectedGraphTreeElement) this._lastSelectedGraphTreeElement.select(true); @@ -923,87 +888,8 @@ WebInspector.NetworkPanel.prototype = { _showPopover: function(anchor) { - var tableElement = document.createElement("table"); var resource = anchor.parentElement.resource; - var rows = []; - - function addRow(title, start, end, color) - { - var row = {}; - row.title = title; - row.start = start; - row.end = end; - rows.push(row); - } - - if (resource.timing.proxyStart !== -1) - addRow(WebInspector.UIString("Proxy"), resource.timing.proxyStart, resource.timing.proxyEnd); - - if (resource.timing.dnsStart !== -1) - addRow(WebInspector.UIString("DNS Lookup"), resource.timing.dnsStart, resource.timing.dnsEnd); - - if (resource.timing.connectStart !== -1) { - if (resource.connectionReused) - addRow(WebInspector.UIString("Blocking"), resource.timing.connectStart, resource.timing.connectEnd); - else { - var connectStart = resource.timing.connectStart; - // Connection includes DNS, subtract it here. - if (resource.timing.dnsStart !== -1) - connectStart += resource.timing.dnsEnd - resource.timing.dnsStart; - addRow(WebInspector.UIString("Connecting"), connectStart, resource.timing.connectEnd); - } - } - - if (resource.timing.sslStart !== -1) - addRow(WebInspector.UIString("SSL"), resource.timing.sslStart, resource.timing.sslEnd); - - var sendStart = resource.timing.sendStart; - if (resource.timing.sslStart !== -1) - sendStart += resource.timing.sslEnd - resource.timing.sslStart; - - addRow(WebInspector.UIString("Sending"), resource.timing.sendStart, resource.timing.sendEnd); - addRow(WebInspector.UIString("Waiting"), resource.timing.sendEnd, resource.timing.receiveHeadersEnd); - addRow(WebInspector.UIString("Receiving"), (resource.responseReceivedTime - resource.timing.requestTime) * 1000, (resource.endTime - resource.timing.requestTime) * 1000); - - const chartWidth = 200; - var total = (resource.endTime - resource.timing.requestTime) * 1000; - var scale = chartWidth / total; - - for (var i = 0; i < rows.length; ++i) { - var tr = document.createElement("tr"); - tableElement.appendChild(tr); - - var td = document.createElement("td"); - td.textContent = rows[i].title; - tr.appendChild(td); - - td = document.createElement("td"); - td.width = chartWidth + "px"; - - var row = document.createElement("div"); - row.className = "network-timing-row"; - td.appendChild(row); - - var bar = document.createElement("span"); - bar.className = "network-timing-bar"; - bar.style.left = scale * rows[i].start + "px"; - bar.style.right = scale * (total - rows[i].end) + "px"; - bar.style.backgroundColor = rows[i].color; - bar.textContent = "\u200B"; // Important for 0-time items to have 0 width. - row.appendChild(bar); - - var title = document.createElement("span"); - title.className = "network-timing-bar-title"; - if (total - rows[i].end < rows[i].start) - title.style.right = (scale * (total - rows[i].end) + 3) + "px"; - else - title.style.left = (scale * rows[i].start + 3) + "px"; - title.textContent = Number.millisToString(rows[i].end - rows[i].start); - row.appendChild(title); - - tr.appendChild(td); - } - + var tableElement = WebInspector.ResourceTimingView.createTimingTable(resource); var popover = new WebInspector.Popover(tableElement); popover.show(anchor); return popover; @@ -1019,6 +905,8 @@ WebInspector.NetworkPanel.prototype = { this.sidebarElement.style.right = 0; this.sidebarElement.style.removeProperty("width"); this._summaryBarElement.style.removeProperty("width"); + if (this._dataGrid.selectedNode) + this._dataGrid.selectedNode.selected = false; } if (this._briefGrid) { @@ -1388,16 +1276,19 @@ WebInspector.NetworkDataGridNode.prototype = { this._sizeCell = this._createDivInTD("size"); this._timeCell = this._createDivInTD("time"); this._createTimelineCell(); + this._nameCell.addEventListener("click", this.select.bind(this), false); }, select: function() { - WebInspector.DataGridNode.prototype.select.apply(this, arguments); this._panel._showResource(this._resource); + WebInspector.DataGridNode.prototype.select.apply(this, arguments); }, get selectable() { + if (!this._panel._viewingResourceMode) + return false; if (!this._panel._hiddenCategories.all) return true; if (this._panel._hiddenCategories[this._resource.category.name]) @@ -1419,7 +1310,6 @@ WebInspector.NetworkDataGridNode.prototype = { { this._graphElement = document.createElement("div"); this._graphElement.className = "network-graph-side"; - this._graphElement.addEventListener("mouseover", this._refreshLabelPositions.bind(this), false); this._barAreaElement = document.createElement("div"); // this._barAreaElement.className = "network-graph-bar-area hidden"; @@ -1435,6 +1325,7 @@ WebInspector.NetworkDataGridNode.prototype = { this._barRightElement.className = "network-graph-bar"; this._barAreaElement.appendChild(this._barRightElement); + this._labelLeftElement = document.createElement("div"); this._labelLeftElement.className = "network-graph-label waiting"; this._barAreaElement.appendChild(this._labelLeftElement); @@ -1443,6 +1334,8 @@ WebInspector.NetworkDataGridNode.prototype = { this._labelRightElement.className = "network-graph-label"; this._barAreaElement.appendChild(this._labelRightElement); + this._graphElement.addEventListener("mouseover", this._refreshLabelPositions.bind(this), false); + this._timelineCell = document.createElement("td"); this._timelineCell.className = "timeline-column"; this._element.appendChild(this._timelineCell); @@ -1529,6 +1422,14 @@ WebInspector.NetworkDataGridNode.prototype = { { this._statusCell.removeChildren(); + var fromCache = this._resource.cached; + if (fromCache) { + this._statusCell.textContent = WebInspector.UIString("(from cache)"); + this._statusCell.addStyleClass("network-dim-cell"); + return; + } + + this._statusCell.removeStyleClass("network-dim-cell"); if (this._resource.statusCode) { this._statusCell.appendChild(document.createTextNode(this._resource.statusCode)); this._statusCell.removeStyleClass("network-dim-cell"); @@ -1577,8 +1478,6 @@ WebInspector.NetworkDataGridNode.prototype = { refreshGraph: function(calculator) { var percentages = calculator.computeBarGraphPercentages(this._resource); - var labels = calculator.computeBarGraphLabels(this._resource); - this._percentages = percentages; this._barAreaElement.removeStyleClass("hidden"); @@ -1594,6 +1493,7 @@ WebInspector.NetworkDataGridNode.prototype = { this._barLeftElement.style.setProperty("right", (100 - percentages.end) + "%"); this._barRightElement.style.setProperty("left", percentages.middle + "%"); + var labels = calculator.computeBarGraphLabels(this._resource); this._labelLeftElement.textContent = labels.left; this._labelRightElement.textContent = labels.right; |