diff --git a/devtools/shared/network-observer/NetworkObserver.sys.mjs b/devtools/shared/network-observer/NetworkObserver.sys.mjs index 4fb9192bbb9a..8a740d893b56 100644 --- a/devtools/shared/network-observer/NetworkObserver.sys.mjs +++ b/devtools/shared/network-observer/NetworkObserver.sys.mjs @@ -86,11 +86,13 @@ const HTTP_DOWNLOAD_ACTIVITIES = [ * This function will be called for every detected channel to decide if it * should be monitored or not. * @param {Function(NetworkEvent): owner} options.onNetworkEvent - * This method is invoked once for every new network request with a single - * "networkEvent" argument, which is an object created by - * NetworkUtils:createNetworkEvent, containing initial network request - * information as an argument. - * onNetworkEvent() must return an "owner" object which holds several add*() + * This method is invoked once for every new network request with two + * arguments: + * - {Object} networkEvent: object created by NetworkUtils:createNetworkEvent, + * containing initial network request information as an argument. + * - {nsIChannel} channel: the channel for which the request was detected + * + * `onNetworkEvent()` must return an "owner" object which holds several add*() * methods which are used to add further network request/response information. */ export class NetworkObserver { @@ -722,7 +724,7 @@ export class NetworkObserver { httpActivity.isXHR = event.isXHR; httpActivity.private = event.private; httpActivity.fromServiceWorker = fromServiceWorker; - httpActivity.owner = this.#onNetworkEvent(event); + httpActivity.owner = this.#onNetworkEvent(event, channel); // Bug 1489217 - Avoid watching for response content for blocked or in-progress requests // as it can't be observed and would throw if we try. diff --git a/devtools/shared/network-observer/test/browser/browser_networkobserver.js b/devtools/shared/network-observer/test/browser/browser_networkobserver.js index 534166b6fc0d..73e9f8510aaa 100644 --- a/devtools/shared/network-observer/test/browser/browser_networkobserver.js +++ b/devtools/shared/network-observer/test/browser/browser_networkobserver.js @@ -46,3 +46,27 @@ add_task(async function testMultipleRequests() { "Received the expected number of network events" ); }); + +add_task(async function testOnNetworkEventArguments() { + await addTab(TEST_URL); + + const onNetworkEvent = new Promise(resolve => { + const networkObserver = new NetworkObserver({ + ignoreChannelFunction: () => false, + onNetworkEvent: (...args) => { + resolve(args); + return createNetworkEventOwner(); + }, + }); + registerCleanupFunction(() => networkObserver.destroy()); + }); + + await SpecialPowers.spawn(gBrowser.selectedBrowser, [REQUEST_URL], _url => { + content.wrappedJSObject.sendRequest(_url); + }); + + const args = await onNetworkEvent; + is(args.length, 2, "Received two arguments"); + is(typeof args[0], "object", "First argument is an object"); + ok(args[1] instanceof Ci.nsIChannel, "Second argument is a channel"); +});