From 2b6225cedb45db60ed0e6abee4c004ddea318d2e Mon Sep 17 00:00:00 2001 From: aciidic Date: Wed, 16 Dec 2020 10:48:43 +0000 Subject: [PATCH] Remove tracking, notifications & permissions Attempt to remove analytics tracking & externally-delivered notification popups. Also removed some permissions to match older v7.1.6 by deanoemcke (original developer) Untested and without guarantee! --- README.md | 33 ++++++++----- package.json | 15 +++--- src/_locales/en/messages.json | 2 - src/about.html | 9 ++-- src/broken.html | 2 +- src/js/about.js | 3 +- src/js/background.js | 93 +---------------------------------- src/js/broken.js | 3 +- src/js/contentscript.js | 2 +- src/js/debug.js | 3 +- src/js/gsStorage.js | 5 +- src/js/gsUtils.js | 1 - src/js/history.js | 3 +- src/js/notice.js | 3 +- src/js/options.js | 4 +- src/js/permissions.js | 3 +- src/js/recovery.js | 3 +- src/js/restoring-window.js | 3 +- src/js/shortcuts.js | 3 +- src/js/tests/test_gsUtils.js | 13 ----- src/manifest.json | 9 ++-- src/options.html | 7 --- src/updated.html | 2 +- 23 files changed, 54 insertions(+), 170 deletions(-) diff --git a/README.md b/README.md index 214f18d0..b494b0ac 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,35 @@ -# The Great Suspender +# The Great Suspender - Without Analytics Tracking + +Modified version of "The Great Suspender" to remove analytics tracking and rogue .js files from anonymous developer who is now in control of the GitHub source & web store versions. [Read More]() + +Read more: +[New ownership announcement](https://github.com/aciidic/thegreatsuspender/issues/1175) +[New maintainer is probably malicious](https://github.com/aciidic/thegreatsuspender/issues/1263) +[Flagged as malware by Microsoft Edge](https://www.windowscentral.com/great-suspender-extension-now-flagged-malware-edge-has-built-replacement) +[Reddit forum discussion](https://old.reddit.com/r/HobbyDrama/comments/jouwq7/open_source_development_the_great_suspender_saga/) +[Medium Article](https://medium.com/nerd-for-tech/malware-in-browser-extensions-3805e8763dd5) + +This project is a fork from [v7.1.8 of The Great Suspender](https://github.com/greatsuspender/thegreatsuspender) with all tracking code removed, along with some annoying popups/prompts. + +This work carries no guarantees only to the best of my ability in 2 hours using notepad2 & AstroGrep. I am not a developer and do not intend to spend much time keeping this extension updated. "The Great Suspender" is a free and open-source Google Chrome extension for people who find that chrome is consuming too much system resource or suffer from frequent chrome crashing. Once installed and enabled, this extension will automatically *suspend* tabs that have not been used for a while, freeing up memory and cpu that the tab was consuming. -If you have suggestions or problems using the extension, please [submit a bug or a feature request](https://github.com/greatsuspender/thegreatsuspender/issues/). For other enquiries you can email me at greatsuspender@gmail.com. +If you have suggestions or problems using the extension, please [submit a pull request](https://github.com/aciidic/thegreatsuspender/issues/). -**If you have lost tabs from your browser:** I have written a guide for how to recover your lost tabs [here](https://github.com/deanoemcke/thegreatsuspender/issues/526 +**If you have lost tabs from your browser:** The original developer has written a guide for how to recover your lost tabs [here](https://github.com/deanoemcke/thegreatsuspender/issues/526 ). ### Chrome Web Store -The Great Suspender is [available via the official Chrome Web Store](https://chrome.google.com/webstore/detail/the-great-suspender/klbibkeccnjlkjkiokjodocebajanakg). - -Please note that the webstore version may be behind the latest version here. That is because I try to keep webstore updates down to a minimum due to their [disruptive effect](https://github.com/greatsuspender/thegreatsuspender/issues/526). +This version of The Great Suspender is not available on the Chrome Web Store. -For more information on the permissions required for the extension, please refer to this gitHub issue: (https://github.com/greatsuspender/thegreatsuspender/issues/213) -### Install as an extension from source +### You should install this extension from source -1. Download the **[latest available version](https://github.com/greatsuspender/thegreatsuspender/releases)** and unarchive to your preferred location (whichever suits you). +1. Download the **[latest available version](https://github.com/aciidic/thegreatsuspender/releases)** and unarchive to your preferred location (whichever suits you). 2. Using **Google Chrome** browser, navigate to chrome://extensions/ and enable "Developer mode" in the upper right corner. 3. Click on the Load unpacked extension... button. 4. Browse to the src directory of the unarchived folder and confirm. @@ -28,7 +38,7 @@ If you have completed the above steps, the "welcome" page will open indicating s Be sure to unsuspend all suspended tabs before removing any other version of the extension or they will disappear forever! -### Build from github +### Build from github (untested in this release) Dependencies: openssl, npm. @@ -48,7 +58,7 @@ The extension in crx format will be inside the build/crx/ directory. You can dra ### Integrating with another Chrome extension or app -This extension has a small external api to allow other extensions to request the suspension of a tab. See [this issue](https://github.com/greatsuspender/thegreatsuspender/issues/276) for more information. And please let me know about it so that I can try it out! +The extension has a small external api to allow other extensions to request the suspension of a tab. See [this issue](https://github.com/greatsuspender/thegreatsuspender/issues/276) for more information. And please let me know about it so that I can try it out! ### Windows Group Policies @@ -93,3 +103,4 @@ This work is licensed under a GNU GENERAL PUBLIC LICENSE (v2) This package uses the [html2canvas](https://github.com/niklasvh/html2canvas) library written by Niklas von Hertzen. It also uses the indexedDb wrapper [db.js](https://github.com/aaronpowell/db.js) written by Aaron Powell. Thank you also to [BrowserStack](https://www.browserstack.com) for providing free chrome testing tools. +Original source from [The Great Suspender v7.1.8](https://github.com/greatsuspender/thegreatsuspender) \ No newline at end of file diff --git a/package.json b/package.json index 2434dbad..cbf9c3de 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "thegreatsuspender", + "name": "thegreatsuspender-notrack", "version": "0.0.0", - "description": "A chrome extension for suspending all tabs to free up memory", + "description": "A chrome extension for suspending all tabs to free up memory. Without analytics tracking.", "main": "", "scripts": { "build": "grunt", @@ -11,7 +11,7 @@ }, "repository": { "type": "git", - "url": "git://github.com/greatsuspender/thegreatsuspender.git" + "url": "git://github.com/aciidic/thegreatsuspender.git" }, "keywords": [ "chrome", @@ -19,12 +19,15 @@ "addon", "memory", "suspend", - "tab" + "tab", + "private", + "privacy", + "notrack" ], - "author": "deanoemcke", + "author": "aciidic", "license": "GPLv2", "bugs": { - "url": "https://github.com/greatsuspender/thegreatsuspender/issues" + "url": "https://github.com/aciidic/thegreatsuspender/issues" }, "devDependencies": { "eslint": "^4.19.1", diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index d9b59ff2..784ed891 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -117,8 +117,6 @@ "html_options_other_enable_sync_tooltip_line1b": { "message": "logged in with the same profile." }, "html_options_other_enable_sync_tooltip_line2": { "message": "This will also synchronise settings in incognito mode." }, "html_options_other_enable_sync_warning": { "message": "Turning this on will overwrite settings on all other browsers logged into the same Chrome profile" }, - "html_options_tracking_opt_out": { "message": "Automatic deactivation of any kind of tracking" }, - "html_options_tracking_opt_out_line1": { "message": "This option will disable tracking code, such as that from Google Analytics." }, "html_options_suspend_on_low_memory": { "message": "Instantly suspend when system memory gets very low" }, "html_options_suspend_on_low_memory_tooltip_line1": { "message": "This option will override Chrome's automatic tab discarding functionality." }, "html_options_suspend_on_low_memory_tooltip_line2": { "message": "If enabled, it will force a tab to suspend instead of being discarded by Chrome." }, diff --git a/src/about.html b/src/about.html index a9d6eb89..ea99c132 100644 --- a/src/about.html +++ b/src/about.html @@ -39,17 +39,14 @@

