summaryrefslogtreecommitdiffstats
path: root/src/js/incognito.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/incognito.js')
-rw-r--r--src/js/incognito.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/js/incognito.js b/src/js/incognito.js
new file mode 100644
index 0000000..56d2d93
--- /dev/null
+++ b/src/js/incognito.js
@@ -0,0 +1,49 @@
+/* globals badger:false */
+
+require.scopes.incognito = (function() {
+var tabs = {};
+
+// Get all existing tabs
+chrome.tabs.query({}, function(results) {
+ results.forEach(function(tab) {
+ tabs[tab.id] = tab.incognito;
+ });
+});
+
+// Create tab event listeners
+function onUpdatedListener(tabId, changeInfo, tab) {
+ tabs[tab.id] = tab.incognito;
+}
+
+function onRemovedListener(tabId) {
+ delete tabs[tabId];
+}
+
+// Subscribe to tab events
+function startListeners() {
+ chrome.tabs.onUpdated.addListener(onUpdatedListener);
+ chrome.tabs.onRemoved.addListener(onRemovedListener);
+}
+
+function learningEnabled(tab_id) {
+ if (badger.getSettings().getItem("learnInIncognito")) {
+ // treat all pages as if they're not incognito
+ return true;
+ }
+ // if we don't have incognito data for whatever reason,
+ // default to disabled
+ if (!tabs.hasOwnProperty(tab_id)) {
+ return false;
+ }
+ // else, do not learn in incognito tabs
+ return !tabs[tab_id];
+}
+
+/************************************** exports */
+let exports = {
+ learningEnabled,
+ startListeners,
+};
+return exports;
+/************************************** exports */
+})();