summaryrefslogtreecommitdiffstats
path: root/toolkit/modules
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 02:30:12 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 02:30:12 +0000
commitac282b5848d90db100955fee6ce47745f67e0f40 (patch)
treea7f1cb23c9be53cc524781feccc0ad1f5a59ab97 /toolkit/modules
parentReleasing progress-linux version 115.8.0esr-1~progress7.99u1. (diff)
downloadfirefox-esr-ac282b5848d90db100955fee6ce47745f67e0f40.tar.xz
firefox-esr-ac282b5848d90db100955fee6ce47745f67e0f40.zip
Merging upstream version 115.9.0esr.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/modules')
-rw-r--r--toolkit/modules/PopupNotifications.sys.mjs17
1 files changed, 13 insertions, 4 deletions
diff --git a/toolkit/modules/PopupNotifications.sys.mjs b/toolkit/modules/PopupNotifications.sys.mjs
index ca51346625..0c33220174 100644
--- a/toolkit/modules/PopupNotifications.sys.mjs
+++ b/toolkit/modules/PopupNotifications.sys.mjs
@@ -309,9 +309,11 @@ export function PopupNotifications(tabbrowser, panel, iconBox, options = {}) {
);
Services.obs.addObserver(this, "fullscreen-transition-start");
+ Services.obs.addObserver(this, "pointer-lock-entered");
this.window.addEventListener("unload", () => {
Services.obs.removeObserver(this, "fullscreen-transition-start");
+ Services.obs.removeObserver(this, "pointer-lock-entered");
});
this.window.addEventListener("activate", this, true);
@@ -361,7 +363,11 @@ PopupNotifications.prototype = {
},
observe(subject, topic) {
- if (topic == "fullscreen-transition-start") {
+ // These observers apply to all windows.
+ if (
+ topic == "fullscreen-transition-start" ||
+ topic == "pointer-lock-entered"
+ ) {
// Extend security delay if the panel is open.
if (this.isPanelOpen) {
let notification = this.panel.firstChild?.notification;
@@ -1336,9 +1342,12 @@ PopupNotifications.prototype = {
n._recordTelemetryStat(TELEMETRY_STAT_OFFERED);
}, this);
- // We're about to open the panel while in a full screen transition. Extend
- // the security delay.
- if (this.window.isInFullScreenTransition) {
+ // We're about to open the panel while in a full screen transition or
+ // during pointer lock. Extend the security delay to avoid clickjacking.
+ if (
+ this.window.isInFullScreenTransition ||
+ this.window.PointerLock?.isActive
+ ) {
this._extendSecurityDelay(notificationsToShow);
}