Files
I2P_in_Private_Browsing_Mod…/background.js

452 lines
12 KiB
JavaScript
Raw Normal View History

var titlepref = chrome.i18n.getMessage("titlePreface");
var titleprefpriv = chrome.i18n.getMessage("titlePrefacePrivate");
var webpref = chrome.i18n.getMessage("webPreface");
var webprefpriv = chrome.i18n.getMessage("webPrefacePrivate");
var routerpref = chrome.i18n.getMessage("routerPreface");
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
var mailpref = chrome.i18n.getMessage("mailPreface");
var mailprefpriv = chrome.i18n.getMessage("mailPrefacePrivate");
var torrentpref = chrome.i18n.getMessage("torrentPreface");
var torrentprefpriv = chrome.i18n.getMessage("torrentPrefacePrivate");
var tunnelpref = chrome.i18n.getMessage("i2ptunnelPreface");
var tunnelprefpriv = chrome.i18n.getMessage("i2ptunnelPrefacePrivate");
var localpref = chrome.i18n.getMessage("localPreface");
var localprefpriv = chrome.i18n.getMessage("localPrefacePrivate");
2019-11-24 17:14:43 -05:00
function onContextsGot(contexts) {
2019-10-06 15:18:10 -04:00
var ids = [];
for (let context of contexts) {
console.log(`Name: ${context.name}`);
ids.push(context.name);
}
console.log("Checking new contexts");
if (ids.indexOf(titlepref) == -1) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.create({
name: titlepref,
color: "orange",
2019-10-06 15:18:10 -04:00
icon: "fingerprint"
2019-12-24 16:51:38 -05:00
})
.then(onCreated, onNotCreated);
2019-10-06 15:18:10 -04:00
}
if (ids.indexOf(webpref) == -1) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.create({
name: webpref,
2019-11-11 16:34:41 -05:00
color: "red",
icon: "circle"
2019-12-24 16:51:38 -05:00
})
.then(onCreated, onNotCreated);
}
if (ids.indexOf(routerpref) == -1) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.create({
name: routerpref,
color: "blue",
2019-10-06 22:11:23 -04:00
icon: "briefcase"
2019-12-24 16:51:38 -05:00
})
.then(onCreated, onNotCreated);
2019-10-06 22:11:23 -04:00
}
if (ids.indexOf(tunnelpref) == -1) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.create({
name: tunnelpref,
2019-11-11 16:34:41 -05:00
color: "green",
icon: "tree"
2019-12-24 16:51:38 -05:00
})
.then(onCreated, onNotCreated);
2019-11-11 16:34:41 -05:00
}
if (ids.indexOf(mailpref) == -1) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.create({
name: mailpref,
2019-11-11 16:34:41 -05:00
color: "yellow",
icon: "briefcase"
2019-12-24 16:51:38 -05:00
})
.then(onCreated, onNotCreated);
2019-11-11 16:34:41 -05:00
}
if (ids.indexOf(torrentpref) == -1) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.create({
name: torrentpref,
2019-11-11 16:34:41 -05:00
color: "purple",
icon: "chill"
2019-12-24 16:51:38 -05:00
})
.then(onCreated, onNotCreated);
2019-11-11 16:34:41 -05:00
}
if (ids.indexOf(localpref) == -1) {
browser.contextualIdentities
.create({
name: localpref,
color: "red",
icon: "fence"
})
.then(onCreated, onNotCreated);
}
}
function onContextsError() {
console.log("Error finding contextual identities, is the API enabled?");
}
2019-10-28 01:11:16 -04:00
function onCreated(context) {
console.log(`New identity's ID: ${context.cookieStoreId}.`);
}
function onNotCreated(context) {
console.log(`identity ID: ${context.cookieStoreId} not created`);
}
browser.contextualIdentities.query({}).then(onContextsGot, onContextsError);
2019-06-17 19:17:11 -04:00
2019-11-24 04:13:12 -05:00
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then(got => {
if (got.os != "android") {
2019-11-24 04:13:12 -05:00
browser.windows.onCreated.addListener(themeWindow);
browser.windows.onFocusChanged.addListener(themeWindow);
browser.windows.onRemoved.addListener(themeWindow);
browser.tabs.onUpdated.addListener(themeWindowByTab);
browser.tabs.onActivated.addListener(themeWindowByTab);
}
});
2019-02-05 10:53:26 -05:00
2019-10-28 01:11:16 -04:00
function themeWindowByTab(tabId) {
function tabWindow(tab) {
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
gettingPlatformInfo.then(got => {
2019-11-24 04:13:12 -05:00
if (got.os == "android") {
let getwindow = browser.tabs.get(tab.tabId);
2019-11-24 04:13:12 -05:00
getwindow.then(themeWindow);
} else {
let getwindow = browser.windows.get(tab.windowId);
2019-11-24 04:13:12 -05:00
getwindow.then(themeWindow);
}
});
2019-10-28 01:11:16 -04:00
}
if (typeof tabId === "number") {
let tab = browser.tabs.get(tabId);
2019-10-28 01:11:16 -04:00
tab.then(tabWindow);
} else {
tabWindow(tabId);
}
2019-10-07 22:51:53 -04:00
}
function isEmpty(obj) {
if (obj === undefined || obj === null) {
return true;
}
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
return false;
}
}
return true;
}
var oldtheme = null;
var getOldTheme = async function getOldTheme() {
let foundtheme = await browser.theme.getCurrent();
if (!isEmpty(foundtheme)) {
oldtheme = foundtheme;
console.log("Found old theme", oldtheme);
}
return oldtheme;
};
getOldTheme();
2019-02-05 10:53:26 -05:00
function themeWindow(window) {
2019-10-06 15:18:10 -04:00
// Check if the window is in private browsing
function onThemeError() {
console.log("got theme", oldtheme);
browser.theme.update(oldtheme);
}
2019-10-06 15:18:10 -04:00
function logTabs(tabInfo) {
2019-11-24 17:14:43 -05:00
function onContextGotTheme(context) {
if (context.name == titlepref) {
2019-10-06 15:18:10 -04:00
console.log("Active in I2P window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-10-06 15:18:10 -04:00
colors: {
frame: "#FFC56D",
toolbar: "#FFC56D"
2019-10-06 15:18:10 -04:00
}
});
} else {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-10-06 15:18:10 -04:00
colors: {
frame: "#FFC56D",
toolbar: "#FFC56D"
}
2019-10-06 15:18:10 -04:00
});
2019-07-10 02:29:38 -04:00
}
} else if (context.name == routerpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Router Console window");
2019-10-08 19:10:13 -04:00
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-10-08 19:10:13 -04:00
colors: {
frame: "#A4C8E1",
toolbar: "#A4C8E1"
2019-10-08 19:10:13 -04:00
}
});
} else {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-10-08 19:10:13 -04:00
colors: {
frame: "#A4C8E1",
toolbar: "#A4C8E1"
2019-10-08 19:10:13 -04:00
}
});
}
} else if (context.name == tunnelpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Hidden Services Manager window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-11-11 16:34:41 -05:00
colors: {
frame: "#D9D9D6",
toolbar: "#D9D9D6"
}
});
} else {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-11-11 16:34:41 -05:00
colors: {
frame: "#D9D9D6",
toolbar: "#D9D9D6"
}
});
}
} else if (context.name == mailpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Web Mail window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-11-11 16:34:41 -05:00
colors: {
frame: "#F7E59A",
toolbar: "#F7E59A"
}
});
} else {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-11-11 16:34:41 -05:00
colors: {
frame: "#F7E59A",
toolbar: "#F7E59A"
}
});
}
} else if (context.name == torrentpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Bittorrent window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-11-11 16:34:41 -05:00
colors: {
frame: "#A48FE1",
toolbar: "#A48FE1"
}
});
} else {
2019-11-24 04:13:12 -05:00
browser.theme.update(window.id, {
2019-11-11 16:34:41 -05:00
colors: {
frame: "#A48FE1",
toolbar: "#A48FE1"
}
});
}
2019-10-06 15:18:10 -04:00
} else {
console.log("Not active in I2P window");
if (isEmpty(oldtheme)) {
browser.theme.reset();
} else {
browser.theme.update(window.id, oldtheme);
}
2019-10-06 15:18:10 -04:00
}
2019-07-10 02:29:38 -04:00
}
if (
tabInfo[0].cookieStoreId != "firefox-default" &&
tabInfo[0].cookieStoreId != "firefox-private"
) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.get(tabInfo[0].cookieStoreId)
.then(onContextGotTheme, onThemeError);
} else if (isEmpty(oldtheme)) {
browser.theme.reset();
2019-10-08 19:10:13 -04:00
} else {
browser.theme.update(window.id, oldtheme);
2019-10-07 22:51:53 -04:00
}
2019-10-06 15:18:10 -04:00
}
var querying = browser.tabs.query({
currentWindow: true,
active: true
});
querying.then(logTabs, onThemeError);
2019-02-05 10:53:26 -05:00
}
2019-02-07 20:14:57 -05:00
function setTitle(window) {
// Check if the window is in private browsing
function onContextError() {
console.log("Context Error");
}
2019-10-06 15:18:10 -04:00
function logTabs(tabInfo) {
2019-11-24 17:14:43 -05:00
function onContextGotTitle(context) {
if (context.name == titlepref) {
2019-11-11 16:34:41 -05:00
console.log("Active in I2P window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titleprefpriv + ": "
2019-11-11 16:34:41 -05:00
});
} else {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titlepref + ": "
2019-11-11 16:34:41 -05:00
});
}
} else if (context.name == webpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Web window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: webprefpriv + " - "
2019-11-11 16:34:41 -05:00
});
} else {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: webpref + " - "
2019-11-11 16:34:41 -05:00
});
}
} else if (context.name == routerpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Router Console window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titleprefpriv + " - " + routerprefpriv + ": "
2019-11-11 16:34:41 -05:00
});
} else {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titlepref + " - " + routerpref + ": "
2019-11-11 16:34:41 -05:00
});
}
} else if (context.name == tunnelpref) {
2019-11-11 16:34:41 -05:00
console.log("Active in Hidden Services Manager window");
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titleprefpriv + " - " + tunnelprefpriv + ": "
2019-11-11 16:34:41 -05:00
});
} else {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titlepref + " - " + tunnelpref + ": "
2019-11-11 16:34:41 -05:00
});
}
} else if (context.name == mailpref) {
console.log("Active in I2P Web Mail window");
2019-11-11 16:34:41 -05:00
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titleprefpriv + " - " + mailprefpriv + ": "
2019-11-11 16:34:41 -05:00
});
} else {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titlepref + " - " + mailpref + ": "
2019-11-11 16:34:41 -05:00
});
}
} else if (context.name == torrentpref) {
console.log("Active in I2P Torrent window");
2019-10-06 15:18:10 -04:00
if (window.incognito) {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titleprefpriv + " - " + torrentprefpriv + ": "
2019-10-06 15:18:10 -04:00
});
} else {
2019-11-24 04:13:12 -05:00
browser.windows.update(window.id, {
titlePreface: titlepref + " - " + torrentpref + ": "
2019-10-06 15:18:10 -04:00
});
}
} else if (context.name == localpref) {
console.log("Active in Localhost window");
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: localprefpriv + " - " + localprefpriv + ": "
});
} else {
browser.windows.update(window.id, {
titlePreface: localpref + " - " + localpref + ": "
});
}
2019-10-06 15:18:10 -04:00
}
2019-07-10 02:29:38 -04:00
}
if (
tabInfo[0].cookieStoreId != "firefox-default" &&
tabInfo[0].cookieStoreId != "firefox-private"
) {
2019-12-24 16:51:38 -05:00
browser.contextualIdentities
.get(tabInfo[0].cookieStoreId)
.then(onContextGotTitle, onContextError);
2019-12-24 11:21:07 -05:00
} else if (window.incognito) {
2019-12-24 16:51:38 -05:00
browser.windows.update(window.id, {
titlePreface: ""
});
} else {
browser.windows.update(window.id, {
titlePreface: ""
});
}
2019-10-06 15:18:10 -04:00
}
var querying = browser.tabs.query({
currentWindow: true,
active: true
});
querying.then(logTabs, onContextError);
}
2019-02-07 20:14:57 -05:00
var gettingListenerInfo = browser.runtime.getPlatformInfo();
gettingListenerInfo.then(got => {
function onPlatformError() {
console.log("Error finding platform info");
}
if (got.os != "android") {
browser.tabs.onCreated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true
});
getting.then(setTitle, onPlatformError);
});
browser.tabs.onActivated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true
});
getting.then(setTitle, onPlatformError);
});
2019-11-24 04:32:35 -05:00
}
2019-02-07 20:14:57 -05:00
});
/*
2019-11-24 04:13:12 -05:00
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then(got => {
if (got.os != "android") {
2019-11-24 04:13:12 -05:00
browser.tabs.onCreated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true
});
getting.then(setTitle, onError);
});
}
2019-10-06 15:14:53 -04:00
});
2019-11-24 04:13:12 -05:00
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then(got => {
if (got.os != "android") {
2019-11-24 04:13:12 -05:00
browser.tabs.onActivated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true
});
getting.then(setTitle, onError);
});
}
2019-11-12 00:11:52 -05:00
});
*/
function handleUpdated(updateInfo) {
if (updateInfo.theme) {
console.log(`Theme was applied: ${updateInfo.theme}`);
} else {
2019-12-24 11:21:07 -05:00
console.log("Theme was removed");
}
}
browser.theme.onUpdated.addListener(handleUpdated);