From ea482c4751d65f4c6e07d4ee8f38901486fbf504 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Fri, 15 Feb 2019 23:34:01 -0800 Subject: [PATCH] fix(firefox): properly cleanup networkmanager (#4024) --- experimental/puppeteer-firefox/lib/NetworkManager.js | 8 ++++---- experimental/puppeteer-firefox/lib/Page.js | 1 + test/navigation.spec.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/experimental/puppeteer-firefox/lib/NetworkManager.js b/experimental/puppeteer-firefox/lib/NetworkManager.js index be7b653daf9fc..73c0f77451c7a 100644 --- a/experimental/puppeteer-firefox/lib/NetworkManager.js +++ b/experimental/puppeteer-firefox/lib/NetworkManager.js @@ -18,6 +18,10 @@ class NetworkManager extends EventEmitter { ]; } + dispose() { + helper.removeEventListeners(this._eventListeners); + } + setFrameManager(frameManager) { this._frameManager = frameManager; } @@ -57,10 +61,6 @@ class NetworkManager extends EventEmitter { this._requests.delete(request._id); this.emit(Events.NetworkManager.RequestFinished, request); } - - dispose() { - helper.removeEventListeners(this._eventListeners); - } } /** diff --git a/experimental/puppeteer-firefox/lib/Page.js b/experimental/puppeteer-firefox/lib/Page.js index e0a9b8c0e40d6..1f9784502359f 100644 --- a/experimental/puppeteer-firefox/lib/Page.js +++ b/experimental/puppeteer-firefox/lib/Page.js @@ -570,6 +570,7 @@ class Page extends EventEmitter { _onClosed() { this._isClosed = true; this._frameManager.dispose(); + this._networkManager.dispose(); helper.removeEventListeners(this._eventListeners); this.emit(Events.Page.Close); } diff --git a/test/navigation.spec.js b/test/navigation.spec.js index 99940dda05695..dd1a0fe5a415e 100644 --- a/test/navigation.spec.js +++ b/test/navigation.spec.js @@ -256,7 +256,7 @@ module.exports.addTests = function({testRunner, expect, Errors, CHROME}) { process.removeListener('warning', warningHandler); expect(warning).toBe(null); }); - it_fails_ffox('should not leak listeners during bad navigation', async({page, server}) => { + it('should not leak listeners during bad navigation', async({page, server}) => { let warning = null; const warningHandler = w => warning = w; process.on('warning', warningHandler);