зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1603458 - Distinguish between Error and Warning messages from OTS in the web console. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D56963 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
9daf9ebab6
Коммит
bb251e81db
|
@ -242,21 +242,23 @@ class MOZ_STACK_CLASS gfxOTSContext : public ots::OTSContext {
|
|||
mWarningsIssued.PutEntry(msg);
|
||||
}
|
||||
|
||||
mMessages.AppendElement(msg);
|
||||
mMessages.AppendElement(gfxUserFontEntry::OTSMessage{msg, level});
|
||||
}
|
||||
|
||||
bool Process(ots::OTSStream* aOutput, const uint8_t* aInput, size_t aLength,
|
||||
nsTArray<nsCString>& aMessages) {
|
||||
nsTArray<gfxUserFontEntry::OTSMessage>& aMessages) {
|
||||
bool ok = ots::OTSContext::Process(aOutput, aInput, aLength);
|
||||
aMessages = TakeMessages();
|
||||
return ok;
|
||||
}
|
||||
|
||||
nsTArray<nsCString>&& TakeMessages() { return std::move(mMessages); }
|
||||
nsTArray<gfxUserFontEntry::OTSMessage>&& TakeMessages() {
|
||||
return std::move(mMessages);
|
||||
}
|
||||
|
||||
private:
|
||||
nsTHashtable<nsCStringHashKey> mWarningsIssued;
|
||||
nsTArray<nsCString> mMessages;
|
||||
nsTArray<gfxUserFontEntry::OTSMessage> mMessages;
|
||||
bool mCheckOTLTables;
|
||||
bool mCheckVariationTables;
|
||||
bool mKeepColorBitmaps;
|
||||
|
@ -266,7 +268,7 @@ class MOZ_STACK_CLASS gfxOTSContext : public ots::OTSContext {
|
|||
// Returns a newly-allocated block, or nullptr in case of fatal errors.
|
||||
const uint8_t* gfxUserFontEntry::SanitizeOpenTypeData(
|
||||
const uint8_t* aData, uint32_t aLength, uint32_t& aSaneLength,
|
||||
gfxUserFontType& aFontType, nsTArray<nsCString>& aMessages) {
|
||||
gfxUserFontType& aFontType, nsTArray<OTSMessage>& aMessages) {
|
||||
aFontType = gfxFontUtils::DetermineFontDataType(aData, aLength);
|
||||
Telemetry::Accumulate(Telemetry::WEBFONT_FONTTYPE, uint32_t(aFontType));
|
||||
|
||||
|
@ -695,7 +697,7 @@ bool gfxUserFontEntry::LoadPlatformFontSync(const uint8_t* aFontData,
|
|||
// if necessary. The original data in aFontData is left unchanged.
|
||||
uint32_t saneLen;
|
||||
gfxUserFontType fontType;
|
||||
nsTArray<nsCString> messages;
|
||||
nsTArray<OTSMessage> messages;
|
||||
const uint8_t* saneData =
|
||||
SanitizeOpenTypeData(aFontData, aLength, saneLen, fontType, messages);
|
||||
|
||||
|
@ -711,13 +713,13 @@ void gfxUserFontEntry::StartPlatformFontLoadOnWorkerThread(
|
|||
|
||||
uint32_t saneLen;
|
||||
gfxUserFontType fontType;
|
||||
nsTArray<nsCString> messages;
|
||||
nsTArray<OTSMessage> messages;
|
||||
const uint8_t* saneData =
|
||||
SanitizeOpenTypeData(aFontData, aLength, saneLen, fontType, messages);
|
||||
|
||||
nsCOMPtr<nsIRunnable> event =
|
||||
NewRunnableMethod<const uint8_t*, uint32_t, gfxUserFontType,
|
||||
const uint8_t*, uint32_t, nsTArray<nsCString>&&,
|
||||
const uint8_t*, uint32_t, nsTArray<OTSMessage>&&,
|
||||
nsMainThreadPtrHandle<nsIFontLoadCompleteCallback>>(
|
||||
"gfxUserFontEntry::ContinuePlatformFontLoadOnMainThread", this,
|
||||
&gfxUserFontEntry::ContinuePlatformFontLoadOnMainThread, aFontData,
|
||||
|
@ -730,11 +732,13 @@ bool gfxUserFontEntry::LoadPlatformFont(const uint8_t* aOriginalFontData,
|
|||
gfxUserFontType aFontType,
|
||||
const uint8_t* aSanitizedFontData,
|
||||
uint32_t aSanitizedLength,
|
||||
nsTArray<nsCString>&& aMessages) {
|
||||
nsTArray<OTSMessage>&& aMessages) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
for (const auto& msg : aMessages) {
|
||||
mFontSet->LogMessage(this, msg.get());
|
||||
mFontSet->LogMessage(this, msg.mMessage.get(),
|
||||
msg.mLevel > 0 ? nsIScriptError::warningFlag
|
||||
: nsIScriptError::errorFlag);
|
||||
}
|
||||
|
||||
if (!aSanitizedFontData) {
|
||||
|
@ -949,7 +953,7 @@ void gfxUserFontEntry::LoadPlatformFontAsync(
|
|||
void gfxUserFontEntry::ContinuePlatformFontLoadOnMainThread(
|
||||
const uint8_t* aOriginalFontData, uint32_t aOriginalLength,
|
||||
gfxUserFontType aFontType, const uint8_t* aSanitizedFontData,
|
||||
uint32_t aSanitizedLength, nsTArray<nsCString>&& aMessages,
|
||||
uint32_t aSanitizedLength, nsTArray<OTSMessage>&& aMessages,
|
||||
nsMainThreadPtrHandle<nsIFontLoadCompleteCallback> aCallback) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
|
|
|
@ -644,10 +644,15 @@ class gfxUserFontEntry : public gfxFontEntry {
|
|||
static void Shutdown() { sFontLoadingThread = nullptr; }
|
||||
|
||||
protected:
|
||||
struct OTSMessage {
|
||||
nsCString mMessage;
|
||||
int mLevel; // see OTSContext in gfx/ots/include/opentype-sanitizer.h
|
||||
};
|
||||
|
||||
const uint8_t* SanitizeOpenTypeData(const uint8_t* aData, uint32_t aLength,
|
||||
uint32_t& aSaneLength,
|
||||
gfxUserFontType& aFontType,
|
||||
nsTArray<nsCString>& aMessages);
|
||||
nsTArray<OTSMessage>& aMessages);
|
||||
|
||||
// attempt to load the next resource in the src list.
|
||||
void LoadNextSrc();
|
||||
|
@ -683,7 +688,7 @@ class gfxUserFontEntry : public gfxFontEntry {
|
|||
void ContinuePlatformFontLoadOnMainThread(
|
||||
const uint8_t* aOriginalFontData, uint32_t aOriginalLength,
|
||||
gfxUserFontType aFontType, const uint8_t* aSanitizedFontData,
|
||||
uint32_t aSanitizedLength, nsTArray<nsCString>&& aMessages,
|
||||
uint32_t aSanitizedLength, nsTArray<OTSMessage>&& aMessages,
|
||||
nsMainThreadPtrHandle<nsIFontLoadCompleteCallback> aCallback);
|
||||
|
||||
// helper method for LoadPlatformFontSync and
|
||||
|
@ -692,7 +697,7 @@ class gfxUserFontEntry : public gfxFontEntry {
|
|||
uint32_t aOriginalLength, gfxUserFontType aFontType,
|
||||
const uint8_t* aSanitizedFontData,
|
||||
uint32_t aSanitizedLength,
|
||||
nsTArray<nsCString>&& aMessages);
|
||||
nsTArray<OTSMessage>&& aMessages);
|
||||
|
||||
// helper method for FontDataDownloadComplete and
|
||||
// ContinuePlatformFontLoadOnMainThread; runs on the main thread
|
||||
|
|
Загрузка…
Ссылка в новой задаче