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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/NetworkRequest.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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/sdk/NetworkRequest.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/NetworkRequest.js b/third_party/WebKit/Source/devtools/front_end/sdk/NetworkRequest.js
index 0220ac00f89c86d868f72e2177e16050c881e22d..075999d2a15732b34b85f30891f9a2dda8ec5691 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/NetworkRequest.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/NetworkRequest.js
@@ -27,22 +27,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
/**
- * @constructor
- * @extends {WebInspector.SDKObject}
* @implements {WebInspector.ContentProvider}
- * @param {!NetworkAgent.RequestId} requestId
- * @param {!WebInspector.Target} target
- * @param {string} url
- * @param {string} documentURL
- * @param {!PageAgent.FrameId} frameId
- * @param {!NetworkAgent.LoaderId} loaderId
- * @param {?NetworkAgent.Initiator} initiator
+ * @unrestricted
*/
-WebInspector.NetworkRequest = function(target, requestId, url, documentURL, frameId, loaderId, initiator)
-{
- WebInspector.SDKObject.call(this, target);
+WebInspector.NetworkRequest = class extends WebInspector.SDKObject {
+ /**
+ * @param {!NetworkAgent.RequestId} requestId
+ * @param {!WebInspector.Target} target
+ * @param {string} url
+ * @param {string} documentURL
+ * @param {!PageAgent.FrameId} frameId
+ * @param {!NetworkAgent.LoaderId} loaderId
+ * @param {?NetworkAgent.Initiator} initiator
+ */
+ constructor(target, requestId, url, documentURL, frameId, loaderId, initiator) {
+ super(target);
this._networkLog = /** @type {!WebInspector.NetworkLog} */ (WebInspector.NetworkLog.fromTarget(target));
this._networkManager = /** @type {!WebInspector.NetworkManager} */ (WebInspector.NetworkManager.fromTarget(target));
@@ -60,10 +60,10 @@ WebInspector.NetworkRequest = function(target, requestId, url, documentURL, fram
this._blockedReason = undefined;
this.statusCode = 0;
- this.statusText = "";
- this.requestMethod = "";
+ this.statusText = '';
+ this.requestMethod = '';
this.requestTime = 0;
- this.protocol = "";
+ this.protocol = '';
/** @type {!NetworkAgent.RequestMixedContentType} */
this.mixedContentType = NetworkAgent.RequestMixedContentType.None;
@@ -83,7 +83,7 @@ WebInspector.NetworkRequest = function(target, requestId, url, documentURL, fram
this._responseHeaderValues = {};
- this._remoteAddress = "";
+ this._remoteAddress = '';
/** @type {!SecurityAgent.SecurityState} */
this._securityState = SecurityAgent.SecurityState.Unknown;
@@ -91,26 +91,1126 @@ WebInspector.NetworkRequest = function(target, requestId, url, documentURL, fram
this._securityDetails = null;
/** @type {string} */
- this.connectionId = "0";
+ this.connectionId = '0';
+ }
+
+ /**
+ * @param {!WebInspector.NetworkRequest} other
+ * @return {number}
+ */
+ indentityCompare(other) {
+ if (this._requestId > other._requestId)
+ return 1;
+ if (this._requestId < other._requestId)
+ return -1;
+ return 0;
+ }
+
+ /**
+ * @return {!NetworkAgent.RequestId}
+ */
+ get requestId() {
+ return this._requestId;
+ }
+
+ /**
+ * @param {!NetworkAgent.RequestId} requestId
+ */
+ set requestId(requestId) {
+ this._requestId = requestId;
+ }
+
+ /**
+ * @return {string}
+ */
+ get url() {
+ return this._url;
+ }
+
+ /**
+ * @param {string} x
+ */
+ set url(x) {
+ if (this._url === x)
+ return;
+
+ this._url = x;
+ this._parsedURL = new WebInspector.ParsedURL(x);
+ delete this._queryString;
+ delete this._parsedQueryParameters;
+ delete this._name;
+ delete this._path;
+ }
+
+ /**
+ * @return {string}
+ */
+ get documentURL() {
+ return this._documentURL;
+ }
+
+ get parsedURL() {
+ return this._parsedURL;
+ }
+
+ /**
+ * @return {!PageAgent.FrameId}
+ */
+ get frameId() {
+ return this._frameId;
+ }
+
+ /**
+ * @return {!NetworkAgent.LoaderId}
+ */
+ get loaderId() {
+ return this._loaderId;
+ }
+
+ /**
+ * @param {string} ip
+ * @param {number} port
+ */
+ setRemoteAddress(ip, port) {
+ this._remoteAddress = ip + ':' + port;
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this);
+ }
+
+ /**
+ * @return {string}
+ */
+ remoteAddress() {
+ return this._remoteAddress;
+ }
+
+ /**
+ * @return {!SecurityAgent.SecurityState}
+ */
+ securityState() {
+ return this._securityState;
+ }
+
+ /**
+ * @param {!SecurityAgent.SecurityState} securityState
+ */
+ setSecurityState(securityState) {
+ this._securityState = securityState;
+ }
+
+ /**
+ * @return {?NetworkAgent.SecurityDetails}
+ */
+ securityDetails() {
+ return this._securityDetails;
+ }
+
+ /**
+ * @param {!NetworkAgent.SecurityDetails} securityDetails
+ */
+ setSecurityDetails(securityDetails) {
+ this._securityDetails = securityDetails;
+ }
+
+ /**
+ * @return {number}
+ */
+ get startTime() {
+ return this._startTime || -1;
+ }
+
+ /**
+ * @param {number} monotonicTime
+ * @param {number} wallTime
+ */
+ setIssueTime(monotonicTime, wallTime) {
+ this._issueTime = monotonicTime;
+ this._wallIssueTime = wallTime;
+ this._startTime = monotonicTime;
+ }
+
+ /**
+ * @return {number}
+ */
+ issueTime() {
+ return this._issueTime;
+ }
+
+ /**
+ * @param {number} monotonicTime
+ * @return {number}
+ */
+ pseudoWallTime(monotonicTime) {
+ return this._wallIssueTime ? this._wallIssueTime - this._issueTime + monotonicTime : monotonicTime;
+ }
+
+ /**
+ * @return {number}
+ */
+ get responseReceivedTime() {
+ return this._responseReceivedTime || -1;
+ }
+
+ /**
+ * @param {number} x
+ */
+ set responseReceivedTime(x) {
+ this._responseReceivedTime = x;
+ }
+
+ /**
+ * @return {number}
+ */
+ get endTime() {
+ return this._endTime || -1;
+ }
+
+ /**
+ * @param {number} x
+ */
+ set endTime(x) {
+ if (this.timing && this.timing.requestTime) {
+ // Check against accurate responseReceivedTime.
+ this._endTime = Math.max(x, this.responseReceivedTime);
+ } else {
+ // Prefer endTime since it might be from the network stack.
+ this._endTime = x;
+ if (this._responseReceivedTime > x)
+ this._responseReceivedTime = x;
+ }
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.TimingChanged, this);
+ }
+
+ /**
+ * @return {number}
+ */
+ get duration() {
+ if (this._endTime === -1 || this._startTime === -1)
+ return -1;
+ return this._endTime - this._startTime;
+ }
+
+ /**
+ * @return {number}
+ */
+ get latency() {
+ if (this._responseReceivedTime === -1 || this._startTime === -1)
+ return -1;
+ return this._responseReceivedTime - this._startTime;
+ }
+
+ /**
+ * @return {number}
+ */
+ get resourceSize() {
+ return this._resourceSize || 0;
+ }
+
+ /**
+ * @param {number} x
+ */
+ set resourceSize(x) {
+ this._resourceSize = x;
+ }
+
+ /**
+ * @return {number}
+ */
+ get transferSize() {
+ return this._transferSize || 0;
+ }
+
+ /**
+ * @param {number} x
+ */
+ increaseTransferSize(x) {
+ this._transferSize = (this._transferSize || 0) + x;
+ }
+
+ /**
+ * @param {number} x
+ */
+ setTransferSize(x) {
+ this._transferSize = x;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ get finished() {
+ return this._finished;
+ }
+
+ /**
+ * @param {boolean} x
+ */
+ set finished(x) {
+ if (this._finished === x)
+ return;
+
+ this._finished = x;
+
+ if (x) {
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.FinishedLoading, this);
+ if (this._pendingContentCallbacks.length)
+ this._innerRequestContent();
+ }
+ }
+
+ /**
+ * @return {boolean}
+ */
+ get failed() {
+ return this._failed;
+ }
+
+ /**
+ * @param {boolean} x
+ */
+ set failed(x) {
+ this._failed = x;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ get canceled() {
+ return this._canceled;
+ }
+
+ /**
+ * @param {boolean} x
+ */
+ set canceled(x) {
+ this._canceled = x;
+ }
+
+ /**
+ * @return {!NetworkAgent.BlockedReason|undefined}
+ */
+ blockedReason() {
+ return this._blockedReason;
+ }
+
+ /**
+ * @param {!NetworkAgent.BlockedReason} reason
+ */
+ setBlockedReason(reason) {
+ this._blockedReason = reason;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ wasBlocked() {
+ return !!this._blockedReason;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ cached() {
+ return (!!this._fromMemoryCache || !!this._fromDiskCache) && !this._transferSize;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ cachedInMemory() {
+ return !!this._fromMemoryCache && !this._transferSize;
+ }
+
+ setFromMemoryCache() {
+ this._fromMemoryCache = true;
+ delete this._timing;
+ }
+
+ setFromDiskCache() {
+ this._fromDiskCache = true;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ get fetchedViaServiceWorker() {
+ return this._fetchedViaServiceWorker;
+ }
+
+ /**
+ * @param {boolean} x
+ */
+ set fetchedViaServiceWorker(x) {
+ this._fetchedViaServiceWorker = x;
+ }
+
+ /**
+ * @return {!NetworkAgent.ResourceTiming|undefined}
+ */
+ get timing() {
+ return this._timing;
+ }
+
+ /**
+ * @param {!NetworkAgent.ResourceTiming|undefined} x
+ */
+ set timing(x) {
+ if (x && !this._fromMemoryCache) {
+ // Take startTime and responseReceivedTime from timing data for better accuracy.
+ // Timing's requestTime is a baseline in seconds, rest of the numbers there are ticks in millis.
+ this._startTime = x.requestTime;
+ this._responseReceivedTime = x.requestTime + x.receiveHeadersEnd / 1000.0;
+
+ this._timing = x;
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.TimingChanged, this);
+ }
+ }
+
+ /**
+ * @return {string}
+ */
+ get mimeType() {
+ return this._mimeType;
+ }
+
+ /**
+ * @param {string} x
+ */
+ set mimeType(x) {
+ this._mimeType = x;
+ }
+
+ /**
+ * @return {string}
+ */
+ get displayName() {
+ return this._parsedURL.displayName;
+ }
+
+ /**
+ * @return {string}
+ */
+ name() {
+ if (this._name)
+ return this._name;
+ this._parseNameAndPathFromURL();
+ return this._name;
+ }
+
+ /**
+ * @return {string}
+ */
+ path() {
+ if (this._path)
+ return this._path;
+ this._parseNameAndPathFromURL();
+ return this._path;
+ }
+
+ _parseNameAndPathFromURL() {
+ if (this._parsedURL.isDataURL()) {
+ this._name = this._parsedURL.dataURLDisplayName();
+ this._path = '';
+ } else if (this._parsedURL.isAboutBlank()) {
+ this._name = this._parsedURL.url;
+ this._path = '';
+ } else {
+ this._path = this._parsedURL.host + this._parsedURL.folderPathComponents;
+
+ var inspectedURL = this.target().inspectedURL().asParsedURL();
+ this._path = this._path.trimURL(inspectedURL ? inspectedURL.host : '');
+ if (this._parsedURL.lastPathComponent || this._parsedURL.queryParams)
+ this._name =
+ this._parsedURL.lastPathComponent + (this._parsedURL.queryParams ? '?' + this._parsedURL.queryParams : '');
+ else if (this._parsedURL.folderPathComponents) {
+ this._name =
+ this._parsedURL.folderPathComponents.substring(this._parsedURL.folderPathComponents.lastIndexOf('/') + 1) +
+ '/';
+ this._path = this._path.substring(0, this._path.lastIndexOf('/'));
+ } else {
+ this._name = this._parsedURL.host;
+ this._path = '';
+ }
+ }
+ }
+
+ /**
+ * @return {string}
+ */
+ get folder() {
+ var path = this._parsedURL.path;
+ var indexOfQuery = path.indexOf('?');
+ if (indexOfQuery !== -1)
+ path = path.substring(0, indexOfQuery);
+ var lastSlashIndex = path.lastIndexOf('/');
+ return lastSlashIndex !== -1 ? path.substring(0, lastSlashIndex) : '';
+ }
+
+ /**
+ * @return {!WebInspector.ResourceType}
+ */
+ resourceType() {
+ return this._resourceType;
+ }
+
+ /**
+ * @param {!WebInspector.ResourceType} resourceType
+ */
+ setResourceType(resourceType) {
+ this._resourceType = resourceType;
+ }
+
+ /**
+ * @return {string}
+ */
+ get domain() {
+ return this._parsedURL.host;
+ }
+
+ /**
+ * @return {string}
+ */
+ get scheme() {
+ return this._parsedURL.scheme;
+ }
+
+ /**
+ * @return {?WebInspector.NetworkRequest}
+ */
+ get redirectSource() {
+ if (this.redirects && this.redirects.length > 0)
+ return this.redirects[this.redirects.length - 1];
+ return this._redirectSource;
+ }
+
+ /**
+ * @param {?WebInspector.NetworkRequest} x
+ */
+ set redirectSource(x) {
+ this._redirectSource = x;
+ delete this._initiatorInfo;
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
+ */
+ requestHeaders() {
+ return this._requestHeaders || [];
+ }
+
+ /**
+ * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers
+ */
+ setRequestHeaders(headers) {
+ this._requestHeaders = headers;
+ delete this._requestCookies;
+
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RequestHeadersChanged);
+ }
+
+ /**
+ * @return {string|undefined}
+ */
+ requestHeadersText() {
+ return this._requestHeadersText;
+ }
+
+ /**
+ * @param {string} text
+ */
+ setRequestHeadersText(text) {
+ this._requestHeadersText = text;
+
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RequestHeadersChanged);
+ }
+
+ /**
+ * @param {string} headerName
+ * @return {string|undefined}
+ */
+ requestHeaderValue(headerName) {
+ return this._headerValue(this.requestHeaders(), headerName);
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.Cookie>}
+ */
+ get requestCookies() {
+ if (!this._requestCookies)
+ this._requestCookies = WebInspector.CookieParser.parseCookie(this.target(), this.requestHeaderValue('Cookie'));
+ return this._requestCookies;
+ }
+
+ /**
+ * @return {string|undefined}
+ */
+ get requestFormData() {
+ return this._requestFormData;
+ }
+
+ /**
+ * @param {string|undefined} x
+ */
+ set requestFormData(x) {
+ this._requestFormData = x;
+ delete this._parsedFormParameters;
+ }
+
+ /**
+ * @return {string}
+ */
+ requestHttpVersion() {
+ var headersText = this.requestHeadersText();
+ if (!headersText)
+ return this.requestHeaderValue('version') || this.requestHeaderValue(':version') || 'unknown';
+ var firstLine = headersText.split(/\r\n/)[0];
+ var match = firstLine.match(/(HTTP\/\d+\.\d+)$/);
+ return match ? match[1] : 'HTTP/0.9';
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
+ */
+ get responseHeaders() {
+ return this._responseHeaders || [];
+ }
+
+ /**
+ * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} x
+ */
+ set responseHeaders(x) {
+ this._responseHeaders = x;
+ delete this._sortedResponseHeaders;
+ delete this._serverTimings;
+ delete this._responseCookies;
+ this._responseHeaderValues = {};
+
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.ResponseHeadersChanged);
+ }
+
+ /**
+ * @return {string}
+ */
+ get responseHeadersText() {
+ return this._responseHeadersText;
+ }
+
+ /**
+ * @param {string} x
+ */
+ set responseHeadersText(x) {
+ this._responseHeadersText = x;
+
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.ResponseHeadersChanged);
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
+ */
+ get sortedResponseHeaders() {
+ if (this._sortedResponseHeaders !== undefined)
+ return this._sortedResponseHeaders;
+
+ this._sortedResponseHeaders = this.responseHeaders.slice();
+ this._sortedResponseHeaders.sort(function(a, b) {
+ return a.name.toLowerCase().compareTo(b.name.toLowerCase());
+ });
+ return this._sortedResponseHeaders;
+ }
+
+ /**
+ * @param {string} headerName
+ * @return {string|undefined}
+ */
+ responseHeaderValue(headerName) {
+ var value = this._responseHeaderValues[headerName];
+ if (value === undefined) {
+ value = this._headerValue(this.responseHeaders, headerName);
+ this._responseHeaderValues[headerName] = (value !== undefined) ? value : null;
+ }
+ return (value !== null) ? value : undefined;
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.Cookie>}
+ */
+ get responseCookies() {
+ if (!this._responseCookies)
+ this._responseCookies =
+ WebInspector.CookieParser.parseSetCookie(this.target(), this.responseHeaderValue('Set-Cookie'));
+ return this._responseCookies;
+ }
+
+ /**
+ * @return {string|undefined}
+ */
+ responseLastModified() {
+ return this.responseHeaderValue('last-modified');
+ }
+
+ /**
+ * @return {?Array.<!WebInspector.ServerTiming>}
+ */
+ get serverTimings() {
+ if (typeof this._serverTimings === 'undefined')
+ this._serverTimings = WebInspector.ServerTiming.parseHeaders(this.responseHeaders);
+ return this._serverTimings;
+ }
+
+ /**
+ * @return {?string}
+ */
+ queryString() {
+ if (this._queryString !== undefined)
+ return this._queryString;
+
+ var queryString = null;
+ var url = this.url;
+ var questionMarkPosition = url.indexOf('?');
+ if (questionMarkPosition !== -1) {
+ queryString = url.substring(questionMarkPosition + 1);
+ var hashSignPosition = queryString.indexOf('#');
+ if (hashSignPosition !== -1)
+ queryString = queryString.substring(0, hashSignPosition);
+ }
+ this._queryString = queryString;
+ return this._queryString;
+ }
+
+ /**
+ * @return {?Array.<!WebInspector.NetworkRequest.NameValue>}
+ */
+ get queryParameters() {
+ if (this._parsedQueryParameters)
+ return this._parsedQueryParameters;
+ var queryString = this.queryString();
+ if (!queryString)
+ return null;
+ this._parsedQueryParameters = this._parseParameters(queryString);
+ return this._parsedQueryParameters;
+ }
+
+ /**
+ * @return {?Array.<!WebInspector.NetworkRequest.NameValue>}
+ */
+ get formParameters() {
+ if (this._parsedFormParameters)
+ return this._parsedFormParameters;
+ if (!this.requestFormData)
+ return null;
+ var requestContentType = this.requestContentType();
+ if (!requestContentType || !requestContentType.match(/^application\/x-www-form-urlencoded\s*(;.*)?$/i))
+ return null;
+ this._parsedFormParameters = this._parseParameters(this.requestFormData);
+ return this._parsedFormParameters;
+ }
+
+ /**
+ * @return {string}
+ */
+ responseHttpVersion() {
+ var headersText = this._responseHeadersText;
+ if (!headersText)
+ return this.responseHeaderValue('version') || this.responseHeaderValue(':version') || 'unknown';
+ var firstLine = headersText.split(/\r\n/)[0];
+ var match = firstLine.match(/^(HTTP\/\d+\.\d+)/);
+ return match ? match[1] : 'HTTP/0.9';
+ }
+
+ /**
+ * @param {string} queryString
+ * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
+ */
+ _parseParameters(queryString) {
+ function parseNameValue(pair) {
+ var position = pair.indexOf('=');
+ if (position === -1)
+ return {name: pair, value: ''};
+ else
+ return {name: pair.substring(0, position), value: pair.substring(position + 1)};
+ }
+ return queryString.split('&').map(parseNameValue);
+ }
+
+ /**
+ * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers
+ * @param {string} headerName
+ * @return {string|undefined}
+ */
+ _headerValue(headers, headerName) {
+ headerName = headerName.toLowerCase();
+
+ var values = [];
+ for (var i = 0; i < headers.length; ++i) {
+ if (headers[i].name.toLowerCase() === headerName)
+ values.push(headers[i].value);
+ }
+ if (!values.length)
+ return undefined;
+ // Set-Cookie values should be separated by '\n', not comma, otherwise cookies could not be parsed.
+ if (headerName === 'set-cookie')
+ return values.join('\n');
+ return values.join(', ');
+ }
+
+ /**
+ * @return {?string|undefined}
+ */
+ get content() {
+ return this._content;
+ }
+
+ /**
+ * @return {?Protocol.Error|undefined}
+ */
+ contentError() {
+ return this._contentError;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ get contentEncoded() {
+ return this._contentEncoded;
+ }
+
+ /**
+ * @override
+ * @return {string}
+ */
+ contentURL() {
+ return this._url;
+ }
+
+ /**
+ * @override
+ * @return {!WebInspector.ResourceType}
+ */
+ contentType() {
+ return this._resourceType;
+ }
+
+ /**
+ * @override
+ * @return {!Promise<?string>}
+ */
+ requestContent() {
+ // We do not support content retrieval for WebSockets at the moment.
+ // Since WebSockets are potentially long-living, fail requests immediately
+ // to prevent caller blocking until resource is marked as finished.
+ if (this._resourceType === WebInspector.resourceTypes.WebSocket)
+ return Promise.resolve(/** @type {?string} */ (null));
+ if (typeof this._content !== 'undefined')
+ return Promise.resolve(/** @type {?string} */ (this.content || null));
+ var callback;
+ var promise = new Promise(fulfill => callback = fulfill);
+ this._pendingContentCallbacks.push(callback);
+ if (this.finished)
+ this._innerRequestContent();
+ return promise;
+ }
+
+ /**
+ * @override
+ * @param {string} query
+ * @param {boolean} caseSensitive
+ * @param {boolean} isRegex
+ * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
+ */
+ searchInContent(query, caseSensitive, isRegex, callback) {
+ callback([]);
+ }
+
+ /**
+ * @return {boolean}
+ */
+ isHttpFamily() {
+ return !!this.url.match(/^https?:/i);
+ }
+
+ /**
+ * @return {string|undefined}
+ */
+ requestContentType() {
+ return this.requestHeaderValue('Content-Type');
+ }
+
+ /**
+ * @return {boolean}
+ */
+ hasErrorStatusCode() {
+ return this.statusCode >= 400;
+ }
+
+ /**
+ * @param {!NetworkAgent.ResourcePriority} priority
+ */
+ setInitialPriority(priority) {
+ this._initialPriority = priority;
+ }
+
+ /**
+ * @return {?NetworkAgent.ResourcePriority}
+ */
+ initialPriority() {
+ return this._initialPriority;
+ }
+
+ /**
+ * @param {!NetworkAgent.ResourcePriority} priority
+ */
+ setPriority(priority) {
+ this._currentPriority = priority;
+ }
+
+ /**
+ * @return {?NetworkAgent.ResourcePriority}
+ */
+ priority() {
+ return this._currentPriority || this._initialPriority || null;
+ }
+
+ /**
+ * @param {!Element} image
+ */
+ populateImageSource(image) {
+ /**
+ * @param {?string} content
+ * @this {WebInspector.NetworkRequest}
+ */
+ function onResourceContent(content) {
+ var imageSrc = WebInspector.ContentProvider.contentAsDataURL(content, this._mimeType, true);
+ if (imageSrc === null)
+ imageSrc = this._url;
+ image.src = imageSrc;
+ }
+
+ this.requestContent().then(onResourceContent.bind(this));
+ }
+
+ /**
+ * @return {?string}
+ */
+ asDataURL() {
+ var content = this._content;
+ var charset = null;
+ if (!this._contentEncoded) {
+ content = content.toBase64();
+ charset = 'utf-8';
+ }
+ return WebInspector.ContentProvider.contentAsDataURL(content, this.mimeType, true, charset);
+ }
+
+ _innerRequestContent() {
+ if (this._contentRequested)
+ return;
+ this._contentRequested = true;
+
+ /**
+ * @param {?Protocol.Error} error
+ * @param {string} content
+ * @param {boolean} contentEncoded
+ * @this {WebInspector.NetworkRequest}
+ */
+ function onResourceContent(error, content, contentEncoded) {
+ this._content = error ? null : content;
+ this._contentError = error;
+ this._contentEncoded = contentEncoded;
+ var callbacks = this._pendingContentCallbacks.slice();
+ for (var i = 0; i < callbacks.length; ++i)
+ callbacks[i](this._content);
+ this._pendingContentCallbacks.length = 0;
+ delete this._contentRequested;
+ }
+ this.target().networkAgent().getResponseBody(this._requestId, onResourceContent.bind(this));
+ }
+
+ /**
+ * @return {?NetworkAgent.Initiator}
+ */
+ initiator() {
+ return this._initiator;
+ }
+
+ /**
+ * @return {!{type: !WebInspector.NetworkRequest.InitiatorType, url: string, lineNumber: number, columnNumber: number, scriptId: ?string}}
+ */
+ initiatorInfo() {
+ if (this._initiatorInfo)
+ return this._initiatorInfo;
+
+ var type = WebInspector.NetworkRequest.InitiatorType.Other;
+ var url = '';
+ var lineNumber = -Infinity;
+ var columnNumber = -Infinity;
+ var scriptId = null;
+ var initiator = this._initiator;
+
+ if (this.redirectSource) {
+ type = WebInspector.NetworkRequest.InitiatorType.Redirect;
+ url = this.redirectSource.url;
+ } else if (initiator) {
+ if (initiator.type === NetworkAgent.InitiatorType.Parser) {
+ type = WebInspector.NetworkRequest.InitiatorType.Parser;
+ url = initiator.url ? initiator.url : url;
+ lineNumber = initiator.lineNumber ? initiator.lineNumber : lineNumber;
+ } else if (initiator.type === NetworkAgent.InitiatorType.Script) {
+ for (var stack = initiator.stack; stack; stack = stack.parent) {
+ var topFrame = stack.callFrames.length ? stack.callFrames[0] : null;
+ if (!topFrame)
+ continue;
+ type = WebInspector.NetworkRequest.InitiatorType.Script;
+ url = topFrame.url || WebInspector.UIString('<anonymous>');
+ lineNumber = topFrame.lineNumber;
+ columnNumber = topFrame.columnNumber;
+ scriptId = topFrame.scriptId;
+ break;
+ }
+ }
+ }
+
+ this._initiatorInfo =
+ {type: type, url: url, lineNumber: lineNumber, columnNumber: columnNumber, scriptId: scriptId};
+ return this._initiatorInfo;
+ }
+
+ /**
+ * @return {?WebInspector.NetworkRequest}
+ */
+ initiatorRequest() {
+ if (this._initiatorRequest === undefined)
+ this._initiatorRequest = this._networkLog.requestForURL(this.initiatorInfo().url);
+ return this._initiatorRequest;
+ }
+
+ /**
+ * @return {!WebInspector.NetworkRequest.InitiatorGraph}
+ */
+ initiatorGraph() {
+ var initiated = new Set();
+ var requests = this._networkLog.requests();
+ for (var request of requests) {
+ var localInitiators = request._initiatorChain();
+ if (localInitiators.has(this))
+ initiated.add(request);
+ }
+ return {initiators: this._initiatorChain(), initiated: initiated};
+ }
+
+ /**
+ * @return {!Set<!WebInspector.NetworkRequest>}
+ */
+ _initiatorChain() {
+ if (this._initiatorChainCache)
+ return this._initiatorChainCache;
+ this._initiatorChainCache = new Set();
+ var request = this;
+ while (request) {
+ this._initiatorChainCache.add(request);
+ request = request.initiatorRequest();
+ }
+ return this._initiatorChainCache;
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.NetworkRequest.WebSocketFrame>}
+ */
+ frames() {
+ return this._frames;
+ }
+
+ /**
+ * @param {string} errorMessage
+ * @param {number} time
+ */
+ addFrameError(errorMessage, time) {
+ this._addFrame({
+ type: WebInspector.NetworkRequest.WebSocketFrameType.Error,
+ text: errorMessage,
+ time: this.pseudoWallTime(time),
+ opCode: -1,
+ mask: false
+ });
+ }
+
+ /**
+ * @param {!NetworkAgent.WebSocketFrame} response
+ * @param {number} time
+ * @param {boolean} sent
+ */
+ addFrame(response, time, sent) {
+ var type = sent ? WebInspector.NetworkRequest.WebSocketFrameType.Send :
+ WebInspector.NetworkRequest.WebSocketFrameType.Receive;
+ this._addFrame({
+ type: type,
+ text: response.payloadData,
+ time: this.pseudoWallTime(time),
+ opCode: response.opcode,
+ mask: response.mask
+ });
+ }
+
+ /**
+ * @param {!WebInspector.NetworkRequest.WebSocketFrame} frame
+ */
+ _addFrame(frame) {
+ this._frames.push(frame);
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.WebsocketFrameAdded, frame);
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.NetworkRequest.EventSourceMessage>}
+ */
+ eventSourceMessages() {
+ return this._eventSourceMessages;
+ }
+
+ /**
+ * @param {number} time
+ * @param {string} eventName
+ * @param {string} eventId
+ * @param {string} data
+ */
+ addEventSourceMessage(time, eventName, eventId, data) {
+ var message = {time: this.pseudoWallTime(time), eventName: eventName, eventId: eventId, data: data};
+ this._eventSourceMessages.push(message);
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.EventSourceMessageAdded, message);
+ }
+
+ replayXHR() {
+ this.target().networkAgent().replayXHR(this.requestId);
+ }
+
+ /**
+ * @return {!WebInspector.NetworkLog}
+ */
+ networkLog() {
+ return this._networkLog;
+ }
+
+ /**
+ * @return {!WebInspector.NetworkManager}
+ */
+ networkManager() {
+ return this._networkManager;
+ }
};
/** @enum {symbol} */
WebInspector.NetworkRequest.Events = {
- FinishedLoading: Symbol("FinishedLoading"),
- TimingChanged: Symbol("TimingChanged"),
- RemoteAddressChanged: Symbol("RemoteAddressChanged"),
- RequestHeadersChanged: Symbol("RequestHeadersChanged"),
- ResponseHeadersChanged: Symbol("ResponseHeadersChanged"),
- WebsocketFrameAdded: Symbol("WebsocketFrameAdded"),
- EventSourceMessageAdded: Symbol("EventSourceMessageAdded")
+ FinishedLoading: Symbol('FinishedLoading'),
+ TimingChanged: Symbol('TimingChanged'),
+ RemoteAddressChanged: Symbol('RemoteAddressChanged'),
+ RequestHeadersChanged: Symbol('RequestHeadersChanged'),
+ ResponseHeadersChanged: Symbol('ResponseHeadersChanged'),
+ WebsocketFrameAdded: Symbol('WebsocketFrameAdded'),
+ EventSourceMessageAdded: Symbol('EventSourceMessageAdded')
};
/** @enum {string} */
WebInspector.NetworkRequest.InitiatorType = {
- Other: "other",
- Parser: "parser",
- Redirect: "redirect",
- Script: "script"
+ Other: 'other',
+ Parser: 'parser',
+ Redirect: 'redirect',
+ Script: 'script'
};
/** @typedef {!{name: string, value: string}} */
@@ -118,9 +1218,9 @@ WebInspector.NetworkRequest.NameValue;
/** @enum {string} */
WebInspector.NetworkRequest.WebSocketFrameType = {
- Send: "send",
- Receive: "receive",
- Error: "error"
+ Send: 'send',
+ Receive: 'receive',
+ Error: 'error'
};
/** @typedef {!{type: WebInspector.NetworkRequest.WebSocketFrameType, time: number, text: string, opCode: number, mask: boolean}} */
@@ -131,1159 +1231,3 @@ WebInspector.NetworkRequest.EventSourceMessage;
/** @typedef {!{initiators: !Set<!WebInspector.NetworkRequest>, initiated: !Set<!WebInspector.NetworkRequest>}} */
WebInspector.NetworkRequest.InitiatorGraph;
-
-WebInspector.NetworkRequest.prototype = {
- /**
- * @param {!WebInspector.NetworkRequest} other
- * @return {number}
- */
- indentityCompare: function(other)
- {
- if (this._requestId > other._requestId)
- return 1;
- if (this._requestId < other._requestId)
- return -1;
- return 0;
- },
-
- /**
- * @return {!NetworkAgent.RequestId}
- */
- get requestId()
- {
- return this._requestId;
- },
-
- set requestId(requestId)
- {
- this._requestId = requestId;
- },
-
- /**
- * @return {string}
- */
- get url()
- {
- return this._url;
- },
-
- set url(x)
- {
- if (this._url === x)
- return;
-
- this._url = x;
- this._parsedURL = new WebInspector.ParsedURL(x);
- delete this._queryString;
- delete this._parsedQueryParameters;
- delete this._name;
- delete this._path;
- },
-
- /**
- * @return {string}
- */
- get documentURL()
- {
- return this._documentURL;
- },
-
- get parsedURL()
- {
- return this._parsedURL;
- },
-
- /**
- * @return {!PageAgent.FrameId}
- */
- get frameId()
- {
- return this._frameId;
- },
-
- /**
- * @return {!NetworkAgent.LoaderId}
- */
- get loaderId()
- {
- return this._loaderId;
- },
-
- /**
- * @param {string} ip
- * @param {number} port
- */
- setRemoteAddress: function(ip, port)
- {
- this._remoteAddress = ip + ":" + port;
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this);
- },
-
- /**
- * @return {string}
- */
- remoteAddress: function()
- {
- return this._remoteAddress;
- },
-
- /**
- * @return {!SecurityAgent.SecurityState}
- */
- securityState: function()
- {
- return this._securityState;
- },
-
- /**
- * @param {!SecurityAgent.SecurityState} securityState
- */
- setSecurityState: function(securityState)
- {
- this._securityState = securityState;
- },
-
- /**
- * @return {?NetworkAgent.SecurityDetails}
- */
- securityDetails: function()
- {
- return this._securityDetails;
- },
-
- /**
- * @param {!NetworkAgent.SecurityDetails} securityDetails
- */
- setSecurityDetails: function(securityDetails)
- {
- this._securityDetails = securityDetails;
- },
-
- /**
- * @return {number}
- */
- get startTime()
- {
- return this._startTime || -1;
- },
-
- /**
- * @param {number} monotonicTime
- * @param {number} wallTime
- */
- setIssueTime: function(monotonicTime, wallTime)
- {
- this._issueTime = monotonicTime;
- this._wallIssueTime = wallTime;
- this._startTime = monotonicTime;
- },
-
- /**
- * @return {number}
- */
- issueTime: function()
- {
- return this._issueTime;
- },
-
- /**
- * @param {number} monotonicTime
- * @return {number}
- */
- pseudoWallTime: function(monotonicTime)
- {
- return this._wallIssueTime ? this._wallIssueTime - this._issueTime + monotonicTime : monotonicTime;
- },
-
- /**
- * @return {number}
- */
- get responseReceivedTime()
- {
- return this._responseReceivedTime || -1;
- },
-
- set responseReceivedTime(x)
- {
- this._responseReceivedTime = x;
- },
-
- /**
- * @return {number}
- */
- get endTime()
- {
- return this._endTime || -1;
- },
-
- set endTime(x)
- {
- if (this.timing && this.timing.requestTime) {
- // Check against accurate responseReceivedTime.
- this._endTime = Math.max(x, this.responseReceivedTime);
- } else {
- // Prefer endTime since it might be from the network stack.
- this._endTime = x;
- if (this._responseReceivedTime > x)
- this._responseReceivedTime = x;
- }
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.TimingChanged, this);
- },
-
- /**
- * @return {number}
- */
- get duration()
- {
- if (this._endTime === -1 || this._startTime === -1)
- return -1;
- return this._endTime - this._startTime;
- },
-
- /**
- * @return {number}
- */
- get latency()
- {
- if (this._responseReceivedTime === -1 || this._startTime === -1)
- return -1;
- return this._responseReceivedTime - this._startTime;
- },
-
- /**
- * @return {number}
- */
- get resourceSize()
- {
- return this._resourceSize || 0;
- },
-
- set resourceSize(x)
- {
- this._resourceSize = x;
- },
-
- /**
- * @return {number}
- */
- get transferSize()
- {
- return this._transferSize || 0;
- },
-
- /**
- * @param {number} x
- */
- increaseTransferSize: function(x)
- {
- this._transferSize = (this._transferSize || 0) + x;
- },
-
- /**
- * @param {number} x
- */
- setTransferSize: function(x)
- {
- this._transferSize = x;
- },
-
- /**
- * @return {boolean}
- */
- get finished()
- {
- return this._finished;
- },
-
- set finished(x)
- {
- if (this._finished === x)
- return;
-
- this._finished = x;
-
- if (x) {
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.FinishedLoading, this);
- if (this._pendingContentCallbacks.length)
- this._innerRequestContent();
- }
- },
-
- /**
- * @return {boolean}
- */
- get failed()
- {
- return this._failed;
- },
-
- set failed(x)
- {
- this._failed = x;
- },
-
- /**
- * @return {boolean}
- */
- get canceled()
- {
- return this._canceled;
- },
-
- set canceled(x)
- {
- this._canceled = x;
- },
-
- /**
- * @return {!NetworkAgent.BlockedReason|undefined}
- */
- blockedReason: function()
- {
- return this._blockedReason;
- },
-
- /**
- * @param {!NetworkAgent.BlockedReason} reason
- */
- setBlockedReason: function(reason)
- {
- this._blockedReason = reason;
- },
-
- /**
- * @return {boolean}
- */
- wasBlocked: function()
- {
- return !!this._blockedReason;
- },
-
- /**
- * @return {boolean}
- */
- cached: function()
- {
- return (!!this._fromMemoryCache || !!this._fromDiskCache) && !this._transferSize;
- },
-
- /**
- * @return {boolean}
- */
- cachedInMemory: function()
- {
- return !!this._fromMemoryCache && !this._transferSize;
- },
-
- setFromMemoryCache: function()
- {
- this._fromMemoryCache = true;
- delete this._timing;
- },
-
- setFromDiskCache: function()
- {
- this._fromDiskCache = true;
- },
-
- /**
- * @return {boolean}
- */
- get fetchedViaServiceWorker()
- {
- return this._fetchedViaServiceWorker;
- },
-
- set fetchedViaServiceWorker(x)
- {
- this._fetchedViaServiceWorker = x;
- },
-
- /**
- * @return {!NetworkAgent.ResourceTiming|undefined}
- */
- get timing()
- {
- return this._timing;
- },
-
- set timing(x)
- {
- if (x && !this._fromMemoryCache) {
- // Take startTime and responseReceivedTime from timing data for better accuracy.
- // Timing's requestTime is a baseline in seconds, rest of the numbers there are ticks in millis.
- this._startTime = x.requestTime;
- this._responseReceivedTime = x.requestTime + x.receiveHeadersEnd / 1000.0;
-
- this._timing = x;
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.TimingChanged, this);
- }
- },
-
- /**
- * @return {string}
- */
- get mimeType()
- {
- return this._mimeType;
- },
-
- set mimeType(x)
- {
- this._mimeType = x;
- },
-
- /**
- * @return {string}
- */
- get displayName()
- {
- return this._parsedURL.displayName;
- },
-
- /**
- * @return {string}
- */
- name: function()
- {
- if (this._name)
- return this._name;
- this._parseNameAndPathFromURL();
- return this._name;
- },
-
- /**
- * @return {string}
- */
- path: function()
- {
- if (this._path)
- return this._path;
- this._parseNameAndPathFromURL();
- return this._path;
- },
-
- _parseNameAndPathFromURL: function()
- {
- if (this._parsedURL.isDataURL()) {
- this._name = this._parsedURL.dataURLDisplayName();
- this._path = "";
- } else if (this._parsedURL.isAboutBlank()) {
- this._name = this._parsedURL.url;
- this._path = "";
- } else {
- this._path = this._parsedURL.host + this._parsedURL.folderPathComponents;
-
- var inspectedURL = this.target().inspectedURL().asParsedURL();
- this._path = this._path.trimURL(inspectedURL ? inspectedURL.host : "");
- if (this._parsedURL.lastPathComponent || this._parsedURL.queryParams)
- this._name = this._parsedURL.lastPathComponent + (this._parsedURL.queryParams ? "?" + this._parsedURL.queryParams : "");
- else if (this._parsedURL.folderPathComponents) {
- this._name = this._parsedURL.folderPathComponents.substring(this._parsedURL.folderPathComponents.lastIndexOf("/") + 1) + "/";
- this._path = this._path.substring(0, this._path.lastIndexOf("/"));
- } else {
- this._name = this._parsedURL.host;
- this._path = "";
- }
- }
- },
-
- /**
- * @return {string}
- */
- get folder()
- {
- var path = this._parsedURL.path;
- var indexOfQuery = path.indexOf("?");
- if (indexOfQuery !== -1)
- path = path.substring(0, indexOfQuery);
- var lastSlashIndex = path.lastIndexOf("/");
- return lastSlashIndex !== -1 ? path.substring(0, lastSlashIndex) : "";
- },
-
- /**
- * @return {!WebInspector.ResourceType}
- */
- resourceType: function()
- {
- return this._resourceType;
- },
-
- /**
- * @param {!WebInspector.ResourceType} resourceType
- */
- setResourceType: function(resourceType)
- {
- this._resourceType = resourceType;
- },
-
- /**
- * @return {string}
- */
- get domain()
- {
- return this._parsedURL.host;
- },
-
- /**
- * @return {string}
- */
- get scheme()
- {
- return this._parsedURL.scheme;
- },
-
- /**
- * @return {?WebInspector.NetworkRequest}
- */
- get redirectSource()
- {
- if (this.redirects && this.redirects.length > 0)
- return this.redirects[this.redirects.length - 1];
- return this._redirectSource;
- },
-
- set redirectSource(x)
- {
- this._redirectSource = x;
- delete this._initiatorInfo;
- },
-
- /**
- * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
- */
- requestHeaders: function()
- {
- return this._requestHeaders || [];
- },
-
- /**
- * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers
- */
- setRequestHeaders: function(headers)
- {
- this._requestHeaders = headers;
- delete this._requestCookies;
-
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RequestHeadersChanged);
- },
-
- /**
- * @return {string|undefined}
- */
- requestHeadersText: function()
- {
- return this._requestHeadersText;
- },
-
- /**
- * @param {string} text
- */
- setRequestHeadersText: function(text)
- {
- this._requestHeadersText = text;
-
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RequestHeadersChanged);
- },
-
- /**
- * @param {string} headerName
- * @return {string|undefined}
- */
- requestHeaderValue: function(headerName)
- {
- return this._headerValue(this.requestHeaders(), headerName);
- },
-
- /**
- * @return {!Array.<!WebInspector.Cookie>}
- */
- get requestCookies()
- {
- if (!this._requestCookies)
- this._requestCookies = WebInspector.CookieParser.parseCookie(this.target(), this.requestHeaderValue("Cookie"));
- return this._requestCookies;
- },
-
- /**
- * @return {string|undefined}
- */
- get requestFormData()
- {
- return this._requestFormData;
- },
-
- set requestFormData(x)
- {
- this._requestFormData = x;
- delete this._parsedFormParameters;
- },
-
- /**
- * @return {string}
- */
- requestHttpVersion: function()
- {
- var headersText = this.requestHeadersText();
- if (!headersText)
- return this.requestHeaderValue("version") || this.requestHeaderValue(":version") || "unknown";
- var firstLine = headersText.split(/\r\n/)[0];
- var match = firstLine.match(/(HTTP\/\d+\.\d+)$/);
- return match ? match[1] : "HTTP/0.9";
- },
-
- /**
- * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
- */
- get responseHeaders()
- {
- return this._responseHeaders || [];
- },
-
- set responseHeaders(x)
- {
- this._responseHeaders = x;
- delete this._sortedResponseHeaders;
- delete this._serverTimings;
- delete this._responseCookies;
- this._responseHeaderValues = {};
-
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.ResponseHeadersChanged);
- },
-
- /**
- * @return {string}
- */
- get responseHeadersText()
- {
- return this._responseHeadersText;
- },
-
- set responseHeadersText(x)
- {
- this._responseHeadersText = x;
-
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.ResponseHeadersChanged);
- },
-
- /**
- * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
- */
- get sortedResponseHeaders()
- {
- if (this._sortedResponseHeaders !== undefined)
- return this._sortedResponseHeaders;
-
- this._sortedResponseHeaders = this.responseHeaders.slice();
- this._sortedResponseHeaders.sort(function(a, b) { return a.name.toLowerCase().compareTo(b.name.toLowerCase()); });
- return this._sortedResponseHeaders;
- },
-
- /**
- * @param {string} headerName
- * @return {string|undefined}
- */
- responseHeaderValue: function(headerName)
- {
- var value = this._responseHeaderValues[headerName];
- if (value === undefined) {
- value = this._headerValue(this.responseHeaders, headerName);
- this._responseHeaderValues[headerName] = (value !== undefined) ? value : null;
- }
- return (value !== null) ? value : undefined;
- },
-
- /**
- * @return {!Array.<!WebInspector.Cookie>}
- */
- get responseCookies()
- {
- if (!this._responseCookies)
- this._responseCookies = WebInspector.CookieParser.parseSetCookie(this.target(), this.responseHeaderValue("Set-Cookie"));
- return this._responseCookies;
- },
-
- /**
- * @return {string|undefined}
- */
- responseLastModified: function()
- {
- return this.responseHeaderValue("last-modified");
- },
-
- /**
- * @return {?Array.<!WebInspector.ServerTiming>}
- */
- get serverTimings()
- {
- if (typeof this._serverTimings === "undefined")
- this._serverTimings = WebInspector.ServerTiming.parseHeaders(this.responseHeaders);
- return this._serverTimings;
- },
-
- /**
- * @return {?string}
- */
- queryString: function()
- {
- if (this._queryString !== undefined)
- return this._queryString;
-
- var queryString = null;
- var url = this.url;
- var questionMarkPosition = url.indexOf("?");
- if (questionMarkPosition !== -1) {
- queryString = url.substring(questionMarkPosition + 1);
- var hashSignPosition = queryString.indexOf("#");
- if (hashSignPosition !== -1)
- queryString = queryString.substring(0, hashSignPosition);
- }
- this._queryString = queryString;
- return this._queryString;
- },
-
- /**
- * @return {?Array.<!WebInspector.NetworkRequest.NameValue>}
- */
- get queryParameters()
- {
- if (this._parsedQueryParameters)
- return this._parsedQueryParameters;
- var queryString = this.queryString();
- if (!queryString)
- return null;
- this._parsedQueryParameters = this._parseParameters(queryString);
- return this._parsedQueryParameters;
- },
-
- /**
- * @return {?Array.<!WebInspector.NetworkRequest.NameValue>}
- */
- get formParameters()
- {
- if (this._parsedFormParameters)
- return this._parsedFormParameters;
- if (!this.requestFormData)
- return null;
- var requestContentType = this.requestContentType();
- if (!requestContentType || !requestContentType.match(/^application\/x-www-form-urlencoded\s*(;.*)?$/i))
- return null;
- this._parsedFormParameters = this._parseParameters(this.requestFormData);
- return this._parsedFormParameters;
- },
-
- /**
- * @return {string}
- */
- responseHttpVersion: function()
- {
- var headersText = this._responseHeadersText;
- if (!headersText)
- return this.responseHeaderValue("version") || this.responseHeaderValue(":version") || "unknown";
- var firstLine = headersText.split(/\r\n/)[0];
- var match = firstLine.match(/^(HTTP\/\d+\.\d+)/);
- return match ? match[1] : "HTTP/0.9";
- },
-
- /**
- * @param {string} queryString
- * @return {!Array.<!WebInspector.NetworkRequest.NameValue>}
- */
- _parseParameters: function(queryString)
- {
- function parseNameValue(pair)
- {
- var position = pair.indexOf("=");
- if (position === -1)
- return {name: pair, value: ""};
- else
- return {name: pair.substring(0, position), value: pair.substring(position + 1)};
- }
- return queryString.split("&").map(parseNameValue);
- },
-
- /**
- * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers
- * @param {string} headerName
- * @return {string|undefined}
- */
- _headerValue: function(headers, headerName)
- {
- headerName = headerName.toLowerCase();
-
- var values = [];
- for (var i = 0; i < headers.length; ++i) {
- if (headers[i].name.toLowerCase() === headerName)
- values.push(headers[i].value);
- }
- if (!values.length)
- return undefined;
- // Set-Cookie values should be separated by '\n', not comma, otherwise cookies could not be parsed.
- if (headerName === "set-cookie")
- return values.join("\n");
- return values.join(", ");
- },
-
- /**
- * @return {?string|undefined}
- */
- get content()
- {
- return this._content;
- },
-
- /**
- * @return {?Protocol.Error|undefined}
- */
- contentError: function()
- {
- return this._contentError;
- },
-
- /**
- * @return {boolean}
- */
- get contentEncoded()
- {
- return this._contentEncoded;
- },
-
- /**
- * @override
- * @return {string}
- */
- contentURL: function()
- {
- return this._url;
- },
-
- /**
- * @override
- * @return {!WebInspector.ResourceType}
- */
- contentType: function()
- {
- return this._resourceType;
- },
-
- /**
- * @override
- * @return {!Promise<?string>}
- */
- requestContent: function()
- {
- // We do not support content retrieval for WebSockets at the moment.
- // Since WebSockets are potentially long-living, fail requests immediately
- // to prevent caller blocking until resource is marked as finished.
- if (this._resourceType === WebInspector.resourceTypes.WebSocket)
- return Promise.resolve(/** @type {?string} */(null));
- if (typeof this._content !== "undefined")
- return Promise.resolve(/** @type {?string} */(this.content || null));
- var callback;
- var promise = new Promise(fulfill => callback = fulfill);
- this._pendingContentCallbacks.push(callback);
- if (this.finished)
- this._innerRequestContent();
- return promise;
- },
-
- /**
- * @override
- * @param {string} query
- * @param {boolean} caseSensitive
- * @param {boolean} isRegex
- * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
- */
- searchInContent: function(query, caseSensitive, isRegex, callback)
- {
- callback([]);
- },
-
- /**
- * @return {boolean}
- */
- isHttpFamily: function()
- {
- return !!this.url.match(/^https?:/i);
- },
-
- /**
- * @return {string|undefined}
- */
- requestContentType: function()
- {
- return this.requestHeaderValue("Content-Type");
- },
-
- /**
- * @return {boolean}
- */
- hasErrorStatusCode: function()
- {
- return this.statusCode >= 400;
- },
-
- /**
- * @param {!NetworkAgent.ResourcePriority} priority
- */
- setInitialPriority: function(priority)
- {
- this._initialPriority = priority;
- },
-
- /**
- * @return {?NetworkAgent.ResourcePriority}
- */
- initialPriority: function()
- {
- return this._initialPriority;
- },
-
- /**
- * @param {!NetworkAgent.ResourcePriority} priority
- */
- setPriority: function(priority)
- {
- this._currentPriority = priority;
- },
-
- /**
- * @return {?NetworkAgent.ResourcePriority}
- */
- priority: function()
- {
- return this._currentPriority || this._initialPriority || null;
- },
-
- /**
- * @param {!Element} image
- */
- populateImageSource: function(image)
- {
- /**
- * @param {?string} content
- * @this {WebInspector.NetworkRequest}
- */
- function onResourceContent(content)
- {
- var imageSrc = WebInspector.ContentProvider.contentAsDataURL(content, this._mimeType, true);
- if (imageSrc === null)
- imageSrc = this._url;
- image.src = imageSrc;
- }
-
- this.requestContent().then(onResourceContent.bind(this));
- },
-
- /**
- * @return {?string}
- */
- asDataURL: function()
- {
- var content = this._content;
- var charset = null;
- if (!this._contentEncoded) {
- content = content.toBase64();
- charset = "utf-8";
- }
- return WebInspector.ContentProvider.contentAsDataURL(content, this.mimeType, true, charset);
- },
-
- _innerRequestContent: function()
- {
- if (this._contentRequested)
- return;
- this._contentRequested = true;
-
- /**
- * @param {?Protocol.Error} error
- * @param {string} content
- * @param {boolean} contentEncoded
- * @this {WebInspector.NetworkRequest}
- */
- function onResourceContent(error, content, contentEncoded)
- {
- this._content = error ? null : content;
- this._contentError = error;
- this._contentEncoded = contentEncoded;
- var callbacks = this._pendingContentCallbacks.slice();
- for (var i = 0; i < callbacks.length; ++i)
- callbacks[i](this._content);
- this._pendingContentCallbacks.length = 0;
- delete this._contentRequested;
- }
- this.target().networkAgent().getResponseBody(this._requestId, onResourceContent.bind(this));
- },
-
- /**
- * @return {?NetworkAgent.Initiator}
- */
- initiator: function()
- {
- return this._initiator;
- },
-
- /**
- * @return {!{type: !WebInspector.NetworkRequest.InitiatorType, url: string, lineNumber: number, columnNumber: number, scriptId: ?string}}
- */
- initiatorInfo: function()
- {
- if (this._initiatorInfo)
- return this._initiatorInfo;
-
- var type = WebInspector.NetworkRequest.InitiatorType.Other;
- var url = "";
- var lineNumber = -Infinity;
- var columnNumber = -Infinity;
- var scriptId = null;
- var initiator = this._initiator;
-
- if (this.redirectSource) {
- type = WebInspector.NetworkRequest.InitiatorType.Redirect;
- url = this.redirectSource.url;
- } else if (initiator) {
- if (initiator.type === NetworkAgent.InitiatorType.Parser) {
- type = WebInspector.NetworkRequest.InitiatorType.Parser;
- url = initiator.url ? initiator.url : url;
- lineNumber = initiator.lineNumber ? initiator.lineNumber : lineNumber;
- } else if (initiator.type === NetworkAgent.InitiatorType.Script) {
- for (var stack = initiator.stack; stack; stack = stack.parent) {
- var topFrame = stack.callFrames.length ? stack.callFrames[0] : null;
- if (!topFrame)
- continue;
- type = WebInspector.NetworkRequest.InitiatorType.Script;
- url = topFrame.url || WebInspector.UIString("<anonymous>");
- lineNumber = topFrame.lineNumber;
- columnNumber = topFrame.columnNumber;
- scriptId = topFrame.scriptId;
- break;
- }
- }
- }
-
- this._initiatorInfo = {type: type, url: url, lineNumber: lineNumber, columnNumber: columnNumber, scriptId: scriptId};
- return this._initiatorInfo;
- },
-
- /**
- * @return {?WebInspector.NetworkRequest}
- */
- initiatorRequest: function()
- {
- if (this._initiatorRequest === undefined)
- this._initiatorRequest = this._networkLog.requestForURL(this.initiatorInfo().url);
- return this._initiatorRequest;
- },
-
- /**
- * @return {!WebInspector.NetworkRequest.InitiatorGraph}
- */
- initiatorGraph: function()
- {
- var initiated = new Set();
- var requests = this._networkLog.requests();
- for (var request of requests) {
- var localInitiators = request._initiatorChain();
- if (localInitiators.has(this))
- initiated.add(request);
- }
- return {initiators: this._initiatorChain(), initiated: initiated};
- },
-
- /**
- * @return {!Set<!WebInspector.NetworkRequest>}
- */
- _initiatorChain: function()
- {
- if (this._initiatorChainCache)
- return this._initiatorChainCache;
- this._initiatorChainCache = new Set();
- var request = this;
- while (request) {
- this._initiatorChainCache.add(request);
- request = request.initiatorRequest();
- }
- return this._initiatorChainCache;
- },
-
- /**
- * @return {!Array.<!WebInspector.NetworkRequest.WebSocketFrame>}
- */
- frames: function()
- {
- return this._frames;
- },
-
- /**
- * @param {string} errorMessage
- * @param {number} time
- */
- addFrameError: function(errorMessage, time)
- {
- this._addFrame({ type: WebInspector.NetworkRequest.WebSocketFrameType.Error, text: errorMessage, time: this.pseudoWallTime(time), opCode: -1, mask: false });
- },
-
- /**
- * @param {!NetworkAgent.WebSocketFrame} response
- * @param {number} time
- * @param {boolean} sent
- */
- addFrame: function(response, time, sent)
- {
- var type = sent ? WebInspector.NetworkRequest.WebSocketFrameType.Send : WebInspector.NetworkRequest.WebSocketFrameType.Receive;
- this._addFrame({ type: type, text: response.payloadData, time: this.pseudoWallTime(time), opCode: response.opcode, mask: response.mask });
- },
-
- /**
- * @param {!WebInspector.NetworkRequest.WebSocketFrame} frame
- */
- _addFrame: function(frame)
- {
- this._frames.push(frame);
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.WebsocketFrameAdded, frame);
- },
-
- /**
- * @return {!Array.<!WebInspector.NetworkRequest.EventSourceMessage>}
- */
- eventSourceMessages: function()
- {
- return this._eventSourceMessages;
- },
-
- /**
- * @param {number} time
- * @param {string} eventName
- * @param {string} eventId
- * @param {string} data
- */
- addEventSourceMessage: function(time, eventName, eventId, data)
- {
- var message = {time: this.pseudoWallTime(time), eventName: eventName, eventId: eventId, data: data};
- this._eventSourceMessages.push(message);
- this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.EventSourceMessageAdded, message);
- },
-
- replayXHR: function()
- {
- this.target().networkAgent().replayXHR(this.requestId);
- },
-
- /**
- * @return {!WebInspector.NetworkLog}
- */
- networkLog: function()
- {
- return this._networkLog;
- },
-
- /**
- * @return {!WebInspector.NetworkManager}
- */
- networkManager: function()
- {
- return this._networkManager;
- },
-
- __proto__: WebInspector.SDKObject.prototype
-};

Powered by Google App Engine
This is Rietveld 408576698