Bug 666516. Stop casting things gotten by contract to concrete classes. r=kaie

This commit is contained in:
Boris Zbarsky 2011-08-23 17:03:02 -04:00
parent 20a7be87b7
commit c98f58f505
2 changed files with 17 additions and 9 deletions

View File

@ -65,6 +65,7 @@ extern PRLogModuleInfo* gPIPNSSLog;
NSSCleanupAutoPtrClass(CERTCertificate, CERT_DestroyCertificate)
static NS_DEFINE_CID(kNSSComponentCID, NS_NSSCOMPONENT_CID);
static NS_DEFINE_CID(kCertOverrideCID, NS_CERTOVERRIDE_CID);
// treeArrayElStr
//
@ -198,6 +199,11 @@ nsCertTree::nsCertTree() : mTreeArray(NULL)
mCompareCache.ops = nsnull;
mNSSComponent = do_GetService(kNSSComponentCID);
mOverrideService = do_GetService("@mozilla.org/security/certoverride;1");
// Might be a different service if someone is overriding the contract
nsCOMPtr<nsICertOverrideService> origCertOverride =
do_GetService(kCertOverrideCID);
mOriginalOverrideService =
static_cast<nsCertOverrideService*>(origCertOverride.get());
mCellText = nsnull;
}
@ -485,9 +491,7 @@ nsCertTree::GetCertsByTypeFromCertList(CERTCertList *aCertList,
if (!aCertList)
return NS_ERROR_FAILURE;
nsCertOverrideService *cos =
reinterpret_cast<nsCertOverrideService*>(mOverrideService.get());
if (!cos)
if (!mOriginalOverrideService)
return NS_ERROR_FAILURE;
nsTHashtable<nsCStringHashKey> allHostPortOverrideKeys;
@ -495,9 +499,10 @@ nsCertTree::GetCertsByTypeFromCertList(CERTCertList *aCertList,
return NS_ERROR_OUT_OF_MEMORY;
if (aWantedType == nsIX509Cert::SERVER_CERT) {
cos->EnumerateCertOverrides(nsnull,
CollectAllHostPortOverridesCallback,
&allHostPortOverrideKeys);
mOriginalOverrideService->
EnumerateCertOverrides(nsnull,
CollectAllHostPortOverridesCallback,
&allHostPortOverrideKeys);
}
CERTCertListNode *node;
@ -637,7 +642,7 @@ nsCertTree::GetCertsByTypeFromCertList(CERTCertList *aCertList,
++count;
++InsertPosition;
}
if (addOverrides && cos) {
if (addOverrides) {
nsCertAndArrayAndPositionAndCounterAndTracker cap;
cap.certai = certai;
cap.array = &mDispInfo;
@ -645,7 +650,8 @@ nsCertTree::GetCertsByTypeFromCertList(CERTCertList *aCertList,
cap.counter = 0;
cap.tracker = &allHostPortOverrideKeys;
cos->EnumerateCertOverrides(pipCert, MatchingCertOverridesCallback, &cap);
mOriginalOverrideService->
EnumerateCertOverrides(pipCert, MatchingCertOverridesCallback, &cap);
count += cap.counter;
}
}
@ -657,7 +663,8 @@ nsCertTree::GetCertsByTypeFromCertList(CERTCertList *aCertList,
cap.position = 0;
cap.counter = 0;
cap.tracker = &allHostPortOverrideKeys;
cos->EnumerateCertOverrides(nsnull, AddRemaningHostPortOverridesCallback, &cap);
mOriginalOverrideService->
EnumerateCertOverrides(nsnull, AddRemaningHostPortOverridesCallback, &cap);
}
return NS_OK;

View File

@ -155,6 +155,7 @@ private:
PLDHashTable mCompareCache;
nsCOMPtr<nsINSSComponent> mNSSComponent;
nsCOMPtr<nsICertOverrideService> mOverrideService;
nsRefPtr<nsCertOverrideService> mOriginalOverrideService;
treeArrayEl *GetThreadDescAtIndex(PRInt32 _index);
already_AddRefed<nsIX509Cert>