mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
script: Implement the FontFaceSet
DOM API (#32576)
Add a skeleton implementation of FontFaceSet interface with support for resolving the `document.fonts.ready` Promise when the loading of web fonts is completed. This change exposes new failures in the web platform tests. These were ERROR before the change because `document.fonts.ready` caused a `ReferenceError` causing the tests to be aborted and they now FAIL: - /css/CSS2/linebox/vertical-align-top-bottom-001.html - /css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html - /css/css-fonts/generic-family-keywords-001.html - /css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html - /css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html - /css/css-text/text-autospace/text-autospace-ligature-001.html - /css/css-values/calc-size/calc-size-width.tentative.html These were TIMEOUT before the change because `document.fonts.ready` was a ReferenceError and the tests were asynchronous (reftest-wait). These now FAIL because the assertions are now executed after fonts are loaded: - /css/css-fonts/matching/fixed-stretch-style-over-weight.html - /css/css-fonts/matching/range-descriptor-reversed.html - /css/css-fonts/matching/stretch-distance-over-weight-distance.html - /css/css-fonts/matching/style-ranges-over-weight-direction.html - /css/css-fonts/variations/variable-box-font.html - /css/css-fonts/variations/variable-gpos-m2b.html - /css/css-fonts/variations/variable-gsub.html - /css/css-fonts/variations/variable-opsz-size-adjust.html - /css/css-position/sticky/position-sticky-change-top.html - /css/css-position/sticky/position-sticky-fixed-ancestor.html - /css/css-position/sticky/position-sticky-flexbox.html - /css/css-position/sticky/position-sticky-grid.html - /css/css-position/sticky/position-sticky-inline.html - /css/css-position/sticky/position-sticky-rendering.html - /css/css-position/sticky/position-sticky-stacking-context.html - /css/css-position/sticky/position-sticky-table-td-left.html - /css/css-position/sticky/position-sticky-table-td-right.html - /css/css-position/sticky/position-sticky-table-tfoot-bottom.html - /css/css-position/sticky/position-sticky-table-th-right.html - /css/css-position/sticky/position-sticky-table-thead-top.html - /css/css-position/sticky/position-sticky-table-tr-bottom.html - /css/css-position/sticky/position-sticky-table-tr-top.html - /css/css-position/sticky/position-sticky-writing-modes.html - /css/css-pseudo/marker-intrinsic-contribution-001.html - /css/css-text/hyphens/hyphens-character.html These tests now PASS due to this patch: * FAIL -> PASS - /html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html - /html/canvas/element/text/2d.text.measure.width.empty.html * TIMEOUT -> PASS - /css/css-fonts/variations/font-descriptor-range-reversed.html - /css/css-fonts/variations/variable-opsz.html - /css/css-position/sticky/position-sticky-table-th-left.html * ERROR -> PASS - /css/css-fonts/generic-family-keywords-002.html - /css/css-fonts/generic-family-keywords-003.html * These two tests only PASS in Layout 2020: - /css/CSS2/positioning/inline-static-position-001.html - /css/cssom-view/getBoundingClientRect-empty-inline.html These two tests have subtests that PASS intermittenttly: - /fetch/metadata/generated/css-font-face.sub.tentative.html - /css/css-fonts/generic-family-keywords-001.html These tests are new TIMEOUTS that used to FAIL because `documents.fonts.ready` was undefined: - /resource-timing/TAO-match.html - /resource-timing/content-type.html - /resource-timing/nextHopProtocol-is-tao-protected.https.html The failure in `/resize-observer/change-layout-in-error.html` could be due to an issue in the ResizeObserver implementation that is now exposed with this change, but this needs more investigation. Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
7ea894774f
commit
a730469b70
95 changed files with 642 additions and 212 deletions
|
@ -687,13 +687,11 @@ impl LayoutThread {
|
|||
|
||||
let locked_script_channel = Mutex::new(self.script_chan.clone());
|
||||
let pipeline_id = self.id;
|
||||
let web_font_finished_loading_callback = move |succeeded: bool| {
|
||||
if succeeded {
|
||||
let _ = locked_script_channel
|
||||
.lock()
|
||||
.unwrap()
|
||||
.send(ConstellationControlMsg::WebFontLoaded(pipeline_id));
|
||||
}
|
||||
let web_font_finished_loading_callback =
|
||||
move |succeeded: bool| {
|
||||
let _ = locked_script_channel.lock().unwrap().send(
|
||||
ConstellationControlMsg::WebFontLoaded(pipeline_id, succeeded),
|
||||
);
|
||||
};
|
||||
|
||||
// Find all font-face rules and notify the FontContext of them.
|
||||
|
@ -707,9 +705,10 @@ impl LayoutThread {
|
|||
);
|
||||
|
||||
if self.debug.load_webfonts_synchronously && newly_loading_font_count > 0 {
|
||||
// TODO: Handle failure in web font loading
|
||||
let _ = self
|
||||
.script_chan
|
||||
.send(ConstellationControlMsg::WebFontLoaded(self.id));
|
||||
.send(ConstellationControlMsg::WebFontLoaded(self.id, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -602,11 +602,12 @@ impl LayoutThread {
|
|||
let locked_script_channel = Mutex::new(self.script_chan.clone());
|
||||
let pipeline_id = self.id;
|
||||
let web_font_finished_loading_callback = move |succeeded: bool| {
|
||||
if succeeded {
|
||||
let _ = locked_script_channel
|
||||
.lock()
|
||||
.send(ConstellationControlMsg::WebFontLoaded(pipeline_id));
|
||||
}
|
||||
.send(ConstellationControlMsg::WebFontLoaded(
|
||||
pipeline_id,
|
||||
succeeded,
|
||||
));
|
||||
};
|
||||
|
||||
// Find all font-face rules and notify the font cache of them.
|
||||
|
@ -620,9 +621,10 @@ impl LayoutThread {
|
|||
);
|
||||
|
||||
if self.debug.load_webfonts_synchronously && newly_loading_font_count > 0 {
|
||||
// TODO: Handle failure in web font loading
|
||||
let _ = self
|
||||
.script_chan
|
||||
.send(ConstellationControlMsg::WebFontLoaded(self.id));
|
||||
.send(ConstellationControlMsg::WebFontLoaded(self.id, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -121,6 +121,7 @@ use crate::dom::element::{
|
|||
use crate::dom::event::{Event, EventBubbles, EventCancelable, EventDefault, EventStatus};
|
||||
use crate::dom::eventtarget::EventTarget;
|
||||
use crate::dom::focusevent::FocusEvent;
|
||||
use crate::dom::fontfaceset::FontFaceSet;
|
||||
use crate::dom::globalscope::GlobalScope;
|
||||
use crate::dom::gpucanvascontext::{GPUCanvasContext, WebGPUContextId};
|
||||
use crate::dom::hashchangeevent::HashChangeEvent;
|
||||
|
@ -466,6 +467,9 @@ pub struct Document {
|
|||
/// - <https://bugzilla.mozilla.org/show_bug.cgi?id=1596992>
|
||||
/// - <https://github.com/w3c/csswg-drafts/issues/4518>
|
||||
resize_observers: DomRefCell<Vec<Dom<ResizeObserver>>>,
|
||||
/// The set of all fonts loaded by this document.
|
||||
/// <https://drafts.csswg.org/css-font-loading/#font-face-source>
|
||||
fonts: MutNullableDom<FontFaceSet>,
|
||||
}
|
||||
|
||||
#[derive(JSTraceable, MallocSizeOf)]
|
||||
|
@ -3291,6 +3295,7 @@ impl Document {
|
|||
pending_compositor_events: Default::default(),
|
||||
mouse_move_event_index: Default::default(),
|
||||
resize_observers: Default::default(),
|
||||
fonts: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5364,6 +5369,12 @@ impl DocumentMethods for Document {
|
|||
None
|
||||
}
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/css-font-loading/#font-face-source
|
||||
fn Fonts(&self) -> DomRoot<FontFaceSet> {
|
||||
self.fonts
|
||||
.or_init(|| FontFaceSet::new(&*self.global(), None))
|
||||
}
|
||||
}
|
||||
|
||||
fn update_with_current_time_ms(marker: &Cell<u64>) {
|
||||
|
|
50
components/script/dom/fontfaceset.rs
Normal file
50
components/script/dom/fontfaceset.rs
Normal file
|
@ -0,0 +1,50 @@
|
|||
/* 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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use std::rc::Rc;
|
||||
|
||||
use dom_struct::dom_struct;
|
||||
use js::rust::HandleObject;
|
||||
|
||||
use crate::dom::bindings::codegen::Bindings::FontFaceSetBinding::FontFaceSetMethods;
|
||||
use crate::dom::bindings::reflector::reflect_dom_object_with_proto;
|
||||
use crate::dom::bindings::root::DomRoot;
|
||||
use crate::dom::eventtarget::EventTarget;
|
||||
use crate::dom::globalscope::GlobalScope;
|
||||
use crate::dom::promise::Promise;
|
||||
use crate::realms::enter_realm;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct FontFaceSet {
|
||||
target: EventTarget,
|
||||
#[ignore_malloc_size_of = "Rc"]
|
||||
promise: Rc<Promise>,
|
||||
}
|
||||
|
||||
impl FontFaceSet {
|
||||
pub fn new_inherited(global: &GlobalScope) -> Self {
|
||||
FontFaceSet {
|
||||
target: EventTarget::new_inherited(),
|
||||
promise: Promise::new(global),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(global: &GlobalScope, proto: Option<HandleObject>) -> DomRoot<Self> {
|
||||
reflect_dom_object_with_proto(Box::new(FontFaceSet::new_inherited(global)), global, proto)
|
||||
}
|
||||
|
||||
pub fn fulfill_ready_promise_if_needed(&self) {
|
||||
if !self.promise.is_fulfilled() {
|
||||
let _ac = enter_realm(&*self.promise);
|
||||
self.promise.resolve_native(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FontFaceSetMethods for FontFaceSet {
|
||||
/// https://drafts.csswg.org/css-font-loading/#dom-fontfaceset-ready
|
||||
fn Ready(&self) -> Rc<Promise> {
|
||||
self.promise.clone()
|
||||
}
|
||||
}
|
|
@ -313,6 +313,7 @@ pub mod filelist;
|
|||
pub mod filereader;
|
||||
pub mod filereadersync;
|
||||
pub mod focusevent;
|
||||
pub mod fontfaceset;
|
||||
pub mod formdata;
|
||||
pub mod formdataevent;
|
||||
pub mod gainnode;
|
||||
|
|
49
components/script/dom/webidls/FontFaceSet.webidl
Normal file
49
components/script/dom/webidls/FontFaceSet.webidl
Normal file
|
@ -0,0 +1,49 @@
|
|||
/* 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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/*
|
||||
dictionary FontFaceSetLoadEventInit : EventInit {
|
||||
sequence<FontFace> fontfaces = [];
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface FontFaceSetLoadEvent : Event {
|
||||
constructor(DOMString type, optional FontFaceSetLoadEventInit eventInitDict = {});
|
||||
// WebIDL needs to support FrozenArray & SameObject
|
||||
// [SameObject] readonly attribute FrozenArray<FontFace> fontfaces;
|
||||
readonly attribute any fontfaces;
|
||||
};
|
||||
|
||||
enum FontFaceSetLoadStatus { "loading" , "loaded" };
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-font-loading/#FontFaceSet-interface
|
||||
[Exposed=(Window,Worker)]
|
||||
interface FontFaceSet : EventTarget {
|
||||
// constructor(sequence<FontFace> initialFaces);
|
||||
|
||||
// setlike<FontFace>;
|
||||
// FontFaceSet add(FontFace font);
|
||||
// boolean delete(FontFace font);
|
||||
// undefined clear();
|
||||
|
||||
// events for when loading state changes
|
||||
// attribute EventHandler onloading;
|
||||
// attribute EventHandler onloadingdone;
|
||||
// attribute EventHandler onloadingerror;
|
||||
|
||||
// check and start loads if appropriate
|
||||
// and fulfill promise when all loads complete
|
||||
// Promise<sequence<FontFace>> load(DOMString font, optional DOMString text = " ");
|
||||
|
||||
// return whether all fonts in the fontlist are loaded
|
||||
// (does not initiate load if not available)
|
||||
// boolean check(DOMString font, optional DOMString text = " ");
|
||||
|
||||
// async notification that font loading and layout operations are done
|
||||
readonly attribute Promise<FontFaceSet> ready;
|
||||
|
||||
// loading state, "loading" while one or more fonts loading, "loaded" otherwise
|
||||
// readonly attribute FontFaceSetLoadStatus status;
|
||||
};
|
11
components/script/dom/webidls/FontFaceSource.webidl
Normal file
11
components/script/dom/webidls/FontFaceSource.webidl
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* 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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// https://drafts.csswg.org/css-font-loading/#font-face-source
|
||||
interface mixin FontFaceSource {
|
||||
readonly attribute FontFaceSet fonts;
|
||||
};
|
||||
|
||||
Document includes FontFaceSource;
|
||||
// WorkerGlobalScope includes FontFaceSource;
|
|
@ -1952,6 +1952,10 @@ impl Window {
|
|||
/// may happen in the only case a query reflow may bail out, that is, if the
|
||||
/// viewport size is not present). See #11223 for an example of that.
|
||||
pub fn reflow(&self, reflow_goal: ReflowGoal, reason: ReflowReason) -> bool {
|
||||
// Fetch the pending web fonts before layout, in case a font loads during
|
||||
// the layout.
|
||||
let pending_web_fonts = self.layout.borrow().waiting_for_web_fonts_to_load();
|
||||
|
||||
self.Document().ensure_safe_to_run_script_or_layout();
|
||||
let for_display = reflow_goal == ReflowGoal::Full;
|
||||
|
||||
|
@ -1980,6 +1984,24 @@ impl Window {
|
|||
);
|
||||
}
|
||||
|
||||
let document = self.Document();
|
||||
let font_face_set = document.Fonts();
|
||||
let is_ready_state_complete = document.ReadyState() == DocumentReadyState::Complete;
|
||||
|
||||
// From https://drafts.csswg.org/css-font-loading/#font-face-set-ready:
|
||||
// > A FontFaceSet is pending on the environment if any of the following are true:
|
||||
// > - the document is still loading
|
||||
// > - the document has pending stylesheet requests
|
||||
// > - the document has pending layout operations which might cause the user agent to request
|
||||
// > a font, or which depend on recently-loaded fonts
|
||||
//
|
||||
// Thus, we are queueing promise resolution here. This reflow should have been triggered by
|
||||
// a "rendering opportunity" in `ScriptThread::handle_web_font_loaded, which should also
|
||||
// make sure a microtask checkpoint happens, triggering the promise callback.
|
||||
if !pending_web_fonts && is_ready_state_complete {
|
||||
font_face_set.fulfill_ready_promise_if_needed();
|
||||
}
|
||||
|
||||
// If writing a screenshot, check if the script has reached a state
|
||||
// where it's safe to write the image. This means that:
|
||||
// 1) The reflow is for display (otherwise it could be a query)
|
||||
|
@ -1989,8 +2011,6 @@ impl Window {
|
|||
// that this pipeline is ready to write the image (from the script thread
|
||||
// perspective at least).
|
||||
if self.prepare_for_screenshot && for_display {
|
||||
let document = self.Document();
|
||||
|
||||
// Checks if the html element has reftest-wait attribute present.
|
||||
// See http://testthewebforward.org/docs/reftests.html
|
||||
let html_element = document.GetDocumentElement();
|
||||
|
@ -1998,9 +2018,7 @@ impl Window {
|
|||
elem.has_class(&atom!("reftest-wait"), CaseSensitivity::CaseSensitive)
|
||||
});
|
||||
|
||||
let pending_web_fonts = self.layout.borrow().waiting_for_web_fonts_to_load();
|
||||
let has_sent_idle_message = self.has_sent_idle_message.get();
|
||||
let is_ready_state_complete = document.ReadyState() == DocumentReadyState::Complete;
|
||||
let pending_images = !self.pending_layout_images.borrow().is_empty();
|
||||
|
||||
if !has_sent_idle_message &&
|
||||
|
|
|
@ -2125,7 +2125,7 @@ impl ScriptThread {
|
|||
FocusIFrame(id, ..) => Some(id),
|
||||
WebDriverScriptCommand(id, ..) => Some(id),
|
||||
TickAllAnimations(id, ..) => Some(id),
|
||||
WebFontLoaded(id) => Some(id),
|
||||
WebFontLoaded(id, ..) => Some(id),
|
||||
DispatchIFrameLoadEvent {
|
||||
target: _,
|
||||
parent: id,
|
||||
|
@ -2325,8 +2325,8 @@ impl ScriptThread {
|
|||
ConstellationControlMsg::WebDriverScriptCommand(pipeline_id, msg) => {
|
||||
self.handle_webdriver_msg(pipeline_id, msg)
|
||||
},
|
||||
ConstellationControlMsg::WebFontLoaded(pipeline_id) => {
|
||||
self.handle_web_font_loaded(pipeline_id)
|
||||
ConstellationControlMsg::WebFontLoaded(pipeline_id, success) => {
|
||||
self.handle_web_font_loaded(pipeline_id, success)
|
||||
},
|
||||
ConstellationControlMsg::DispatchIFrameLoadEvent {
|
||||
target: browsing_context_id,
|
||||
|
@ -3301,7 +3301,7 @@ impl ScriptThread {
|
|||
}
|
||||
|
||||
/// Handles a Web font being loaded. Does nothing if the page no longer exists.
|
||||
fn handle_web_font_loaded(&self, pipeline_id: PipelineId) {
|
||||
fn handle_web_font_loaded(&self, pipeline_id: PipelineId, _success: bool) {
|
||||
let Some(document) = self.documents.borrow().find_document(pipeline_id) else {
|
||||
warn!("Web font loaded in closed pipeline {}.", pipeline_id);
|
||||
return;
|
||||
|
@ -3310,6 +3310,12 @@ impl ScriptThread {
|
|||
// TODO: This should only dirty nodes that are waiting for a web font to finish loading!
|
||||
document.dirty_all_nodes();
|
||||
document.window().add_pending_reflow();
|
||||
|
||||
// This is required because the handlers added to the promise exposed at
|
||||
// `document.fonts.ready` are run by the event loop only when it performs a microtask
|
||||
// checkpoint. Without the call below, this never happens and the promise is 'stuck' waiting
|
||||
// to be resolved until another event forces a microtask checkpoint.
|
||||
self.rendering_opportunity(pipeline_id);
|
||||
}
|
||||
|
||||
/// Handles a worklet being loaded. Does nothing if the page no longer exists.
|
||||
|
|
|
@ -347,7 +347,7 @@ pub enum ConstellationControlMsg {
|
|||
TickAllAnimations(PipelineId, AnimationTickType),
|
||||
/// Notifies the script thread that a new Web font has been loaded, and thus the page should be
|
||||
/// reflowed.
|
||||
WebFontLoaded(PipelineId),
|
||||
WebFontLoaded(PipelineId, bool /* success */),
|
||||
/// Cause a `load` event to be dispatched at the appropriate iframe element.
|
||||
DispatchIFrameLoadEvent {
|
||||
/// The frame that has been marked as loaded.
|
||||
|
|
|
@ -1,5 +1,39 @@
|
|||
[vertical-align-top-bottom-001.html]
|
||||
expected: ERROR
|
||||
[vertical-align-top-bottom-001]
|
||||
expected: FAIL
|
||||
|
||||
[text-top+bottom]
|
||||
expected: FAIL
|
||||
|
||||
[text-bottom+bottom]
|
||||
expected: FAIL
|
||||
|
||||
[text-top+]
|
||||
expected: FAIL
|
||||
|
||||
[text-top+top]
|
||||
expected: FAIL
|
||||
|
||||
[text-top+text-top]
|
||||
expected: FAIL
|
||||
|
||||
[text-top+text-bottom]
|
||||
expected: FAIL
|
||||
|
||||
[text-bottom+]
|
||||
expected: FAIL
|
||||
|
||||
[text-bottom+top]
|
||||
expected: FAIL
|
||||
|
||||
[text-bottom+text-top]
|
||||
expected: FAIL
|
||||
|
||||
[bottom+]
|
||||
expected: FAIL
|
||||
|
||||
[bottom+text-top]
|
||||
expected: FAIL
|
||||
|
||||
[bottom+text-bottom]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
[inline-static-position-001.html]
|
||||
expected: ERROR
|
||||
[CSS Test: Static positions and line wrapping]
|
||||
[.tests .abs 1]
|
||||
expected: FAIL
|
||||
|
||||
[.tests .abs 2]
|
||||
expected: FAIL
|
||||
|
||||
[.tests .abs 4]
|
||||
expected: FAIL
|
||||
|
||||
[.tests .abs 5]
|
||||
expected: FAIL
|
||||
|
||||
[.tests .abs 6]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
[flex-one-sets-flex-basis-to-zero-px.html]
|
||||
expected: ERROR
|
||||
[.flexbox 3]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 4]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 5]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 6]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,27 @@
|
|||
[generic-family-keywords-001.html]
|
||||
expected: ERROR
|
||||
[@font-face matching for quoted and unquoted serif]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted sans-serif]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted cursive]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted fantasy]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted monospace]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted system-ui]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted emoji]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted math]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted ui-rounded]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[generic-family-keywords-002.html]
|
||||
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
|||
[generic-family-keywords-003.html]
|
||||
expected: ERROR
|
|
@ -1,3 +1,3 @@
|
|||
[fixed-stretch-style-over-weight.html]
|
||||
bug: https://github.com/servo/servo/issues/21565
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[range-descriptor-reversed.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[stretch-distance-over-weight-distance.html]
|
||||
bug: https://github.com/servo/servo/issues/21565
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[style-ranges-over-weight-direction.html]
|
||||
bug: https://github.com/servo/servo/issues/21565
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[math-script-level-002.tentative.html]
|
||||
expected: ERROR
|
||||
[<integer> ; starting from level 50]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -17,7 +16,3 @@
|
|||
|
||||
[add(<integer>)]
|
||||
expected: FAIL
|
||||
|
||||
[math-script-level]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
[math-script-level-004.tentative.html]
|
||||
expected: ERROR
|
||||
[math-script-level]
|
||||
[scriptPercentScaleDown=80, scriptScriptPercentScaleDown=40]
|
||||
expected: FAIL
|
||||
|
||||
[scriptPercentScaleDown=0, scriptScriptPercentScaleDown=40]
|
||||
expected: FAIL
|
||||
|
||||
[scriptPercentScaleDown=80, scriptScriptPercentScaleDown=0]
|
||||
expected: FAIL
|
||||
|
||||
[No MATH table]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[test_datafont_same_origin.html]
|
||||
expected: TIMEOUT
|
||||
[Test if data:font would be treated same origin.]
|
||||
expected: FAIL
|
||||
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[font-descriptor-range-reversed.html]
|
||||
expected: TIMEOUT
|
|
@ -1,3 +1,3 @@
|
|||
[variable-box-font.html]
|
||||
bug: https://github.com/servo/servo/issues/21565
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[variable-gpos-m2b.html]
|
||||
bug: https://github.com/servo/servo/issues/21565
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[variable-gsub.html]
|
||||
bug: https://github.com/servo/servo/issues/21565
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[variable-opsz-size-adjust.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[variable-opsz.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-change-top.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-fixed-ancestor.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[position-sticky-flexbox.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[position-sticky-rendering.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[position-sticky-stacking-context.html]
|
||||
expected: FAIL
|
|
@ -1,2 +1,21 @@
|
|||
[marker-intrinsic-contribution-001.html]
|
||||
expected: ERROR
|
||||
[Intrinsic contribution of inside decimal marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of outside string marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of outside symbol marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of inside content marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of outside content marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of outside decimal marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of inside string marker]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[hyphens-character.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
[text-autospace-ligature-001.html]
|
||||
expected: ERROR
|
||||
[text-autospace not implemented]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,57 @@
|
|||
[calc-size-width.tentative.html]
|
||||
expected: ERROR
|
||||
[resolved width for width: calc-size(any, 357px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(any, 31%)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(max-content, 31%)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(fit-content, 72px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(37px, 93px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(83px, size * 3)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(min-content, size / 2)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(max-content, size * 1.2)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(fit-content, size / 4 + 30px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(stretch, size / 2 - 10%)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(30px, 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(any, 30px), 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(2in, 30px), 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(min-content, 30px), 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(min-content, size), size)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(auto, size * 0.6 + 23px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: with container width 300px]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: with container width 500px]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: with container width 700px]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
[getBoundingClientRect-empty-inline.html]
|
||||
expected: ERROR
|
||||
[getBoundingClientRect-empty-inline]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,40 +1,22 @@
|
|||
[css-font-face.sub.tentative.html]
|
||||
[sec-fetch-site - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-site - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-site - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-mode - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-user - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-user - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-user - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[2d.text.draw.fill.maxWidth.fontface.html]
|
||||
[fillText works on @font-face fonts]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.text.measure.width.empty.html]
|
||||
[The empty string has zero width]
|
||||
expected: FAIL
|
|
@ -13,37 +13,37 @@
|
|||
expected: FAIL
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a wildcard. (font)]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value list contains a null origin. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains multiple wildcards. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value contains only the uppercased origin. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value contains the origin, a space, then a wildcard. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header is not present. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value contains only the origin. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value contains only a wildcard. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a case-sensitive match. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains the origin and a wildcard. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a wildcard. (iframe)]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value list contains a null origin. (iframe)]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -46,37 +46,37 @@
|
|||
expected: FAIL
|
||||
|
||||
[This test validates the content-type of resources. 15]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[This test validates the content-type of resources. 16]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 17]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 18]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 19]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 20]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 21]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 22]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 23]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 24]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 25]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 26]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[nextHopProtocol-is-tao-protected.https.html]
|
||||
expected: TIMEOUT
|
||||
[Add TAO-less iframe from remote origin. Make sure nextHopProtocol is the empty string]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
@ -21,19 +22,31 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fetch TAO-less object from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Fetch TAO'd object from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd script from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd stylesheet from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd synchronous xhr from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd asynchronous xhr from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less script from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less stylesheet from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less synchronous xhr from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less asynchronous xhr from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
[vertical-align-top-bottom-001.html]
|
||||
expected: ERROR
|
||||
[text-top+bottom]
|
||||
expected: FAIL
|
||||
|
||||
[text-bottom+bottom]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[inline-static-position-001.html]
|
||||
expected: ERROR
|
|
@ -1,2 +1,12 @@
|
|||
[flex-one-sets-flex-basis-to-zero-px.html]
|
||||
expected: ERROR
|
||||
[.flexbox 3]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 4]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 5]
|
||||
expected: FAIL
|
||||
|
||||
[.flexbox 6]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,39 @@
|
|||
[generic-family-keywords-001.html]
|
||||
expected: ERROR
|
||||
[@font-face matching for quoted and unquoted serif]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted sans-serif]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted cursive]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted emoji]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted fantasy]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted monospace]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted fangsong]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted ui-serif]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted ui-sans-serif]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted ui-monospace]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted ui-rounded]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted system-ui]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[@font-face matching for quoted and unquoted math]
|
||||
expected: [FAIL, PASS]
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[generic-family-keywords-002.html]
|
||||
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
|||
[generic-family-keywords-003.html]
|
||||
expected: ERROR
|
|
@ -1,2 +1,2 @@
|
|||
[fixed-stretch-style-over-weight.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[range-descriptor-reversed.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[stretch-distance-over-weight-distance.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[style-ranges-over-weight-direction.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,18 @@
|
|||
[math-script-level-002.tentative.html]
|
||||
expected: ERROR
|
||||
[auto]
|
||||
expected: FAIL
|
||||
|
||||
[auto ; starting from level 7]
|
||||
expected: FAIL
|
||||
|
||||
[add(<integer>)]
|
||||
expected: FAIL
|
||||
|
||||
[add(<integer>) ; starting from level 3]
|
||||
expected: FAIL
|
||||
|
||||
[<integer>]
|
||||
expected: FAIL
|
||||
|
||||
[<integer> ; starting from level 50]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
[math-script-level-004.tentative.html]
|
||||
expected: ERROR
|
||||
[scriptPercentScaleDown=80, scriptScriptPercentScaleDown=40]
|
||||
expected: FAIL
|
||||
|
||||
[scriptPercentScaleDown=0, scriptScriptPercentScaleDown=40]
|
||||
expected: FAIL
|
||||
|
||||
[scriptPercentScaleDown=80, scriptScriptPercentScaleDown=0]
|
||||
expected: FAIL
|
||||
|
||||
[No MATH table]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
[test_datafont_same_origin.html]
|
||||
expected: TIMEOUT
|
||||
[Test if data:font would be treated same origin.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[font-descriptor-range-reversed.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +1,2 @@
|
|||
[variable-box-font.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[variable-gpos-m2b.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[variable-gsub.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[variable-opsz-size-adjust.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[variable-opsz.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-change-top.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-fixed-ancestor.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-flexbox.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-grid.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-inline.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-rendering.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-stacking-context.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-td-left.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-td-right.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-tfoot-bottom.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[position-sticky-table-th-left.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-th-right.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-thead-top.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-tr-bottom.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-table-tr-top.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[position-sticky-writing-modes.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
[marker-intrinsic-contribution-001.html]
|
||||
expected: ERROR
|
||||
[Intrinsic contribution of inside symbol marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of inside decimal marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of inside string marker]
|
||||
expected: FAIL
|
||||
|
||||
[Intrinsic contribution of inside content marker]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[hyphens-character.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
[text-autospace-ligature-001.html]
|
||||
expected: ERROR
|
||||
[text-autospace not implemented]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +1,57 @@
|
|||
[calc-size-width.tentative.html]
|
||||
expected: ERROR
|
||||
[resolved width for width: calc-size(any, 357px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(any, 31%)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(max-content, 31%)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(fit-content, 72px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(37px, 93px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(83px, size * 3)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(min-content, size / 2)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(max-content, size * 1.2)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(fit-content, size / 4 + 30px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(stretch, size / 2 - 10%)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(30px, 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(any, 30px), 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(2in, 30px), 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(min-content, 30px), 15em)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(calc-size(min-content, size), size)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: calc-size(auto, size * 0.6 + 23px)]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: with container width 300px]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: with container width 500px]
|
||||
expected: FAIL
|
||||
|
||||
[resolved width for width: with container width 700px]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[getBoundingClientRect-empty-inline.html]
|
||||
expected: ERROR
|
|
@ -1,45 +1,45 @@
|
|||
[css-font-face.sub.tentative.html]
|
||||
[sec-fetch-site - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-site - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-site - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-mode - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-user - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-user - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-user - Not sent to non-trustworthy cross-site destination]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-site - HTTPS upgrade]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[sec-fetch-site - HTTPS downgrade-upgrade]
|
||||
expected: FAIL
|
||||
expected: [FAIL, PASS]
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[2d.text.draw.fill.maxWidth.fontface.html]
|
||||
[fillText works on @font-face fonts]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.text.measure.width.empty.html]
|
||||
[The empty string has zero width]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[change-layout-in-error.html]
|
||||
[Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached.]
|
||||
expected: FAIL
|
|
@ -13,37 +13,37 @@
|
|||
expected: FAIL
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a wildcard. (font)]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value list contains a null origin. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains multiple wildcards. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value contains only the uppercased origin. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value contains the origin, a space, then a wildcard. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header is not present. (font)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value contains only the origin. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value contains only a wildcard. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a case-sensitive match. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains the origin and a wildcard. (iframe)]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a wildcard. (iframe)]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[The timing allow check algorithm will fail when the Timing-Allow-Origin header value list contains a null origin. (iframe)]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -46,37 +46,37 @@
|
|||
expected: FAIL
|
||||
|
||||
[This test validates the content-type of resources. 15]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[This test validates the content-type of resources. 16]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 17]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 18]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 19]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 20]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 21]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 22]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 23]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 24]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 25]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the content-type of resources. 26]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[nextHopProtocol-is-tao-protected.https.html]
|
||||
expected: TIMEOUT
|
||||
[Add TAO-less iframe from remote origin. Make sure nextHopProtocol is the empty string]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
@ -21,19 +22,31 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fetch TAO-less object from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Fetch TAO'd object from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd script from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd stylesheet from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd synchronous xhr from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO'd asynchronous xhr from remote origin. Make sure nextHopProtocol is not the empty string.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less script from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less stylesheet from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less synchronous xhr from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
||||
[Fetch TAO-less asynchronous xhr from remote origin. Make sure nextHopProtocol is the empty string.]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -13417,14 +13417,14 @@
|
|||
]
|
||||
],
|
||||
"interfaces.html": [
|
||||
"063495d90f464f161c52a8d099a298e914b9b082",
|
||||
"6f8b7beaa36046d8ade72a13aee82edd4fabe314",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"interfaces.worker.js": [
|
||||
"59d4aa1855fbf281736b28581fbc519a847c8a0d",
|
||||
"2f048af52b8f807c24cf2b9f6d68e42f1eab2abd",
|
||||
[
|
||||
"mozilla/interfaces.worker.html",
|
||||
{}
|
||||
|
|
|
@ -86,6 +86,7 @@ test_interfaces([
|
|||
"FileList",
|
||||
"FileReader",
|
||||
"FocusEvent",
|
||||
"FontFaceSet",
|
||||
"FormData",
|
||||
"FormDataEvent",
|
||||
"GainNode",
|
||||
|
|
|
@ -33,6 +33,7 @@ test_interfaces([
|
|||
"FileList",
|
||||
"FileReader",
|
||||
"FileReaderSync",
|
||||
"FontFaceSet",
|
||||
"FormData",
|
||||
"Headers",
|
||||
"History",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue