Bug 1304645: Pass individual CSP errors as categories to web console error messages. r=baku
This commit is contained in:
@@ -1748,7 +1748,8 @@ HTMLFormElement::GetActionURL(nsIURI** aActionURL,
|
||||
EmptyString(), // aScriptSample
|
||||
0, // aLineNumber
|
||||
0, // aColumnNumber
|
||||
nsIScriptError::warningFlag, "CSP",
|
||||
nsIScriptError::warningFlag,
|
||||
NS_LITERAL_CSTRING("upgradeInsecureRequest"),
|
||||
document->InnerWindowID(),
|
||||
!!document->NodePrincipal()->OriginAttributesRef().mPrivateBrowsingId);
|
||||
}
|
||||
|
||||
@@ -196,7 +196,8 @@ ShouldIgnoreFrameOptions(nsIChannel* aChannel, nsIPrincipal* aPrincipal)
|
||||
0, // no linenumber
|
||||
0, // no columnnumber
|
||||
nsIScriptError::warningFlag,
|
||||
"CSP", innerWindowID,
|
||||
NS_LITERAL_CSTRING("IgnoringSrcBecauseOfDirective"),
|
||||
innerWindowID,
|
||||
privateWindow);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -777,6 +777,7 @@ struct ConsoleMsgQueueElem {
|
||||
uint32_t mLineNumber;
|
||||
uint32_t mColumnNumber;
|
||||
uint32_t mSeverityFlag;
|
||||
nsCString mCategory;
|
||||
};
|
||||
|
||||
void
|
||||
@@ -797,7 +798,7 @@ nsCSPContext::flushConsoleMessages()
|
||||
ConsoleMsgQueueElem &elem = mConsoleMsgQueue[i];
|
||||
CSP_LogMessage(elem.mMsg, elem.mSourceName, elem.mSourceLine,
|
||||
elem.mLineNumber, elem.mColumnNumber,
|
||||
elem.mSeverityFlag, "CSP", mInnerWindowID,
|
||||
elem.mSeverityFlag, elem.mCategory, mInnerWindowID,
|
||||
privateWindow);
|
||||
}
|
||||
mConsoleMsgQueue.Clear();
|
||||
@@ -813,6 +814,10 @@ nsCSPContext::logToConsole(const char* aName,
|
||||
uint32_t aColumnNumber,
|
||||
uint32_t aSeverityFlag)
|
||||
{
|
||||
// we are passing aName as the category so we can link to the
|
||||
// appropriate MDN docs depending on the specific error.
|
||||
nsDependentCString category(aName);
|
||||
|
||||
// let's check if we have to queue up console messages
|
||||
if (mQueueUpMessages) {
|
||||
nsAutoString msg;
|
||||
@@ -824,6 +829,7 @@ nsCSPContext::logToConsole(const char* aName,
|
||||
elem.mLineNumber = aLineNumber;
|
||||
elem.mColumnNumber = aColumnNumber;
|
||||
elem.mSeverityFlag = aSeverityFlag;
|
||||
elem.mCategory = category;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -833,9 +839,10 @@ nsCSPContext::logToConsole(const char* aName,
|
||||
privateWindow = !!doc->NodePrincipal()->OriginAttributesRef().mPrivateBrowsingId;
|
||||
}
|
||||
|
||||
|
||||
CSP_LogLocalizedStr(aName, aParams, aParamsLength, aSourceName,
|
||||
aSourceLine, aLineNumber, aColumnNumber,
|
||||
aSeverityFlag, "CSP", mInnerWindowID, privateWindow);
|
||||
aSeverityFlag, category, mInnerWindowID, privateWindow);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -129,7 +129,7 @@ CSP_LogMessage(const nsAString& aMessage,
|
||||
uint32_t aLineNumber,
|
||||
uint32_t aColumnNumber,
|
||||
uint32_t aFlags,
|
||||
const char *aCategory,
|
||||
const nsACString& aCategory,
|
||||
uint64_t aInnerWindowID,
|
||||
bool aFromPrivateWindow)
|
||||
{
|
||||
@@ -158,20 +158,25 @@ CSP_LogMessage(const nsAString& aMessage,
|
||||
cspMsg.AppendLiteral(u".");
|
||||
}
|
||||
|
||||
// Since we are leveraging csp errors as the category names which
|
||||
// we pass to devtools, we should prepend them with "CSP_" to
|
||||
// allow easy distincution in devtools code. e.g.
|
||||
// upgradeInsecureRequest -> CSP_upgradeInsecureRequest
|
||||
nsCString category("CSP_");
|
||||
category.Append(aCategory);
|
||||
|
||||
nsresult rv;
|
||||
if (aInnerWindowID > 0) {
|
||||
nsCString catStr;
|
||||
catStr.AssignASCII(aCategory);
|
||||
rv = error->InitWithWindowID(cspMsg, aSourceName,
|
||||
aSourceLine, aLineNumber,
|
||||
aColumnNumber, aFlags,
|
||||
catStr, aInnerWindowID);
|
||||
category, aInnerWindowID);
|
||||
}
|
||||
else {
|
||||
rv = error->Init(cspMsg, aSourceName,
|
||||
aSourceLine, aLineNumber,
|
||||
aColumnNumber, aFlags,
|
||||
aCategory, aFromPrivateWindow);
|
||||
category.get(), aFromPrivateWindow);
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
@@ -191,7 +196,7 @@ CSP_LogLocalizedStr(const char* aName,
|
||||
uint32_t aLineNumber,
|
||||
uint32_t aColumnNumber,
|
||||
uint32_t aFlags,
|
||||
const char* aCategory,
|
||||
const nsACString& aCategory,
|
||||
uint64_t aInnerWindowID,
|
||||
bool aFromPrivateWindow)
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@ void CSP_LogLocalizedStr(const char* aName,
|
||||
uint32_t aLineNumber,
|
||||
uint32_t aColumnNumber,
|
||||
uint32_t aFlags,
|
||||
const char* aCategory,
|
||||
const nsACString& aCategory,
|
||||
uint64_t aInnerWindowID,
|
||||
bool aFromPrivateWindow);
|
||||
|
||||
@@ -50,7 +50,7 @@ void CSP_LogMessage(const nsAString& aMessage,
|
||||
uint32_t aLineNumber,
|
||||
uint32_t aColumnNumber,
|
||||
uint32_t aFlags,
|
||||
const char* aCategory,
|
||||
const nsACString& aCategory,
|
||||
uint64_t aInnerWindowID,
|
||||
bool aFromPrivateWindow);
|
||||
|
||||
|
||||
@@ -803,7 +803,8 @@ nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
|
||||
EmptyString(), // aScriptSample
|
||||
0, // aLineNumber
|
||||
0, // aColumnNumber
|
||||
nsIScriptError::errorFlag, "CSP",
|
||||
nsIScriptError::errorFlag,
|
||||
NS_LITERAL_CSTRING("blockAllMixedContent"),
|
||||
document->InnerWindowID(),
|
||||
!!document->NodePrincipal()->OriginAttributesRef().mPrivateBrowsingId);
|
||||
*aDecision = REJECT_REQUEST;
|
||||
|
||||
@@ -1724,7 +1724,8 @@ WebSocketImpl::Init(JSContext* aCx,
|
||||
EmptyString(), // aScriptSample
|
||||
0, // aLineNumber
|
||||
0, // aColumnNumber
|
||||
nsIScriptError::warningFlag, "CSP",
|
||||
nsIScriptError::warningFlag,
|
||||
NS_LITERAL_CSTRING("upgradeInsecureRequest"),
|
||||
mInnerWindowID,
|
||||
mPrivateBrowsing);
|
||||
}
|
||||
|
||||
@@ -2930,7 +2930,8 @@ NS_ShouldSecureUpgrade(nsIURI* aURI,
|
||||
EmptyString(), // aScriptSample
|
||||
0, // aLineNumber
|
||||
0, // aColumnNumber
|
||||
nsIScriptError::warningFlag, "CSP",
|
||||
nsIScriptError::warningFlag,
|
||||
NS_LITERAL_CSTRING("upgradeInsecureRequest"),
|
||||
innerWindowId,
|
||||
!!aLoadInfo->GetOriginAttributes().mPrivateBrowsingId);
|
||||
Telemetry::AccumulateCategorical(Telemetry::LABELS_HTTP_SCHEME_UPGRADE_TYPE::CSP);
|
||||
|
||||
Reference in New Issue
Block a user