Index: third_party/WebKit/LayoutTests/http/tests/inspector/network-test.js |
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/network-test.js b/third_party/WebKit/LayoutTests/http/tests/inspector/network-test.js |
index dc9bf760c1d2583e9bd52ef4a97af93ff0d1c944..5a55e3cbd7e28ec1dbc8cafccdf1e52e30f91162 100644 |
--- a/third_party/WebKit/LayoutTests/http/tests/inspector/network-test.js |
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/network-test.js |
@@ -52,13 +52,125 @@ function makeFetch(url, requestInitializer) |
}).catch(e => e); |
} |
+function makeWebSocket(url) |
+{ |
+ return Promise.resolve(new WebSocket(url)); |
+} |
+ |
var initialize_NetworkTest = function() { |
InspectorTest.preloadPanel("network"); |
+InspectorTest._sdkRequestStartedPromises = new Map(); |
+InspectorTest._sdkResponseReceivedPromises = new Map(); |
+ |
+InspectorTest._handleRequestStarted = function(data) { |
+ var request = /** @type {!SDK.NetworkRequest} */ (data.data); |
+ var promises = InspectorTest._sdkRequestStartedPromises.get(request.url()); |
+ if (!promises) |
+ return; |
+ InspectorTest._sdkRequestStartedPromises.delete(request.url()); |
+ promises.forEach(resolver => resolver(request)); |
+} |
+ |
+/** |
+ * @param {string} url |
+ * @return {!Promise<!SDK.NetworkRequest>} |
+ */ |
+InspectorTest.sdkRequestStartedFromUrlPromise = function(url) |
dgozman
2017/04/25 21:20:45
Doesn't InspectorTest.findRequestsByURLPattern wor
allada
2017/04/27 17:03:19
Partially, My goal was to have a function that wou
|
+{ |
+ return new Promise(resolve => { |
+ var promises = InspectorTest._sdkRequestStartedPromises.get(url); |
+ if (!promises) { |
+ promises = []; |
+ InspectorTest._sdkRequestStartedPromises.set(url, promises); |
+ } |
+ promises.push(resolve); |
+ }); |
+} |
+ |
+/** |
+ * @param {string} url |
+ */ |
+InspectorTest.makeWebsocketPromise = function(url) |
dgozman
2017/04/25 21:20:45
Only add "promise" at the end if there is non-prom
allada
2017/04/27 17:03:19
Done.
|
+{ |
+ return InspectorTest.callFunctionInPageAsync("makeWebSocket", [url]); |
+} |
+ |
+/** |
+ * @param {!SDK.NetworkRequest} request |
+ */ |
+InspectorTest._resolveResponseReceivedsIfNeeded = function(request) { |
+ if (request.responseReceivedTime === -1) |
+ return; |
+ var promises = InspectorTest._sdkResponseReceivedPromises.get(request); |
+ if (!promises) |
+ return; |
+ InspectorTest._sdkResponseReceivedPromises.delete(request); |
+ promises.forEach(resolver => resolver(request)); |
+} |
+ |
+/** |
+ * @param {!SDK.NetworkRequest} request |
+ * @return {!Promise<!SDK.NetworkRequest>} |
+ */ |
+InspectorTest.waitForRequestResponse = function(request) |
+{ |
+ return new Promise(resolve => { |
+ var promises = InspectorTest._sdkResponseReceivedPromises.get(request); |
dgozman
2017/04/25 21:20:45
It's easier to add/remove listener right here, ins
allada
2017/04/27 17:03:19
Done.
|
+ if (!promises) { |
+ promises = []; |
+ InspectorTest._sdkResponseReceivedPromises.set(request, promises); |
+ } |
+ promises.push(resolve); |
+ InspectorTest._resolveResponseReceivedsIfNeeded(request); |
+ }); |
+} |
+ |
+/** |
+ * @param {string} |
+ * @return {?Network.NetworkRequestNode} |
+ */ |
+InspectorTest.networkLogViewNodeForRequestId = function(id) |
+{ |
+ return UI.panels.network._networkLogView._nodesByRequestId.get(id) || null; |
+} |
+ |
+/** |
+ * @param {!SDK.NetworkRequest} wsRequest |
+ * @param {string} message |
+ * @return {!Promise<!SDK.NetworkRequest.WebSocketFrame>} |
+ */ |
+InspectorTest.waitForWebsocketFrameReceived = function(wsRequest, message) |
+{ |
+ return new Promise(resolve => { |
+ for (var frame of wsRequest.frames()) { |
+ if (resolveIfNeeded(frame)) |
+ return; |
+ } |
+ wsRequest.addEventListener(SDK.NetworkRequest.Events.WebsocketFrameAdded, handleFrameReceived); |
+ |
+ function handleFrameReceived(data) |
+ { |
+ if (resolveIfNeeded(/** @type {!SDK.NetworkRequest.WebSocketFrame} */ (data.data))) |
+ wsRequest.removeEventListener(SDK.NetworkRequest.Events.WebsocketFrameAdded, handleFrameReceived); |
+ } |
+ |
+ function resolveIfNeeded(frame) |
+ { |
+ if (frame.type !== SDK.NetworkRequest.WebSocketFrameType.Receive || frame.text !== message) |
+ return false; |
+ resolve(frame); |
+ return true; |
+ } |
+ }); |
+} |
+ |
InspectorTest.recordNetwork = function() |
{ |
UI.panels.network._networkLogView.setRecording(true); |
+ InspectorTest.networkManager.addEventListener(SDK.NetworkManager.Events.RequestStarted, InspectorTest._handleRequestStarted); |
+ InspectorTest.networkManager.addEventListener(SDK.NetworkManager.Events.RequestUpdated, data => InspectorTest._resolveResponseReceivedsIfNeeded(/** @type {!SDK.NetworkRequest} */ (data.data))); |
} |
InspectorTest.networkRequests = function() |