| 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 |