Bug 1777287 - Integrate FontFaceSet with OffscreenCanvas on workers. r=emilio,jfkthame

Differential Revision: https://phabricator.services.mozilla.com/D150640
This commit is contained in:
Andrew Osmond 2022-07-08 17:34:47 +00:00
Родитель 325d34f8d7
Коммит 2104bee398
90 изменённых файлов: 38 добавлений и 436 удалений

Просмотреть файл

@ -6,6 +6,8 @@
#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"
@ -125,6 +127,17 @@ 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.
@ -134,7 +147,7 @@ bool OffscreenCanvasRenderingContext2D::SetFontInternal(const nsACString& aFont,
gfxFontStyle fontStyle;
float size = 0.0f;
if (!ServoCSSParser::ParseFontShorthandForMatching(
aFont, nullptr, list, fontStyle.style, fontStyle.stretch,
aFont, urlExtraData, list, fontStyle.style, fontStyle.stretch,
fontStyle.weight, &size)) {
return false;
}
@ -144,15 +157,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
nullptr, // aUserFontSet
1.0); // aDevToCssSize
gfxFontGroup* fontGroup = gfxPlatform::GetPlatform()->CreateFontGroup(
nullptr, // aPresContext
list, // aFontFamilyList
&fontStyle, // aStyle
nullptr, // aLanguage
false, // aExplicitLanguage
nullptr, // aTextPerf
fontFaceSetImpl, // aUserFontSet
1.0); // aDevToCssSize
CurrentState().fontGroup = fontGroup;
SerializeFontForCanvas(list, fontStyle, CurrentState().font);
CurrentState().fontFont = nsFont(StyleFontFamily{list, false, false},

Просмотреть файл

@ -305,6 +305,8 @@ var interfaceNamesInGlobalScope = [
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextEncoder",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextMetrics",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TransformStream",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TransformStreamDefaultController",

Просмотреть файл

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

Просмотреть файл

@ -24,7 +24,9 @@ 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;

Просмотреть файл

@ -289,6 +289,8 @@ var interfaceNamesInGlobalScope = [
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "TextEncoder", insecureContext: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "TextMetrics", insecureContext: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "TransformStream", insecureContext: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{

Просмотреть файл

@ -1,16 +0,0 @@
[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

Просмотреть файл

@ -1,17 +0,0 @@
[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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -1,7 +0,0 @@
[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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -1,5 +0,0 @@
[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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -1,5 +1,3 @@
[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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -1,4 +0,0 @@
[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

Просмотреть файл

@ -1,4 +0,0 @@
[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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -12,9 +12,6 @@ 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
@ -135,9 +132,6 @@ 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
@ -171,9 +165,6 @@ 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
@ -195,9 +186,6 @@ 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
@ -261,9 +249,6 @@ 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
@ -330,12 +315,6 @@ 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,84 +2,30 @@
[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,9 +14,6 @@
[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
@ -28,6 +25,3 @@
[The CanvasPath interface object should be exposed.]
expected: FAIL
[The TextMetrics interface object should be exposed.]
expected: FAIL