From 6698b75ef1f4a6a8022336ffa6dcfd1095b481dd Mon Sep 17 00:00:00 2001 From: NeverDecaf Date: Thu, 9 Dec 2021 05:33:30 -0500 Subject: [PATCH] bump version to 1.4.3 --- Chromium Web Store.crx | Bin 37500 -> 38863 bytes en_nolocale/manifest.json | 2 +- en_nolocale/scripts/background.js | 2 +- en_nolocale/scripts/inject.js | 151 ++++++++++++----------- en_nolocale/scripts/options.js | 28 ++--- en_nolocale/scripts/util.js | 198 +++++++++++++++--------------- src/manifest.json | 2 +- updates.xml | 2 +- updates_en_nolocale.xml | 2 +- 9 files changed, 195 insertions(+), 192 deletions(-) diff --git a/Chromium Web Store.crx b/Chromium Web Store.crx index 74797a69c83c0a262fcc51e814404a521cc7bed4..02c550a9b262ff20e5a6fd7468e290322c8b1651 100644 GIT binary patch delta 9952 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 L06;_3zgGVPE0fvD delta 8774 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 { - // normal methods fail because microsoft's official web store redirects you from HTTPS to an insecure HTTP url. - // instead use chrome.tabs to open the url in a new tab. - chrome.runtime.sendMessage({ - newTabUrl: buildExtensionUrl(getExtensionId(window.location.href)) - }); - }) - observer.disconnect(); - } + if (is_ews_addon_page.test(window.location.href)) { + let btn = mutation.target.querySelector('button[disabled]') + if (btn) { + btn.classList.remove(btn.className.split(' ').sort().reverse()[0]) + btn.removeAttribute('disabled') + btn.addEventListener('click',() => { + // normal methods fail because microsoft's official web store redirects you from HTTPS to an insecure HTTP url. + // instead use chrome.tabs to open the url in a new tab. + chrome.runtime.sendMessage({ + newTabUrl: buildExtensionUrl(getExtensionId(window.location.href)) + }); + }) + } + } + }); + }).observe(document.body, { + childList: true, + subtree: true }); - }).observe(document.body, { - childList: true - }); } if (is_cws.test(window.location.href)) { - attachMainObserver.observe(document.body, { - childList: true - }); + attachMainObserver.observe(document.body, { + childList: true + }); } if (is_ows.test(window.location.href)) { - let installDiv = document.body.querySelector('.sidebar .get-opera') - let sidebar = installDiv.parentElement - let wrapper = document.createElement('div') - wrapper.classList.add('wrapper-install') - dlBtn = document.createElement('a') - dlBtn.classList.add('btn-install') - dlBtn.classList.add('btn-with-plus') - dlBtn.innerHTML = "Add to Chromium" - sidebar.replaceChild(wrapper, installDiv) - wrapper.appendChild(dlBtn) - let url = buildExtensionUrl(getExtensionId(window.location.href)) - function fetchExt() { - let filename = 'ext.crx' - fetch(url) - .then( r => { - r.headers.forEach(h => { - let v = /filename=([^ ]+)/.exec(h) - if (v) { - filename = v[1] - return - } - }) - return r.blob() - }) - .then( blob => { - // set mime type to prevent automatic install; reference: https://stackoverflow.com/questions/57834691/how-to-serve-crx-file-in-a-way-that-is-not-automatically-installed - blob = blob.slice(0, blob.size, "application/zip") - const blobURL = window.URL.createObjectURL(blob); - dlBtn.href = blobURL; - dlBtn.download = filename - dlBtn.click() - }) - } - dlBtn.addEventListener('click', fetchExt, {once:true}) + let installDiv = document.body.querySelector('.sidebar .get-opera') + let sidebar = installDiv.parentElement + let wrapper = document.createElement('div') + wrapper.classList.add('wrapper-install') + dlBtn = document.createElement('a') + dlBtn.classList.add('btn-install') + dlBtn.classList.add('btn-with-plus') + dlBtn.innerHTML = "Add to Chromium" + sidebar.replaceChild(wrapper, installDiv) + wrapper.appendChild(dlBtn) + let url = buildExtensionUrl(getExtensionId(window.location.href)) + function fetchExt() { + let filename = 'ext.crx' + fetch(url) + .then( r => { + r.headers.forEach(h => { + let v = /filename=([^ ]+)/.exec(h) + if (v) { + filename = v[1] + return + } + }) + return r.blob() + }) + .then( blob => { + // set mime type to prevent automatic install; reference: https://stackoverflow.com/questions/57834691/how-to-serve-crx-file-in-a-way-that-is-not-automatically-installed + blob = blob.slice(0, blob.size, "application/zip") + const blobURL = window.URL.createObjectURL(blob); + dlBtn.href = blobURL; + dlBtn.download = filename + dlBtn.click() + }) + } + dlBtn.addEventListener('click', fetchExt, {once:true}) } window.onload = () => { chrome.runtime.onMessage.addListener(request => { if (request.action === "install") { - console.log('opening extension URL:',buildExtensionUrl(getExtensionId(window.location.href))) - if (is_ows.test(window.location.href)) { - dlBtn.click() - } - else if (is_cws.test(window.location.href) || is_ews.test(window.location.href)) { - window.open(buildExtensionUrl(getExtensionId(window.location.href))); - } + console.log('opening extension URL:',buildExtensionUrl(getExtensionId(window.location.href))) + if (is_ows.test(window.location.href)) { + dlBtn.click() + } + else if (is_cws.test(window.location.href) || is_ews.test(window.location.href)) { + window.open(buildExtensionUrl(getExtensionId(window.location.href))); + } } }); }; diff --git a/en_nolocale/scripts/options.js b/en_nolocale/scripts/options.js index 3476ad5..de342db 100644 --- a/en_nolocale/scripts/options.js +++ b/en_nolocale/scripts/options.js @@ -18,10 +18,10 @@ function load_options() { input = document.createElement('input'); input.setAttribute('type', 'checkbox'); input.setAttribute('id', ex.id); - if (Array.from(store_extensions.keys()).some(x => x.test(ex.updateUrl) && store_extensions.get(x).ignore)) { - input.checked = true - input.disabled = true - } + if (Array.from(store_extensions.keys()).some(x => x.test(ex.updateUrl) && store_extensions.get(x).ignore)) { + input.checked = true + input.disabled = true + } img.setAttribute('alt', ex.name); if (ex.icons) img.setAttribute('src', 'chrome://extension-icon/' + ex.id + '/' + ex.icons[0].size + '/0'); @@ -36,14 +36,14 @@ function load_options() { default_options[ex.id] = false; }); document.getElementById('import_export_list').value = e.map(ex => { - for (const [re, updaterOptions] of store_extensions) { - if (re.test(ex.updateUrl)) { - if (!updaterOptions.ignore) - return ex.name+'|'+ex.id - else - return ex.name - } - } + for (const [re, updaterOptions] of store_extensions) { + if (re.test(ex.updateUrl)) { + if (!updaterOptions.ignore) + return ex.name+'|'+ex.id + else + return ex.name + } + } return ex.name+'|'+ex.id+'|'+ex.updateUrl }).join('\r\n'); document.getElementById('import_all_button').onclick = () => { @@ -71,8 +71,8 @@ function load_options() { for (const [setting, value] of Object.entries(items)) { let node = document.getElementById(setting); if (node.type == 'checkbox') { - if (!node.checked) - node.checked = value; + if (!node.checked) + node.checked = value; node.addEventListener("change", e => { const checked = e.target.checked; chrome.storage.sync.set({ diff --git a/en_nolocale/scripts/util.js b/en_nolocale/scripts/util.js index 7e0f3b4..8872460 100644 --- a/en_nolocale/scripts/util.js +++ b/en_nolocale/scripts/util.js @@ -2,21 +2,21 @@ const chromeVersion = /Chrome\/([0-9.]+)/.exec(navigator.userAgent)[1]; const store_extensions = new Map() const googleUpdateUrl = 'https://clients2.google.com/service/update2/crx'; store_extensions.set(/clients2\.google\.com\/service\/update2\/crx/, { - baseUrl: 'https://clients2.google.com/service/update2/crx?response=updatecheck&acceptformat=crx2,crx3&prodversion=', - name: 'CWS Extensions', + baseUrl: 'https://clients2.google.com/service/update2/crx?response=updatecheck&acceptformat=crx2,crx3&prodversion=', + name: 'CWS Extensions', }) // edge requires &v= for each extension or else it returns empty results store_extensions.set(/edge\.microsoft\.com\/extensionwebstorebase\/v1\/crx/, { - baseUrl: 'https://edge.microsoft.com/extensionwebstorebase/v1/crx?os=win&arch=x64&os_arch=x86_64&nacl_arch=x86-64&prod=edgecrx&prodchannel=&lang=en-US&acceptformat=crx3&prodversion=', - name: 'Edge Extensions', - ignore: true, + baseUrl: 'https://edge.microsoft.com/extensionwebstorebase/v1/crx?os=win&arch=x64&os_arch=x86_64&nacl_arch=x86-64&prod=edgecrx&prodchannel=&lang=en-US&acceptformat=crx3&prodversion=', + name: 'Edge Extensions', + ignore: true, }) // opera requires an opera UA or else this request will return 404 store_extensions.set(/extension-updates\.opera\.com\/api\/omaha\/update/, { - baseUrl: 'https://extension-updates.opera.com/api/omaha/update/?os=win&arch=x64&os_arch=x86_64&nacl_arch=x86-64&prod=chromiumcrx&prodchannel=Stable&lang=en-US&acceptformat=crx3&prodversion=', - name: 'Opera Extensions', - userAgent: 'foobar', - ignore: true, + baseUrl: 'https://extension-updates.opera.com/api/omaha/update/?os=win&arch=x64&os_arch=x86_64&nacl_arch=x86-64&prod=chromiumcrx&prodchannel=Stable&lang=en-US&acceptformat=crx3&prodversion=', + name: 'Opera Extensions', + userAgent: 'foobar', + ignore: true, }) function version_is_newer(current, available) { @@ -69,17 +69,17 @@ function checkForUpdates(update_callback = null, failure_callback = null, comple let updateUrl = 'https://clients2.google.com/service/update2/crx?response=updatecheck&acceptformat=crx2,crx3&prodversion=' + chromeVersion; let installed_versions = {}; let updateUrls = []; - Array.from(store_extensions.values()).forEach(x => delete x.updateUrl) + Array.from(store_extensions.values()).forEach(x => delete x.updateUrl) e.forEach(function (ex) { if (ex.updateUrl && !settings[ex.id]) { - let is_from_store = false - for (const [re, updaterOptions] of store_extensions) { - if (re.test(ex.updateUrl)) { - is_from_store = true - updaterOptions.updateUrl = updaterOptions.updateUrl || (updaterOptions.baseUrl + chromeVersion) - updaterOptions.updateUrl += '&x=id%3D' + ex.id + '%26uc'; - } - } + let is_from_store = false + for (const [re, updaterOptions] of store_extensions) { + if (re.test(ex.updateUrl)) { + is_from_store = true + updaterOptions.updateUrl = updaterOptions.updateUrl || (updaterOptions.baseUrl + chromeVersion) + updaterOptions.updateUrl += '&x=id%3D' + ex.id + '%26uc'; + } + } if (!is_from_store && settings.check_external_apps) { updateUrls.push({ 'url': ex.updateUrl, @@ -91,90 +91,90 @@ function checkForUpdates(update_callback = null, failure_callback = null, comple } }); if (settings.check_store_apps) - for (const [re, updaterOptions] of store_extensions) { - if (!updaterOptions.ignore) - updateUrls.push({ - 'url': updaterOptions.updateUrl, - 'name': updaterOptions.name - }); - } - function update_extension(ext_url, ext_id, ext_name) { - let is_webstore = Array.from(store_extensions.keys()).some(x => x.test(ext_url)) - return new Promise((resolve, reject) => { - fetch(ext_url) - .then(r => { - if (r.status != 200) { - return Promise.reject() - } - else - return r.text() - }) - .then(txt => new window.DOMParser().parseFromString(txt, "text/xml")) - .then(data => { - let updates = data.getElementsByTagName('app'); - let updateCount = 0; - for (let i = 0; i < updates.length; i++) { - if (updateCheck = updates[i].querySelector("*")) { - let updatever = updateCheck.getAttribute('version'); - let appid = updates[i].getAttribute('appid'); - let updatestatus = updateCheck.getAttribute('status'); - if ((updatestatus == 'ok' || !is_webstore) && updatever && installed_versions[appid] !== undefined && version_is_newer(installed_versions[appid].version, updatever)) { - updateCount++; - if (update_callback) - update_callback(updateCheck, installed_versions, appid, updatever, is_webstore); - if (appid in stored_values["removed_extensions"]) { - delete stored_values['removed_extensions'][appid]; - chrome.storage.sync.set({ - 'removed_extensions': stored_values['removed_extensions'] - }); - } - } - if (failure_callback && updatestatus == 'noupdate' && !(appid in stored_values["removed_extensions"])) - failure_callback(true, installed_versions[appid]); - } - } - chrome.browserAction.getBadgeText({}, function (currentText) { - let disp = (updateCount || '') + (parseInt(currentText) || '') + ''; - chrome.browserAction.setBadgeText({ - text: disp - }, () => { - chrome.storage.local.set({ - "badge_display": disp - }, () => { - resolve(); - }); - }); - }); - }) - .catch(e => { - if (failure_callback) { - if (ext_id) - failure_callback(false, installed_versions[ext_id]); - else - failure_callback(false, {'name': ext_name}); - } - reject() - }) - }) - } + for (const [re, updaterOptions] of store_extensions) { + if (!updaterOptions.ignore) + updateUrls.push({ + 'url': updaterOptions.updateUrl, + 'name': updaterOptions.name + }); + } + function update_extension(ext_url, ext_id, ext_name) { + let is_webstore = Array.from(store_extensions.keys()).some(x => x.test(ext_url)) + return new Promise((resolve, reject) => { + fetch(ext_url) + .then(r => { + if (r.status != 200) { + return Promise.reject() + } + else + return r.text() + }) + .then(txt => new window.DOMParser().parseFromString(txt, "text/xml")) + .then(data => { + let updates = data.getElementsByTagName('app'); + let updateCount = 0; + for (let i = 0; i < updates.length; i++) { + if (updateCheck = updates[i].querySelector("*")) { + let updatever = updateCheck.getAttribute('version'); + let appid = updates[i].getAttribute('appid'); + let updatestatus = updateCheck.getAttribute('status'); + if ((updatestatus == 'ok' || !is_webstore) && updatever && installed_versions[appid] !== undefined && version_is_newer(installed_versions[appid].version, updatever)) { + updateCount++; + if (update_callback) + update_callback(updateCheck, installed_versions, appid, updatever, is_webstore); + if (appid in stored_values["removed_extensions"]) { + delete stored_values['removed_extensions'][appid]; + chrome.storage.sync.set({ + 'removed_extensions': stored_values['removed_extensions'] + }); + } + } + if (failure_callback && updatestatus == 'noupdate' && !(appid in stored_values["removed_extensions"])) + failure_callback(true, installed_versions[appid]); + } + } + chrome.browserAction.getBadgeText({}, function (currentText) { + let disp = (updateCount || '') + (parseInt(currentText) || '') + ''; + chrome.browserAction.setBadgeText({ + text: disp + }, () => { + chrome.storage.local.set({ + "badge_display": disp + }, () => { + resolve(); + }); + }); + }); + }) + .catch(e => { + if (failure_callback) { + if (ext_id) + failure_callback(false, installed_versions[ext_id]); + else + failure_callback(false, {'name': ext_name}); + } + reject() + }) + }) + } chrome.browserAction.setBadgeText({ text: '' }, () => { - let promises = updateUrls.map(uurl => update_extension(uurl.url, uurl.id, uurl.name)) - Promise.allSettled(promises) - .then(plist => { - if (plist.some(x => x.status == 'rejected')) { - chrome.browserAction.getBadgeText({}, function (currentText) { - if (!(parseInt(currentText) > 0)) - chrome.browserAction.setBadgeText({ - text: "?" - }); - }) - } - if (completed_callback) - completed_callback() - }) - }); + let promises = updateUrls.map(uurl => update_extension(uurl.url, uurl.id, uurl.name)) + Promise.allSettled(promises) + .then(plist => { + if (plist.some(x => x.status == 'rejected')) { + chrome.browserAction.getBadgeText({}, function (currentText) { + if (!(parseInt(currentText) > 0)) + chrome.browserAction.setBadgeText({ + text: "?" + }); + }) + } + if (completed_callback) + completed_callback() + }) + }); }); }); }); diff --git a/src/manifest.json b/src/manifest.json index b462486..f2021c0 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "name": "__MSG_extension_Name__", "description": "__MSG_extension_Description__", "default_locale": "en", - "version": "1.4.2", + "version": "1.4.3", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqF/d41Q7agjkUzYq8ZGbQr8XW8mmEIMXOnR1uCTnYLL+Dm9Z+LO50xZukOISNy6zFxpI8ts/OGLsm+I2x9+UprUU4/EVdmxuwegFE6NBoEhHoRNYY0gbXZkaU8YY/XwzjVY/k18DDhl5NYPEnF6uq4Oyidg+xtd3W4+iGYczuOLER1Tp5y614zOTphcvFYhvUkCijQ6HT1TtRq/34SlFoRQqo4SFiLriK451xWIcfwiMLIekWrdoQa1v8dqIlMA3r6CKc0QykJpSYbiyormWiZ0hl2HLpkZ85mD9V0eDQ5RCtb6vkybK7INcq4yKQV4YkXhr9NpX9U4re4dlFQjEJQIDAQAB", "permissions": [ "management", diff --git a/updates.xml b/updates.xml index de37ad8..3569be9 100644 --- a/updates.xml +++ b/updates.xml @@ -1,6 +1,6 @@ - + diff --git a/updates_en_nolocale.xml b/updates_en_nolocale.xml index de37ad8..3569be9 100644 --- a/updates_en_nolocale.xml +++ b/updates_en_nolocale.xml @@ -1,6 +1,6 @@ - +