Skip to content

Commit 866c1c2

Browse files
authored
fix cosmetic filtering (#3121)
fix cosmetic filtering
2 parents f38e75f + 12b0a02 commit 866c1c2

File tree

5 files changed

+30
-17
lines changed

5 files changed

+30
-17
lines changed

components/brave_extension/extension/brave_extension/background/api/cosmeticFilterAPI.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
3+
* You can obtain one at http://mozilla.org/MPL/2.0/. */
4+
15
export const addSiteCosmeticFilter = async (origin: string, cssfilter: string) => {
26
chrome.storage.local.get('cosmeticFilterList', (storeData = {}) => {
37
let storeList = Object.assign({}, storeData.cosmeticFilterList)
@@ -18,7 +22,7 @@ export const removeSiteFilter = (origin: string) => {
1822
})
1923
}
2024

21-
export const applySiteFilters = (hostname: string) => {
25+
export const applySiteFilters = (tabId: number, hostname: string) => {
2226
chrome.storage.local.get('cosmeticFilterList', (storeData = {}) => {
2327
if (!storeData.cosmeticFilterList) {
2428
if (process.env.NODE_ENV === 'shields_development') {
@@ -31,8 +35,9 @@ export const applySiteFilters = (hostname: string) => {
3135
if (process.env.NODE_ENV === 'shields_development') {
3236
console.log('applying rule', rule)
3337
}
34-
chrome.tabs.insertCSS({
35-
code: `${rule} {display: none;}`,
38+
chrome.tabs.insertCSS(tabId, { // https://github.com/brave/brave-browser/wiki/Cosmetic-Filtering
39+
code: `${rule} {display: none !important;}`,
40+
cssOrigin: 'user',
3641
runAt: 'document_start'
3742
})
3843
})

components/brave_extension/extension/brave_extension/background/events/cosmeticFilterEvents.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ export function onSelectorReturned (response: any) {
8686

8787
if (rule.selector && rule.selector.length > 0) {
8888
chrome.tabs.insertCSS({
89-
code: `${rule.selector} {display: none;}`
89+
code: `${rule.selector} {display: none !important;}`,
90+
cssOrigin: 'user'
9091
})
9192
cosmeticFilterActions.siteCosmeticFilterAdded(rule.host, rule.selector)
9293
}

components/brave_extension/extension/brave_extension/background/reducers/cosmeticFilterReducer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
// State helpers
2828
import * as shieldsPanelState from '../../state/shieldsPanelState'
2929
import * as noScriptState from '../../state/noScriptState'
30-
import { getOrigin } from '../../helpers/urlUtils'
30+
import { getOrigin, getHostname } from '../../helpers/urlUtils'
3131
import { areObjectsEqual } from '../../helpers/objectUtils'
3232

3333
const focusedWindowChanged = (state: State, windowId: number): State => {
@@ -70,7 +70,7 @@ export default function cosmeticFilterReducer (
7070
state = shieldsPanelState.resetBlockingResources(state, action.tabId)
7171
state = noScriptState.resetNoScriptInfo(state, action.tabId, getOrigin(action.url))
7272
}
73-
applySiteFilters(tabData.hostname)
73+
applySiteFilters(action.tabId, getHostname(action.url))
7474
break
7575
}
7676
case windowTypes.WINDOW_REMOVED: {

components/test/brave_extension/background/api/cosmeticFilterAPI_test.ts

+16-10
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,11 @@ describe('cosmeticFilterTestSuite', () => {
206206
'brave.com': [filter]
207207
}
208208
})
209-
cosmeticFilterAPI.applySiteFilters('brave.com')
210-
expect(insertCSSStub.getCall(0).args[0]).toEqual({
211-
code: `${ filter } {display: none;}`,
209+
cosmeticFilterAPI.applySiteFilters(1, 'brave.com')
210+
expect(insertCSSStub.getCall(0).args[0]).toEqual(1)
211+
expect(insertCSSStub.getCall(0).args[1]).toEqual({
212+
code: `${filter} {display: none !important;}`,
213+
cssOrigin: 'user',
212214
runAt: 'document_start'
213215
})
214216
})
@@ -218,13 +220,17 @@ describe('cosmeticFilterTestSuite', () => {
218220
'brave.com': [filter, filter2]
219221
}
220222
})
221-
cosmeticFilterAPI.applySiteFilters('brave.com')
222-
expect(insertCSSStub.getCall(0).args[0]).toEqual({
223-
code: `${ filter } {display: none;}`,
223+
cosmeticFilterAPI.applySiteFilters(1, 'brave.com')
224+
expect(insertCSSStub.getCall(0).args[0]).toEqual(1)
225+
expect(insertCSSStub.getCall(0).args[1]).toEqual({
226+
code: `${filter } {display: none !important;}`,
227+
cssOrigin: 'user',
224228
runAt: 'document_start'
225229
})
226-
expect(insertCSSStub.getCall(1).args[0]).toEqual({
227-
code: `${ filter2 } {display: none;}`,
230+
expect(insertCSSStub.getCall(1).args[0]).toEqual(1)
231+
expect(insertCSSStub.getCall(1).args[1]).toEqual({
232+
code: `${ filter2 } {display: none !important;}`,
233+
cssOrigin: 'user',
228234
runAt: 'document_start'
229235
})
230236

@@ -234,7 +240,7 @@ describe('cosmeticFilterTestSuite', () => {
234240
getStorageStub.yields({
235241
cosmeticFilterList: {}
236242
})
237-
cosmeticFilterAPI.applySiteFilters('brave.com')
243+
cosmeticFilterAPI.applySiteFilters(1, 'brave.com')
238244
expect(insertCSSStub.called).toBe(false)
239245
})
240246
it('doesn\'t apply filters if storage is explicitly undefined', () => {
@@ -243,7 +249,7 @@ describe('cosmeticFilterTestSuite', () => {
243249
'brave.com': undefined
244250
}
245251
})
246-
cosmeticFilterAPI.applySiteFilters('brave.com')
252+
cosmeticFilterAPI.applySiteFilters(1, 'brave.com')
247253
expect(insertCSSStub.called).toBe(false)
248254
})
249255
})

components/test/brave_extension/background/events/cosmeticFilterEvents_test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ describe('cosmeticFilterEvents events', () => {
148148
selectorToReturn = '#test_selector'
149149
cosmeticFilterEvents.onSelectorReturned(selectorToReturn)
150150
let returnObj = {
151-
'code': '#test_selector {display: none;}'
151+
'code': '#test_selector {display: none !important;}',
152+
'cssOrigin': 'user'
152153
}
153154
expect(insertCssSpy).toBeCalledWith(returnObj)
154155
})

0 commit comments

Comments
 (0)