Backed out 5 changesets (bug 1777287, bug 1778610, bug 1778681, bug 1778608, bug 1778694) for causing assertion failures in mozilla/ServoUtils.h CLOSED TREE

Backed out changeset 0aef1644a90e (bug 1777287)
Backed out changeset 53145a539af3 (bug 1778694)
Backed out changeset d2ec7b6792ec (bug 1778681)
Backed out changeset 921a5cd15b42 (bug 1778608)
Backed out changeset d1b85405ea07 (bug 1778610)
This commit is contained in:
smolnar 2022-07-08 17:17:00 +03:00
parent 1547adcf3d
commit 5141a24432
94 changed files with 459 additions and 115 deletions

View File

@ -6,8 +6,6 @@
#include "OffscreenCanvasRenderingContext2D.h"
#include "mozilla/CycleCollectedJSRuntime.h"
#include "mozilla/dom/FontFaceSetImpl.h"
#include "mozilla/dom/FontFaceSet.h"
#include "mozilla/dom/OffscreenCanvasRenderingContext2DBinding.h"
#include "mozilla/dom/OffscreenCanvas.h"
#include "mozilla/dom/WorkerCommon.h"
@ -127,17 +125,6 @@ static void SerializeFontForCanvas(const StyleFontFamilyList& aList,
bool OffscreenCanvasRenderingContext2D::SetFontInternal(const nsACString& aFont,
ErrorResult& aError) {
nsIGlobalObject* global = GetParentObject();
FontFaceSet* fontFaceSet = global ? global->Fonts() : nullptr;
FontFaceSetImpl* fontFaceSetImpl =
fontFaceSet ? fontFaceSet->GetImpl() : nullptr;
RefPtr<URLExtraData> urlExtraData =
fontFaceSetImpl ? fontFaceSetImpl->GetURLExtraData() : nullptr;
if (fontFaceSetImpl) {
fontFaceSetImpl->FlushUserFontSet();
}
// In the OffscreenCanvas case we don't have the context necessary to call
// GetFontStyleForServo(), as we do in the main-thread canvas context, so
// instead we borrow ParseFontShorthandForMatching to parse the attribute.
@ -147,7 +134,7 @@ bool OffscreenCanvasRenderingContext2D::SetFontInternal(const nsACString& aFont,
gfxFontStyle fontStyle;
float size = 0.0f;
if (!ServoCSSParser::ParseFontShorthandForMatching(
aFont, urlExtraData, list, fontStyle.style, fontStyle.stretch,
aFont, nullptr, list, fontStyle.style, fontStyle.stretch,
fontStyle.weight, &size)) {
return false;
}
@ -157,15 +144,15 @@ bool OffscreenCanvasRenderingContext2D::SetFontInternal(const nsACString& aFont,
// TODO: Get a userFontSet from the Worker and pass to the fontGroup
// TODO: Should we be passing a language? Where from?
// TODO: Cache fontGroups in the Worker (use an nsFontCache?)
gfxFontGroup* fontGroup = gfxPlatform::GetPlatform()->CreateFontGroup(
nullptr, // aPresContext
list, // aFontFamilyList
&fontStyle, // aStyle
nullptr, // aLanguage
false, // aExplicitLanguage
nullptr, // aTextPerf
fontFaceSetImpl, // aUserFontSet
1.0); // aDevToCssSize
gfxFontGroup* fontGroup =
gfxPlatform::GetPlatform()->CreateFontGroup(nullptr, // aPresContext
list, // aFontFamilyList
&fontStyle, // aStyle
nullptr, // aLanguage
false, // aExplicitLanguage
nullptr, // aTextPerf
nullptr, // aUserFontSet
1.0); // aDevToCssSize
CurrentState().fontGroup = fontGroup;
SerializeFontForCanvas(list, fontStyle, CurrentState().font);
CurrentState().fontFont = nsFont(StyleFontFamily{list, false, false},

View File

@ -362,7 +362,7 @@ interface CanvasPattern {
void setTransform(optional DOMMatrix2DInit matrix = {});
};
[Exposed=(Window,Worker)]
[Exposed=Window]
interface TextMetrics {
// x-direction

View File

@ -24,9 +24,7 @@ OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles;
OffscreenCanvasRenderingContext2D includes CanvasShadowStyles;
OffscreenCanvasRenderingContext2D includes CanvasRect;
OffscreenCanvasRenderingContext2D includes CanvasDrawPath;
OffscreenCanvasRenderingContext2D includes CanvasText;
OffscreenCanvasRenderingContext2D includes CanvasDrawImage;
OffscreenCanvasRenderingContext2D includes CanvasImageData;
OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles;
OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles;
OffscreenCanvasRenderingContext2D includes CanvasPathMethods;

View File

@ -1918,7 +1918,7 @@ void gfxFontFamily::SearchAllFontsForChar(GlobalFontMatch* aMatchData) {
gfxFontFamily::~gfxFontFamily() {
// Should not be dropped by stylo, but the InitFontList thread might use
// a transient gfxFontFamily and that's OK.
MOZ_ASSERT(!gfxFontUtils::IsInServoTraversal());
MOZ_ASSERT(NS_IsMainThread() || gfxPlatformFontList::IsInitFontListThread());
}
// returns true if other names were found, false otherwise

View File

@ -604,20 +604,6 @@ bool gfxPlatformFontList::InitFontList() {
}
mDefaultFontEntry = fe;
// initialize lang group pref font defaults (i.e. serif/sans-serif)
mDefaultGenericsLangGroup.AppendElements(ArrayLength(gPrefLangNames));
for (uint32_t i = 0; i < ArrayLength(gPrefLangNames); i++) {
nsAutoCString prefDefaultFontType("font.default.");
prefDefaultFontType.Append(GetPrefLangName(eFontPrefLang(i)));
nsAutoCString serifOrSans;
Preferences::GetCString(prefDefaultFontType.get(), serifOrSans);
if (serifOrSans.EqualsLiteral("sans-serif")) {
mDefaultGenericsLangGroup[i] = StyleGenericFontFamily::SansSerif;
} else {
mDefaultGenericsLangGroup[i] = StyleGenericFontFamily::Serif;
}
}
return true;
}
@ -2409,6 +2395,22 @@ StyleGenericFontFamily gfxPlatformFontList::GetDefaultGeneric(
AutoLock lock(mLock);
// initialize lang group pref font defaults (i.e. serif/sans-serif)
if (MOZ_UNLIKELY(mDefaultGenericsLangGroup.IsEmpty())) {
mDefaultGenericsLangGroup.AppendElements(ArrayLength(gPrefLangNames));
for (uint32_t i = 0; i < ArrayLength(gPrefLangNames); i++) {
nsAutoCString prefDefaultFontType("font.default.");
prefDefaultFontType.Append(GetPrefLangName(eFontPrefLang(i)));
nsAutoCString serifOrSans;
Preferences::GetCString(prefDefaultFontType.get(), serifOrSans);
if (serifOrSans.EqualsLiteral("sans-serif")) {
mDefaultGenericsLangGroup[i] = StyleGenericFontFamily::SansSerif;
} else {
mDefaultGenericsLangGroup[i] = StyleGenericFontFamily::Serif;
}
}
}
if (uint32_t(aLang) < ArrayLength(gPrefLangNames)) {
return mDefaultGenericsLangGroup[uint32_t(aLang)];
}

View File

@ -8,7 +8,6 @@
#include "gfxUserFontSet.h"
#include "gfxPlatform.h"
#include "gfxFontConstants.h"
#include "mozilla/Atomics.h"
#include "mozilla/FontPropertyTypes.h"
#include "mozilla/Preferences.h"
#include "mozilla/ProfilerLabels.h"
@ -35,7 +34,7 @@ mozilla::LogModule* gfxUserFontSet::GetUserFontsLog() {
#define LOG_ENABLED() \
MOZ_LOG_TEST(gfxUserFontSet::GetUserFontsLog(), mozilla::LogLevel::Debug)
static Atomic<uint64_t> sFontSetGeneration(0);
static uint64_t sFontSetGeneration = 0;
gfxUserFontEntry::gfxUserFontEntry(
gfxUserFontSet* aFontSet, const nsTArray<gfxFontFaceSrc>& aFontFaceSrcList,
@ -251,7 +250,7 @@ size_t gfxUserFontData::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const {
/*virtual*/
gfxUserFontFamily::~gfxUserFontFamily() {
// Should not be dropped by stylo
MOZ_ASSERT(!gfxFontUtils::IsInServoTraversal());
MOZ_ASSERT(NS_IsMainThread());
}
already_AddRefed<gfxFontSrcPrincipal> gfxFontFaceSrc::LoadPrincipal(
@ -1040,9 +1039,9 @@ void gfxUserFontSet::AddUserFontEntry(const nsCString& aFamilyName,
void gfxUserFontSet::IncrementGeneration(bool aIsRebuild) {
// add one, increment again if zero
do {
mGeneration = ++sFontSetGeneration;
} while (mGeneration == 0);
++sFontSetGeneration;
if (sFontSetGeneration == 0) ++sFontSetGeneration;
mGeneration = sFontSetGeneration;
if (aIsRebuild) {
mRebuildGeneration = mGeneration;
}

View File

@ -121,7 +121,7 @@ class FontFaceSetImpl : public nsISupports, public gfxUserFontSet {
*/
virtual void DidRefresh() { MOZ_ASSERT_UNREACHABLE("Not implemented!"); }
virtual void FlushUserFontSet() = 0;
virtual void FlushUserFontSet() {}
static nsPresContext* GetPresContextFor(gfxUserFontSet* aUserFontSet) {
const auto* set = static_cast<FontFaceSetImpl*>(aUserFontSet);

View File

@ -135,36 +135,6 @@ void FontFaceSetWorkerImpl::InitializeOnMainThread() {
void FontFaceSetWorkerImpl::Destroy() {
RecursiveMutexAutoLock lock(mMutex);
class DestroyRunnable final : public Runnable {
public:
DestroyRunnable(FontFaceSetWorkerImpl* aFontFaceSet,
nsTHashtable<nsPtrHashKey<nsFontFaceLoader>>&& aLoaders)
: Runnable("FontFaceSetWorkerImpl::Destroy"),
mFontFaceSet(aFontFaceSet),
mLoaders(std::move(aLoaders)) {}
protected:
~DestroyRunnable() override = default;
NS_IMETHOD Run() override {
for (const auto& key : mLoaders.Keys()) {
key->Cancel();
}
return NS_OK;
}
// We save a reference to the FontFaceSetWorkerImpl because the loaders
// contain a non-owning reference to it.
RefPtr<FontFaceSetWorkerImpl> mFontFaceSet;
nsTHashtable<nsPtrHashKey<nsFontFaceLoader>> mLoaders;
};
if (!mLoaders.IsEmpty() && !NS_IsMainThread()) {
auto runnable = MakeRefPtr<DestroyRunnable>(this, std::move(mLoaders));
NS_DispatchToMainThread(runnable);
}
mWorkerRef = nullptr;
FontFaceSetImpl::Destroy();
}
@ -221,33 +191,6 @@ uint64_t FontFaceSetWorkerImpl::GetInnerWindowID() {
return mWorkerRef->Private()->WindowID();
}
void FontFaceSetWorkerImpl::FlushUserFontSet() {
RecursiveMutexAutoLock lock(mMutex);
// If there was a change to the mNonRuleFaces array, then there could
// have been a modification to the user font set.
bool modified = mNonRuleFacesDirty;
mNonRuleFacesDirty = false;
for (size_t i = 0, i_end = mNonRuleFaces.Length(); i < i_end; ++i) {
InsertNonRuleFontFace(mNonRuleFaces[i].mFontFace, modified);
}
// Remove any residual families that have no font entries.
for (auto it = mFontFamilies.Iter(); !it.Done(); it.Next()) {
if (!it.Data()->FontListLength()) {
it.Remove();
}
}
if (modified) {
IncrementGeneration(true);
mHasLoadingFontFacesIsDirty = true;
CheckLoadingStarted();
CheckLoadingFinished();
}
}
nsresult FontFaceSetWorkerImpl::StartLoad(gfxUserFontEntry* aUserFontEntry,
uint32_t aSrcIndex) {
RecursiveMutexAutoLock lock(mMutex);

View File

@ -28,8 +28,6 @@ class FontFaceSetWorkerImpl final : public FontFaceSetImpl {
already_AddRefed<URLExtraData> GetURLExtraData() override;
void FlushUserFontSet() override;
// gfxUserFontSet
nsresult StartLoad(gfxUserFontEntry* aUserFontEntry,

View File

@ -0,0 +1,16 @@
[2d.text.draw.generic.family.html]
[Test that drawing sans-serif produces the same result between canvas and OffscreenCanvas]
expected: FAIL
[Test that drawing serif produces the same result between canvas and OffscreenCanvas]
expected: FAIL
[Test that drawing cursive produces the same result between canvas and OffscreenCanvas]
expected: FAIL
[Test that drawing fantasy produces the same result between canvas and OffscreenCanvas]
expected: FAIL
[Test that drawing monospace produces the same result between canvas and OffscreenCanvas]
expected: FAIL

View File

@ -0,0 +1,17 @@
[2d.text.draw.generic.family.w.html]
expected: ERROR
[Test that drawing sans-serif produces the same result between canvas and OffscreenCanvas in a Worker]
expected: TIMEOUT
[Test that drawing serif produces the same result between canvas and OffscreenCanvas in a Worker]
expected: TIMEOUT
[Test that drawing cursive produces the same result between canvas and OffscreenCanvas in a Worker]
expected: TIMEOUT
[Test that drawing fantasy produces the same result between canvas and OffscreenCanvas in a Worker]
expected: TIMEOUT
[Test that drawing monospace produces the same result between canvas and OffscreenCanvas in a Worker]
expected: TIMEOUT

View File

@ -0,0 +1,4 @@
[2d.text.align.default.html]
[OffscreenCanvas test: 2d.text.align.default]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.align.default.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.align.invalid.html]
[OffscreenCanvas test: 2d.text.align.invalid]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.align.invalid.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.baseline.default.html]
[OffscreenCanvas test: 2d.text.baseline.default]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.baseline.default.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.baseline.invalid.html]
[OffscreenCanvas test: 2d.text.baseline.invalid]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.baseline.invalid.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,7 @@
[2d.text.draw.align.center.html]
expected:
if (os == "android") and not debug: [OK, TIMEOUT]
[textAlign center is the center of the em squares (not the bounding box)]
expected:
if (os == "android") and not debug: [FAIL, TIMEOUT]
FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.center.worker.html]
[textAlign center is the center of the em squares (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.end.ltr.html]
[textAlign end with ltr is the right edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.end.ltr.worker.html]
[textAlign end with ltr is the right edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.end.rtl.html]
[textAlign end with rtl is the left edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.end.rtl.worker.html]
[textAlign end with rtl is the left edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.left.html]
[textAlign left is the left of the first em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.left.worker.html]
[textAlign left is the left of the first em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.right.html]
[textAlign right is the right of the last em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.right.worker.html]
[textAlign right is the right of the last em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.start.ltr.html]
[textAlign start with ltr is the left edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.start.ltr.worker.html]
[textAlign start with ltr is the left edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.start.rtl.html]
[textAlign start with rtl is the right edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.align.start.rtl.worker.html]
[textAlign start with rtl is the right edge]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.alphabetic.html]
[OffscreenCanvas test: 2d.text.draw.baseline.alphabetic]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.alphabetic.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.bottom.html]
[textBaseline bottom is the bottom of the em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.bottom.worker.html]
[textBaseline bottom is the bottom of the em square (not the bounding box)]
expected: FAIL

View File

@ -1,5 +1,4 @@
[2d.text.draw.baseline.hanging.html]
[OffscreenCanvas test: 2d.text.draw.baseline.hanging]
expected:
if (os == 'android'): FAIL
expected: FAIL

View File

@ -1,5 +1,4 @@
[2d.text.draw.baseline.hanging.worker.html]
[2d]
expected:
if (os == 'android'): FAIL
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.middle.html]
[textBaseline middle is the middle of the em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.middle.worker.html]
[textBaseline middle is the middle of the em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.top.html]
[textBaseline top is the top of the em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.baseline.top.worker.html]
[textBaseline top is the top of the em square (not the bounding box)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.NaN.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.NaN.worker.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.bound.html]
[fillText handles maxWidth based on line size, not bounding box size]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.bound.worker.html]
[fillText handles maxWidth based on line size, not bounding box size]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.fontface.html]
[fillText works on @font-face fonts]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.fontface.worker.html]
[fillText works on @font-face fonts]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.negative.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.negative.worker.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,5 @@
[2d.text.draw.fill.maxWidth.small.html]
expected:
if (os == "linux") and not fission and not debug and (processor == "x86_64"): [OK, CRASH]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.small.worker.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.zero.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.maxWidth.zero.worker.html]
[fillText handles maxWidth correctly]
expected: FAIL

View File

@ -1,3 +1,5 @@
[2d.text.draw.fill.unaffected.html]
expected:
if fission and (os == "linux") and not debug: [OK, TIMEOUT]
[fillText does not start a new path or subpath]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fill.unaffected.worker.html]
[fillText does not start a new path or subpath]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fontface.html]
[OffscreenCanvas test: 2d.text.draw.fontface]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fontface.notinpage.html]
[@font-face fonts should work even if they are not used in the page]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fontface.notinpage.worker.html]
[@font-face fonts should work even if they are not used in the page]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fontface.repeat.html]
[Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fontface.repeat.worker.html]
[Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.fontface.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.space.basic.html]
[U+0020 is rendered the correct size (1em wide)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.space.basic.worker.html]
[U+0020 is rendered the correct size (1em wide)]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.space.collapse.nonspace.html]
[Non-space characters are not converted to U+0020 and collapsed]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.space.collapse.nonspace.worker.html]
[Non-space characters are not converted to U+0020 and collapsed]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.stroke.unaffected.html]
[strokeText does not start a new path or subpath]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.draw.stroke.unaffected.worker.html]
[strokeText does not start a new path or subpath]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.drawing.style.measure.direction.html]
[Measurement should follow text direction]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.drawing.style.measure.direction.worker.html]
[Measurement should follow text direction]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.drawing.style.measure.rtl.text.html]
[Measurement should follow canvas direction instead text direction]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.drawing.style.measure.rtl.text.worker.html]
[Measurement should follow canvas direction instead text direction]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.drawing.style.measure.textAlign.html]
[Measurement should be related to textAlignment]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.drawing.style.measure.textAlign.worker.html]
[Measurement should be related to textAlignment]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.default.html]
[OffscreenCanvas test: 2d.text.font.default]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.default.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.parse.basic.html]
[OffscreenCanvas test: 2d.text.font.parse.basic]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.parse.basic.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.parse.invalid.html]
[OffscreenCanvas test: 2d.text.font.parse.invalid]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.parse.invalid.worker.html]
[2d]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.parse.system.html]
[System fonts must be computed to explicit values]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.parse.system.worker.html]
[System fonts must be computed to explicit values]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.relative_size.html]
[OffscreenCanvas test: 2d.text.font.relative_size]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.font.relative_size.worker.html]
[2d]
expected: FAIL

