gecko-dev/security/manager/ssl/nsNSSComponent.h
Nathan Froyd 974d8120f2 Bug 1161627 - part 2 - machine-convert TemporaryRef<T> to already_AddRefed<T>; r=ehsan
This conversion was done with the script:

  find . -name '*.cpp' -o -name '*.h' -o -name '*.mm' -o -name '*.idl' | \
    egrep -v 'cairo-win32-refptr.h|RefPtr.h|TestRefPtr.cpp' | \
    xargs sed -i -e 's/mozilla::TemporaryRef</already_AddRefed</g' \
                 -e 's/TemporaryRef</already_AddRefed</g'

Manual fixups were performed in the following instances:

- We handled mfbt/RefPtr.h manually so as to not convert TemporaryRef itself
  into already_AddRefed.

- The following files had explicit Move() calls added to make up for the lack
  of a copy constructor on already_AddRefed:

  dom/base/ImageEncoder.cpp
  dom/media/MediaTaskQueue.{h,cpp}
  dom/media/webaudio/PannerNode.cpp

- A redundant overload for MediaTaskQueue::Dispatch was deleted.

- A few manual fixups were required in mfbt/tests/TestRefPtr.cpp.

- Comments, using declarations, and forward declarations relating to
  TemporaryRef in dom/canvas/ and gfx/layers/ were changed to refer to
  already_AddRefed.
2015-06-17 10:00:52 -04:00

234 lines
7.4 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef _nsNSSComponent_h_
#define _nsNSSComponent_h_
#include "mozilla/Mutex.h"
#include "mozilla/RefPtr.h"
#include "nsCOMPtr.h"
#include "nsIEntropyCollector.h"
#include "nsIStringBundle.h"
#include "nsIObserver.h"
#include "nsIObserverService.h"
#include "nsINSSErrorsService.h"
#include "nsNSSCallbacks.h"
#include "SharedCertVerifier.h"
#include "nsNSSHelper.h"
#include "nsClientAuthRemember.h"
#include "prerror.h"
#include "sslt.h"
class nsIDOMWindow;
class nsIPrompt;
class SmartCardThreadList;
namespace mozilla { namespace psm {
MOZ_WARN_UNUSED_RESULT
::already_AddRefed<mozilla::psm::SharedCertVerifier>
GetDefaultCertVerifier();
} } // namespace mozilla::psm
#define NS_NSSCOMPONENT_CID \
{0x4cb64dfd, 0xca98, 0x4e24, {0xbe, 0xfd, 0x0d, 0x92, 0x85, 0xa3, 0x3b, 0xcb}}
#define PSM_COMPONENT_CONTRACTID "@mozilla.org/psm;1"
//Define an interface that we can use to look up from the
//callbacks passed to NSS.
#define NS_INSSCOMPONENT_IID_STR "e60602a8-97a3-4fe7-b5b7-56bc6ce87ab4"
#define NS_INSSCOMPONENT_IID \
{ 0xe60602a8, 0x97a3, 0x4fe7, \
{ 0xb5, 0xb7, 0x56, 0xbc, 0x6c, 0xe8, 0x7a, 0xb4 } }
enum EnsureNSSOperator
{
nssLoadingComponent = 0,
nssInitSucceeded = 1,
nssInitFailed = 2,
nssShutdown = 3,
nssEnsure = 100,
nssEnsureOnChromeOnly = 101,
nssEnsureChromeOrContent = 102,
};
extern bool EnsureNSSInitializedChromeOrContent();
extern bool EnsureNSSInitialized(EnsureNSSOperator op);
class nsNSSComponent;
class NS_NO_VTABLE nsINSSComponent : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_INSSCOMPONENT_IID)
NS_IMETHOD ShowAlertFromStringBundle(const char* messageID) = 0;
NS_IMETHOD GetPIPNSSBundleString(const char* name,
nsAString& outString) = 0;
NS_IMETHOD PIPBundleFormatStringFromName(const char* name,
const char16_t** params,
uint32_t numParams,
nsAString& outString) = 0;
NS_IMETHOD GetNSSBundleString(const char* name,
nsAString& outString) = 0;
NS_IMETHOD NSSBundleFormatStringFromName(const char* name,
const char16_t** params,
uint32_t numParams,
nsAString& outString) = 0;
NS_IMETHOD LogoutAuthenticatedPK11() = 0;
#ifndef MOZ_NO_SMART_CARDS
NS_IMETHOD LaunchSmartCardThread(SECMODModule* module) = 0;
NS_IMETHOD ShutdownSmartCardThread(SECMODModule* module) = 0;
#endif
NS_IMETHOD IsNSSInitialized(bool* initialized) = 0;
virtual ::already_AddRefed<mozilla::psm::SharedCertVerifier>
GetDefaultCertVerifier() = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsINSSComponent, NS_INSSCOMPONENT_IID)
class nsNSSShutDownList;
class nsCertVerificationThread;
// Implementation of the PSM component interface.
class nsNSSComponent final : public nsIEntropyCollector,
public nsINSSComponent,
public nsIObserver,
public nsSupportsWeakReference
{
typedef mozilla::Mutex Mutex;
public:
NS_DEFINE_STATIC_CID_ACCESSOR( NS_NSSCOMPONENT_CID )
nsNSSComponent();
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSIENTROPYCOLLECTOR
NS_DECL_NSIOBSERVER
NS_METHOD Init();
static nsresult GetNewPrompter(nsIPrompt** result);
static nsresult ShowAlertWithConstructedString(const nsString& message);
NS_IMETHOD ShowAlertFromStringBundle(const char* messageID) override;
NS_IMETHOD GetPIPNSSBundleString(const char* name,
nsAString& outString) override;
NS_IMETHOD PIPBundleFormatStringFromName(const char* name,
const char16_t** params,
uint32_t numParams,
nsAString& outString) override;
NS_IMETHOD GetNSSBundleString(const char* name, nsAString& outString) override;
NS_IMETHOD NSSBundleFormatStringFromName(const char* name,
const char16_t** params,
uint32_t numParams,
nsAString& outString) override;
NS_IMETHOD LogoutAuthenticatedPK11() override;
#ifndef MOZ_NO_SMART_CARDS
NS_IMETHOD LaunchSmartCardThread(SECMODModule* module) override;
NS_IMETHOD ShutdownSmartCardThread(SECMODModule* module) override;
void LaunchSmartCardThreads();
void ShutdownSmartCardThreads();
nsresult DispatchEventToWindow(nsIDOMWindow* domWin,
const nsAString& eventType,
const nsAString& token);
#endif
NS_IMETHOD IsNSSInitialized(bool* initialized) override;
::already_AddRefed<mozilla::psm::SharedCertVerifier>
GetDefaultCertVerifier() override;
// The following two methods are thread-safe.
static bool AreAnyWeakCiphersEnabled();
static void UseWeakCiphersOnSocket(PRFileDesc* fd);
static void FillTLSVersionRange(SSLVersionRange& rangeOut,
uint32_t minFromPrefs,
uint32_t maxFromPrefs,
SSLVersionRange defaults);
protected:
virtual ~nsNSSComponent();
private:
nsresult InitializeNSS();
void ShutdownNSS();
void LoadLoadableRoots();
void UnloadLoadableRoots();
void setValidationOptions(bool isInitialSetting,
const mozilla::MutexAutoLock& lock);
nsresult setEnabledTLSVersions();
nsresult InitializePIPNSSBundle();
nsresult ConfigureInternalPKCS11Token();
nsresult RegisterObservers();
nsresult DeregisterObservers();
// Methods that we use to handle the profile change notifications (and to
// synthesize a full profile change when we're just doing a profile startup):
void DoProfileChangeNetTeardown();
void DoProfileChangeTeardown(nsISupports* aSubject);
void DoProfileBeforeChange(nsISupports* aSubject);
void DoProfileChangeNetRestore();
Mutex mutex;
nsCOMPtr<nsIStringBundle> mPIPNSSBundle;
nsCOMPtr<nsIStringBundle> mNSSErrorsBundle;
bool mNSSInitialized;
bool mObserversRegistered;
static int mInstanceCount;
nsNSSShutDownList* mShutdownObjectList;
#ifndef MOZ_NO_SMART_CARDS
SmartCardThreadList* mThreadList;
#endif
bool mIsNetworkDown;
void deleteBackgroundThreads();
void createBackgroundThreads();
nsCertVerificationThread* mCertVerificationThread;
nsNSSHttpInterface mHttpForNSS;
mozilla::RefPtr<mozilla::psm::SharedCertVerifier> mDefaultCertVerifier;
static PRStatus IdentityInfoInit(void);
};
class nsNSSErrors
{
public:
static const char* getDefaultErrorStringName(PRErrorCode err);
static const char* getOverrideErrorStringName(PRErrorCode aErrorCode);
static nsresult getErrorMessageFromCode(PRErrorCode err,
nsINSSComponent* component,
nsString& returnedMessage);
};
class nsPSMInitPanic
{
private:
static bool isPanic;
public:
static void SetPanic() {isPanic = true;}
static bool GetPanic() {return isPanic;}
};
#endif // _nsNSSComponent_h_