From e72e90facf61fe24e21d6e65e2405a19da594da2 Mon Sep 17 00:00:00 2001 From: "javi%netscape.com" Date: Wed, 7 Feb 2001 19:00:52 +0000 Subject: [PATCH] Create an interface nsINSSComponent that we can use to look up service for nsNSSComponent from the NSS callbacks. git-svn-id: svn://10.0.0.236/trunk@86557 18797224-902f-48f8-a5cc-f745e15eee43 --- .../manager/ssl/src/nsNSSCallbacks.cpp | 17 ++------- .../manager/ssl/src/nsNSSComponent.cpp | 9 +++-- .../security/manager/ssl/src/nsNSSComponent.h | 38 +++++++++++++++---- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp b/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp index 26c4d0471fa..b4e7c3d7cca 100644 --- a/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp @@ -89,18 +89,14 @@ char* PK11PasswordPrompt(PK11SlotInfo* slot, PRBool retry, void* arg) { } nsString promptString; - nsNSSComponent *nssComponent; + nsCOMPtr nssComponent(do_GetService(kNSSComponentCID, &rv)); - rv = nsServiceManager::GetService(kNSSComponentCID, - NS_GET_IID(nsISecurityManagerComponent), - (nsISupports**)&nssComponent); if (NS_FAILED(rv)) return nsnull; nssComponent->GetPIPNSSBundleString(NS_LITERAL_STRING("CertPassPrompt"), promptString); - nsServiceManager::ReleaseService(kNSSComponentCID, - (nsISecurityManagerComponent*)nssComponent); + PRUnichar *uniString = promptString.ToNewUnicode(); rv = proxyPrompt->PromptPassword(nsnull, uniString, NS_LITERAL_STRING(" "), @@ -142,20 +138,13 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) { nsXPIDLString shortDesc; const PRUnichar* formatStrings[1] = { ToNewUnicode(nsLiteralCString(caName)) }; - nsNSSComponent *nssComponent; - - rv = nsServiceManager::GetService(kNSSComponentCID, - NS_GET_IID(nsISecurityManagerComponent), - (nsISupports**)&nssComponent); + nsCOMPtr nssComponent(do_GetService(kNSSComponentCID, &rv)); if (NS_FAILED(rv)) return; rv = nssComponent->PIPBundleFormatStringFromName(NS_LITERAL_STRING("SignedBy"), formatStrings, 1, getter_Copies(shortDesc)); - nsServiceManager::ReleaseService(kNSSComponentCID, - (nsISecurityManagerComponent*)nssComponent); - nsMemory::Free(NS_CONST_CAST(PRUnichar*, formatStrings[0])); diff --git a/mozilla/security/manager/ssl/src/nsNSSComponent.cpp b/mozilla/security/manager/ssl/src/nsNSSComponent.cpp index 6f06655be05..1bb6ff4d821 100644 --- a/mozilla/security/manager/ssl/src/nsNSSComponent.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSComponent.cpp @@ -95,7 +95,7 @@ nsNSSComponent::~nsNSSComponent() #endif /*DEBUG*/ #endif /*XP_MAC*/ -nsresult +NS_IMETHODIMP nsNSSComponent::PIPBundleFormatStringFromName(const PRUnichar *name, const PRUnichar **params, PRUint32 numParams, @@ -110,7 +110,7 @@ nsNSSComponent::PIPBundleFormatStringFromName(const PRUnichar *name, return rv; } -nsresult +NS_IMETHODIMP nsNSSComponent::GetPIPNSSBundleString(const PRUnichar *name, nsString &outString) { @@ -274,11 +274,12 @@ nsNSSComponent::Init() } /* nsISupports Implementation for the class */ -NS_IMPL_THREADSAFE_ISUPPORTS4(nsNSSComponent, +NS_IMPL_THREADSAFE_ISUPPORTS5(nsNSSComponent, nsISecurityManagerComponent, nsIContentHandler, nsISignatureVerifier, - nsIEntropyCollector); + nsIEntropyCollector, + nsINSSComponent); NS_IMETHODIMP diff --git a/mozilla/security/manager/ssl/src/nsNSSComponent.h b/mozilla/security/manager/ssl/src/nsNSSComponent.h index e0fb7216106..8316d6b6265 100644 --- a/mozilla/security/manager/ssl/src/nsNSSComponent.h +++ b/mozilla/security/manager/ssl/src/nsNSSComponent.h @@ -39,11 +39,35 @@ #define NS_NSSCOMPONENT_CID \ {0xa277189c, 0x1dd1, 0x11b2, {0xa8, 0xc9, 0xe4, 0xe8, 0xbf, 0xb1, 0x33, 0x8e}} +//Define an interface that we can use to look up from the +//callbacks passed to NSS. + +#define NS_INSSCOMPONENT_IID_STR "d4b49dd6-1dd1-11b2-b6fe-b14cfaf69cbd" +#define NS_INSSCOMPONENT_IID \ + {0xd4b49dd6, 0x1dd1, 0x11b2, \ + { 0xb6, 0xfe, 0xb1, 0x4c, 0xfa, 0xf6, 0x9c, 0xbd }} + +class NS_NO_VTABLE nsINSSComponent : public nsISupports { + public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_INSSCOMPONENT_IID) + + NS_IMETHOD GetPIPNSSBundleString(const PRUnichar *name, + nsString &outString) = 0; + NS_IMETHOD PIPBundleFormatStringFromName(const PRUnichar *name, + const PRUnichar **params, + PRUint32 numParams, + PRUnichar **outString) = 0; + +}; + + + // Implementation of the PSM component interface. class nsNSSComponent : public nsISecurityManagerComponent, public nsIContentHandler, public nsISignatureVerifier, - public nsIEntropyCollector + public nsIEntropyCollector, + public nsINSSComponent { public: NS_DEFINE_STATIC_CID_ACCESSOR( NS_NSSCOMPONENT_CID ); @@ -59,12 +83,12 @@ public: NS_METHOD Init(); - nsresult GetPIPNSSBundleString(const PRUnichar *name, - nsString &outString); - nsresult PIPBundleFormatStringFromName(const PRUnichar *name, - const PRUnichar **params, - PRUint32 numParams, - PRUnichar **outString); + NS_IMETHOD GetPIPNSSBundleString(const PRUnichar *name, + nsString &outString); + NS_IMETHOD PIPBundleFormatStringFromName(const PRUnichar *name, + const PRUnichar **params, + PRUint32 numParams, + PRUnichar **outString); nsresult InitializeNSS(); private: