gecko-dev/security/manager/ssl/nsCertTree.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

155 lines
4.7 KiB
C++

/* 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 _NS_CERTTREE_H_
#define _NS_CERTTREE_H_
#include "nsCOMPtr.h"
#include "nsIServiceManager.h"
#include "nsICertTree.h"
#include "nsITreeView.h"
#include "nsITreeBoxObject.h"
#include "nsITreeSelection.h"
#include "nsIMutableArray.h"
#include "nsNSSComponent.h"
#include "nsTArray.h"
#include "pldhash.h"
#include "nsIX509CertDB.h"
#include "nsCertOverrideService.h"
#include "mozilla/Attributes.h"
typedef struct treeArrayElStr treeArrayEl;
struct CompareCacheHashEntry {
enum { max_criterions = 3 };
CompareCacheHashEntry();
void *key; // no ownership
bool mCritInit[max_criterions];
nsXPIDLString mCrit[max_criterions];
};
struct CompareCacheHashEntryPtr : PLDHashEntryHdr {
CompareCacheHashEntryPtr();
~CompareCacheHashEntryPtr();
CompareCacheHashEntry *entry;
};
class nsCertAddonInfo final : public nsISupports
{
private:
~nsCertAddonInfo() {}
public:
NS_DECL_ISUPPORTS
nsCertAddonInfo() : mUsageCount(0) {}
mozilla::RefPtr<nsIX509Cert> mCert;
// how many display entries reference this?
// (and therefore depend on the underlying cert)
int32_t mUsageCount;
};
class nsCertTreeDispInfo : public nsICertTreeItem
{
protected:
virtual ~nsCertTreeDispInfo();
public:
NS_DECL_ISUPPORTS
NS_DECL_NSICERTTREEITEM
nsCertTreeDispInfo();
nsCertTreeDispInfo(nsCertTreeDispInfo &other);
mozilla::RefPtr<nsCertAddonInfo> mAddonInfo;
enum {
direct_db, host_port_override
} mTypeOfEntry;
nsCString mAsciiHost;
int32_t mPort;
nsCertOverride::OverrideBits mOverrideBits;
bool mIsTemporary;
nsCOMPtr<nsIX509Cert> mCert;
};
class nsCertTree : public nsICertTree
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSICERTTREE
NS_DECL_NSITREEVIEW
nsCertTree();
enum sortCriterion { sort_IssuerOrg, sort_Org, sort_Token,
sort_CommonName, sort_IssuedDateDescending, sort_Email, sort_None };
protected:
virtual ~nsCertTree();
void ClearCompareHash();
void RemoveCacheEntry(void *key);
typedef int (*nsCertCompareFunc)(void *, nsIX509Cert *a, nsIX509Cert *b);
static CompareCacheHashEntry *getCacheEntry(void *cache, void *aCert);
static void CmpInitCriterion(nsIX509Cert *cert, CompareCacheHashEntry *entry,
sortCriterion crit, int32_t level);
static int32_t CmpByCrit(nsIX509Cert *a, CompareCacheHashEntry *ace,
nsIX509Cert *b, CompareCacheHashEntry *bce,
sortCriterion crit, int32_t level);
static int32_t CmpBy(void *cache, nsIX509Cert *a, nsIX509Cert *b,
sortCriterion c0, sortCriterion c1, sortCriterion c2);
static int32_t CmpCACert(void *cache, nsIX509Cert *a, nsIX509Cert *b);
static int32_t CmpWebSiteCert(void *cache, nsIX509Cert *a, nsIX509Cert *b);
static int32_t CmpUserCert(void *cache, nsIX509Cert *a, nsIX509Cert *b);
static int32_t CmpEmailCert(void *cache, nsIX509Cert *a, nsIX509Cert *b);
nsCertCompareFunc GetCompareFuncFromCertType(uint32_t aType);
int32_t CountOrganizations();
nsresult GetCertsByType(uint32_t aType, nsCertCompareFunc aCertCmpFn,
void *aCertCmpFnArg);
nsresult GetCertsByTypeFromCache(nsIX509CertList *aCache, uint32_t aType,
nsCertCompareFunc aCertCmpFn, void *aCertCmpFnArg);
private:
static const uint32_t kInitialCacheLength = 64;
nsTArray< mozilla::RefPtr<nsCertTreeDispInfo> > mDispInfo;
nsCOMPtr<nsITreeBoxObject> mTree;
nsCOMPtr<nsITreeSelection> mSelection;
treeArrayEl *mTreeArray;
int32_t mNumOrgs;
int32_t mNumRows;
PLDHashTable mCompareCache;
nsCOMPtr<nsINSSComponent> mNSSComponent;
nsCOMPtr<nsICertOverrideService> mOverrideService;
mozilla::RefPtr<nsCertOverrideService> mOriginalOverrideService;
treeArrayEl *GetThreadDescAtIndex(int32_t _index);
already_AddRefed<nsIX509Cert>
GetCertAtIndex(int32_t _index, int32_t *outAbsoluteCertOffset = nullptr);
already_AddRefed<nsCertTreeDispInfo>
GetDispInfoAtIndex(int32_t index, int32_t *outAbsoluteCertOffset = nullptr);
void FreeCertArray();
nsresult UpdateUIContents();
nsresult GetCertsByTypeFromCertList(CERTCertList *aCertList,
uint32_t aType,
nsCertCompareFunc aCertCmpFn,
void *aCertCmpFnArg);
nsCOMPtr<nsIMutableArray> mCellText;
#ifdef DEBUG_CERT_TREE
/* for debugging purposes */
void dumpMap();
#endif
};
#endif /* _NS_CERTTREE_H_ */