Implementation of 'openTab' method
This commit is contained in:
parent
0c561716b2
commit
9ed0b75249
2 changed files with 30 additions and 4 deletions
25
index.js
25
index.js
|
@ -1,5 +1,8 @@
|
||||||
/* global require */
|
/* global require */
|
||||||
const {ContextualIdentityService} = require('resource://gre/modules/ContextualIdentityService.jsm');
|
const {ContextualIdentityService} = require('resource://gre/modules/ContextualIdentityService.jsm');
|
||||||
|
const { Cc, Ci, Cu, Cr } = require('chrome');
|
||||||
|
|
||||||
|
Cu.import("resource://gre/modules/Services.jsm");
|
||||||
|
|
||||||
const tabs = require('sdk/tabs');
|
const tabs = require('sdk/tabs');
|
||||||
const webExtension = require('sdk/webextension');
|
const webExtension = require('sdk/webextension');
|
||||||
|
@ -167,6 +170,25 @@ const contextualIdentities = {
|
||||||
remove: removeContainer
|
remove: removeContainer
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function openTab(args) {
|
||||||
|
let browserWin = Services.wm.getMostRecentWindow("navigator:browser");
|
||||||
|
|
||||||
|
// This should not really happen.
|
||||||
|
if (!browserWin || !browserWin.gBrowser) {
|
||||||
|
return Promise.resolve(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
let userContextId = 0;
|
||||||
|
if ("containerId" in args) {
|
||||||
|
userContextId = parseInt(args.containerId.substr(CONTAINER_STORE.length), 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
let tab = browserWin.gBrowser.addTab(args.url || null,
|
||||||
|
{ userContextId: userContextId })
|
||||||
|
browserWin.gBrowser.selectedTab = tab;
|
||||||
|
return Promise.resolve(true);
|
||||||
|
}
|
||||||
|
|
||||||
function handleWebExtensionMessage(message, sender, sendReply) {
|
function handleWebExtensionMessage(message, sender, sendReply) {
|
||||||
switch (message.method) {
|
switch (message.method) {
|
||||||
case 'query':
|
case 'query':
|
||||||
|
@ -198,6 +220,9 @@ function handleWebExtensionMessage(message, sender, sendReply) {
|
||||||
tabs.open('about:preferences#containers');
|
tabs.open('about:preferences#containers');
|
||||||
sendReply({content: 'opened'});
|
sendReply({content: 'opened'});
|
||||||
break;
|
break;
|
||||||
|
case 'openTab':
|
||||||
|
sendReply(openTab(message));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,10 @@ function showContainerTabs(containerId) {
|
||||||
cookieStoreId: containerId
|
cookieStoreId: containerId
|
||||||
}).then(hiddenTabUrls=> {
|
}).then(hiddenTabUrls=> {
|
||||||
hiddenTabUrls.forEach(url=> {
|
hiddenTabUrls.forEach(url=> {
|
||||||
browser.tabs.create({
|
browser.runtime.sendMessage({
|
||||||
url: url,
|
method: 'openTab',
|
||||||
cookieStoreId: containerId
|
containerId: containerId,
|
||||||
|
url: url
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -94,7 +95,7 @@ browser.runtime.sendMessage({method: 'query'}).then(identities=> {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (e.target.matches('.newtab-icon')) {
|
} else if (e.target.matches('.newtab-icon')) {
|
||||||
browser.tabs.create({cookieStoreId: containerId});
|
browser.runtime.sendMessage({method: 'openTab', containerId: containerId});
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue