diff --git a/.travis.yml b/.travis.yml index 4873c486c..e25781bc4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - "lts/carbon" + - "lts/dubnium" sudo: false cache: diff --git a/README.md b/README.md index 9165c4769..3cc588152 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Ghostery helps you browse smarter by giving you control over ads and tracking te **Opera** – [Download](https://addons.opera.com/en/extensions/details/ghostery/) -**Edge** – [Download](https://www.microsoft.com/en-us/store/p/ghostery/9nblggh52ngz) +**Edge** – [Download](https://microsoftedge.microsoft.com/addons/detail/fclbdkbhjlgkbpfldjodgjncejkkjcme) ## Installation @@ -145,7 +145,7 @@ $ ./fern.js build configs/ghostery.js --environment=production --no-debug + Firefox Android: 55+ + Chrome: 58+ + Opera: 45+ -+ Edge: 34.14291+ ++ Edge: 79+ ## Contribute diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 048cb9b09..d74c8ed74 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -727,9 +727,6 @@ "panel_detail_rewards_cliqz_text": { "message": "Feature already active in the Cliqz MyOffrz control panel." }, - "panel_detail_rewards_edge_text": { - "message": "Ghostery Rewards is not currently supported in Microsoft Edge." - }, "panel_detail_rewards_loading": { "message": "Loading Rewards..." }, diff --git a/app/content-scripts/notifications.js b/app/content-scripts/notifications.js index 4f5254bc9..f70ba2dfe 100644 --- a/app/content-scripts/notifications.js +++ b/app/content-scripts/notifications.js @@ -26,7 +26,6 @@ import bigLogoImage from '../data-images/popup/bigLogoImage'; const msg = msgModule('notifications'); const { sendMessage } = msg; const { onMessage } = chrome.runtime; -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * Use to call init to initialize functionality @@ -621,15 +620,11 @@ const NotificationsContentScript = (function(win, doc) { url = window.webkitURL.createObjectURL(textFileAsBlob); } - if (IS_EDGE) { // @EDGE does not support chrome.downloads - window.navigator.msSaveBlob(textFileAsBlob, fileNameToSaveAs); - } else { - const link = createEl('a'); - link.href = url; - link.setAttribute('download', fileNameToSaveAs); - document.body.appendChild(link); - link.click(); - } + const link = createEl('a'); + link.href = url; + link.setAttribute('download', fileNameToSaveAs); + document.body.appendChild(link); + link.click(); }; /** * Determine if a DOM element is visible to user. diff --git a/app/hub/Views/HomeView/HomeView.jsx b/app/hub/Views/HomeView/HomeView.jsx index 7bba12bf7..82de8fdd3 100644 --- a/app/hub/Views/HomeView/HomeView.jsx +++ b/app/hub/Views/HomeView/HomeView.jsx @@ -20,7 +20,6 @@ import { ToggleCheckbox } from '../../../shared-components'; const { IS_CLIQZ } = globals; const IS_FIREFOX = (globals.BROWSER_INFO.name === 'firefox'); -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * A Functional React component for rendering the Home View @@ -43,7 +42,7 @@ const HomeView = (props) => { if (globals.BROWSER_INFO) { if (IS_FIREFOX) { headerInfoText = t('hub_home_header_info_opted_out'); - } else if (IS_CLIQZ || IS_EDGE) { + } else if (IS_CLIQZ) { headerInfoText = t('hub_home_header_info_cliqz'); } } diff --git a/app/hub/Views/SetupView/SetupViewContainer.jsx b/app/hub/Views/SetupView/SetupViewContainer.jsx index cfbc0b245..0902c1ae7 100644 --- a/app/hub/Views/SetupView/SetupViewContainer.jsx +++ b/app/hub/Views/SetupView/SetupViewContainer.jsx @@ -29,7 +29,6 @@ import SetupDoneView from '../SetupViews/SetupDoneView'; const { BROWSER_INFO } = globals; const IS_FIREFOX = (BROWSER_INFO.name === 'firefox'); -const IS_EDGE = (BROWSER_INFO.name === 'edge'); /** * @class Implement the Setup View for the Ghostery Hub @@ -105,7 +104,7 @@ class SetupViewContainer extends Component { this.props.actions.setAntiTracking({ enable_anti_tracking: true }); this.props.actions.setAdBlock({ enable_ad_block: true }); this.props.actions.setSmartBlocking({ enable_smart_block: true }); - this.props.actions.setGhosteryRewards({ enable_ghostery_rewards: !IS_FIREFOX && !IS_EDGE }); + this.props.actions.setGhosteryRewards({ enable_ghostery_rewards: !IS_FIREFOX }); this.props.actions.setHumanWeb({ enable_human_web: !IS_FIREFOX }); } diff --git a/app/hub/Views/SetupViews/SetupAntiSuiteView/SetupAntiSuiteViewContainer.jsx b/app/hub/Views/SetupViews/SetupAntiSuiteView/SetupAntiSuiteViewContainer.jsx index 53dc65520..b4c25379b 100644 --- a/app/hub/Views/SetupViews/SetupAntiSuiteView/SetupAntiSuiteViewContainer.jsx +++ b/app/hub/Views/SetupViews/SetupAntiSuiteView/SetupAntiSuiteViewContainer.jsx @@ -18,7 +18,6 @@ import globals from '../../../../../src/classes/Globals'; // simple consts const { IS_CLIQZ } = globals; -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * @class Implement the Setup Anti-Suite View for the Ghostery Hub @@ -132,7 +131,7 @@ class SetupAntiSuiteViewContainer extends Component { } ]; - if (!IS_CLIQZ && !IS_EDGE) { + if (!IS_CLIQZ) { features.push({ id: 'ghostery-rewards', name: t('hub_setup_ghosteryrewards_name_rewards'), diff --git a/app/hub/Views/SideNavigationView/SideNavigationViewContainer.jsx b/app/hub/Views/SideNavigationView/SideNavigationViewContainer.jsx index 00da678ef..5f0a5af56 100644 --- a/app/hub/Views/SideNavigationView/SideNavigationViewContainer.jsx +++ b/app/hub/Views/SideNavigationView/SideNavigationViewContainer.jsx @@ -17,7 +17,6 @@ import SideNavigationView from './SideNavigationView'; import globals from '../../../../src/classes/Globals'; const { IS_CLIQZ } = globals; -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * @class Implement the Side Navigation View for the Ghostery Hub @@ -54,7 +53,7 @@ class SideNavigationViewContainer extends Component { { href: '/setup', icon: 'setup', text: t('customize_setup') }, { href: '/tutorial', icon: 'tutorial', text: t('hub_side_navigation_tutorial') }, { href: '/plus', icon: 'plus', text: t('get_ghostery_plus') }, - ...((IS_CLIQZ || IS_EDGE) ? [] : [{ href: '/rewards', icon: 'rewards', text: t('hub_side_navigation_rewards') }]), + ...((IS_CLIQZ) ? [] : [{ href: '/rewards', icon: 'rewards', text: t('hub_side_navigation_rewards') }]), { href: '/products', icon: 'products', text: t('hub_side_navigation_products') } ]; const bottomItems = user ? [ diff --git a/app/panel/actions/SettingsActions.js b/app/panel/actions/SettingsActions.js index 4c30b2050..86e20e386 100644 --- a/app/panel/actions/SettingsActions.js +++ b/app/panel/actions/SettingsActions.js @@ -117,8 +117,7 @@ export function exportSettings(pageUrl) { const url = pageUrl || ''; // Check if this is http(s) page return function(dispatch) { - if (url.search('http') === -1 || - (globals.BROWSER_INFO.name === 'edge' && url.search('www.msn.com/spartan') !== -1)) { + if (url.search('http') === -1) { dispatch({ type: EXPORT_SETTINGS, data: 'RESERVED_PAGE', diff --git a/app/panel/components/BuildingBlocks/ClickOutside.jsx b/app/panel/components/BuildingBlocks/ClickOutside.jsx index 4966bdfe2..cd5634513 100644 --- a/app/panel/components/BuildingBlocks/ClickOutside.jsx +++ b/app/panel/components/BuildingBlocks/ClickOutside.jsx @@ -56,7 +56,6 @@ class ClickOutside extends React.Component { */ clickHandler(e) { // Simple polyfill for Event.composedPath - // Edge does not support path or composedPath if (!('composedPath' in Event.prototype)) { Event.prototype.composedPath = function() { const path = []; diff --git a/app/panel/components/Rewards.jsx b/app/panel/components/Rewards.jsx index 2ed96ff38..977e47615 100644 --- a/app/panel/components/Rewards.jsx +++ b/app/panel/components/Rewards.jsx @@ -21,7 +21,6 @@ import globals from '../../../src/classes/Globals'; import { log } from '../../../src/utils/common'; const IS_CLIQZ = (globals.BROWSER_INFO.name === 'cliqz'); -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * @class The Rewards Panel shows offers generated by Ghostery Rewards. @@ -178,7 +177,7 @@ class Rewards extends React.Component { const { enable_offers } = this.props; const headerClassNames = ClassNames('RewardsPanel__header', 'flex-container', 'align-middle', 'align-justify'); const headerTitleClassNames = ClassNames('RewardsPanel__title'); - const shouldHideSlider = IS_CLIQZ || IS_EDGE; + const shouldHideSlider = IS_CLIQZ; return (
@@ -229,15 +228,6 @@ class Rewards extends React.Component { ); } - renderEDGEtext() { - return ( -
- { this.renderRewardSvg() } -
{ t('panel_detail_rewards_edge_text') }
-
- ); - } - renderRewardsTurnoffText() { return (
@@ -262,7 +252,6 @@ class Rewards extends React.Component { */ renderRewardListComponent() { if (IS_CLIQZ) { return this.renderCLIQZtext(); } - if (IS_EDGE) { return this.renderEDGEtext(); } const { enable_offers, is_expanded } = this.props; if (!enable_offers) { return this.renderRewardsTurnoffText(); } diff --git a/app/panel/components/Settings/Account.jsx b/app/panel/components/Settings/Account.jsx index 112a64131..29cd2c0db 100644 --- a/app/panel/components/Settings/Account.jsx +++ b/app/panel/components/Settings/Account.jsx @@ -55,7 +55,7 @@ class Account extends React.Component { */ clickImportSettings = () => { const browserName = globals.BROWSER_INFO.name; - if (browserName === 'edge' || browserName === 'firefox') { + if (browserName === 'firefox') { // show ghostery dialog window for import this.props.actions.importSettingsDialog(this.props.settingsData.pageUrl); } else { diff --git a/app/panel/components/Settings/OptIn.jsx b/app/panel/components/Settings/OptIn.jsx index 2605ca06c..db4d21923 100644 --- a/app/panel/components/Settings/OptIn.jsx +++ b/app/panel/components/Settings/OptIn.jsx @@ -15,7 +15,6 @@ import React from 'react'; import globals from '../../../../src/classes/Globals'; const IS_CLIQZ = (globals.BROWSER_INFO.name === 'cliqz'); -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * @class Implement Opt In subview as a React component. @@ -58,7 +57,7 @@ const OptIn = (props) => {
)} - {!IS_CLIQZ && !IS_EDGE && ( + {!IS_CLIQZ && (
diff --git a/app/panel/reducers/settings.js b/app/panel/reducers/settings.js index d68e15bd1..04addcf49 100644 --- a/app/panel/reducers/settings.js +++ b/app/panel/reducers/settings.js @@ -136,9 +136,6 @@ const _exportSettings = (state, action) => { let updated_exportResultText = state.exportResultText; if (result && result !== 'RESERVED_PAGE') { updated_settings_last_exported = Number((new Date()).getTime()); - if (globals.BROWSER_INFO.name === 'edge') { - window.close(); - } moment.locale(state.language).toLowerCase().replace('_', '-'); updated_exportResultText = `${t('settings_export_success')} ${moment(updated_settings_last_exported).format('LLL')}`; updated_actionSuccess = true; diff --git a/app/panel/utils/msg.js b/app/panel/utils/msg.js index 5d1c03f17..7081254df 100644 --- a/app/panel/utils/msg.js +++ b/app/panel/utils/msg.js @@ -11,12 +11,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0 */ -import globals from '../../../src/classes/Globals'; import { log } from '../../../src/utils/common'; -const { onMessage } = chrome.runtime; -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); - /** * Default callback handler for sendMessage. Allows us to handle * 'Unchecked runtime.lastError: The message port closed before a response was received' errors. @@ -38,49 +34,7 @@ const defaultCallback = () => { * @param {Object} message message data * @return {Promise} */ -let MESSAGE_ID = 0; -const listenerSet = new Set(); -const resolveMap = new Map(); -const NO_ORIGIN = 'no_origin'; export function sendMessageInPromise(name, message, origin = '') { - // On Edge 39.14965.1001.0 callback is not called when multiple - // Edge instances are running. So instead we pass the message back - // from background. See onMessageHandler, HANDLE UNIVERSAL EVENTS HERE - // in src/background.js. To be removed, once Edge is fixed. - if (IS_EDGE) { - MESSAGE_ID++; - const messageId = MESSAGE_ID.toString(); - return new Promise((resolve) => { - resolveMap.set(messageId, resolve); - const key = (origin === '') ? NO_ORIGIN : origin; - if (!listenerSet.has(key)) { - listenerSet.add(key); - // We need to map individual listeners by origin for each - // instantiation (panel, hub, content scripts) since Edge does - // not allow a global listener for all uses - onMessage.addListener((request, sender, sendResponse) => { - const callback = resolveMap.get(request.name); - if (callback) { - callback(request.message); - resolveMap.delete(request.message); - } - if (sendResponse) { - sendResponse(); - } - }); - } - chrome.runtime.sendMessage({ - name, - message, - messageId, - origin, - }, () => { - if (chrome.runtime.lastError) { - log('sendMessageInPromise error:', chrome.runtime.lastError); - } - }); - }); - } return new Promise((resolve) => { chrome.runtime.sendMessage({ name, @@ -110,9 +64,6 @@ export function sendMessageInPromise(name, message, origin = '') { */ export function sendMessage(name, message, origin = '', callback = defaultCallback()) { log('Panel sendMessage: sending to background', name); - // @EDGE chrome.runtime.sendMessage(message) works, but the `callback` of - // chrome.runtime.sendMessage(message, callback) fails to - // execute and chrome.runtime.lastError is undefined. return chrome.runtime.sendMessage({ name, message, diff --git a/manifest.json b/manifest.json index a801a1361..45e9f3fe7 100644 --- a/manifest.json +++ b/manifest.json @@ -95,7 +95,7 @@ ], "persistent": true }, - "minimum_edge_version": "33.14281.1000.0", + "minimum_edge_version": "79.0.309", "minimum_chrome_version": "58", "minimum_opera_version": "45", "web_accessible_resources": [ diff --git a/src/background.js b/src/background.js index 2dcd826b0..ebe165ac5 100644 --- a/src/background.js +++ b/src/background.js @@ -662,30 +662,10 @@ function onMessageHandler(request, sender, callback) { return; } const { - name, message, messageId, origin + name, message, origin } = request; const { tab } = sender; const tab_id = tab && tab.id; - // Edge does not have url on tab object, as of Build 14342_rc1 - // const tab_url = tab && (tab.url ? tab.url : (sender.url ? sender.url : '')); - - // On Edge 39.14965.1001.0 callback is lost when multiple - // Edge instances running. So instead we shoot message back - // See sendMessageInPromise in app/js/utils/msg.js where we - // listen to this message. To be removed, once Edge fixed - if (IS_EDGE && messageId) { - if (tab_id) { - // eslint-disable-next-line no-param-reassign - callback = function(result) { - utils.sendMessage(tab_id, messageId, result); - }; - } else { - // eslint-disable-next-line no-param-reassign - callback = function(result) { - utils.sendMessageToPanel(messageId, result); - }; - } - } // HANDLE PAGE EVENTS HERE if (origin === 'account_pages') { @@ -803,10 +783,6 @@ function onMessageHandler(request, sender, callback) { return true; } if (name === 'account.register') { - if (!IS_EDGE) { - const senderOrigin = (sender.url.indexOf('templates/panel.html') >= 0) ? 'extension' : 'setup'; - metrics.ping(`create_account_${senderOrigin}`); - } const { email, confirmEmail, password, firstName, lastName } = message; @@ -1333,7 +1309,6 @@ function addCommonGhosteryAndAntitrackingListeners() { let urlFilters = ['http://*/*', 'https://*/*', 'ws://*/*', 'wss://*/*']; if (IS_EDGE || IS_FIREFOX) { // Prevent Firefox from asking users to re-validate permissions on upgrade - // Edge doesn't support WebSockets urlFilters = urlFilters.reduce((accumulator, currentValue) => { if (!currentValue.match(/^wss?:\/\//)) { accumulator.push(currentValue); @@ -1451,7 +1426,7 @@ function initializeEventListeners() { }); // Fired when another extension sends a message, accepts message if it's from Ghostery Tab - // NOTE: not supported on Edge and Firefox < v54 + // NOTE: not supported on Firefox < v54 if (typeof chrome.runtime.onMessageExternal === 'object') { chrome.runtime.onMessageExternal.addListener((request, sender, sendResponse) => { const recognized = [ @@ -1598,7 +1573,7 @@ function initializeGhosteryModules() { // We introduce these new features initially disabled. conf.enable_ad_block = false; conf.enable_anti_tracking = false; - // Enable Offers except on Edge or Cliqz + // Enable Offers except or Cliqz conf.enable_offers = true; } else if (globals.JUST_UPGRADED_FROM_8_1) { // These users already had human web, adblocker and antitracking, so we respect their choice @@ -1612,7 +1587,7 @@ function initializeGhosteryModules() { conf.enable_ad_block = !adblocker.isDisabled; conf.enable_anti_tracking = !antitracking.isDisabled; conf.enable_human_web = !humanweb.isDisabled && !(IS_FIREFOX && globals.JUST_INSTALLED); - conf.enable_offers = !offers.isDisabled && !(IS_FIREFOX && globals.JUST_INSTALLED) && !IS_EDGE; + conf.enable_offers = !offers.isDisabled && !(IS_FIREFOX && globals.JUST_INSTALLED); } const myoffrzShouldMigrate = conf.rewards_opted_in !== undefined && cliqz.prefs.get('myoffrz.opted_in', undefined) === undefined; diff --git a/src/classes/BrowserButton.js b/src/classes/BrowserButton.js index 453eb668e..5037166d1 100644 --- a/src/classes/BrowserButton.js +++ b/src/classes/BrowserButton.js @@ -93,7 +93,6 @@ class BrowserButton { // provide callbacks, we must check that the tab exists again to compensate for a race // condition that occurs if a user closes the tab while the trackers are still loading getTab(tabId, () => { - // @EDGE setTitle not currently supported by EDGE if (typeof chrome.browserAction.setTitle === 'function') { chrome.browserAction.setTitle({ title: chrome.i18n.getMessage('browser_button_tooltip'), diff --git a/src/classes/ConfData.js b/src/classes/ConfData.js index bd3e67c97..89a8f3054 100644 --- a/src/classes/ConfData.js +++ b/src/classes/ConfData.js @@ -23,7 +23,6 @@ import { prefsGet } from '../utils/common'; const { IS_CLIQZ, BROWSER_INFO } = globals; const IS_FIREFOX = (BROWSER_INFO.name === 'firefox'); -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * Class for handling user configuration properties synchronously. @@ -111,7 +110,7 @@ class ConfData { _initProperty('enable_click2play_social', true); _initProperty('enable_human_web', !IS_CLIQZ && !IS_FIREFOX); _initProperty('enable_metrics', false); - _initProperty('enable_offers', !IS_CLIQZ && !IS_FIREFOX && !IS_EDGE); + _initProperty('enable_offers', !IS_CLIQZ && !IS_FIREFOX); _initProperty('enable_smart_block', true); _initProperty('expand_all_trackers', true); _initProperty('hide_alert_trusted', false); diff --git a/src/classes/EventHandlers.js b/src/classes/EventHandlers.js index 64c5904eb..55ba5f4e1 100644 --- a/src/classes/EventHandlers.js +++ b/src/classes/EventHandlers.js @@ -37,7 +37,6 @@ import { log } from '../utils/common'; import { isBug } from '../utils/matcher'; import * as utils from '../utils/utils'; -const IS_EDGE = (globals.BROWSER_INFO.name === 'edge'); /** * This class is a collection of handlers for * webNavigation, webRequest and tabs events. @@ -122,11 +121,8 @@ class EventHandlers { utils.getTab(tabId, (tab) => { if (tab) { tabInfo.setTabInfo(tabId, 'incognito', tab.incognito); - // Edge does not have script execute-ready in onCommited - if (!IS_EDGE) { - // purplebox.createBox() will first check to make sure this is a valid tab - this._createBox(tabId); - } + // purplebox.createBox() will first check to make sure this is a valid tab + this._createBox(tabId); } }, () => { // prefetched tabs will return an error from utils.getTab @@ -166,11 +162,6 @@ class EventHandlers { return; } - // Edge does not have script execute-ready in onCommited, so we call this here - if (IS_EDGE) { - this._createBox(tab_id); - } - const alert_messages = [ 'notification_library_update', 'notification_library_update_link', diff --git a/src/classes/Metrics.js b/src/classes/Metrics.js index e7a532298..51377cc82 100644 --- a/src/classes/Metrics.js +++ b/src/classes/Metrics.js @@ -26,7 +26,6 @@ const FREQUENCIES = { // in milliseconds const CRITICAL_METRICS = ['install', 'install_complete', 'upgrade', 'active', 'engaged', 'uninstall']; const CAMPAIGN_METRICS = ['install', 'active', 'uninstall']; const { METRICS_SUB_DOMAIN, EXTENSION_VERSION, BROWSER_INFO } = globals; -const IS_EDGE = (BROWSER_INFO.name === 'edge'); const MAX_DELAYED_PINGS = 100; // Note that this threshold is intentionally different from the 30 second threshold in PolicySmartBlock, @@ -61,49 +60,26 @@ class Metrics { */ init(JUST_INSTALLED) { if (JUST_INSTALLED) { - if (!IS_EDGE) { - return new Promise((resolve) => { - let foundUTM = false; - // This query fails on Edge - chrome.tabs.query({ - url: [ - 'https://www.ghostery.com/*' - ] - }, (tabs) => { - tabs.forEach((tab) => { - if (foundUTM) { return; } - - const query = processUrlQuery(tab.url); - if (!query.utm_source || !query.utm_campaign) { return; } - - this.utm_source = query.utm_source; - this.utm_campaign = query.utm_campaign; - foundUTM = true; - prefsSet({ - utm_source: this.utm_source, - utm_campaign: this.utm_campaign - }); - }); - resolve(); - }); - }); - } return new Promise((resolve) => { - chrome.tabs.query({}, (tabs) => { - let foundUTM = false; + let foundUTM = false; + chrome.tabs.query({ + url: [ + 'https://www.ghostery.com/*' + ] + }, (tabs) => { tabs.forEach((tab) => { if (foundUTM) { return; } - if (tab.url && tab.url.includes('https://www.ghostery.com/')) { - const query = processUrlQuery(tab.url); - if (!query.utm_source || !query.utm_campaign) { return; } - this.utm_source = query.utm_source; - this.utm_campaign = query.utm_campaign; - foundUTM = true; - prefsSet({ - utm_source: this.utm_source, - utm_campaign: this.utm_campaign - }); - } + + const query = processUrlQuery(tab.url); + if (!query.utm_source || !query.utm_campaign) { return; } + + this.utm_source = query.utm_source; + this.utm_campaign = query.utm_campaign; + foundUTM = true; + prefsSet({ + utm_source: this.utm_source, + utm_campaign: this.utm_campaign + }); }); resolve(); }); @@ -418,7 +394,7 @@ class Metrics { frequencies = ['all']; // eslint-disable-line no-param-reassign } - if (!IS_EDGE && typeof fetch === 'function') { + if (typeof fetch === 'function') { const headers = new Headers(); headers.append('Content-Type', 'image/gif'); @@ -441,7 +417,7 @@ class Metrics { log(`sending ${type} ping with ${frequency} frequency`); - if (!IS_EDGE && typeof fetch === 'function') { + if (typeof fetch === 'function') { const request = new Request(metrics_url, options); fetch(request).catch((err) => { log(`Error sending Metrics ${type} ping`, err); diff --git a/src/utils/utils.js b/src/utils/utils.js index fd3c984a8..e4f261523 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -367,7 +367,6 @@ function _fetchJson(method, url, query, extraHeaders, referrer = 'no-referrer', credentials }; if (method === 'GET' || method === 'HEAD') { - // Edge fails to construct Request object for GET and HEAD methods in case body property is present delete options.body; } diff --git a/tools/edge/appxmanifest.xml b/tools/edge/appxmanifest.xml deleted file mode 100644 index f52edbe50..000000000 --- a/tools/edge/appxmanifest.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - ms-resource:DisplayName - Ghostery - Assets/icon50.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/edge/assets/icon150.png b/tools/edge/assets/icon150.png deleted file mode 100644 index 41e6d0266..000000000 Binary files a/tools/edge/assets/icon150.png and /dev/null differ diff --git a/tools/edge/assets/icon44.png b/tools/edge/assets/icon44.png deleted file mode 100644 index 0cbfa8c55..000000000 Binary files a/tools/edge/assets/icon44.png and /dev/null differ diff --git a/tools/edge/assets/icon50.png b/tools/edge/assets/icon50.png deleted file mode 100644 index f33aad25e..000000000 Binary files a/tools/edge/assets/icon50.png and /dev/null differ diff --git a/tools/edge/priconfig.xml b/tools/edge/priconfig.xml deleted file mode 100644 index a411314c7..000000000 --- a/tools/edge/priconfig.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/edge/resources/de/resources.resjson b/tools/edge/resources/de/resources.resjson deleted file mode 100644 index 8952f7d26..000000000 --- a/tools/edge/resources/de/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – datenschutzorientierter Werbeblocker","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – datenschutzorientierter Werbeblocker","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery ist eine leistungsstarke Datenschutz-Erweiterung. Damit können Sie Werbung blockieren, Tracker stoppen und Websites beschleunigen.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/en/resources.resjson b/tools/edge/resources/en/resources.resjson deleted file mode 100644 index e2476609e..000000000 --- a/tools/edge/resources/en/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Privacy Ad Blocker","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Privacy Ad Blocker","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery is a powerful privacy extension. Block ads, stop trackers and speed up websites.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/es/resources.resjson b/tools/edge/resources/es/resources.resjson deleted file mode 100644 index e983934cc..000000000 --- a/tools/edge/resources/es/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Bloqueador de anuncios para privacidad","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Bloqueador de anuncios para privacidad","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery es una potente extensión para tu privacidad. Bloquea anuncios, detiene rastreadores y acelera sitios web.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/fr/resources.resjson b/tools/edge/resources/fr/resources.resjson deleted file mode 100644 index 94fa3e108..000000000 --- a/tools/edge/resources/fr/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Bloqueur de publicité protégeant la vie privée","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Bloqueur de publicité protégeant la vie privée","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery est une puissante extension de protection de la vie privée. Bloquez les publicités, déjouez les outils de pistage et accélérez les sites Web.","_Description.comment":"Court descriptif de cette extension (Ghostery)."} diff --git a/tools/edge/resources/hu/resources.resjson b/tools/edge/resources/hu/resources.resjson deleted file mode 100644 index ce22661c0..000000000 --- a/tools/edge/resources/hu/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Adatavédelmi Reklámblokkoló","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Adatavédelmi Reklámblokkoló","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ennek a kiegészítőnek a rövid leírása. Blokkolja a reklámokat, leállítja a trackereket (követőalkalmazások) és felgyorsítja a weboldalakat.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/it/resources.resjson b/tools/edge/resources/it/resources.resjson deleted file mode 100644 index ae047ff14..000000000 --- a/tools/edge/resources/it/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Ad Blocker per la Privacy","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Ad Blocker per la Privacy","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery è una potente estensione per la protezione della privacy. Blocca pubblicità e tracker, e accelera i siti web.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/ja/resources.resjson b/tools/edge/resources/ja/resources.resjson deleted file mode 100644 index 9e0921418..000000000 --- a/tools/edge/resources/ja/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – プライバシー広告ブロッカー","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – プライバシー広告ブロッカー","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghosteryは強力なプライバシー拡張機能です。広告をブロックし、トラッカーを阻止し、ウェブサイトを高速化します。","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/ko/resources.resjson b/tools/edge/resources/ko/resources.resjson deleted file mode 100644 index ae3c2e3ee..000000000 --- a/tools/edge/resources/ko/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – 개인정보 보호용 광고 차단기","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – 개인정보 보호용 광고 차단기","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery는 강력한 개인정보 보호 확장 프로그램입니다. 광고와 트래커를 차단하고 웹 사이트의 속도를 높여줍니다.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/nl/resources.resjson b/tools/edge/resources/nl/resources.resjson deleted file mode 100644 index 7d2c709b6..000000000 --- a/tools/edge/resources/nl/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Privacy Ad Blocker","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Privacy Ad Blocker","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery is een krachtige privacy extensie. Blokkeer ads, stop trackers en maak websites sneller,","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/pl/resources.resjson b/tools/edge/resources/pl/resources.resjson deleted file mode 100644 index 39ce486fb..000000000 --- a/tools/edge/resources/pl/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Bloker reklam chroniący prywatność","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Bloker reklam chroniący prywatność","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery to potężne rozszerzenie do ochrony prywatności. Blokuje reklamy, wstrzymuje tropiciele i przyspiesza działanie stron internetowych.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/pt-br/resources.resjson b/tools/edge/resources/pt-br/resources.resjson deleted file mode 100644 index 54f11078e..000000000 --- a/tools/edge/resources/pt-br/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Bloqueador de anúncios para privacidade","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Bloqueador de anúncios para privacidade","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"O Ghostery é uma poderosa extensão de privacidade. Bloqueie anúncios, interrompa rastreadores e acelere sites.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/ru/resources.resjson b/tools/edge/resources/ru/resources.resjson deleted file mode 100644 index cbfe33286..000000000 --- a/tools/edge/resources/ru/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – Конфиденциальный Блокировщик Рекламы","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – Конфиденциальный Блокировщик Рекламы","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery - это мощное расширение для обеспечения конфиденциальности. Блокируйте рекламу, отключайте средства слежения и ускоряйте загрузку веб-сайтов.","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/zh-cn/resources.resjson b/tools/edge/resources/zh-cn/resources.resjson deleted file mode 100644 index 028f7bab4..000000000 --- a/tools/edge/resources/zh-cn/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery – 隐私广告拦截工具","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery – 隐私广告拦截工具","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery 是强大的隐私保护扩展程序。拦截广告,停止跟踪器,提高网站速度。","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/tools/edge/resources/zh-tw/resources.resjson b/tools/edge/resources/zh-tw/resources.resjson deleted file mode 100644 index 11d8c505d..000000000 --- a/tools/edge/resources/zh-tw/resources.resjson +++ /dev/null @@ -1 +0,0 @@ -{"DisplayName":"Ghostery –隱私廣告攔截器","_DisplayName.comment":"The title of this extension (Ghostery).","PublisherName":"Ghostery –隱私廣告攔截器","_PublisherName.comment":"The title of this extension (Ghostery).","Description":"Ghostery是一個強效的隱私擴增功能。攔截廣告、制止追蹤器及加快網頁運行。","_Description.comment":"A short description of this extension (Ghostery)."} diff --git a/webpack.config.js b/webpack.config.js index d17bdc26a..17d53f522 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -102,7 +102,7 @@ module.exports = { return chrome.i18n.getMessage(messageName, substitutions); } }), - // For @EDGE, set `chrome` global + // Set `chrome` global for browsers that don't support it new webpack.BannerPlugin({ banner: 'if(typeof browser!=="undefined"){chrome=browser;}', raw: true,