- github.com/greatsuspender/thegreatsuspender -
- - @greatsuspender + github.com/aciidic/thegreatsuspender

- +

@@ -71,6 +68,8 @@

+
+ Original Project

diff --git a/src/broken.html b/src/broken.html index 274d5721..27ac36a2 100644 --- a/src/broken.html +++ b/src/broken.html @@ -17,7 +17,7 @@

Ruh Roh!

The Great Suspender failed to start. Perhaps you are using an incompatible version of chrome?

-

Try to restart the extension. If the problem persists, ask for help on the GitHub project page.

+

Try to restart the extension. If the problem persists, ask for help on the GitHub project page.

You can recover lost tabs from the session management page.


diff --git a/src/js/about.js b/src/js/about.js index 82f3d2bb..472c439a 100644 --- a/src/js/about.js +++ b/src/js/about.js @@ -1,4 +1,4 @@ -/* global chrome, XMLHttpRequest, gsStorage, gsAnalytics, gsUtils */ +/* global chrome, XMLHttpRequest, gsStorage, gsUtils */ (function(global) { 'use strict'; @@ -24,5 +24,4 @@ } }); - gsAnalytics.reportPageView('about.html'); })(this); diff --git a/src/js/background.js b/src/js/background.js index e3dc8a74..f4a1340d 100644 --- a/src/js/background.js +++ b/src/js/background.js @@ -1,9 +1,9 @@ -/* global gsStorage, gsChrome, gsIndexedDb, gsUtils, gsFavicon, gsSession, gsMessages, gsTabSuspendManager, gsTabDiscardManager, gsAnalytics, gsTabCheckManager, gsSuspendedTab, chrome, XMLHttpRequest */ +/* global gsStorage, gsChrome, gsIndexedDb, gsUtils, gsFavicon, gsSession, gsMessages, gsTabSuspendManager, gsTabDiscardManager, gsTabCheckManager, gsSuspendedTab, chrome, XMLHttpRequest */ /* * The Great Suspender * Copyright (C) 2017 Dean Oemcke * Available under GNU GENERAL PUBLIC LICENSE v2 - * http://github.com/greatsuspender/thegreatsuspender + * http://github.com/aciidic/thegreatsuspender * ༼ つ ◕_◕ ༽つ */ var tgs = (function() { @@ -35,7 +35,6 @@ var tgs = (function() { const focusDelay = 500; const noticeCheckInterval = 1000 * 60 * 60 * 12; // every 12 hours const sessionMetricsCheckInterval = 1000 * 60 * 15; // every 15 minutes - const analyticsCheckInterval = 1000 * 60 * 60 * 23.5; // every 23.5 hours const _tabStateByTabId = {}; const _currentFocusedTabIdByWindowId = {}; @@ -56,7 +55,6 @@ var tgs = (function() { tgs, gsUtils, gsChrome, - gsAnalytics, gsStorage, gsIndexedDb, gsMessages, @@ -142,9 +140,7 @@ var tgs = (function() { } function startTimers() { - startNoticeCheckerJob(); startSessionMetricsJob(); - startAnalyticsUpdateJob(); } function getInternalViewByTabId(tabId) { @@ -1183,70 +1179,6 @@ var tgs = (function() { }); } - function checkForNotices() { - gsUtils.log('background', 'Checking for notices..'); - var xhr = new XMLHttpRequest(); - var lastShownNoticeVersion = gsStorage.fetchNoticeVersion(); - - xhr.open('GET', 'https://greatsuspender.github.io/notice.json', true); - xhr.timeout = 4000; - xhr.setRequestHeader('Cache-Control', 'no-cache'); - xhr.onreadystatechange = function() { - if (xhr.readyState === 4 && xhr.responseText) { - var resp; - try { - resp = JSON.parse(xhr.responseText); - } catch (e) { - gsUtils.error( - 'background', - 'Failed to parse notice response', - xhr.responseText - ); - return; - } - - if (!resp || !resp.active || !resp.text) { - gsUtils.log('background', 'No new notice found'); - return; - } - - //only show notice if it is intended for this extension version - var noticeTargetExtensionVersion = String(resp.target); - if ( - noticeTargetExtensionVersion !== chrome.runtime.getManifest().version - ) { - gsUtils.log( - 'background', - `Notice target extension version: ${noticeTargetExtensionVersion} - does not match actual extension version: ${ - chrome.runtime.getManifest().version - }` - ); - return; - } - - //only show notice if it has not already been shown - var noticeVersion = String(resp.version); - if (noticeVersion <= lastShownNoticeVersion) { - gsUtils.log( - 'background', - `Notice version: ${noticeVersion} is not greater than last shown notice version: ${lastShownNoticeVersion}` - ); - return; - } - - //show notice - set global notice field (so that it can be trigger to show later) - _noticeToDisplay = resp; - gsAnalytics.reportEvent( - 'Notice', - 'Prep', - resp.target + ':' + resp.version - ); - } - }; - xhr.send(); - } - function requestNotice() { return _noticeToDisplay; } @@ -1761,11 +1693,6 @@ var tgs = (function() { var noticeToDisplay = requestNotice(); if (noticeToDisplay) { chrome.tabs.create({ url: chrome.extension.getURL('notice.html') }); - gsAnalytics.reportEvent( - 'Notice', - 'Display', - noticeToDisplay.target + ':' + noticeToDisplay.version - ); } }); chrome.windows.onRemoved.addListener(function(windowId) { @@ -1812,11 +1739,6 @@ var tgs = (function() { }); } - function startNoticeCheckerJob() { - checkForNotices(); - window.setInterval(checkForNotices, noticeCheckInterval); - } - function startSessionMetricsJob() { gsSession.updateSessionMetrics(true); window.setInterval( @@ -1825,14 +1747,6 @@ var tgs = (function() { ); } - function startAnalyticsUpdateJob() { - window.setInterval(() => { - gsAnalytics.performPingReport(); - const reset = true; - gsSession.updateSessionMetrics(reset); - }, analyticsCheckInterval); - } - return { STATE_TIMER_DETAILS, STATE_UNLOADED_URL, @@ -1890,7 +1804,6 @@ Promise.resolve() .then(() => { // initialise other gsLibs return Promise.all([ - gsAnalytics.initAsPromised(), gsFavicon.initAsPromised(), gsTabSuspendManager.initAsPromised(), gsTabCheckManager.initAsPromised(), @@ -1911,7 +1824,5 @@ Promise.resolve() gsUtils.error('background init error: ', error); }) .finally(() => { - gsAnalytics.performStartupReport(); - gsAnalytics.performVersionReport(); tgs.startTimers(); }); diff --git a/src/js/broken.js b/src/js/broken.js index 6941e739..a600e3d1 100644 --- a/src/js/broken.js +++ b/src/js/broken.js @@ -1,4 +1,4 @@ -/*global chrome, gsAnalytics */ +/*global chrome */ (function(global) { 'use strict'; @@ -20,7 +20,6 @@ .addEventListener('click', function() { chrome.tabs.create({ url: chrome.extension.getURL('history.html') }); }); - gsAnalytics.reportPageView('broken.html'); } if (document.readyState !== 'loading') { init(); diff --git a/src/js/contentscript.js b/src/js/contentscript.js index e02e29a4..4172e4ab 100644 --- a/src/js/contentscript.js +++ b/src/js/contentscript.js @@ -3,7 +3,7 @@ * The Great Suspender * Copyright (C) 2017 Dean Oemcke * Available under GNU GENERAL PUBLIC LICENSE v2 - * http://github.com/greatsuspender/thegreatsuspender + * http://github.com/aciidic/thegreatsuspender * ლ(ಠ益ಠლ) */ (function() { diff --git a/src/js/debug.js b/src/js/debug.js index 0e4b08ea..f421994e 100644 --- a/src/js/debug.js +++ b/src/js/debug.js @@ -1,4 +1,4 @@ -/*global chrome, tgs, gsAnalytics, gsUtils, gsFavicon, gsStorage, gsChrome */ +/*global chrome, tgs, gsUtils, gsFavicon, gsStorage, gsChrome */ (function(global) { 'use strict'; @@ -144,5 +144,4 @@ }); */ }); - gsAnalytics.reportPageView('debug.html'); })(this); diff --git a/src/js/gsStorage.js b/src/js/gsStorage.js index 33812497..f0ed6ef4 100755 --- a/src/js/gsStorage.js +++ b/src/js/gsStorage.js @@ -1,4 +1,4 @@ -/*global chrome, gsAnalytics, gsSession, localStorage, gsUtils */ +/*global chrome, gsSession, localStorage, gsUtils */ 'use strict'; // Used to keep track of which settings were defined in the managed storage @@ -26,7 +26,6 @@ const gsStorageSettings = { DISCARD_AFTER_SUSPEND: 'discardAfterSuspend', DISCARD_IN_PLACE_OF_SUSPEND: 'discardInPlaceOfSuspend', USE_ALT_SCREEN_CAPTURE_LIB: 'useAlternateScreenCaptureLib', - TRACKING_OPT_OUT: 'trackingOptOut', ENABLE_CLEAN_SCREENCAPS: 'cleanScreencaps' }; @@ -66,7 +65,6 @@ var gsStorage = { defaults[gsStorage.NO_NAG] = false; defaults[gsStorage.WHITELIST] = ''; defaults[gsStorage.THEME] = 'light'; - defaults[gsStorage.TRACKING_OPT_OUT] = false; defaults[gsStorage.ENABLE_CLEAN_SCREENCAPS] = false; return defaults; @@ -305,7 +303,6 @@ var gsStorage = { saveSettings: function(settings) { try { localStorage.setItem('gsSettings', JSON.stringify(settings)); - gsAnalytics.setUserDimensions(); } catch (e) { gsUtils.error( 'gsStorage', diff --git a/src/js/gsUtils.js b/src/js/gsUtils.js index 3b025b3a..344d0119 100644 --- a/src/js/gsUtils.js +++ b/src/js/gsUtils.js @@ -92,7 +92,6 @@ var gsUtils = { // const logString = errorObj.hasOwnProperty('stack') // ? errorObj.stack // : `${JSON.stringify(errorObj)}\n${gsUtils.getStackTrace()}`; - // gsAnalytics.reportException(logString, false); } }, // Puts all the error args into a single printable string so that all the info diff --git a/src/js/history.js b/src/js/history.js index 23c7e361..d02c7c9e 100644 --- a/src/js/history.js +++ b/src/js/history.js @@ -1,4 +1,4 @@ -/*global chrome, historyItems, historyUtils, gsAnalytics, gsSession, gsIndexedDb, gsUtils */ +/*global chrome, historyItems, historyUtils, gsSession, gsIndexedDb, gsUtils */ (function(global) { 'use strict'; @@ -258,5 +258,4 @@ render(); }); - gsAnalytics.reportPageView('history.html'); })(this); diff --git a/src/js/notice.js b/src/js/notice.js index 7fdc8d5e..7dcf3670 100644 --- a/src/js/notice.js +++ b/src/js/notice.js @@ -1,4 +1,4 @@ -/*global chrome, tgs, gsAnalytics, gsStorage, gsUtils */ +/*global chrome, tgs, gsStorage, gsUtils */ (function(global) { 'use strict'; @@ -25,5 +25,4 @@ //clear notice (to prevent it showing again) tgs.clearNotice(); }); - gsAnalytics.reportPageView('notice.html'); })(this); diff --git a/src/js/options.js b/src/js/options.js index ebf9ac5f..935dcb14 100644 --- a/src/js/options.js +++ b/src/js/options.js @@ -1,4 +1,4 @@ -/*global chrome, gsAnalytics, gsStorage, gsChrome, gsUtils */ +/*global chrome, gsStorage, gsChrome, gsUtils */ (function(global) { try { chrome.extension.getBackgroundPage().tgs.setViewGlobals(global); @@ -26,7 +26,6 @@ timeToSuspend: gsStorage.SUSPEND_TIME, theme: gsStorage.THEME, whitelist: gsStorage.WHITELIST, - trackingOptOut: gsStorage.TRACKING_OPT_OUT }; function selectComboBox(element, key) { @@ -275,5 +274,4 @@ global.exports = { initSettings, }; - gsAnalytics.reportPageView('options.html'); })(this); diff --git a/src/js/permissions.js b/src/js/permissions.js index 1ffed56a..dfea528b 100644 --- a/src/js/permissions.js +++ b/src/js/permissions.js @@ -1,4 +1,4 @@ -/*global chrome, historyUtils, gsSession, gsChrome, gsUtils, gsAnalytics */ +/*global chrome, historyUtils, gsSession, gsChrome, gsUtils */ (function(global) { 'use strict'; @@ -24,5 +24,4 @@ }); }; }); - gsAnalytics.reportPageView('permissions.html'); })(this); diff --git a/src/js/recovery.js b/src/js/recovery.js index 887ebad6..c6afd7c2 100644 --- a/src/js/recovery.js +++ b/src/js/recovery.js @@ -1,4 +1,4 @@ -/*global chrome, historyItems, gsAnalytics, gsMessages, gsSession, gsStorage, gsIndexedDb, gsChrome, gsUtils */ +/*global chrome, historyItems, gsMessages, gsSession, gsStorage, gsIndexedDb, gsChrome, gsUtils */ (function(global) { 'use strict'; @@ -171,5 +171,4 @@ global.exports = { removeTabFromList, }; - gsAnalytics.reportPageView('recovery.html'); })(this); diff --git a/src/js/restoring-window.js b/src/js/restoring-window.js index 99b680e3..3c64c31e 100644 --- a/src/js/restoring-window.js +++ b/src/js/restoring-window.js @@ -1,4 +1,4 @@ -/*global chrome, gsAnalytics, gsUtils */ +/*global chrome, gsUtils */ (function(global) { 'use strict'; @@ -12,5 +12,4 @@ gsUtils.documentReadyAndLocalisedAsPromsied(document).then(function() { //do nothing }); - gsAnalytics.reportPageView('restoring-window.html'); })(this); diff --git a/src/js/shortcuts.js b/src/js/shortcuts.js index ec989439..cb8be320 100644 --- a/src/js/shortcuts.js +++ b/src/js/shortcuts.js @@ -1,4 +1,4 @@ -/*global chrome, gsAnalytics, gsUtils */ +/*global chrome, gsUtils */ (function(global) { 'use strict'; @@ -45,5 +45,4 @@ }; }); - gsAnalytics.reportPageView('shortcuts.html'); })(this); diff --git a/src/js/tests/test_gsUtils.js b/src/js/tests/test_gsUtils.js index 5e045eba..11621a7a 100644 --- a/src/js/tests/test_gsUtils.js +++ b/src/js/tests/test_gsUtils.js @@ -71,18 +71,6 @@ testSuites.push( gsUtils.getRootUrl(rawUrl6, true, true) === 'file:///Users/dean/Downloads/session%20(63).txt'; - const rawUrl7 = - 'https://analytics.google.com/analytics/web/#/report-home/a52338347w84781065p87884368'; - const isUrl7Valid = - gsUtils.getRootUrl(rawUrl7, false, false) === - 'analytics.google.com' && - gsUtils.getRootUrl(rawUrl7, true, false) === - 'analytics.google.com/analytics/web' && - gsUtils.getRootUrl(rawUrl7, false, true) === - 'https://analytics.google.com' && - gsUtils.getRootUrl(rawUrl7, true, true) === - 'https://analytics.google.com/analytics/web'; - return assertTrue( isUrl1Valid && isUrl2Valid && @@ -90,7 +78,6 @@ testSuites.push( isUrl4Valid && isUrl5Valid && isUrl6Valid && - isUrl7Valid ); }, diff --git a/src/manifest.json b/src/manifest.json index 39dd864c..ff17ba34 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,20 +1,17 @@ { "name": "__MSG_ext_extension_name__", "description": "__MSG_ext_extension_description__", - "version": "7.1.8", + "version": "7.1.9", "default_locale": "en", "permissions": [ "tabs", "storage", "history", "unlimitedStorage", - "webRequest", - "webRequestBlocking", "http://*/*", "https://*/*", "file://*/*", "chrome://favicon/*", - "https://greatsuspender.github.io/", "contextMenus", "cookies" ], @@ -22,7 +19,7 @@ "managed_schema": "managed-storage-schema.json" }, "background": { - "scripts": ["js/gsUtils.js", "js/gsChrome.js", "js/gsAnalytics.js", "js/gsStorage.js", "js/db.js", "js/gsIndexedDb.js", + "scripts": ["js/gsUtils.js", "js/gsChrome.js", "js/gsStorage.js", "js/db.js", "js/gsIndexedDb.js", "js/gsMessages.js", "js/gsSession.js", "js/gsTabQueue.js", "js/gsTabCheckManager.js", "js/gsFavicon.js", "js/gsCleanScreencaps.js", "js/gsTabSuspendManager.js", "js/gsTabDiscardManager.js", "js/gsSuspendedTab.js", "js/background.js"], "persistent": true @@ -49,7 +46,7 @@ "128": "img/ic_suspendy_128x128.png" }, "web_accessible_resources": ["suspended.html"], - "content_security_policy": "script-src 'self' https://www.google-analytics.com; object-src 'self'; child-src 'self'; connect-src 'self' https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts https://greatsuspender.github.io https://www.google-analytics.com www.google-analytics.com https://stats.g.doubleclick.net; img-src 'self' data: chrome: https://www.google-analytics.com www.google-analytics.com https://stats.g.doubleclick.net https://greatsuspender.github.io; style-src 'self' https://greatsuspender.github.io; default-src 'self'", + "content_security_policy": "script-src 'self'; object-src 'self'; child-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'; default-src 'self'", "incognito": "split", "manifest_version": 2, "minimum_chrome_version": "55", diff --git a/src/options.html b/src/options.html index c7df20d6..bc68286b 100644 --- a/src/options.html +++ b/src/options.html @@ -238,13 +238,6 @@

-
- - - - - -
diff --git a/src/updated.html b/src/updated.html index c55f914d..69acdcec 100644 --- a/src/updated.html +++ b/src/updated.html @@ -60,7 +60,7 @@