Improve function naming and documentation. Bug 327071, r+sr=jst

git-svn-id: svn://10.0.0.236/trunk@189915 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bzbarsky%mit.edu
2006-02-14 02:04:20 +00:00
parent a77b065d18
commit c3ad7ac1fe

View File

@@ -67,25 +67,31 @@ static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CI
//
//////////////////////////////////////////////////////////////
// If aMaybeCertPrincipal is a cert principal and aNewPrincipal is not the same
// as aMaybeCertPrincipal, downgrade aMaybeCertPrincipal to a codebase
// principal. Return the downgraded principal, or aMaybeCertPrincipal if no
// downgrade was needed.
static already_AddRefed<nsIPrincipal>
IntersectPrincipalCerts(nsIPrincipal *aOld, nsIPrincipal *aNew)
MaybeDowngradeToCodebase(nsIPrincipal *aMaybeCertPrincipal,
nsIPrincipal *aNewPrincipal)
{
NS_PRECONDITION(aOld, "Null old principal!");
NS_PRECONDITION(aNew, "Null new principal!");
NS_PRECONDITION(aMaybeCertPrincipal, "Null old principal!");
NS_PRECONDITION(aNewPrincipal, "Null new principal!");
nsIPrincipal *principal = aOld;
nsIPrincipal *principal = aMaybeCertPrincipal;
PRBool hasCert;
aOld->GetHasCertificate(&hasCert);
aMaybeCertPrincipal->GetHasCertificate(&hasCert);
if (hasCert) {
PRBool equal;
aOld->Equals(aNew, &equal);
aMaybeCertPrincipal->Equals(aNewPrincipal, &equal);
if (!equal) {
nsCOMPtr<nsIURI> uri, domain;
aOld->GetURI(getter_AddRefs(uri));
aOld->GetDomain(getter_AddRefs(domain));
aMaybeCertPrincipal->GetURI(getter_AddRefs(uri));
aMaybeCertPrincipal->GetDomain(getter_AddRefs(domain));
nsContentUtils::GetSecurityManager()->GetCodebasePrincipal(uri, &principal);
nsContentUtils::GetSecurityManager()->GetCodebasePrincipal(uri,
&principal);
if (principal && domain) {
principal->SetDomain(domain);
}
@@ -979,7 +985,10 @@ nsScriptLoader::OnStreamComplete(nsIStreamLoader* aLoader,
return NS_OK;
}
//-- Merge the principal of the script file with that of the document
// -- Merge the principal of the script file with that of the document; if
// the script has a non-cert principal, the document's principal should be
// downgraded.
// XXXbz except usually the channel owner will be null! Then what?
if (channel) {
nsCOMPtr<nsISupports> owner;
channel->GetOwner(getter_AddRefs(owner));
@@ -989,7 +998,7 @@ nsScriptLoader::OnStreamComplete(nsIStreamLoader* aLoader,
nsIPrincipal *docPrincipal = mDocument->GetNodePrincipal();
if (docPrincipal) {
nsCOMPtr<nsIPrincipal> newPrincipal =
IntersectPrincipalCerts(docPrincipal, principal);
MaybeDowngradeToCodebase(docPrincipal, principal);
mDocument->SetPrincipal(newPrincipal);
} else {