mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 05:11:16 +00:00
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:
parent
1547adcf3d
commit
5141a24432
@ -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},
|
||||
|
@ -362,7 +362,7 @@ interface CanvasPattern {
|
||||
void setTransform(optional DOMMatrix2DInit matrix = {});
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
[Exposed=Window]
|
||||
interface TextMetrics {
|
||||
|
||||
// x-direction
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)];
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -28,8 +28,6 @@ class FontFaceSetWorkerImpl final : public FontFaceSetImpl {
|
||||
|
||||
already_AddRefed<URLExtraData> GetURLExtraData() override;
|
||||
|
||||
void FlushUserFontSet() override;
|
||||
|
||||
// gfxUserFontSet
|
||||
|
||||
nsresult StartLoad(gfxUserFontEntry* aUserFontEntry,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.align.default.html]
|
||||
[OffscreenCanvas test: 2d.text.align.default]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.align.default.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.align.invalid.html]
|
||||
[OffscreenCanvas test: 2d.text.align.invalid]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.align.invalid.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.baseline.default.html]
|
||||
[OffscreenCanvas test: 2d.text.baseline.default]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.baseline.default.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.baseline.invalid.html]
|
||||
[OffscreenCanvas test: 2d.text.baseline.invalid]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.baseline.invalid.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.end.ltr.html]
|
||||
[textAlign end with ltr is the right edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.end.ltr.worker.html]
|
||||
[textAlign end with ltr is the right edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.end.rtl.html]
|
||||
[textAlign end with rtl is the left edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.end.rtl.worker.html]
|
||||
[textAlign end with rtl is the left edge]
|
||||
expected: FAIL
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.start.ltr.html]
|
||||
[textAlign start with ltr is the left edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.start.ltr.worker.html]
|
||||
[textAlign start with ltr is the left edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.start.rtl.html]
|
||||
[textAlign start with rtl is the right edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.align.start.rtl.worker.html]
|
||||
[textAlign start with rtl is the right edge]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.baseline.alphabetic.html]
|
||||
[OffscreenCanvas test: 2d.text.draw.baseline.alphabetic]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.baseline.alphabetic.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,5 +1,4 @@
|
||||
[2d.text.draw.baseline.hanging.html]
|
||||
[OffscreenCanvas test: 2d.text.draw.baseline.hanging]
|
||||
expected:
|
||||
if (os == 'android'): FAIL
|
||||
expected: FAIL
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
[2d.text.draw.baseline.hanging.worker.html]
|
||||
[2d]
|
||||
expected:
|
||||
if (os == 'android'): FAIL
|
||||
expected: FAIL
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.NaN.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.NaN.worker.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.bound.html]
|
||||
[fillText handles maxWidth based on line size, not bounding box size]
|
||||
expected: FAIL
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.fontface.html]
|
||||
[fillText works on @font-face fonts]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.fontface.worker.html]
|
||||
[fillText works on @font-face fonts]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.negative.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.negative.worker.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -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
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.small.worker.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.zero.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.maxWidth.zero.worker.html]
|
||||
[fillText handles maxWidth correctly]
|
||||
expected: FAIL
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fill.unaffected.worker.html]
|
||||
[fillText does not start a new path or subpath]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fontface.html]
|
||||
[OffscreenCanvas test: 2d.text.draw.fontface]
|
||||
expected: FAIL
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.fontface.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.space.basic.html]
|
||||
[U+0020 is rendered the correct size (1em wide)]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.space.basic.worker.html]
|
||||
[U+0020 is rendered the correct size (1em wide)]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.space.collapse.nonspace.html]
|
||||
[Non-space characters are not converted to U+0020 and collapsed]
|
||||
expected: FAIL
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.stroke.unaffected.html]
|
||||
[strokeText does not start a new path or subpath]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.draw.stroke.unaffected.worker.html]
|
||||
[strokeText does not start a new path or subpath]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.drawing.style.measure.direction.html]
|
||||
[Measurement should follow text direction]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.drawing.style.measure.direction.worker.html]
|
||||
[Measurement should follow text direction]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.drawing.style.measure.rtl.text.html]
|
||||
[Measurement should follow canvas direction instead text direction]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.drawing.style.measure.rtl.text.worker.html]
|
||||
[Measurement should follow canvas direction instead text direction]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.drawing.style.measure.textAlign.html]
|
||||
[Measurement should be related to textAlignment]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.drawing.style.measure.textAlign.worker.html]
|
||||
[Measurement should be related to textAlignment]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.default.html]
|
||||
[OffscreenCanvas test: 2d.text.font.default]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.default.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.parse.basic.html]
|
||||
[OffscreenCanvas test: 2d.text.font.parse.basic]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.parse.basic.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.parse.invalid.html]
|
||||
[OffscreenCanvas test: 2d.text.font.parse.invalid]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.parse.invalid.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.parse.system.html]
|
||||
[System fonts must be computed to explicit values]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.parse.system.worker.html]
|
||||
[System fonts must be computed to explicit values]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.relative_size.html]
|
||||
[OffscreenCanvas test: 2d.text.font.relative_size]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.font.relative_size.worker.html]
|
||||
[2d]
|
||||
expected: FAIL
|
||||
|
@ -1,4 +1,4 @@
|
||||
[2d.text.measure.actualBoundingBox.html]
|
||||
[Testing actualBoundingBox for OffscreenCanvas]
|
||||
expected:
|
||||
if (os == "mac"): FAIL
|
||||
expected: FAIL
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
[2d.text.measure.actualBoundingBox.worker.html]
|
||||
[Testing actualBoundingBox for OffscreenCanvas]
|
||||
expected:
|
||||
if (os == 'mac'): FAIL
|
||||
expected: FAIL
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.measure.width.basic.html]
|
||||
[The width of character is same as font used for OffscreenCanvas]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.measure.width.basic.worker.html]
|
||||
[The width of character is same as font used for OffscreenCanvas]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.measure.width.empty.html]
|
||||
[The empty string has zero width for OffscreenCanvas]
|
||||
expected: FAIL
|
||||
|
@ -0,0 +1,4 @@
|
||||
[2d.text.measure.width.empty.worker.html]
|
||||
[The empty string has zero width for OffscreenCanvas]
|
||||
expected: FAIL
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user