Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v8.4.3 Bug Fixes #446

Merged
merged 8 commits into from Sep 6, 2019
@@ -1,3 +1,11 @@
### GHOSTERY 8.4.3 (UNRELEASED)

+ Fixes issue where Detail View is blank when there are only Unknown trackers found ()
+ New opt-in flow for Ghostery Rewards ()
+ Fixes for AMO build script
+ Update all project dependencies to satisfy security alerts
+ Updated translations

### GHOSTERY 8.4.2 (August 28, 2019)

+ Fix slow memory leak in Firefox (#434)
@@ -725,7 +725,7 @@
"message": "Trust on this site"
},
"panel_tracker_scrub_tooltip": {
"message": "Scrub on this site"
"message": "Anonymize on this site"
},
"panel_detail_menu_list_title": {
"message": "List View"
@@ -19,7 +19,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route } from 'react-router-dom';
import root from 'react-shadow';
import retargetEvents from 'react-shadow-dom-retarget-events';
import HotDog from './HotDog';
import OfferCard from './OfferCard';
import msgModule from '../utils/msg';
@@ -90,37 +90,38 @@ class RewardsApp {
}

renderShadow() {
// use shadowDOM to encapsulate CSS - fully supported in Chrome
this.rewardsContainer.appendChild(this.rewardsApp);
// Use shadowDOM to encapsulate CSS
document.body.appendChild(this.rewardsContainer);
const shadowRoot = this.rewardsContainer.attachShadow({ mode: 'open' }); // Get the shadow root
shadowRoot.appendChild(this.rewardsApp); // Append React root to shadow root
retargetEvents(shadowRoot);

this.mainView = props => (
<Router history={history}>
<root.div>
<link
rel="stylesheet"
type="text/css"
href={chrome.extension.getURL('dist/css/rewards_styles.css')}
/>
<Route
exact
path="/"
render={
() => <HotDog reward={props.reward} port={this.port} actions={props.actions} />
}
/>
<Route
path="/hotdog"
render={
() => <HotDog reward={props.reward} port={this.port} actions={props.actions} />
}
/>
<Route
path="/offercard"
render={
() => <OfferCard reward={props.reward} conf={props.conf} port={this.port} actions={props.actions} />
}
/>
</root.div>
<link
rel="stylesheet"
type="text/css"
href={chrome.extension.getURL('dist/css/rewards_styles.css')}
/>
<Route
exact
path="/"
render={
() => <HotDog reward={props.reward} port={this.port} actions={props.actions} />
}
/>
<Route
path="/hotdog"
render={
() => <HotDog reward={props.reward} port={this.port} actions={props.actions} />
}
/>
<Route
path="/offercard"
render={
() => <OfferCard reward={props.reward} conf={props.conf} port={this.port} actions={props.actions} />
}
/>
</Router>
);
this.initListener();
@@ -42,7 +42,7 @@ class CreateAccountViewContainer extends Component {
password: '',
passwordInvalidError: false,
passwordLengthError: false,
promotionsChecked: true,
promotionsChecked: false,
validateInput: false,
};

@@ -31,7 +31,7 @@ describe('app/hub/Views/CreateAccount component', () => {
password: '',
passwordInvalidError: false,
passwordLengthError: false,
promotionsChecked: true,
promotionsChecked: false,
handleInputChange: () => {},
handleLegalConsentCheckboxChange: () => {},
handlePromotionsCheckboxChange: () => {},
@@ -58,7 +58,7 @@ describe('app/hub/Views/CreateAccount component', () => {
password: '',
passwordInvalidError: true,
passwordLengthError: true,
promotionsChecked: false,
promotionsChecked: true,
handleInputChange: () => {},
handleLegalConsentCheckboxChange: () => {},
handlePromotionsCheckboxChange: () => {},
@@ -87,7 +87,7 @@ describe('app/hub/Views/CreateAccount component', () => {
password: '',
passwordInvalidError: false,
passwordLengthError: false,
promotionsChecked: true,
promotionsChecked: false,
handleInputChange: () => {},
handleLegalConsentCheckboxChange: () => {},
handlePromotionsCheckboxChange: () => {},
@@ -173,14 +173,14 @@ exports[`app/hub/Views/CreateAccount component Snapshot tests with react-test-re
className="CreateAccountView__checkboxContainer CreateAccountView--marginBottom flex-container"
>
<div
className="ToggleCheckbox ToggleCheckbox--flush-left ToggleCheckbox--active"
className="ToggleCheckbox ToggleCheckbox--flush-left"
onClick={[Function]}
>
<svg
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
/>
</svg>
</div>
@@ -441,14 +441,14 @@ exports[`app/hub/Views/CreateAccount component Snapshot tests with react-test-re
className="CreateAccountView__checkboxContainer CreateAccountView--marginBottom flex-container"
>
<div
className="ToggleCheckbox ToggleCheckbox--flush-left"
className="ToggleCheckbox ToggleCheckbox--flush-left ToggleCheckbox--active"
onClick={[Function]}
>
<svg
viewBox="0 0 24 24"
>
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</div>
@@ -104,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 });
this.props.actions.setGhosteryRewards({ enable_ghostery_rewards: true });
this.props.actions.setHumanWeb({ enable_human_web: !IS_FIREFOX });
}

@@ -301,7 +301,6 @@ class Blocking extends React.Component {
blockingClasses,
disableBlocking
} = this.state;

return (
<div id="content-blocking">
<BlockingHeader
@@ -318,7 +317,7 @@ class Blocking extends React.Component {
<NotScanned />
) : (
<div className={`${blockingClasses} blocking-trackers show-warnings`}>
{categories.length > 0 && (
{(categories.length > 0 || unknownCategory.unknownTrackers.length > 0) && (
<Categories
expandAll={expand_all_trackers}
categories={categories}
@@ -204,7 +204,7 @@ class DonutGraph extends React.Component {
} = options;
const graphData = [];
const animationDuration = categories.length > 0 ? 500 : 0;
const categoryCount = categories.length;
const categoryCount = categories.length + antiTracking.unknownTrackerCount + adBlock.unknownTrackerCount;

// Process categories into graphData
if (categoryCount === 0) {
@@ -36,7 +36,7 @@ class CreateAccount extends React.Component {
legalConsentChecked: false,
legalConsentNotCheckedError: false,
password: '',
promotionsChecked: true,
promotionsChecked: false,
loading: false,
passwordInvalidError: false,
passwordLengthError: false,
@@ -36,14 +36,20 @@ const initialState = Immutable({
},
tab_id: 0,
antiTracking: {
totalUnsafeCount: 0,
totalUnknownCount: 0,
totalUnsafeCount: 0,
trackerCount: 0,
unknownTrackerCount: 0,
unknownTrackers: [],
whitelistedUrls: {},
},
adBlock: {
totalCount: 0,
totalUnknownCount: 0,
totalUnsafeCount: 0,
trackerCount: 0,
unknownTrackerCount: 0,
unknownTrackers: [],
whitelistedUrls: {},
},
});

@@ -63,7 +69,7 @@ describe('app/panel/reducers/summary.js', () => {
test('reducer correctly handles UPDATE_CLIQZ_MODULE_DATA', () => {
const data = {
adBlock: {
totalCount: 3,
totalUnsafeCount: 3,
trackerCount: 2,
},
antiTracking: {
@@ -76,7 +82,7 @@ describe('app/panel/reducers/summary.js', () => {
const initState = Immutable({
tab_id: 0,
adBlock: {
totalCount: 1,
totalUnsafeCount: 1,
trackerCount: 1,
},
antiTracking: {
@@ -37,14 +37,20 @@ const initialState = {
},
tab_id: 0,
antiTracking: {
totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking
totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB
totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking
trackerCount: 0, // The amount of trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points)
unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking
unknownTrackers: [], // List of anti-tracking trackers not matched to Ghostery bug IDs
whitelistedUrls: {},
},
adBlock: {
totalCount: 0, // The amount of ads blocked by Ad Blocking
totalUnknownCount: 0, // The amount of data points blocked by Ad Blocking for Trackers not in the Ghostery DB
totalUnsafeCount: 0, // The amount of data points blocked by Ad Blocking
trackerCount: 0, // The amount of trackers blocked by Ad Blocking (which are each associated with 1 or more ads)
unknownTrackerCount: 0, // The amount of unknown trackers blocked by Ad Blocking
unknownTrackers: [], // List of ad-block trackers not matched to Ghostery bug IDs
whitelistedUrls: {},
}
};
/**
@@ -100,17 +100,6 @@
"minimum_opera_version": "45",
"web_accessible_resources": [
"app/images/*",
"dist/css/rewards_styles.css",
"cliqz/dropdown/dropdown.html",
"cliqz/overlay/styles/overlay.css",
"cliqz/freshtab/images/ghostery-tab-search-icon.svg"
],
"commands": {
"toggle-quicksearch": {
"suggested_key": {
"default": "Ctrl+Shift+Space"
},
"description": "Toggle in-page quick search"
}
}
"dist/css/rewards_styles.css"
]
}
@@ -24,7 +24,7 @@
"docs": "jsdoc -c jsdoc.json -d docs -r",
"leet": "node ./tools/leet/leet-en.js",
"leet.reset": "node ./tools/leet/leet-reset.js",
"postinstall": "vendor-copy && bash ./tools/merge-locales.sh"
"postinstall": "vendor-copy"
},
"vendorCopy": [
{
@@ -42,24 +42,24 @@
},
"homepage": "https://github.com/ghostery/ghostery-extension#readme",
"dependencies": {
"@cliqz/adblocker-circumvention": "^1.0.1",
"@cliqz/adblocker-circumvention": "^1.0.2",
"@cliqz/url-parser": "^1.0.3",
"base64-js": "^1.3.1",
"browser-core": "https://github.com/cliqz-oss/browser-core/releases/download/v7.39.1-search/browser-core-7.39.1.tgz",
"browser-core": "https://github.com/cliqz-oss/browser-core/releases/download/v7.39.3/browser-core-7.39.3.tgz",
"classnames": "^2.2.5",
"d3": "^5.11.0",
"foundation-sites": "^6.4.4-rc1",
"history": "^4.9.0",
"json-api-normalizer": "^0.4.16",
"moment": "^2.19.1",
"prop-types": "^15.6.2",
"query-string": "^6.8.2",
"query-string": "^6.8.3",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-markdown": "^4.0.8",
"react-markdown": "^4.2.2",
"react-redux": "^7.1.1",
"react-router-dom": "^5.0.1",
"react-shadow": "^17.1.3",
"react-shadow-dom-retarget-events": "^1.0.10",
"react-svg": "^10.0.20",
"redux": "^4.0.4",
"redux-object": "^0.5.10",
@@ -80,11 +80,11 @@
"babel-eslint": "^10.0.3",
"babel-loader": "^8.0.6",
"clean-webpack-plugin": "^3.0.0",
"cross-env": "^5.1.3",
"cross-env": "^5.2.1",
"css-loader": "^3.2.0",
"enzyme": "^3.10.0",
"enzyme-adapter-react-16": "^1.14.0",
"eslint": "6.2.2",
"eslint": "^6.3.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-loader": "^3.0.0",
"eslint-plugin-import": "^2.18.2",
@@ -104,14 +104,14 @@
"redux-mock-store": "^1.5.1",
"sass-loader": "^8.0.0",
"seamless-immutable": "^7.1.3",
"sinon": "^7.4.1",
"sinon": "^7.4.2",
"sinon-chrome": "^3.0.1",
"svg-url-loader": "^3.0.0",
"svg-url-loader": "^3.0.2",
"underscore-template-loader": "^1.0.0",
"url-loader": "^2.1.0",
"vendor-copy": "^2.0.0",
"webpack": "^4.39.3",
"webpack-cli": "^3.3.7",
"webpack-cli": "^3.3.8",
"webpack-shell-plugin": "^0.5.0"
}
}
@@ -1209,13 +1209,13 @@ function setupABTest() {
prefs.set('attrackBloomFilter', false);
}
// overlay search AB test
if (abtest.hasTest('overlay_search')) {
cliqz.enableModule('search');
cliqz.enableModule('overlay');
} else {
cliqz.disableModule('search');
cliqz.disableModule('overlay');
}
// if (abtest.hasTest('overlay_search')) {
// cliqz.enableModule('search');
// cliqz.enableModule('overlay');
// } else {
// cliqz.disableModule('search');
// cliqz.disableModule('overlay');
// }
}

/**
@@ -1767,7 +1767,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);
conf.enable_offers = !offers.isDisabled;
}
}
});
ProTip! Use n and p to navigate between commits in a pull request.