Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Unified Diff: third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js

Issue 2948173005: har import
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js
diff --git a/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js b/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js
index 55d223b3a10a3d7e79c488d5f28344849cf474bd..b90cbda4bb44da7db4e8d0109ab1e6bd86a0dee4 100644
--- a/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js
+++ b/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js
@@ -44,6 +44,154 @@ NetworkLog.NetworkLog = class extends Common.Object {
SDK.targetManager.observeModels(SDK.NetworkManager, this);
}
+ /**
+ * @param {!Object} harData
+ */
+ loadHAR(harData) {
+ var entries = harData.log.entries;
+
+ var pages = new Map();
+ for (var page of harData.log.pages)
+ pages.set(page.id, page);
+
+ entries.sort((a, b) => new Date(a.startedDateTime).getTime() - new Date(b.startedDateTime).getTime());
+ var pageLoads = new Map();
+ var requests = [];
+ for (var i = 0; i < entries.length; i++) {
+ var entry = entries[i];
+ var pageLoad = pageLoads.get(entry.pageref);
+ var request = new SDK.NetworkRequest("har-" + i, entry.request.url, pageLoad ? pageLoad.inspectedURL : entry.request.url.asParsedURL(), 0, 0, null);
+ if (!pageLoad) {
+ var page = pages.get(entry.pageref);
+ if (page) {
+ pageLoad = new NetworkLog.PageLoad(request, entry.request.url.asParsedURL());
+ pageLoad.startTime = page.startedDateTime * 1000;
+ pageLoad.contentLoadTime = page.pageTimings.onContentLoad * 1000;
+ pageLoad.loadTime = page.pageTimings.onLoad * 1000;
+ pageLoads.set(entry.pageref, pageLoad);
+ }
+ }
+
+ var baseTime = (new Date(entry.startedDateTime).getTime()) / 1000;
+ request.setIssueTime(baseTime, baseTime);
+ //FIX THIS.
+ if (pageLoad.mainRequest !== request)
+ request.setResourceType(SDK.NetworkRequest.resourceTypeForMimeType(entry.response.content.mimeType));
+ else
+ request.setResourceType(Common.resourceTypes.Document);
+
+ var lastEntry = entry.timings.blocked;
+
+ var dnsStart = -1;
+ var dnsEnd = -1;
+ if (entry.timings.dns >= 0) {
+ dnsStart = lastEntry;
+ dnsEnd = dnsStart + entry.timings.dns;
+ lastEntry = dnsEnd;
+ }
+
+ var connectStart = -1;
+ var connectEnd = -1;
+ if (entry.timings.connect >= 0) {
+ connectStart = lastEntry;
+ connectEnd = lastEntry + entry.timings.connect;
+ lastEntry = connectEnd;
+ }
+
+ var sslStart = -1;
+ var sslEnd = -1;
+ if (entry.timings.ssl >= 0) {
+ sslStart = lastEntry;
+ sslEnd = lastEntry + entry.timings.ssl;
+ lastEntry = sslEnd;
+ }
+
+ var sendStart = -1;
+ var sendEnd = -1;
+ if (entry.timings.send >= 0) {
+ sendStart = lastEntry;
+ sendEnd = lastEntry + entry.timings.send;
+ lastEntry = sendEnd;
+ }
+
+ var receiveHeadersEnd = sendEnd + entry.timings.wait;
+
+ request.timing = {
+ requestTime: baseTime,
+ // proxyStart: -1,
+ // proxyEnd: -1,
+ dnsStart: dnsStart,
+ dnsEnd: dnsEnd,
+ connectStart: connectStart,
+ connectEnd: connectEnd,
+ sslStart: sslStart,
+ sslEnd: sslEnd,
+ // workerStart: -1,
+ // workerReady: -1,
+ sendStart: sendStart,
+ sendEnd: sendEnd,
+ // pushStart: -1,
+ // pushEnd: -1,
+ receiveHeadersEnd: receiveHeadersEnd,
+ };
+
+ var timings = Object.values(entry.timings);
+
+ var time = entry.time || timings.reduce((sum, time) => time > 0 ? time : 0, 0);
+ request.endTime = baseTime + (time / 1000);
+
+ //request.responseReceivedTime = (baseTime + receiveHeadersEnd);
+
+ request.resourceSize = (entry.response.content.size) || (entry.response.headersSize + entry.response.bodySize);
+ request.increaseTransferSize(entry.response._transferSize || (entry.response.headersSize + entry.response.bodySize));
+ if (entry.response.content.mimeType !== 'x-unknown')
+ request.mimeType = entry.response.content.mimeType;
+ request.setRequestHeaders(entry.request.headers);
+ request.setRequestHeadersText(headersArrayToString(entry.request.headers));
+
+ if (entry.request.postData)
+ request.requestFormData = entry.request.postData.text;
+
+ request.responseHeaders = entry.response.headers;
+ request.responseHeadersText = headersArrayToString(entry.response.headers);
+
+ request._contentRequested = true;
+ if (entry.response.content.encoding === 'base64')
+ request._contentEncoded = true;
+ request._content = entry.response.content.text;
+
+ request.statusCode = entry.response.status;
+ request.statusText = entry.response.statusText;
+ request.requestMethod = entry.response.method;
+ request.protocol = entry.response.httpVersion.toLowerCase();
+
+ request.connectionId = entry.connection || '';
+
+
+
+
+
+
+ request.finished = true;
+ request[NetworkLog.NetworkLog._pageLoadForRequestSymbol] = pageLoad;
+ requests.push(request);
+ };
+
+ request.setRemoteAddress(entry.serverIPAddress, 80);
+
+ this.reset();
+
+ this._requests = requests;
+ this._requestsSet = new Set(requests);
+
+ for (var request of requests)
+ this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.RequestAdded, request);
+
+ function headersArrayToString(headers) {
+ return headers.map(header => header.name + ': ' + header.value).join('\n');
+ }
+ }
+
/**
* @override
* @param {!SDK.NetworkManager} networkManager
@@ -295,7 +443,7 @@ NetworkLog.NetworkLog = class extends Common.Object {
if (request.loaderId !== mainFrame.loaderId)
continue;
if (!currentPageLoad)
- currentPageLoad = new NetworkLog.PageLoad(request);
+ currentPageLoad = new NetworkLog.PageLoad(request, manager.target().inspectedURL().asParsedURL());
this._requests.push(request);
this._requestsSet.add(request);
this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.RequestAdded, request);
@@ -382,16 +530,18 @@ NetworkLog.NetworkLog = class extends Common.Object {
NetworkLog.PageLoad = class {
/**
* @param {!SDK.NetworkRequest} mainRequest
+ * @param {!Common.ParsedURL} inspectedURL
*/
- constructor(mainRequest) {
+ constructor(mainRequest, inspectedURL) {
this.id = ++NetworkLog.PageLoad._lastIdentifier;
this.url = mainRequest.url();
- this.startTime = mainRequest.startTime;
+ this.startTime = mainRequest.pseudoWallTime(mainRequest.startTime);
/** @type {number} */
this.loadTime;
/** @type {number} */
this.contentLoadTime;
this.mainRequest = mainRequest;
+ this.inspectedURL = inspectedURL;
}
};

Powered by Google App Engine
This is Rietveld 408576698