From f8539031f71a6db5fd5dbd456cc9360bd16179e3 Mon Sep 17 00:00:00 2001 From: Luca Greco Date: Thu, 7 Sep 2023 10:02:53 +0000 Subject: [PATCH] Bug 1851373 - Only forcefully set EventManager resetIdleOnEvent flag to false for extensions with a persistent background page. r=robwu Differential Revision: https://phabricator.services.mozilla.com/D187494 --- .../components/extensions/ExtensionCommon.sys.mjs | 12 +++++++++++- .../extensions/test/xpcshell/test_ext_experiments.js | 2 -- .../test/xpcshell/test_ext_persistent_events.js | 2 -- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/toolkit/components/extensions/ExtensionCommon.sys.mjs b/toolkit/components/extensions/ExtensionCommon.sys.mjs index 075500863c11..e9c6b7a3982b 100644 --- a/toolkit/components/extensions/ExtensionCommon.sys.mjs +++ b/toolkit/components/extensions/ExtensionCommon.sys.mjs @@ -2277,8 +2277,18 @@ class EventManager { this.context.envType === "addon_parent" && this.context.isBackgroundContext; + // TODO(Bug 1844041): ideally we should restrict resetIdleOnEvent to + // EventManager instances that belongs to the event page, but along + // with that we should consider if calling sendMessage from an event + // page should also reset idle timer, and so in the shorter term + // here we are allowing listeners from other extension pages to + // also reset the idle timer. + const isAddonContext = ["addon_parent", "addon_child"].includes( + this.context.envType + ); + // Avoid resetIdleOnEvent overhead by only consider it when applicable. - if (!isBackgroundParent || context.extension.persistentBackground) { + if (!isAddonContext || context.extension.persistentBackground) { this.resetIdleOnEvent = false; } diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_experiments.js b/toolkit/components/extensions/test/xpcshell/test_ext_experiments.js index 58f2321c328c..cd2eb4dbb7d3 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_experiments.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_experiments.js @@ -101,8 +101,6 @@ let fooExperimentFiles = { assertResetOnIdleOnEvent() { const expectResetIdleOnEventFalse = - this.context.envType !== "addon_parent" || - !this.context.isBackgroundContext || this.context.extension.persistentBackground; if (expectResetIdleOnEventFalse && this.resetIdleOnEvent) { const details = { diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_persistent_events.js b/toolkit/components/extensions/test/xpcshell/test_ext_persistent_events.js index 69ec086356a4..d40cfe8f1b72 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_persistent_events.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_persistent_events.js @@ -92,8 +92,6 @@ const API = class extends ExtensionAPI { assertResetOnIdleOnEvent() { const expectResetIdleOnEventFalse = - this.context.envType !== "addon_parent" || - !this.context.isBackgroundContext || this.context.extension.persistentBackground; if (expectResetIdleOnEventFalse && this.resetIdleOnEvent) { const details = {