Bug 1493629 - Better management of CSP EventListener for workers, r=ckerschb

This commit is contained in:
Andrea Marchesini 2018-10-05 07:41:12 +02:00
parent 40ca28382a
commit 8bf0b5f63b

View File

@ -1471,9 +1471,9 @@ WorkerPrivate::SetCSP(nsIContentSecurityPolicy* aCSP)
return; return;
} }
aCSP->EnsureEventTarget(mMainThreadEventTarget); aCSP->EnsureEventTarget(mMainThreadEventTarget);
aCSP->SetEventListener(mCSPEventListener);
mLoadInfo.mCSP = aCSP; mLoadInfo.mCSP = aCSP;
EnsureCSPEventListener();
} }
nsresult nsresult
@ -1493,7 +1493,6 @@ WorkerPrivate::SetCSPFromHeaderValues(const nsACString& aCSPHeaderValue,
} }
csp->EnsureEventTarget(mMainThreadEventTarget); csp->EnsureEventTarget(mMainThreadEventTarget);
csp->SetEventListener(mCSPEventListener);
// If there's a CSP header, apply it. // If there's a CSP header, apply it.
if (!cspHeaderValue.IsEmpty()) { if (!cspHeaderValue.IsEmpty()) {
@ -1515,6 +1514,7 @@ WorkerPrivate::SetCSPFromHeaderValues(const nsACString& aCSPHeaderValue,
mLoadInfo.mCSP = csp; mLoadInfo.mCSP = csp;
mLoadInfo.mEvalAllowed = evalAllowed; mLoadInfo.mEvalAllowed = evalAllowed;
mLoadInfo.mReportCSPViolations = reportEvalViolations; mLoadInfo.mReportCSPViolations = reportEvalViolations;
EnsureCSPEventListener();
return NS_OK; return NS_OK;
} }
@ -3445,10 +3445,12 @@ WorkerPrivate::EnsureClientSource()
bool bool
WorkerPrivate::EnsureCSPEventListener() WorkerPrivate::EnsureCSPEventListener()
{ {
if (!mCSPEventListener) {
mCSPEventListener = WorkerCSPEventListener::Create(this); mCSPEventListener = WorkerCSPEventListener::Create(this);
if (NS_WARN_IF(!mCSPEventListener)) { if (NS_WARN_IF(!mCSPEventListener)) {
return false; return false;
} }
}
if (mLoadInfo.mCSP) { if (mLoadInfo.mCSP) {
mLoadInfo.mCSP->SetEventListener(mCSPEventListener); mLoadInfo.mCSP->SetEventListener(mCSPEventListener);