Skip to content

Commit

Permalink
fix: Improved bugfix for CSP Restriction for TrustedTypePolicy Creati…
Browse files Browse the repository at this point in the history
…on in Loading Indicator (#1000)
  • Loading branch information
agungjk authored Jun 13, 2024
1 parent 5245126 commit c5dc1a6
Showing 1 changed file with 18 additions and 25 deletions.
43 changes: 18 additions & 25 deletions core/parcel-runtime/src/utils/loading-indicator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,29 @@

const LOADING_ID = "__plasmo-loading__"

// Function to update the CSP to allow the new trusted type policy
function updateCSP() {
const cspMetaTag = document.querySelector(
'meta[http-equiv="Content-Security-Policy"]'
)

if (!cspMetaTag) {
return
}

const currentCSP = cspMetaTag.getAttribute("content")
const newPolicy = ` trusted-html-${LOADING_ID}`

if (currentCSP.includes(newPolicy)) {
return
}

const updatedCSP = currentCSP + newPolicy
cspMetaTag.setAttribute("content", updatedCSP)
}

function createTrustedPolicy() {
const trustedTypes = globalThis.window?.trustedTypes
if (typeof trustedTypes === "undefined") {
return undefined
}
updateCSP()
return trustedTypes.createPolicy(`trusted-html-${LOADING_ID}`, {
createHTML: (str) => str
})

const trustedTypeLists = (
document.querySelector('meta[name="trusted-types"]') as HTMLMetaElement
)?.content?.split(" ")

const trustedKey = trustedTypeLists
? trustedTypeLists[trustedTypeLists?.length - 1]
: undefined

// Function to update the CSP to allow the new trusted type policy or use existing policy
const trustedPolicy =
typeof trustedTypes !== "undefined"
? trustedTypes.createPolicy(trustedKey || `trusted-html-${LOADING_ID}`, {
createHTML: (str) => str
})
: undefined

return trustedPolicy
}

const trustedPolicy = createTrustedPolicy()
Expand Down

0 comments on commit c5dc1a6

Please sign in to comment.