Skip to content

Commit d96c720

Browse files
Add global site object to load
1 parent 5cdb9c7 commit d96c720

File tree

8 files changed

+33
-13
lines changed

8 files changed

+33
-13
lines changed

inject/android.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @category Content Scope Scripts Integrations
44
*/
55
import { load, init, update } from '../src/content-scope-features.js'
6-
import { processConfig, isGloballyDisabled } from './../src/utils'
6+
import { processConfig, isGloballyDisabled, computeLimitedSiteObject } from './../src/utils'
77

88
const allowedMessages = [
99
'getClickToLoadState',
@@ -22,7 +22,8 @@ function initCode () {
2222
}
2323

2424
load({
25-
platform: processedConfig.platform
25+
platform: processedConfig.platform,
26+
site: computeLimitedSiteObject()
2627
})
2728

2829
const messageSecret = processedConfig.messageSecret

inject/apple.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @category Content Scope Scripts Integrations
44
*/
55
import { load, init } from '../src/content-scope-features.js'
6-
import { processConfig, isGloballyDisabled } from './../src/utils'
6+
import { processConfig, isGloballyDisabled, computeLimitedSiteObject } from './../src/utils'
77

88
function initCode () {
99
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f
@@ -13,7 +13,8 @@ function initCode () {
1313
}
1414

1515
load({
16-
platform: processedConfig.platform
16+
platform: processedConfig.platform,
17+
site: computeLimitedSiteObject()
1718
})
1819

1920
init(processedConfig)

inject/chrome-mv3.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
*/
55
import { load, init, update } from '../src/content-scope-features.js'
66
import { isTrackerOrigin } from '../src/trackers'
7+
import { computeLimitedSiteObject } from '../src/utils.js'
78

89
const secret = (crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32).toString().replace('0.', '')
910

1011
load({
1112
platform: {
1213
name: 'extension'
1314
},
15+
site: computeLimitedSiteObject(),
1416
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f
1517
documentOriginIsTracker: isTrackerOrigin($TRACKER_LOOKUP$),
1618
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f

inject/chrome.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* @category Content Scope Scripts Integrations
44
*/
55
import { isTrackerOrigin } from '../src/trackers'
6+
import { computeLimitedSiteObject } from '../src/utils'
67

78
/**
89
* Inject all the overwrites into the page.
@@ -46,12 +47,14 @@ function init () {
4647
const randomPassword = '_p' + randomString()
4748
const reusableMethodName = '_rm' + randomString()
4849
const reusableSecret = '_r' + randomString()
50+
const siteObject = computeLimitedSiteObject()
4951
const initialScript = `
5052
/* global contentScopeFeatures */
5153
contentScopeFeatures.load({
5254
platform: {
5355
name: 'extension'
5456
},
57+
site: ${JSON.stringify(siteObject)},
5558
documentOriginIsTracker: ${documentOriginIsTracker},
5659
bundledConfig: ${JSON.stringify(bundledConfig)}
5760
})

inject/mozilla.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
import { load, init, update } from '../src/content-scope-features.js'
66
import { isTrackerOrigin } from '../src/trackers'
7+
import { computeLimitedSiteObject } from '../src/utils.js'
78

89
const allowedMessages = [
910
'getClickToLoadState',
@@ -25,6 +26,7 @@ function initCode () {
2526
platform: {
2627
name: 'extension'
2728
},
29+
site: computeLimitedSiteObject(),
2830
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f
2931
documentOriginIsTracker: isTrackerOrigin($TRACKER_LOOKUP$),
3032
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f

inject/windows.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @category Content Scope Scripts Integrations
44
*/
55
import { load, init } from '../src/content-scope-features.js'
6-
import { processConfig, isGloballyDisabled, windowsSpecificFeatures } from './../src/utils'
6+
import { processConfig, isGloballyDisabled, windowsSpecificFeatures, computeLimitedSiteObject } from './../src/utils'
77

88
function initCode () {
99
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f
@@ -13,7 +13,8 @@ function initCode () {
1313
}
1414

1515
load({
16-
platform: processedConfig.platform
16+
platform: processedConfig.platform,
17+
site: computeLimitedSiteObject()
1718
})
1819

1920
init(processedConfig)

src/content-scope-features.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const alwaysInitFeatures = new Set(['cookie'])
2323

2424
/**
2525
* @typedef {object} LoadArgs
26+
* @property {object} site
2627
* @property {object} platform
2728
* @property {string} platform.name
2829
* @property {string} [platform.version]

src/utils.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -481,30 +481,39 @@ export function isUnprotectedDomain (topLevelHostname, featureList) {
481481
* @property {string} sessionKey
482482
*/
483483

484+
/**
485+
* Used to inialize extension code in the load phase
486+
*/
487+
export function computeLimitedSiteObject () {
488+
const topLevelHostname = getTabHostname()
489+
return {
490+
domain: topLevelHostname
491+
}
492+
}
493+
484494
/**
485495
* @param {{ features: Record<string, { state: string; settings: any; exceptions: string[] }>; unprotectedTemporary: string; }} data
486496
* @param {string[]} userList
487497
* @param {UserPreferences} preferences
488498
* @param {string[]} platformSpecificFeatures
489499
*/
490500
export function processConfig (data, userList, preferences, platformSpecificFeatures = []) {
491-
const topLevelHostname = getTabHostname()
492-
const allowlisted = userList.filter(domain => domain === topLevelHostname).length > 0
501+
const site = computeLimitedSiteObject()
502+
const allowlisted = userList.filter(domain => domain === site.domain).length > 0
493503
const remoteFeatureNames = Object.keys(data.features)
494504
const platformSpecificFeaturesNotInRemoteConfig = platformSpecificFeatures.filter((featureName) => !remoteFeatureNames.includes(featureName))
495505
const enabledFeatures = remoteFeatureNames.filter((featureName) => {
496506
const feature = data.features[featureName]
497-
return feature.state === 'enabled' && !isUnprotectedDomain(topLevelHostname, feature.exceptions)
507+
return feature.state === 'enabled' && !isUnprotectedDomain(site.domain, feature.exceptions)
498508
}).concat(platformSpecificFeaturesNotInRemoteConfig) // only disable platform specific features if it's explicitly disabled in remote config
499-
const isBroken = isUnprotectedDomain(topLevelHostname, data.unprotectedTemporary)
509+
const isBroken = isUnprotectedDomain(site.domain, data.unprotectedTemporary)
500510
/** @type {Record<string, any>} */
501511
const output = { ...preferences }
502-
output.site = {
503-
domain: topLevelHostname,
512+
output.site = Object.assign(site, {
504513
isBroken,
505514
allowlisted,
506515
enabledFeatures
507-
}
516+
})
508517
// TODO
509518
output.cookie = {}
510519

0 commit comments

Comments
 (0)