Merge reused code into a common file
Change-Id: I264aaa67ae1103df2292e17d1eb46b3054799994
diff --git a/src/background.js b/src/background.js
index 6728e07..688aaa1 100644
--- a/src/background.js
+++ b/src/background.js
@@ -1,45 +1,9 @@
-function isEmpty(obj) {
- return Object.keys(obj).length === 0;
-}
-
-const defaultOptions = {
- 'list': true,
- 'thread': true,
- 'threadall': false,
- 'fixedtoolbar': false,
- 'redirect': false,
- 'history': false,
- 'loaddrafts': false,
- 'batchduplicate': false,
- 'escalatethreads': false,
- 'movethreads': false,
- 'increasecontrast': false,
- 'stickysidebarheaders': false,
- 'profileindicator': false,
-};
-
-function cleanUpOptions() {
- chrome.storage.sync.get(null, function(options) {
- console.log('[cleanUpOptions] Previous options', options);
- var ok = true;
- for (const [opt, value] of Object.entries(defaultOptions)) {
- if (!(opt in options)) {
- ok = false;
- options[opt] = value;
- }
- }
-
- console.log('[cleanUpOptions] New options', options);
-
- if (!ok) {
- chrome.storage.sync.set(options);
- }
- });
-}
-
+// When the extension gets updated, set new options to their default value.
chrome.runtime.onInstalled.addListener(function(details) {
if (details.reason == 'install' || details.reason == 'update') {
- cleanUpOptions();
+ chrome.storage.sync.get(null, function(options) {
+ cleanUpOptions(options);
+ });
}
});
diff --git a/src/common/common.js b/src/common/common.js
new file mode 100644
index 0000000..28c233a
--- /dev/null
+++ b/src/common/common.js
@@ -0,0 +1,44 @@
+const defaultOptions = {
+ 'list': true,
+ 'thread': true,
+ 'threadall': false,
+ 'fixedtoolbar': false,
+ 'redirect': false,
+ 'history': false,
+ 'loaddrafts': false,
+ 'batchduplicate': false,
+ 'escalatethreads': false,
+ 'movethreads': false,
+ 'increasecontrast': false,
+ 'stickysidebarheaders': false,
+ 'profileindicator': false,
+};
+
+const deprecatedOptions = [
+ 'escalatethreads',
+ 'movethreads',
+ 'batchduplicate',
+];
+
+function isEmpty(obj) {
+ return Object.keys(obj).length === 0;
+}
+
+function cleanUpOptions(options) {
+ console.log('[cleanUpOptions] Previous options', options);
+ var ok = true;
+ for (const [opt, value] of Object.entries(defaultOptions)) {
+ if (!(opt in options)) {
+ ok = false;
+ options[opt] = value;
+ }
+ }
+
+ console.log('[cleanUpOptions] New options', options);
+
+ if (!ok) {
+ chrome.storage.sync.set(options);
+ }
+
+ return options;
+}
diff --git a/src/common/content_scripts_injections.js b/src/common/content_scripts_injections.js
new file mode 100644
index 0000000..2067075
--- /dev/null
+++ b/src/common/content_scripts_injections.js
@@ -0,0 +1,16 @@
+function injectStylesheet(stylesheetName) {
+ var link = document.createElement('link');
+ link.setAttribute('rel', 'stylesheet');
+ link.setAttribute('href', stylesheetName);
+ document.head.appendChild(link);
+}
+
+function injectStyles(css) {
+ injectStylesheet('data:text/css;charset=UTF-8,' + encodeURIComponent(css));
+}
+
+function injectScript(scriptName) {
+ var script = document.createElement('script');
+ script.src = scriptName;
+ document.head.appendChild(script);
+}
diff --git a/src/content_scripts/console_inject.js b/src/content_scripts/console_inject.js
index 8d481e9..eda9960 100644
--- a/src/content_scripts/console_inject.js
+++ b/src/content_scripts/console_inject.js
@@ -62,23 +62,6 @@
});
};
-function injectStylesheet(stylesheetName) {
- var link = document.createElement('link');
- link.setAttribute('rel', 'stylesheet');
- link.setAttribute('href', stylesheetName);
- document.head.appendChild(link);
-}
-
-function injectStyles(css) {
- injectStylesheet('data:text/css;charset=UTF-8,' + encodeURIComponent(css));
-}
-
-function injectScript(scriptName) {
- var script = document.createElement('script');
- script.src = scriptName;
- document.head.appendChild(script);
-}
-
var observerOptions = {
childList: true,
attributes: true,
diff --git a/src/content_scripts/thread_inject.js b/src/content_scripts/thread_inject.js
index 2e2554a..89ef2f6 100644
--- a/src/content_scripts/thread_inject.js
+++ b/src/content_scripts/thread_inject.js
@@ -1,22 +1,5 @@
var intersectionObserver;
-function injectStylesheet(stylesheetName) {
- var link = document.createElement('link');
- link.setAttribute('rel', 'stylesheet');
- link.setAttribute('href', stylesheetName);
- document.head.appendChild(link);
-}
-
-function injectStyles(css) {
- injectStylesheet('data:text/css;charset=UTF-8,' + encodeURIComponent(css));
-}
-
-function injectScript(scriptName) {
- var script = document.createElement('script');
- script.src = scriptName;
- document.head.appendChild(script);
-}
-
function intersectionCallback(entries, observer) {
entries.forEach(entry => {
if (entry.isIntersecting) {
diff --git a/src/options.html b/src/options.html
index 6dc2d46..cd325a0 100644
--- a/src/options.html
+++ b/src/options.html
@@ -23,6 +23,7 @@
</p>
<p class="actions"><button id="save" data-i18n="save"></button></p>
<div id="save-indicator"></div>
+ <script src="common/common.js"></script>
<script src="options.js"></script>
</body>
</html>
diff --git a/src/options.js b/src/options.js
index af9dede..64d1bad 100644
--- a/src/options.js
+++ b/src/options.js
@@ -1,47 +1,5 @@
-function isEmpty(obj) {
- return Object.keys(obj).length === 0;
-}
-
-const defaultOptions = {
- 'list': true,
- 'thread': true,
- 'threadall': false,
- 'fixedtoolbar': false,
- 'redirect': false,
- 'history': false,
- 'loaddrafts': false,
- 'batchduplicate': false,
- 'escalatethreads': false,
- 'movethreads': false,
- 'increasecontrast': false,
- 'stickysidebarheaders': false,
- 'profileindicator': false,
-};
-
-const deprecatedOptions = [
- 'escalatethreads',
- 'movethreads',
- 'batchduplicate',
-];
-
var savedSuccessfullyTimeout = null;
-function cleanUpOptions(options) {
- var ok = true;
- for (const [opt, value] of Object.entries(defaultOptions)) {
- if (!opt in options) {
- ok = false;
- options[opt] = value;
- }
- }
-
- if (!ok) {
- chrome.storage.sync.set(options);
- }
-
- return options;
-}
-
function save() {
var options = defaultOptions;
diff --git a/templates/manifest.gjson b/templates/manifest.gjson
index 06a9965..e1f6cdb 100644
--- a/templates/manifest.gjson
+++ b/templates/manifest.gjson
@@ -13,7 +13,7 @@
"content_scripts": [
{
"matches": ["https://support.google.com/s/community*"],
- "js": ["content_scripts/console_inject.js"]
+ "js": ["common/content_scripts_injections.js", "content_scripts/console_inject.js"]
},
{
"matches": ["https://support.google.com/s/community*"],
@@ -26,7 +26,7 @@
},
{
"matches": ["https://support.google.com/*/thread/*"],
- "js": ["content_scripts/thread_inject.js"],
+ "js": ["common/content_scripts_injections.js", "content_scripts/thread_inject.js"],
"run_at": "document_end"
},
{
@@ -62,7 +62,10 @@
#if defined(CHROMIUM)
"persistent": false,
#endif
- "scripts": ["background.js"]
+ "scripts": [
+ "common/common.js",
+ "background.js"
+ ]
},
#if defined(GECKO)
"browser_specific_settings": {