Bug 1376964 - Part 8: Add OMT wrapper for nsIPrincipals useful for font stuff. r=jfkthame

MozReview-Commit-ID: L6gUnvDx7D2

--HG--
extra : rebase_source : 673a837d91e40f1c46adc2d0c2bc16fe024084ed
This commit is contained in:
Cameron McCormack 2017-07-08 17:20:28 +08:00
parent c770a5a921
commit 1a172c9491
3 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,34 @@
/* -*- 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/. */
#include "gfxFontSrcPrincipal.h"
#include "nsProxyRelease.h"
#include "nsURIHashKey.h"
gfxFontSrcPrincipal::gfxFontSrcPrincipal(nsIPrincipal* aPrincipal)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(aPrincipal);
mPrincipal = aPrincipal;
uint32_t hash = 0;
mPrincipal->GetHashValue(&hash);
mHash = hash;
}
gfxFontSrcPrincipal::~gfxFontSrcPrincipal()
{
NS_ReleaseOnMainThread("gfxFontSrcPrincipal::mPrincipal",
mPrincipal.forget());
}
bool
gfxFontSrcPrincipal::Equals(gfxFontSrcPrincipal* aOther)
{
return BasePrincipal::Cast(mPrincipal)->
FastEquals(BasePrincipal::Cast(aOther->mPrincipal));
}

View File

@ -0,0 +1,46 @@
/* -*- 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 MOZILLA_GFX_FONTSRCPRINCIPAL_H
#define MOZILLA_GFX_FONTSRCPRINCIPAL_H
#include "nsCOMPtr.h"
#include "nsIPrincipal.h"
#include "PLDHashTable.h"
namespace mozilla {
namespace net {
class nsSimpleURI;
} // namespace net
} // namespace mozilla
/**
* A wrapper for an nsIPrincipal that can be used OMT, which has cached
* information useful for the gfxUserFontSet.
*/
class gfxFontSrcPrincipal
{
public:
explicit gfxFontSrcPrincipal(nsIPrincipal* aPrincipal);
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(gfxFontSrcPrincipal)
nsIPrincipal* get() { return mPrincipal; }
bool Equals(gfxFontSrcPrincipal* aOther);
PLDHashNumber Hash() const { return mHash; }
private:
~gfxFontSrcPrincipal();
// The principal.
nsCOMPtr<nsIPrincipal> mPrincipal;
// Precomputed hash for mPrincipal.
PLDHashNumber mHash;
};
#endif // MOZILLA_GFX_FONTSRCPRINCIPAL_H

View File

@ -30,6 +30,7 @@ EXPORTS += [
'gfxFontFeatures.h',
'gfxFontInfoLoader.h',
'gfxFontPrefLangList.h',
'gfxFontSrcPrincipal.h',
'gfxFontSrcURI.h',
'gfxFontUtils.h',
'gfxFontVariations.h',
@ -193,6 +194,7 @@ UNIFIED_SOURCES += [
'gfxFontFeatures.cpp',
'gfxFontInfoLoader.cpp',
'gfxFontMissingGlyphs.cpp',
'gfxFontSrcPrincipal.cpp',
'gfxFontSrcURI.cpp',
'gfxGlyphExtents.cpp',
'gfxGradientCache.cpp',