promisify chrome.tabs.query as queryTabs()
This commit is contained in:
parent
b4e00cd892
commit
fba85b36cc
|
@ -16,6 +16,7 @@ globals:
|
||||||
URLS: false
|
URLS: false
|
||||||
BG: false
|
BG: false
|
||||||
notifyAllTabs: false
|
notifyAllTabs: false
|
||||||
|
queryTabs: false
|
||||||
getTab: false
|
getTab: false
|
||||||
getActiveTab: false
|
getActiveTab: false
|
||||||
getActiveTabRealURL: false
|
getActiveTabRealURL: false
|
||||||
|
|
|
@ -201,7 +201,7 @@ contextMenus = Object.assign({
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
chrome.tabs.query({}, tabs =>
|
queryTabs().then(tabs =>
|
||||||
tabs.forEach(tab => {
|
tabs.forEach(tab => {
|
||||||
// skip lazy-loaded aka unloaded tabs that seem to start loading on message in FF
|
// skip lazy-loaded aka unloaded tabs that seem to start loading on message in FF
|
||||||
if (!FIREFOX || tab.width) {
|
if (!FIREFOX || tab.width) {
|
||||||
|
|
|
@ -270,7 +270,7 @@ function importFromString(jsonString) {
|
||||||
function refreshAllTabs() {
|
function refreshAllTabs() {
|
||||||
return getActiveTab().then(activeTab => new Promise(resolve => {
|
return getActiveTab().then(activeTab => new Promise(resolve => {
|
||||||
// list all tabs including chrome-extension:// which can be ours
|
// list all tabs including chrome-extension:// which can be ours
|
||||||
chrome.tabs.query({}, tabs => {
|
queryTabs().then(tabs => {
|
||||||
const lastTab = tabs[tabs.length - 1];
|
const lastTab = tabs[tabs.length - 1];
|
||||||
for (const tab of tabs) {
|
for (const tab of tabs) {
|
||||||
getStylesSafe({matchUrl: tab.url, enabled: true, asHash: true}).then(styles => {
|
getStylesSafe({matchUrl: tab.url, enabled: true, asHash: true}).then(styles => {
|
||||||
|
|
4
edit.js
4
edit.js
|
@ -420,7 +420,7 @@ document.addEventListener("wheel", function(event) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
chrome.tabs.query({currentWindow: true}, function(tabs) {
|
queryTabs({currentWindow: true}).then(tabs => {
|
||||||
var windowId = tabs[0].windowId;
|
var windowId = tabs[0].windowId;
|
||||||
if (prefs.get("openEditInWindow")) {
|
if (prefs.get("openEditInWindow")) {
|
||||||
if (sessionStorage.saveSizeOnClose
|
if (sessionStorage.saveSizeOnClose
|
||||||
|
@ -1720,7 +1720,7 @@ function showRegExpTester(event, section = getSectionForChild(this)) {
|
||||||
chrome.tabs.onUpdated.removeListener(_);
|
chrome.tabs.onUpdated.removeListener(_);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
chrome.tabs.query({}, tabs => {
|
queryTabs().then(tabs => {
|
||||||
const supported = tabs.map(tab => tab.url)
|
const supported = tabs.map(tab => tab.url)
|
||||||
.filter(url => URLS.supported.test(url));
|
.filter(url => URLS.supported.test(url));
|
||||||
const unique = [...new Set(supported).values()];
|
const unique = [...new Set(supported).values()];
|
||||||
|
|
35
messaging.js
35
messaging.js
|
@ -75,17 +75,18 @@ function notifyAllTabs(msg) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// list all tabs including chrome-extension:// which can be ours
|
// list all tabs including chrome-extension:// which can be ours
|
||||||
chrome.tabs.query(affectsOwnOriginOnly ? {url: URLS.ownOrigin + '*'} : {}, tabs => {
|
Promise.all([
|
||||||
getActiveTab().then(activeTab => {
|
queryTabs(affectsOwnOriginOnly ? {url: URLS.ownOrigin + '*'} : {}),
|
||||||
const activeTabId = activeTab && activeTab.id;
|
getActiveTab(),
|
||||||
for (const tab of tabs) {
|
]).then(([tabs, activeTab]) => {
|
||||||
if (tab.id === activeTabId) {
|
const activeTabId = activeTab && activeTab.id;
|
||||||
notifyTab(tab);
|
for (const tab of tabs) {
|
||||||
} else {
|
if (tab.id === activeTabId) {
|
||||||
setTimeout(notifyTab, 0, tab);
|
notifyTab(tab);
|
||||||
}
|
} else {
|
||||||
|
setTimeout(notifyTab, 0, tab);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// notify self: the message no longer is sent to the origin in new Chrome
|
// notify self: the message no longer is sent to the origin in new Chrome
|
||||||
|
@ -103,6 +104,13 @@ function notifyAllTabs(msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function queryTabs(options = {}) {
|
||||||
|
return new Promise(resolve =>
|
||||||
|
chrome.tabs.query(options, tabs =>
|
||||||
|
resolve(tabs)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function getTab(id) {
|
function getTab(id) {
|
||||||
return new Promise(resolve =>
|
return new Promise(resolve =>
|
||||||
chrome.tabs.get(id, tab =>
|
chrome.tabs.get(id, tab =>
|
||||||
|
@ -111,9 +119,8 @@ function getTab(id) {
|
||||||
|
|
||||||
|
|
||||||
function getActiveTab() {
|
function getActiveTab() {
|
||||||
return new Promise(resolve =>
|
return queryTabs({currentWindow: true, active: true})
|
||||||
chrome.tabs.query({currentWindow: true, active: true}, tabs =>
|
.then(tabs => tabs[0]);
|
||||||
resolve(tabs[0])));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -148,7 +155,7 @@ function openURL({url, currentWindow = true}) {
|
||||||
// FF doesn't handle moz-extension:// URLs (bug)
|
// FF doesn't handle moz-extension:// URLs (bug)
|
||||||
// API doesn't handle the hash-fragment part
|
// API doesn't handle the hash-fragment part
|
||||||
const urlQuery = url.startsWith('moz-extension') ? undefined : url.replace(/#.*/, '');
|
const urlQuery = url.startsWith('moz-extension') ? undefined : url.replace(/#.*/, '');
|
||||||
chrome.tabs.query({url: urlQuery, currentWindow}, tabs => {
|
queryTabs({url: urlQuery, currentWindow}).then(tabs => {
|
||||||
for (const tab of tabs) {
|
for (const tab of tabs) {
|
||||||
if (tab.url == url) {
|
if (tab.url == url) {
|
||||||
activateTab(tab).then(resolve);
|
activateTab(tab).then(resolve);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user