Skip to content

Commit c9830d6

Browse files
committed
fix[react-devtools/extensions]: fixed tabs API calls and displaying restricted access popup
1 parent 72c49d7 commit c9830d6

File tree

5 files changed

+19
-20
lines changed

5 files changed

+19
-20
lines changed

packages/react-devtools-extensions/chrome/manifest.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
},
4343
"permissions": [
4444
"storage",
45-
"scripting"
45+
"scripting",
46+
"tabs"
4647
],
4748
"host_permissions": [
4849
"<all_urls>"

packages/react-devtools-extensions/edge/manifest.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
},
4343
"permissions": [
4444
"storage",
45-
"scripting"
45+
"scripting",
46+
"tabs"
4647
],
4748
"host_permissions": [
4849
"<all_urls>"

packages/react-devtools-extensions/firefox/manifest.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@
4848
]
4949
},
5050
"permissions": [
51-
"scripting"
51+
"scripting",
52+
"tabs"
5253
],
5354
"host_permissions": [
5455
"<all_urls>"

packages/react-devtools-extensions/src/background/tabsManager.js

+11-9
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
import setExtensionIconAndPopup from './setExtensionIconAndPopup';
66

77
function isRestrictedBrowserPage(url) {
8-
return !url || new URL(url).protocol === 'chrome:';
8+
if (!url) {
9+
return true;
10+
}
11+
12+
const urlProtocol = new URL(url).protocol;
13+
return urlProtocol === 'chrome:' || urlProtocol === 'about:';
914
}
1015

1116
function checkAndHandleRestrictedPageIfSo(tab) {
@@ -14,16 +19,13 @@ function checkAndHandleRestrictedPageIfSo(tab) {
1419
}
1520
}
1621

17-
// update popup page of any existing open tabs, if they are restricted browser pages.
18-
// we can't update for any other types (prod,dev,outdated etc)
19-
// as the content script needs to be injected at document_start itself for those kinds of detection
20-
// TODO: Show a different popup page(to reload current page probably) for old tabs, opened before the extension is installed
22+
// Update popup page of any existing open tabs, if they are restricted browser pages
2123
chrome.tabs.query({}, tabs => tabs.forEach(checkAndHandleRestrictedPageIfSo));
22-
chrome.tabs.onCreated.addListener((tabId, changeInfo, tab) =>
23-
checkAndHandleRestrictedPageIfSo(tab),
24-
);
24+
chrome.tabs.onCreated.addListener(tab => checkAndHandleRestrictedPageIfSo(tab));
2525

2626
// Listen to URL changes on the active tab and update the DevTools icon.
2727
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
28-
checkAndHandleRestrictedPageIfSo(tab);
28+
if (changeInfo.url && isRestrictedBrowserPage(changeInfo.url)) {
29+
setExtensionIconAndPopup('restricted', tabId);
30+
}
2931
});

packages/react-devtools-extensions/src/main/registerEventsLogger.js

+2-8
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,8 @@ import {registerDevToolsEventLogger} from 'react-devtools-shared/src/registerDev
44

55
function registerEventsLogger() {
66
registerDevToolsEventLogger('extension', async () => {
7-
// TODO: after we upgrade to Firefox Manifest V3, chrome.tabs.query returns a Promise without the callback.
8-
return new Promise(resolve => {
9-
chrome.tabs.query({active: true}, tabs => {
10-
resolve({
11-
page_url: tabs[0]?.url,
12-
});
13-
});
14-
});
7+
const tabs = await chrome.tabs.query({active: true});
8+
return {page_url: tabs[0]?.url};
159
});
1610
}
1711

0 commit comments

Comments
 (0)