View File

@ -1,4 +1,4 @@
[2d.text.measure.actualBoundingBox.html]
[Testing actualBoundingBox for OffscreenCanvas]
expected:
if (os == "mac"): FAIL
expected: FAIL

View File

@ -1,5 +1,4 @@
[2d.text.measure.actualBoundingBox.worker.html]
[Testing actualBoundingBox for OffscreenCanvas]
expected:
if (os == 'mac'): FAIL
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.measure.width.basic.html]
[The width of character is same as font used for OffscreenCanvas]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.measure.width.basic.worker.html]
[The width of character is same as font used for OffscreenCanvas]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.measure.width.empty.html]
[The empty string has zero width for OffscreenCanvas]
expected: FAIL

View File

@ -0,0 +1,4 @@
[2d.text.measure.width.empty.worker.html]
[The empty string has zero width for OffscreenCanvas]
expected: FAIL

View File

@ -12,6 +12,9 @@ prefs: [dom.security.featurePolicy.experimental.enabled:true, dom.security.featu
[OffscreenCanvasRenderingContext2D interface: attribute filter]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)]
expected: FAIL
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type]
expected: FAIL
@ -132,6 +135,9 @@ prefs: [dom.security.featurePolicy.experimental.enabled:true, dom.security.featu
[SVGSVGElement interface: attribute onmessageerror]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute direction]
expected: FAIL
[VideoTrack interface: attribute language]
expected: FAIL
@ -165,6 +171,9 @@ prefs: [dom.security.featurePolicy.experimental.enabled:true, dom.security.featu
[SVGSVGElement interface: attribute onlanguagechange]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute textAlign]
expected: FAIL
[SVGSVGElement interface: attribute onunhandledrejection]
expected: FAIL
@ -186,6 +195,9 @@ prefs: [dom.security.featurePolicy.experimental.enabled:true, dom.security.featu
[AudioTrackList interface: attribute onchange]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute font]
expected: FAIL
[AudioTrack interface object name]
expected: FAIL
@ -249,6 +261,9 @@ prefs: [dom.security.featurePolicy.experimental.enabled:true, dom.security.featu
[TextMetrics interface: attribute fontBoundingBoxDescent]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute textBaseline]
expected: FAIL
[SVGSVGElement interface: attribute onafterprint]
expected: FAIL
@ -315,6 +330,12 @@ prefs: [dom.security.featurePolicy.experimental.enabled:true, dom.security.featu
[FormDataEvent interface object length]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)]
expected: FAIL
[Navigator interface: operation registerProtocolHandler(DOMString, USVString)]
expected:
if (os == "mac") and not debug: [PASS, FAIL]

