Chromium Code Reviews| 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() |