mirror of
https://github.com/zen-browser/desktop.git
synced 2026-02-22 11:26:41 +00:00
fix: Add null checks for tab permissions and conversions in TabManagerBase, ensuring stability with empty tabs, p=#11302
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
diff --git a/toolkit/components/extensions/parent/ext-tabs-base.js b/toolkit/components/extensions/parent/ext-tabs-base.js
|
||||
index d3c2d62406d17a14b0288752c34b6dd4350f032a..2f970d41b8ada9a13fc18b8d2a6607b973983072 100644
|
||||
--- a/toolkit/components/extensions/parent/ext-tabs-base.js
|
||||
+++ b/toolkit/components/extensions/parent/ext-tabs-base.js
|
||||
@@ -1942,6 +1942,7 @@ class TabManagerBase {
|
||||
*/
|
||||
addActiveTabPermission(nativeTab) {
|
||||
let tab = this.getWrapper(nativeTab);
|
||||
+ if (!tab) return; // Empty tabs aren't tracked, nothing to add
|
||||
if (
|
||||
this.extension.hasPermission("activeTab") ||
|
||||
(this.extension.originControls &&
|
||||
@@ -1963,7 +1964,9 @@ class TabManagerBase {
|
||||
* The native tab for which to revoke permissions.
|
||||
*/
|
||||
revokeActiveTabPermission(nativeTab) {
|
||||
- this.getWrapper(nativeTab).activeTabWindowID = null;
|
||||
+ let wrapper = this.getWrapper(nativeTab);
|
||||
+ if (!wrapper) return; // Empty tabs arent tracked, nothing to revoke
|
||||
+ wrapper.activeTabWindowID = null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1976,7 +1979,9 @@ class TabManagerBase {
|
||||
* True if the extension has activeTab permissions for this tab.
|
||||
*/
|
||||
hasActiveTabPermission(nativeTab) {
|
||||
- return this.getWrapper(nativeTab).hasActiveTabPermission;
|
||||
+ let wrapper = this.getWrapper(nativeTab);
|
||||
+ if (!wrapper) return false; // Empty tabs arent tracked, nothing to check
|
||||
+ return wrapper.hasActiveTabPermission;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1987,6 +1992,7 @@ class TabManagerBase {
|
||||
*/
|
||||
activateScripts(nativeTab) {
|
||||
let tab = this.getWrapper(nativeTab);
|
||||
+ if (!tab) return; // Empty tabs aren't tracked, nothing to activate
|
||||
if (
|
||||
this.extension.originControls &&
|
||||
!tab.matchesHostPermission &&
|
||||
@@ -2019,7 +2025,9 @@ class TabManagerBase {
|
||||
* True if the extension has permissions for this tab.
|
||||
*/
|
||||
hasTabPermission(nativeTab) {
|
||||
- return this.getWrapper(nativeTab).hasTabPermission;
|
||||
+ let wrapper = this.getWrapper(nativeTab);
|
||||
+ if (!wrapper) return false; // Empty tabs arent tracked, nothing to check
|
||||
+ return wrapper.hasTabPermission;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2066,7 +2074,9 @@ class TabManagerBase {
|
||||
* @returns {object}
|
||||
*/
|
||||
convert(nativeTab, fallbackTabSize = null) {
|
||||
- return this.getWrapper(nativeTab).convert(fallbackTabSize);
|
||||
+ let wrapper = this.getWrapper(nativeTab);
|
||||
+ if (!wrapper) return null; // Empty tabs aren't tracked, can't convert
|
||||
+ return wrapper.convert(fallbackTabSize);
|
||||
}
|
||||
|
||||
/**
|
||||
Reference in New Issue
Block a user