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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/inspector/network-test.js

Issue 2838673003: [Devtools][Regression] Fixed websocket frame selection loss on frame received (Closed)
Patch Set: [Devtools] Fixed websocket frame selection loss on frame received Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // This goes before everything else to keep console message line number invarian t. 1 // This goes before everything else to keep console message line number invarian t.
2 var lastXHRIndex = 0; 2 var lastXHRIndex = 0;
3 function xhrLoadedCallback() 3 function xhrLoadedCallback()
4 { 4 {
5 // We need to make sure the console message text is unique so that we don't end up with repeat count update only. 5 // We need to make sure the console message text is unique so that we don't end up with repeat count update only.
6 console.log("XHR loaded: " + (++lastXHRIndex)); 6 console.log("XHR loaded: " + (++lastXHRIndex));
7 } 7 }
8 8
9 function makeSimpleXHR(method, url, async, callback) 9 function makeSimpleXHR(method, url, async, callback)
10 { 10 {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 function makeFetch(url, requestInitializer) 46 function makeFetch(url, requestInitializer)
47 { 47 {
48 return fetch(url, requestInitializer).then(res => { 48 return fetch(url, requestInitializer).then(res => {
49 // Call text(). Otherwise the backpressure mechanism may block loading. 49 // Call text(). Otherwise the backpressure mechanism may block loading.
50 res.text(); 50 res.text();
51 return res; 51 return res;
52 }).catch(e => e); 52 }).catch(e => e);
53 } 53 }
54 54
55 function makeWebSocket(url)
56 {
57 return Promise.resolve(new WebSocket(url));
58 }
59
55 var initialize_NetworkTest = function() { 60 var initialize_NetworkTest = function() {
56 61
57 InspectorTest.preloadPanel("network"); 62 InspectorTest.preloadPanel("network");
58 63
64 InspectorTest._sdkRequestStartedPromises = new Map();
65 InspectorTest._sdkResponseReceivedPromises = new Map();
66
67 InspectorTest._handleRequestStarted = function(data) {
68 var request = /** @type {!SDK.NetworkRequest} */ (data.data);
69 var promises = InspectorTest._sdkRequestStartedPromises.get(request.url());
70 if (!promises)
71 return;
72 InspectorTest._sdkRequestStartedPromises.delete(request.url());
73 promises.forEach(resolver => resolver(request));
74 }
75
76 /**
77 * @param {string} url
78 * @return {!Promise<!SDK.NetworkRequest>}
79 */
80 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
81 {
82 return new Promise(resolve => {
83 var promises = InspectorTest._sdkRequestStartedPromises.get(url);
84 if (!promises) {
85 promises = [];
86 InspectorTest._sdkRequestStartedPromises.set(url, promises);
87 }
88 promises.push(resolve);
89 });
90 }
91
92 /**
93 * @param {string} url
94 */
95 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.
96 {
97 return InspectorTest.callFunctionInPageAsync("makeWebSocket", [url]);
98 }
99
100 /**
101 * @param {!SDK.NetworkRequest} request
102 */
103 InspectorTest._resolveResponseReceivedsIfNeeded = function(request) {
104 if (request.responseReceivedTime === -1)
105 return;
106 var promises = InspectorTest._sdkResponseReceivedPromises.get(request);
107 if (!promises)
108 return;
109 InspectorTest._sdkResponseReceivedPromises.delete(request);
110 promises.forEach(resolver => resolver(request));
111 }
112
113 /**
114 * @param {!SDK.NetworkRequest} request
115 * @return {!Promise<!SDK.NetworkRequest>}
116 */
117 InspectorTest.waitForRequestResponse = function(request)
118 {
119 return new Promise(resolve => {
120 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.
121 if (!promises) {
122 promises = [];
123 InspectorTest._sdkResponseReceivedPromises.set(request, promises);
124 }
125 promises.push(resolve);
126 InspectorTest._resolveResponseReceivedsIfNeeded(request);
127 });
128 }
129
130 /**
131 * @param {string}
132 * @return {?Network.NetworkRequestNode}
133 */
134 InspectorTest.networkLogViewNodeForRequestId = function(id)
135 {
136 return UI.panels.network._networkLogView._nodesByRequestId.get(id) || null;
137 }
138
139 /**
140 * @param {!SDK.NetworkRequest} wsRequest
141 * @param {string} message
142 * @return {!Promise<!SDK.NetworkRequest.WebSocketFrame>}
143 */
144 InspectorTest.waitForWebsocketFrameReceived = function(wsRequest, message)
145 {
146 return new Promise(resolve => {
147 for (var frame of wsRequest.frames()) {
148 if (resolveIfNeeded(frame))
149 return;
150 }
151 wsRequest.addEventListener(SDK.NetworkRequest.Events.WebsocketFrameAdded , handleFrameReceived);
152
153 function handleFrameReceived(data)
154 {
155 if (resolveIfNeeded(/** @type {!SDK.NetworkRequest.WebSocketFrame} * / (data.data)))
156 wsRequest.removeEventListener(SDK.NetworkRequest.Events.Websocke tFrameAdded, handleFrameReceived);
157 }
158
159 function resolveIfNeeded(frame)
160 {
161 if (frame.type !== SDK.NetworkRequest.WebSocketFrameType.Receive || frame.text !== message)
162 return false;
163 resolve(frame);
164 return true;
165 }
166 });
167 }
168
59 InspectorTest.recordNetwork = function() 169 InspectorTest.recordNetwork = function()
60 { 170 {
61 UI.panels.network._networkLogView.setRecording(true); 171 UI.panels.network._networkLogView.setRecording(true);
172 InspectorTest.networkManager.addEventListener(SDK.NetworkManager.Events.Requ estStarted, InspectorTest._handleRequestStarted);
173 InspectorTest.networkManager.addEventListener(SDK.NetworkManager.Events.Requ estUpdated, data => InspectorTest._resolveResponseReceivedsIfNeeded(/** @type {! SDK.NetworkRequest} */ (data.data)));
62 } 174 }
63 175
64 InspectorTest.networkRequests = function() 176 InspectorTest.networkRequests = function()
65 { 177 {
66 return NetworkLog.networkLog.requests().slice(); 178 return NetworkLog.networkLog.requests().slice();
67 } 179 }
68 180
69 InspectorTest.dumpNetworkRequests = function() 181 InspectorTest.dumpNetworkRequests = function()
70 { 182 {
71 var requests = InspectorTest.networkRequests(); 183 var requests = InspectorTest.networkRequests();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 version: "formatAsTypeName", 261 version: "formatAsTypeName",
150 wait: "formatAsTypeName", 262 wait: "formatAsTypeName",
151 _transferSize: "formatAsTypeName", 263 _transferSize: "formatAsTypeName",
152 _error: "skip" 264 _error: "skip"
153 }; 265 };
154 // addObject checks own properties only, so make a deep copy rather than use pro totype. 266 // addObject checks own properties only, so make a deep copy rather than use pro totype.
155 InspectorTest.HARPropertyFormattersWithSize = JSON.parse(JSON.stringify(Inspecto rTest.HARPropertyFormatters)); 267 InspectorTest.HARPropertyFormattersWithSize = JSON.parse(JSON.stringify(Inspecto rTest.HARPropertyFormatters));
156 InspectorTest.HARPropertyFormattersWithSize.size = "formatAsTypeName"; 268 InspectorTest.HARPropertyFormattersWithSize.size = "formatAsTypeName";
157 269
158 }; 270 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698