Skip to content

Commit 6b6cfd4

Browse files
Bail on missing tabs (#3194)
* Bail on missing tabs * Remove grade console log * Bail early on corrupt argumentsObjects
1 parent acc57c4 commit 6b6cfd4

File tree

6 files changed

+13
-5
lines changed

6 files changed

+13
-5
lines changed

shared/js/background/components/devtools.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class DevtoolsConnection {
6262
setTab({ tabId }) {
6363
this._tabIdResolver(tabId);
6464
const tab = tabManager.get({ tabId });
65+
if (!tab) return;
6566
this.postMessage('tabChange', this.devtools.serializeTab(tab));
6667
}
6768

@@ -82,6 +83,7 @@ class DevtoolsConnection {
8283
} else {
8384
const tabId = await this.tabId;
8485
const tab = tabManager.get({ tabId });
86+
if (!tab) return;
8587
const enabled = tab.site?.enabledFeatures.includes(feature);
8688
const tabDomain = tldts.getDomain(tab.site.domain);
8789

@@ -110,6 +112,7 @@ class DevtoolsConnection {
110112
async toggleProtections() {
111113
const tabId = await this.tabId;
112114
const tab = tabManager.get({ tabId });
115+
if (!tab) return;
113116
if (tab.site?.isBroken && tab.url) {
114117
await this.devtools.tds.remoteConfig.modify((config) => {
115118
removeBroken(tab.site.domain, config);

shared/js/background/components/tab-tracking.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default class TabTracker extends EventTarget {
2828
(request) => {
2929
this.tabManager.updateTabUrl(request);
3030
const tab = tabManager.get({ tabId: request.tabId });
31+
if (!tab) return;
3132

3233
tab.httpErrorCodes.push(request.statusCode);
3334

shared/js/background/https.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ class HTTPS {
157157
downgradeTab({ tabId, expectedUrl, targetUrl }) {
158158
// make sure that tab still has expected url (user could have navigated away or been redirected)
159159
const tab = tabManager.get({ tabId });
160+
if (!tab) return;
160161

161162
if (tab.url !== expectedUrl && tab.url !== targetUrl) {
162163
console.warn(`HTTPS: Not downgrading, expected and actual tab URLs don't match: ${expectedUrl} vs ${tab.url}`);

shared/js/background/message-handlers.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ export async function registeredContentScript(options, sender, req) {
3232
}
3333
argumentsObject.code = injectCode;
3434
}
35-
3635
return argumentsObject;
3736
}
3837

@@ -160,6 +159,7 @@ export async function getYouTubeVideoDetails(videoURL) {
160159

161160
export async function unblockClickToLoadContent(data, sender) {
162161
const tab = tabManager.get({ tabId: sender.tab.id });
162+
if (!tab) return;
163163

164164
if (!tab.disabledClickToLoadRuleActions.includes(data.action)) {
165165
tab.disabledClickToLoadRuleActions.push(data.action);
@@ -172,6 +172,7 @@ export async function unblockClickToLoadContent(data, sender) {
172172

173173
export function updateYouTubeCTLAddedFlag(value, sender) {
174174
const tab = tabManager.get({ tabId: sender.tab.id });
175+
if (!tab) return;
175176
tab.ctlYouTube = Boolean(value);
176177
}
177178

@@ -200,6 +201,7 @@ export function updateFacebookCTLBreakageFlags({ ctlFacebookPlaceholderShown = f
200201
}
201202

202203
const tab = tabManager.get({ tabId });
204+
if (!tab) return;
203205

204206
if (ctlFacebookPlaceholderShown) {
205207
tab.ctlFacebookPlaceholderShown = true;
@@ -278,6 +280,7 @@ export async function isClickToLoadYoutubeEnabled() {
278280

279281
export function addDebugFlag(message, sender, req) {
280282
const tab = tabManager.get({ tabId: sender.tab.id });
283+
if (!tab) return;
281284
const flags = new Set(tab.debugFlags);
282285
flags.add(message.flag);
283286
tab.debugFlags = [...flags];

shared/js/background/tab-manager.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class TabManager {
9292
/**
9393
* Called using either a chrome tab object or by id
9494
* get({tabId: ###});
95-
* @returns {Tab}
95+
* @returns {Tab|undefined}
9696
*/
9797
get(tabData) {
9898
if (tabData.tabId === -1 && (tabData.initiator || tabData.documentUrl)) {
@@ -122,7 +122,7 @@ class TabManager {
122122
async getOrRestoreCurrentTab() {
123123
const currentTabDetails = await getCurrentTab();
124124
if (currentTabDetails?.id) {
125-
return await tabManager.getOrRestoreTab(currentTabDetails.id);
125+
return (await tabManager.getOrRestoreTab(currentTabDetails.id)) || null;
126126
}
127127
return null;
128128
}
@@ -209,8 +209,6 @@ class TabManager {
209209
const hasHttps = !!(tab.url && tab.url.match(/^https:\/\//));
210210
tab.site.grade.setHttps(hasHttps, hasHttps);
211211

212-
console.info(tab.site.grade);
213-
214212
if (tab.statusCode === 200 && !tab.site.didIncrementCompaniesData) {
215213
if (tab.trackers && Object.keys(tab.trackers).length > 0) {
216214
Companies.incrementTotalPagesWithTrackers();

shared/js/content-scripts/content-scope-messaging.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ async function init() {
3535
},
3636
},
3737
async (argumentsObject) => {
38+
// Potentially corrupted argumentsObject, don't init
39+
if (!argumentsObject) return;
3840
// Setup debugging messages if necessary.
3941
if (argumentsObject.debug) {
4042
window.addEventListener('message', (message) => {

0 commit comments

Comments
 (0)