mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-18 06:45:33 +00:00
Backout bug 566478 due to test orange a=orangehurts
This commit is contained in:
parent
74badfafd4
commit
e1dcc97a16
@ -143,12 +143,6 @@ HttpChannelParentListener::GetInterface(const nsIID& aIID, void **result)
|
||||
return mActiveChannel->mTabParent->QueryInterface(aIID, result);
|
||||
}
|
||||
|
||||
if (aIID.Equals(NS_GET_IID(nsISecureBrowserUI))) {
|
||||
if (!mActiveChannel && !mActiveChannel->mTabParent)
|
||||
return NS_NOINTERFACE;
|
||||
return mActiveChannel->mTabParent->QueryInterface(aIID, result);
|
||||
}
|
||||
|
||||
if (aIID.Equals(NS_GET_IID(nsIProgressEventSink))) {
|
||||
if (!mActiveChannel)
|
||||
return NS_NOINTERFACE;
|
||||
|
@ -102,7 +102,6 @@ CPPSRCS = \
|
||||
nsIdentityChecking.cpp \
|
||||
nsDataSignatureVerifier.cpp \
|
||||
nsRandomGenerator.cpp \
|
||||
NSSErrorsService.cpp \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_XUL
|
||||
|
@ -1,189 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Personal Security Manager.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* the Mozilla Foundation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Hubbie Shaw
|
||||
* Doug Turner <dougt@netscape.com>
|
||||
* Mitch Stoltz <mstoltz@netscape.com>
|
||||
* Brian Ryner <bryner@brianryner.com>
|
||||
* Kai Engert <kaie@netscape.com>
|
||||
* Vipul Gupta <vipul.gupta@sun.com>
|
||||
* Douglas Stebila <douglas@stebila.ca>
|
||||
* Kai Engert <kengert@redhat.com>
|
||||
* honzab.moz@firemni.cz
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "NSSErrorsService.h"
|
||||
|
||||
#include "nsNSSComponent.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "secerr.h"
|
||||
#include "sslerr.h"
|
||||
|
||||
#define PIPNSS_STRBUNDLE_URL "chrome://pipnss/locale/pipnss.properties"
|
||||
#define NSSERR_STRBUNDLE_URL "chrome://pipnss/locale/nsserrors.properties"
|
||||
|
||||
namespace mozilla {
|
||||
namespace psm {
|
||||
|
||||
NS_IMPL_ISUPPORTS1(NSSErrorsService, nsINSSErrorsService)
|
||||
|
||||
nsresult
|
||||
NSSErrorsService::Init()
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIStringBundleService> bundleService(do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv));
|
||||
if (NS_FAILED(rv) || !bundleService)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
bundleService->CreateBundle(PIPNSS_STRBUNDLE_URL,
|
||||
getter_AddRefs(mPIPNSSBundle));
|
||||
if (!mPIPNSSBundle)
|
||||
rv = NS_ERROR_FAILURE;
|
||||
|
||||
bundleService->CreateBundle(NSSERR_STRBUNDLE_URL,
|
||||
getter_AddRefs(mNSSErrorsBundle));
|
||||
if (!mNSSErrorsBundle)
|
||||
rv = NS_ERROR_FAILURE;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
#define EXPECTED_SEC_ERROR_BASE (-0x2000)
|
||||
#define EXPECTED_SSL_ERROR_BASE (-0x3000)
|
||||
|
||||
#if SEC_ERROR_BASE != EXPECTED_SEC_ERROR_BASE || SSL_ERROR_BASE != EXPECTED_SSL_ERROR_BASE
|
||||
#error "Unexpected change of error code numbers in lib NSS, please adjust the mapping code"
|
||||
/*
|
||||
* Please ensure the NSS error codes are mapped into the positive range 0x1000 to 0xf000
|
||||
* Search for NS_ERROR_MODULE_SECURITY to ensure there are no conflicts.
|
||||
* The current code also assumes that NSS library error codes are negative.
|
||||
*/
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
NSSErrorsService::IsNSSErrorCode(PRInt32 aNSPRCode, PRBool *_retval)
|
||||
{
|
||||
if (!_retval)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
*_retval = IS_SEC_ERROR(aNSPRCode) || IS_SSL_ERROR(aNSPRCode);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
NSSErrorsService::GetXPCOMFromNSSError(PRInt32 aNSPRCode, nsresult *aXPCOMErrorCode)
|
||||
{
|
||||
if (!IS_SEC_ERROR(aNSPRCode) && !IS_SSL_ERROR(aNSPRCode))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (!aXPCOMErrorCode)
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
|
||||
// The error codes within each module may be a 16 bit value.
|
||||
// For simplicity let's use the positive value of the NSS code.
|
||||
|
||||
*aXPCOMErrorCode =
|
||||
NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY,
|
||||
-1 * aNSPRCode);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
NSSErrorsService::GetErrorClass(nsresult aXPCOMErrorCode, PRUint32 *aErrorClass)
|
||||
{
|
||||
NS_ENSURE_ARG(aErrorClass);
|
||||
|
||||
if (NS_ERROR_GET_MODULE(aXPCOMErrorCode) != NS_ERROR_MODULE_SECURITY
|
||||
|| NS_ERROR_GET_SEVERITY(aXPCOMErrorCode) != NS_ERROR_SEVERITY_ERROR)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PRInt32 aNSPRCode = -1 * NS_ERROR_GET_CODE(aXPCOMErrorCode);
|
||||
|
||||
if (!IS_SEC_ERROR(aNSPRCode) && !IS_SSL_ERROR(aNSPRCode))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
switch (aNSPRCode)
|
||||
{
|
||||
case SEC_ERROR_UNKNOWN_ISSUER:
|
||||
case SEC_ERROR_CA_CERT_INVALID:
|
||||
case SEC_ERROR_UNTRUSTED_ISSUER:
|
||||
case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE:
|
||||
case SEC_ERROR_UNTRUSTED_CERT:
|
||||
case SEC_ERROR_INADEQUATE_KEY_USAGE:
|
||||
case SSL_ERROR_BAD_CERT_DOMAIN:
|
||||
case SEC_ERROR_EXPIRED_CERTIFICATE:
|
||||
*aErrorClass = ERROR_CLASS_BAD_CERT;
|
||||
break;
|
||||
default:
|
||||
*aErrorClass = ERROR_CLASS_SSL_PROTOCOL;
|
||||
break;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
NSSErrorsService::GetErrorMessage(nsresult aXPCOMErrorCode, nsAString &aErrorMessage)
|
||||
{
|
||||
if (NS_ERROR_GET_MODULE(aXPCOMErrorCode) != NS_ERROR_MODULE_SECURITY
|
||||
|| NS_ERROR_GET_SEVERITY(aXPCOMErrorCode) != NS_ERROR_SEVERITY_ERROR)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PRInt32 aNSPRCode = -1 * NS_ERROR_GET_CODE(aXPCOMErrorCode);
|
||||
|
||||
if (!IS_SEC_ERROR(aNSPRCode) && !IS_SSL_ERROR(aNSPRCode))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIStringBundle> theBundle = mPIPNSSBundle;
|
||||
const char *id_str = nsNSSErrors::getOverrideErrorStringName(aNSPRCode);
|
||||
|
||||
if (!id_str) {
|
||||
id_str = nsNSSErrors::getDefaultErrorStringName(aNSPRCode);
|
||||
theBundle = mNSSErrorsBundle;
|
||||
}
|
||||
|
||||
if (!id_str || !theBundle)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsAutoString msg;
|
||||
nsresult rv =
|
||||
theBundle->GetStringFromName(NS_ConvertASCIItoUTF16(id_str).get(),
|
||||
getter_Copies(msg));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
aErrorMessage = msg;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
} // psm
|
||||
} // mozilla
|
@ -1,68 +0,0 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Personal Security Manager.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* the Mozilla Foundation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Hubbie Shaw
|
||||
* Doug Turner <dougt@netscape.com>
|
||||
* Brian Ryner <bryner@brianryner.com>
|
||||
* Kai Engert <kaie@netscape.com>
|
||||
* Kai Engert <kengert@redhat.com>
|
||||
* honzab.moz@firemni.cz
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsINSSErrorsService.h"
|
||||
|
||||
#include "nsIStringBundle.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace psm {
|
||||
|
||||
class NSSErrorsService : public nsINSSErrorsService
|
||||
{
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSINSSERRORSSERVICE
|
||||
|
||||
public:
|
||||
nsresult Init();
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIStringBundle> mPIPNSSBundle;
|
||||
nsCOMPtr<nsIStringBundle> mNSSErrorsBundle;
|
||||
};
|
||||
|
||||
} // psm
|
||||
} // mozilla
|
||||
|
||||
#define NS_NSSERRORSSERVICE_CID \
|
||||
{ 0x9ef18451, 0xa157, 0x4d17, { 0x81, 0x32, 0x47, 0xaf, 0xef, 0x21, 0x36, 0x89 } }
|
@ -1953,13 +1953,14 @@ nsNSSComponent::Init()
|
||||
}
|
||||
|
||||
/* nsISupports Implementation for the class */
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS6(nsNSSComponent,
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS7(nsNSSComponent,
|
||||
nsISignatureVerifier,
|
||||
nsIEntropyCollector,
|
||||
nsINSSComponent,
|
||||
nsIObserver,
|
||||
nsISupportsWeakReference,
|
||||
nsITimerCallback)
|
||||
nsITimerCallback,
|
||||
nsINSSErrorsService)
|
||||
|
||||
|
||||
/* Callback functions for decoder. For now, use empty/default functions. */
|
||||
@ -2452,6 +2453,112 @@ nsNSSComponent::RememberCert(CERTCertificate *cert)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#define EXPECTED_SEC_ERROR_BASE (-0x2000)
|
||||
#define EXPECTED_SSL_ERROR_BASE (-0x3000)
|
||||
|
||||
#if SEC_ERROR_BASE != EXPECTED_SEC_ERROR_BASE || SSL_ERROR_BASE != EXPECTED_SSL_ERROR_BASE
|
||||
#error "Unexpected change of error code numbers in lib NSS, please adjust the mapping code"
|
||||
/*
|
||||
* Please ensure the NSS error codes are mapped into the positive range 0x1000 to 0xf000
|
||||
* Search for NS_ERROR_MODULE_SECURITY to ensure there are no conflicts.
|
||||
* The current code also assumes that NSS library error codes are negative.
|
||||
*/
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNSSComponent::IsNSSErrorCode(PRInt32 aNSPRCode, PRBool *_retval)
|
||||
{
|
||||
if (!_retval)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
*_retval = IS_SEC_ERROR(aNSPRCode) || IS_SSL_ERROR(aNSPRCode);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNSSComponent::GetXPCOMFromNSSError(PRInt32 aNSPRCode, nsresult *aXPCOMErrorCode)
|
||||
{
|
||||
if (!IS_SEC_ERROR(aNSPRCode) && !IS_SSL_ERROR(aNSPRCode))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (!aXPCOMErrorCode)
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
|
||||
// The error codes within each module may be a 16 bit value.
|
||||
// For simplicity let's use the positive value of the NSS code.
|
||||
|
||||
*aXPCOMErrorCode =
|
||||
NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY,
|
||||
-1 * aNSPRCode);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNSSComponent::GetErrorClass(nsresult aXPCOMErrorCode, PRUint32 *aErrorClass)
|
||||
{
|
||||
NS_ENSURE_ARG(aErrorClass);
|
||||
|
||||
if (NS_ERROR_GET_MODULE(aXPCOMErrorCode) != NS_ERROR_MODULE_SECURITY
|
||||
|| NS_ERROR_GET_SEVERITY(aXPCOMErrorCode) != NS_ERROR_SEVERITY_ERROR)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PRInt32 aNSPRCode = -1 * NS_ERROR_GET_CODE(aXPCOMErrorCode);
|
||||
|
||||
if (!IS_SEC_ERROR(aNSPRCode) && !IS_SSL_ERROR(aNSPRCode))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
switch (aNSPRCode)
|
||||
{
|
||||
case SEC_ERROR_UNKNOWN_ISSUER:
|
||||
case SEC_ERROR_CA_CERT_INVALID:
|
||||
case SEC_ERROR_UNTRUSTED_ISSUER:
|
||||
case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE:
|
||||
case SEC_ERROR_UNTRUSTED_CERT:
|
||||
case SEC_ERROR_INADEQUATE_KEY_USAGE:
|
||||
case SSL_ERROR_BAD_CERT_DOMAIN:
|
||||
case SEC_ERROR_EXPIRED_CERTIFICATE:
|
||||
*aErrorClass = ERROR_CLASS_BAD_CERT;
|
||||
break;
|
||||
default:
|
||||
*aErrorClass = ERROR_CLASS_SSL_PROTOCOL;
|
||||
break;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNSSComponent::GetErrorMessage(nsresult aXPCOMErrorCode, nsAString &aErrorMessage)
|
||||
{
|
||||
if (NS_ERROR_GET_MODULE(aXPCOMErrorCode) != NS_ERROR_MODULE_SECURITY
|
||||
|| NS_ERROR_GET_SEVERITY(aXPCOMErrorCode) != NS_ERROR_SEVERITY_ERROR)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PRInt32 aNSPRCode = -1 * NS_ERROR_GET_CODE(aXPCOMErrorCode);
|
||||
|
||||
if (!IS_SEC_ERROR(aNSPRCode) && !IS_SSL_ERROR(aNSPRCode))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIStringBundle> theBundle = mPIPNSSBundle;
|
||||
const char *id_str = nsNSSErrors::getOverrideErrorStringName(aNSPRCode);
|
||||
|
||||
if (!id_str) {
|
||||
id_str = nsNSSErrors::getDefaultErrorStringName(aNSPRCode);
|
||||
theBundle = mNSSErrorsBundle;
|
||||
}
|
||||
|
||||
if (!id_str || !theBundle)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsAutoString msg;
|
||||
nsresult rv =
|
||||
theBundle->GetStringFromName(NS_ConvertASCIItoUTF16(id_str).get(),
|
||||
getter_Copies(msg));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
aErrorMessage = msg;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
void
|
||||
nsNSSComponent::DoProfileApproveChange(nsISupports* aSubject)
|
||||
{
|
||||
|
@ -239,7 +239,8 @@ class nsNSSComponent : public nsISignatureVerifier,
|
||||
public nsINSSComponent,
|
||||
public nsIObserver,
|
||||
public nsSupportsWeakReference,
|
||||
public nsITimerCallback
|
||||
public nsITimerCallback,
|
||||
public nsINSSErrorsService
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_CID_ACCESSOR( NS_NSSCOMPONENT_CID )
|
||||
@ -252,6 +253,7 @@ public:
|
||||
NS_DECL_NSIENTROPYCOLLECTOR
|
||||
NS_DECL_NSIOBSERVER
|
||||
NS_DECL_NSITIMERCALLBACK
|
||||
NS_DECL_NSINSSERRORSSERVICE
|
||||
|
||||
NS_METHOD Init();
|
||||
|
||||
|
@ -379,63 +379,54 @@ nsNSSSocketInfo::EnsureDocShellDependentStuffKnown()
|
||||
// with a socket close, and the socket transport might detach the callbacks
|
||||
// instance prior to our error reporting.
|
||||
|
||||
nsISecureBrowserUI* secureUI = nsnull;
|
||||
#ifdef MOZ_IPC
|
||||
CallGetInterface(proxiedCallbacks.get(), &secureUI);
|
||||
#endif
|
||||
nsCOMPtr<nsIDocShell> docshell;
|
||||
|
||||
if (!secureUI)
|
||||
nsCOMPtr<nsIDocShellTreeItem> item(do_GetInterface(proxiedCallbacks));
|
||||
if (item)
|
||||
{
|
||||
nsCOMPtr<nsIDocShell> docshell;
|
||||
nsCOMPtr<nsIDocShellTreeItem> proxiedItem;
|
||||
nsCOMPtr<nsIDocShellTreeItem> rootItem;
|
||||
NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
|
||||
NS_GET_IID(nsIDocShellTreeItem),
|
||||
item.get(),
|
||||
NS_PROXY_SYNC,
|
||||
getter_AddRefs(proxiedItem));
|
||||
|
||||
nsCOMPtr<nsIDocShellTreeItem> item(do_GetInterface(proxiedCallbacks));
|
||||
if (item)
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeItem> proxiedItem;
|
||||
nsCOMPtr<nsIDocShellTreeItem> rootItem;
|
||||
NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
|
||||
NS_GET_IID(nsIDocShellTreeItem),
|
||||
item.get(),
|
||||
NS_PROXY_SYNC,
|
||||
getter_AddRefs(proxiedItem));
|
||||
|
||||
proxiedItem->GetSameTypeRootTreeItem(getter_AddRefs(rootItem));
|
||||
docshell = do_QueryInterface(rootItem);
|
||||
NS_ASSERTION(docshell, "rootItem do_QI is null");
|
||||
}
|
||||
|
||||
if (docshell)
|
||||
{
|
||||
nsCOMPtr<nsIDocShell> proxiedDocShell;
|
||||
NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
|
||||
NS_GET_IID(nsIDocShell),
|
||||
docshell.get(),
|
||||
NS_PROXY_SYNC,
|
||||
getter_AddRefs(proxiedDocShell));
|
||||
nsISecureBrowserUI* secureUI = nsnull;
|
||||
if (proxiedDocShell)
|
||||
proxiedDocShell->GetSecurityUI(&secureUI);
|
||||
}
|
||||
proxiedItem->GetSameTypeRootTreeItem(getter_AddRefs(rootItem));
|
||||
docshell = do_QueryInterface(rootItem);
|
||||
NS_ASSERTION(docshell, "rootItem do_QI is null");
|
||||
}
|
||||
|
||||
if (secureUI)
|
||||
if (docshell)
|
||||
{
|
||||
nsCOMPtr<nsIThread> mainThread(do_GetMainThread());
|
||||
NS_ProxyRelease(mainThread, secureUI, PR_FALSE);
|
||||
mExternalErrorReporting = PR_TRUE;
|
||||
nsCOMPtr<nsIDocShell> proxiedDocShell;
|
||||
NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
|
||||
NS_GET_IID(nsIDocShell),
|
||||
docshell.get(),
|
||||
NS_PROXY_SYNC,
|
||||
getter_AddRefs(proxiedDocShell));
|
||||
nsISecureBrowserUI* secureUI = nsnull;
|
||||
if (proxiedDocShell)
|
||||
proxiedDocShell->GetSecurityUI(&secureUI);
|
||||
if (secureUI)
|
||||
{
|
||||
nsCOMPtr<nsIThread> mainThread(do_GetMainThread());
|
||||
NS_ProxyRelease(mainThread, secureUI, PR_FALSE);
|
||||
mExternalErrorReporting = PR_TRUE;
|
||||
|
||||
// If this socket is associated to a docshell, let's try to remember
|
||||
// the currently used cert. If this socket gets a notification from NSS
|
||||
// having the same raw socket, we can keep the PSM wrapper object
|
||||
// and all the data it has cached (like verification results).
|
||||
nsCOMPtr<nsISSLStatusProvider> statprov = do_QueryInterface(secureUI);
|
||||
if (statprov) {
|
||||
nsCOMPtr<nsISupports> isup_stat;
|
||||
statprov->GetSSLStatus(getter_AddRefs(isup_stat));
|
||||
if (isup_stat) {
|
||||
nsCOMPtr<nsISSLStatus> sslstat = do_QueryInterface(isup_stat);
|
||||
if (sslstat) {
|
||||
sslstat->GetServerCert(getter_AddRefs(mPreviousCert));
|
||||
// If this socket is associated to a docshell, let's try to remember
|
||||
// the currently used cert. If this socket gets a notification from NSS
|
||||
// having the same raw socket, we can keep the PSM wrapper object
|
||||
// and all the data it has cached (like verification results).
|
||||
nsCOMPtr<nsISSLStatusProvider> statprov = do_QueryInterface(secureUI);
|
||||
if (statprov) {
|
||||
nsCOMPtr<nsISupports> isup_stat;
|
||||
statprov->GetSSLStatus(getter_AddRefs(isup_stat));
|
||||
if (isup_stat) {
|
||||
nsCOMPtr<nsISSLStatus> sslstat = do_QueryInterface(isup_stat);
|
||||
if (sslstat) {
|
||||
sslstat->GetServerCert(getter_AddRefs(mPreviousCert));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -78,7 +78,6 @@
|
||||
#include "nsRecentBadCerts.h"
|
||||
#include "nsSSLStatus.h"
|
||||
#include "nsNSSIOLayer.h"
|
||||
#include "NSSErrorsService.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "nsXULAppAPI.h"
|
||||
@ -262,9 +261,6 @@ NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nssEnsure, nsRecentBadCertsService, Init
|
||||
NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsureOnChromeOnly, nsSSLStatus)
|
||||
NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsureOnChromeOnly, nsNSSSocketInfo)
|
||||
|
||||
typedef mozilla::psm::NSSErrorsService NSSErrorsService;
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NSSErrorsService, Init)
|
||||
|
||||
NS_DEFINE_NAMED_CID(NS_NSSCOMPONENT_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_SSLSOCKETPROVIDER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_STARTTLSSOCKETPROVIDER_CID);
|
||||
@ -300,7 +296,6 @@ NS_DEFINE_NAMED_CID(NS_RANDOMGENERATOR_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_RECENTBADCERTS_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_SSLSTATUS_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_NSSSOCKETINFO_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_NSSERRORSSERVICE_CID);
|
||||
|
||||
|
||||
static const mozilla::Module::CIDEntry kNSSCIDs[] = {
|
||||
@ -339,13 +334,12 @@ static const mozilla::Module::CIDEntry kNSSCIDs[] = {
|
||||
{ &kNS_RECENTBADCERTS_CID, false, NULL, nsRecentBadCertsServiceConstructor },
|
||||
{ &kNS_SSLSTATUS_CID, false, NULL, nsSSLStatusConstructor },
|
||||
{ &kNS_NSSSOCKETINFO_CID, false, NULL, nsNSSSocketInfoConstructor },
|
||||
{ &kNS_NSSERRORSSERVICE_CID, false, NULL, NSSErrorsServiceConstructor },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const mozilla::Module::ContractIDEntry kNSSContracts[] = {
|
||||
{ PSM_COMPONENT_CONTRACTID, &kNS_NSSCOMPONENT_CID },
|
||||
{ NS_NSS_ERRORS_SERVICE_CONTRACTID, &kNS_NSSERRORSSERVICE_CID },
|
||||
{ NS_NSS_ERRORS_SERVICE_CONTRACTID, &kNS_NSSCOMPONENT_CID },
|
||||
{ NS_SSLSOCKETPROVIDER_CONTRACTID, &kNS_SSLSOCKETPROVIDER_CID },
|
||||
{ NS_STARTTLSSOCKETPROVIDER_CONTRACTID, &kNS_STARTTLSSOCKETPROVIDER_CID },
|
||||
{ NS_SDR_CONTRACTID, &kNS_SDR_CID },
|
||||
|
Loading…
x
Reference in New Issue
Block a user