OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var getURL = chrome.extension.getURL; | 5 var getURL = chrome.extension.getURL; |
6 var deepEq = chrome.test.checkDeepEq; | 6 var deepEq = chrome.test.checkDeepEq; |
7 var expectedEventData; | 7 var expectedEventData; |
8 var capturedEventData; | 8 var capturedEventData; |
9 var expectedEventOrder; | 9 var expectedEventOrder; |
10 var tabId; | 10 var tabId; |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 } | 229 } |
230 } | 230 } |
231 | 231 |
232 // Simple array intersection. We use this to filter extraInfoSpec so | 232 // Simple array intersection. We use this to filter extraInfoSpec so |
233 // that only the allowed specs are sent to each listener. | 233 // that only the allowed specs are sent to each listener. |
234 function intersect(array1, array2) { | 234 function intersect(array1, array2) { |
235 return array1.filter(function(x) { return array2.indexOf(x) != -1; }); | 235 return array1.filter(function(x) { return array2.indexOf(x) != -1; }); |
236 } | 236 } |
237 | 237 |
238 function initListeners(filter, extraInfoSpec) { | 238 function initListeners(filter, extraInfoSpec) { |
239 chrome.experimental.webRequest.onBeforeRequest.addListener( | 239 chrome.webRequest.onBeforeRequest.addListener( |
240 function(details) { | 240 function(details) { |
241 return captureEvent("onBeforeRequest", details); | 241 return captureEvent("onBeforeRequest", details); |
242 }, filter, intersect(extraInfoSpec, ["blocking"])); | 242 }, filter, intersect(extraInfoSpec, ["blocking"])); |
243 chrome.experimental.webRequest.onBeforeSendHeaders.addListener( | 243 chrome.webRequest.onBeforeSendHeaders.addListener( |
244 function(details) { | 244 function(details) { |
245 return captureEvent("onBeforeSendHeaders", details); | 245 return captureEvent("onBeforeSendHeaders", details); |
246 }, filter, intersect(extraInfoSpec, ["blocking", "requestHeaders"])); | 246 }, filter, intersect(extraInfoSpec, ["blocking", "requestHeaders"])); |
247 chrome.experimental.webRequest.onSendHeaders.addListener( | 247 chrome.webRequest.onSendHeaders.addListener( |
248 function(details) { | 248 function(details) { |
249 return captureEvent("onSendHeaders", details); | 249 return captureEvent("onSendHeaders", details); |
250 }, filter, intersect(extraInfoSpec, ["requestHeaders"])); | 250 }, filter, intersect(extraInfoSpec, ["requestHeaders"])); |
251 chrome.experimental.webRequest.onHeadersReceived.addListener( | 251 chrome.webRequest.onHeadersReceived.addListener( |
252 function(details) { | 252 function(details) { |
253 return captureEvent("onHeadersReceived", details); | 253 return captureEvent("onHeadersReceived", details); |
254 }, filter, intersect(extraInfoSpec, ["blocking", "responseHeaders"])); | 254 }, filter, intersect(extraInfoSpec, ["blocking", "responseHeaders"])); |
255 chrome.experimental.webRequest.onAuthRequired.addListener( | 255 chrome.webRequest.onAuthRequired.addListener( |
256 function(details, callback) { | 256 function(details, callback) { |
257 return captureEvent("onAuthRequired", details, callback); | 257 return captureEvent("onAuthRequired", details, callback); |
258 }, filter, intersect(extraInfoSpec, ["asyncBlocking", "blocking", | 258 }, filter, intersect(extraInfoSpec, ["asyncBlocking", "blocking", |
259 "responseHeaders"])); | 259 "responseHeaders"])); |
260 chrome.experimental.webRequest.onResponseStarted.addListener( | 260 chrome.webRequest.onResponseStarted.addListener( |
261 function(details) { | 261 function(details) { |
262 return captureEvent("onResponseStarted", details); | 262 return captureEvent("onResponseStarted", details); |
263 }, filter, intersect(extraInfoSpec, ["responseHeaders"])); | 263 }, filter, intersect(extraInfoSpec, ["responseHeaders"])); |
264 chrome.experimental.webRequest.onBeforeRedirect.addListener( | 264 chrome.webRequest.onBeforeRedirect.addListener( |
265 function(details) { | 265 function(details) { |
266 return captureEvent("onBeforeRedirect", details); | 266 return captureEvent("onBeforeRedirect", details); |
267 }, filter, intersect(extraInfoSpec, ["responseHeaders"])); | 267 }, filter, intersect(extraInfoSpec, ["responseHeaders"])); |
268 chrome.experimental.webRequest.onCompleted.addListener( | 268 chrome.webRequest.onCompleted.addListener( |
269 function(details) { | 269 function(details) { |
270 return captureEvent("onCompleted", details); | 270 return captureEvent("onCompleted", details); |
271 }, filter, intersect(extraInfoSpec, ["responseHeaders"])); | 271 }, filter, intersect(extraInfoSpec, ["responseHeaders"])); |
272 chrome.experimental.webRequest.onErrorOccurred.addListener( | 272 chrome.webRequest.onErrorOccurred.addListener( |
273 function(details) { | 273 function(details) { |
274 return captureEvent("onErrorOccurred", details); | 274 return captureEvent("onErrorOccurred", details); |
275 }, filter); | 275 }, filter); |
276 } | 276 } |
277 | 277 |
278 function removeListeners() { | 278 function removeListeners() { |
279 function helper(event) { | 279 function helper(event) { |
280 // Note: We're poking at the internal event data, but it's easier than | 280 // Note: We're poking at the internal event data, but it's easier than |
281 // the alternative. If this starts failing, we just need to update this | 281 // the alternative. If this starts failing, we just need to update this |
282 // helper. | 282 // helper. |
283 for (var i in event.subEvents_) { | 283 for (var i in event.subEvents_) { |
284 event.removeListener(event.subEvents_[i].callback); | 284 event.removeListener(event.subEvents_[i].callback); |
285 } | 285 } |
286 chrome.test.assertFalse(event.hasListeners()); | 286 chrome.test.assertFalse(event.hasListeners()); |
287 } | 287 } |
288 helper(chrome.experimental.webRequest.onBeforeRequest); | 288 helper(chrome.webRequest.onBeforeRequest); |
289 helper(chrome.experimental.webRequest.onBeforeSendHeaders); | 289 helper(chrome.webRequest.onBeforeSendHeaders); |
290 helper(chrome.experimental.webRequest.onAuthRequired); | 290 helper(chrome.webRequest.onAuthRequired); |
291 helper(chrome.experimental.webRequest.onSendHeaders); | 291 helper(chrome.webRequest.onSendHeaders); |
292 helper(chrome.experimental.webRequest.onHeadersReceived); | 292 helper(chrome.webRequest.onHeadersReceived); |
293 helper(chrome.experimental.webRequest.onResponseStarted); | 293 helper(chrome.webRequest.onResponseStarted); |
294 helper(chrome.experimental.webRequest.onBeforeRedirect); | 294 helper(chrome.webRequest.onBeforeRedirect); |
295 helper(chrome.experimental.webRequest.onCompleted); | 295 helper(chrome.webRequest.onCompleted); |
296 helper(chrome.experimental.webRequest.onErrorOccurred); | 296 helper(chrome.webRequest.onErrorOccurred); |
297 } | 297 } |
OLD | NEW |