View File

@ -2,30 +2,84 @@
[OffscreenCanvasRenderingContext2D interface: attribute filter]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)]
expected: FAIL
[TextMetrics interface object length]
expected: FAIL
[TextMetrics interface: attribute emHeightAscent]
expected: FAIL
[TextMetrics interface: attribute ideographicBaseline]
expected: FAIL
[TextMetrics interface: attribute actualBoundingBoxAscent]
expected: FAIL
[TextMetrics interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality]
expected: FAIL
[TextMetrics interface: attribute emHeightDescent]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute direction]
expected: FAIL
[TextMetrics interface: attribute actualBoundingBoxDescent]
expected: FAIL
[TextMetrics interface: attribute actualBoundingBoxLeft]
expected: FAIL
[TextMetrics interface: existence and properties of interface object]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute font]
expected: FAIL
[TextMetrics interface: attribute hangingBaseline]
expected: FAIL
[TextMetrics interface: attribute width]
expected: FAIL
[TextMetrics interface: attribute actualBoundingBoxRight]
expected: FAIL
[TextMetrics interface: attribute fontBoundingBoxAscent]
expected: FAIL
[TextMetrics interface: attribute alphabeticBaseline]
expected: FAIL
[TextMetrics interface: existence and properties of interface prototype object]
expected: FAIL
[TextMetrics interface: attribute fontBoundingBoxDescent]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute textBaseline]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: attribute textAlign]
expected: FAIL
[TextMetrics interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[TextMetrics interface object name]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)]
expected: FAIL
[ImageData interface: attribute colorSpace]
expected: FAIL

View File

@ -14,6 +14,9 @@
[The Path interface object should be exposed.]
expected: FAIL
[The TextMetrics interface object should be exposed.]
expected: FAIL
[The CanvasPath interface object should be exposed.]
expected: FAIL
@ -25,3 +28,6 @@
[The CanvasPath interface object should be exposed.]
expected: FAIL
[The TextMetrics interface object should be exposed.]
expected: FAIL