mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Merge branch 'master' into issue#29773
This commit is contained in:
commit
05e1e0ea9e
482 changed files with 13334 additions and 2644 deletions
571
ports/libmlservo/src/lib.rs
Normal file
571
ports/libmlservo/src/lib.rs
Normal file
|
@ -0,0 +1,571 @@
|
||||||
|
/* 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 egl::egl::EGLContext;
|
||||||
|
use egl::egl::EGLDisplay;
|
||||||
|
use egl::egl::EGLSurface;
|
||||||
|
use egl::egl::MakeCurrent;
|
||||||
|
use egl::egl::SwapBuffers;
|
||||||
|
use libc::{dup2, pipe, read};
|
||||||
|
use log::info;
|
||||||
|
use log::warn;
|
||||||
|
use rust_webvr::api::MagicLeapVRService;
|
||||||
|
use servo::euclid::Scale;
|
||||||
|
use servo::keyboard_types::Key;
|
||||||
|
use servo::servo_url::ServoUrl;
|
||||||
|
use servo::webrender_api::units::{DeviceIntRect, DevicePixel, DevicePoint, LayoutPixel};
|
||||||
|
use simpleservo::{self, deinit, gl_glue, MouseButton, ServoGlue, SERVO};
|
||||||
|
use simpleservo::{
|
||||||
|
Coordinates, EventLoopWaker, HostTrait, InitOptions, InputMethodType, PromptResult,
|
||||||
|
VRInitOptions,
|
||||||
|
};
|
||||||
|
use smallvec::SmallVec;
|
||||||
|
use std::cell::Cell;
|
||||||
|
use std::ffi::CStr;
|
||||||
|
use std::ffi::CString;
|
||||||
|
use std::io::Write;
|
||||||
|
use std::os::raw::c_char;
|
||||||
|
use std::os::raw::c_int;
|
||||||
|
use std::os::raw::c_void;
|
||||||
|
use std::rc::Rc;
|
||||||
|
use std::thread;
|
||||||
|
use std::time::Duration;
|
||||||
|
use std::time::Instant;
|
||||||
|
use webxr::magicleap::MagicLeapDiscovery;
|
||||||
|
|
||||||
|
#[repr(u32)]
|
||||||
|
pub enum MLLogLevel {
|
||||||
|
Fatal = 0,
|
||||||
|
Error = 1,
|
||||||
|
Warning = 2,
|
||||||
|
Info = 3,
|
||||||
|
Debug = 4,
|
||||||
|
Verbose = 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
pub enum MLKeyType {
|
||||||
|
kNone,
|
||||||
|
kCharacter,
|
||||||
|
kBackspace,
|
||||||
|
kShift,
|
||||||
|
kSpeechToText,
|
||||||
|
kPageEmoji,
|
||||||
|
kPageLowerLetters,
|
||||||
|
kPageNumericSymbols,
|
||||||
|
kCancel,
|
||||||
|
kSubmit,
|
||||||
|
kPrevious,
|
||||||
|
kNext,
|
||||||
|
kClear,
|
||||||
|
kClose,
|
||||||
|
kEnter,
|
||||||
|
kCustom1,
|
||||||
|
kCustom2,
|
||||||
|
kCustom3,
|
||||||
|
kCustom4,
|
||||||
|
kCustom5,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
pub struct MLLogger(Option<extern "C" fn(MLLogLevel, *const c_char)>);
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
pub struct MLHistoryUpdate(Option<extern "C" fn(MLApp, bool, bool)>);
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
pub struct MLURLUpdate(Option<extern "C" fn(MLApp, *const c_char)>);
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
pub struct MLKeyboard(Option<extern "C" fn(MLApp, bool)>);
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
pub struct MLApp(*mut c_void);
|
||||||
|
|
||||||
|
const LOG_LEVEL: log::LevelFilter = log::LevelFilter::Info;
|
||||||
|
|
||||||
|
fn call<F, T>(f: F) -> Result<T, &'static str>
|
||||||
|
where
|
||||||
|
F: FnOnce(&mut ServoGlue) -> Result<T, &'static str>,
|
||||||
|
{
|
||||||
|
SERVO.with(|s| match s.borrow_mut().as_mut() {
|
||||||
|
Some(ref mut s) => (f)(s),
|
||||||
|
None => Err("Servo is not available in this thread"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn init_servo(
|
||||||
|
ctxt: EGLContext,
|
||||||
|
surf: EGLSurface,
|
||||||
|
disp: EGLDisplay,
|
||||||
|
landscape: bool,
|
||||||
|
app: MLApp,
|
||||||
|
logger: MLLogger,
|
||||||
|
history_update: MLHistoryUpdate,
|
||||||
|
url_update: MLURLUpdate,
|
||||||
|
keyboard: MLKeyboard,
|
||||||
|
url: *const c_char,
|
||||||
|
default_args: *const c_char,
|
||||||
|
width: u32,
|
||||||
|
height: u32,
|
||||||
|
hidpi: f32,
|
||||||
|
) -> *mut ServoInstance {
|
||||||
|
redirect_stdout_to_log(logger);
|
||||||
|
let _ = log::set_boxed_logger(Box::new(logger));
|
||||||
|
log::set_max_level(LOG_LEVEL);
|
||||||
|
|
||||||
|
let gl = gl_glue::egl::init().expect("EGL initialization failure");
|
||||||
|
|
||||||
|
let coordinates = Coordinates::new(
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
width as i32,
|
||||||
|
height as i32,
|
||||||
|
width as i32,
|
||||||
|
height as i32,
|
||||||
|
);
|
||||||
|
|
||||||
|
let mut url = CStr::from_ptr(url).to_str().unwrap_or("about:blank");
|
||||||
|
|
||||||
|
// If the URL has a space in it, then treat everything before the space as arguments
|
||||||
|
let args = if let Some(i) = url.rfind(' ') {
|
||||||
|
let (front, back) = url.split_at(i);
|
||||||
|
url = back;
|
||||||
|
front.split(' ').map(|s| s.to_owned()).collect()
|
||||||
|
} else if !default_args.is_null() {
|
||||||
|
CStr::from_ptr(default_args)
|
||||||
|
.to_str()
|
||||||
|
.unwrap_or("")
|
||||||
|
.split(' ')
|
||||||
|
.map(|s| s.to_owned())
|
||||||
|
.collect()
|
||||||
|
} else {
|
||||||
|
Vec::new()
|
||||||
|
};
|
||||||
|
|
||||||
|
info!("got args: {:?}", args);
|
||||||
|
|
||||||
|
let vr_init = if !landscape {
|
||||||
|
let name = String::from("Magic Leap VR Display");
|
||||||
|
let (service, heartbeat) = MagicLeapVRService::new(name, ctxt, gl.gl_wrapper.clone())
|
||||||
|
.expect("Failed to create VR service");
|
||||||
|
let service = Box::new(service);
|
||||||
|
let heartbeat = Box::new(heartbeat);
|
||||||
|
VRInitOptions::VRService(service, heartbeat)
|
||||||
|
} else {
|
||||||
|
VRInitOptions::None
|
||||||
|
};
|
||||||
|
|
||||||
|
let xr_discovery: Option<Box<dyn webxr_api::Discovery>> = if !landscape {
|
||||||
|
let discovery = MagicLeapDiscovery::new(ctxt, gl.gl_wrapper.clone());
|
||||||
|
Some(Box::new(discovery))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
|
let opts = InitOptions {
|
||||||
|
args,
|
||||||
|
density: hidpi,
|
||||||
|
xr_discovery,
|
||||||
|
coordinates,
|
||||||
|
gl_context_pointer: Some(ctxt),
|
||||||
|
native_display_pointer: Some(disp),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let wakeup = Box::new(EventLoopWakerInstance);
|
||||||
|
let shut_down_complete = Rc::new(Cell::new(false));
|
||||||
|
let callbacks = Box::new(HostCallbacks {
|
||||||
|
app,
|
||||||
|
ctxt,
|
||||||
|
surf,
|
||||||
|
disp,
|
||||||
|
landscape,
|
||||||
|
shut_down_complete: shut_down_complete.clone(),
|
||||||
|
history_update,
|
||||||
|
url_update,
|
||||||
|
keyboard,
|
||||||
|
});
|
||||||
|
info!("Starting servo");
|
||||||
|
simpleservo::init(opts, gl.gl_wrapper, wakeup, callbacks).expect("error initializing Servo");
|
||||||
|
|
||||||
|
let result = Box::new(ServoInstance {
|
||||||
|
scroll_state: ScrollState::TriggerUp,
|
||||||
|
scroll_scale: Scale::new(SCROLL_SCALE / hidpi),
|
||||||
|
shut_down_complete,
|
||||||
|
});
|
||||||
|
Box::into_raw(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn heartbeat_servo(_servo: *mut ServoInstance) {
|
||||||
|
let _ = call(|s| s.perform_updates());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn keyboard_servo(
|
||||||
|
_servo: *mut ServoInstance,
|
||||||
|
key_code: char,
|
||||||
|
key_type: MLKeyType,
|
||||||
|
) {
|
||||||
|
let key = match key_type {
|
||||||
|
MLKeyType::kCharacter => Key::Character([key_code].iter().collect()),
|
||||||
|
MLKeyType::kBackspace => Key::Backspace,
|
||||||
|
MLKeyType::kEnter => Key::Enter,
|
||||||
|
_ => return,
|
||||||
|
};
|
||||||
|
// TODO: can the ML1 generate separate press and release events?
|
||||||
|
let key2 = key.clone();
|
||||||
|
let _ = call(move |s| s.key_down(key2));
|
||||||
|
let _ = call(move |s| s.key_up(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Some magic numbers.
|
||||||
|
|
||||||
|
// How far does the cursor have to move for it to count as a drag rather than a click?
|
||||||
|
// (In device pixels squared, to avoid taking a sqrt when calculating move distance.)
|
||||||
|
const DRAG_CUTOFF_SQUARED: f32 = 900.0;
|
||||||
|
|
||||||
|
// How much should we scale scrolling by?
|
||||||
|
const SCROLL_SCALE: f32 = 3.0;
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn move_servo(servo: *mut ServoInstance, x: f32, y: f32) {
|
||||||
|
// Servo's cursor was moved
|
||||||
|
if let Some(servo) = servo.as_mut() {
|
||||||
|
let point = DevicePoint::new(x, y);
|
||||||
|
match servo.scroll_state {
|
||||||
|
ScrollState::TriggerUp => {
|
||||||
|
servo.scroll_state = ScrollState::TriggerUp;
|
||||||
|
let _ = call(|s| s.mouse_move(x, y));
|
||||||
|
},
|
||||||
|
ScrollState::TriggerDown(start)
|
||||||
|
if (start - point).square_length() < DRAG_CUTOFF_SQUARED =>
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
ScrollState::TriggerDown(start) => {
|
||||||
|
servo.scroll_state = ScrollState::TriggerDragging(start, point);
|
||||||
|
let _ = call(|s| s.mouse_move(x, y));
|
||||||
|
let delta = (point - start) * servo.scroll_scale;
|
||||||
|
let start = start.to_i32();
|
||||||
|
let _ = call(|s| s.scroll_start(delta.x, delta.y, start.x, start.y));
|
||||||
|
},
|
||||||
|
ScrollState::TriggerDragging(start, prev) => {
|
||||||
|
servo.scroll_state = ScrollState::TriggerDragging(start, point);
|
||||||
|
let _ = call(|s| s.mouse_move(x, y));
|
||||||
|
let delta = (point - prev) * servo.scroll_scale;
|
||||||
|
let start = start.to_i32();
|
||||||
|
let _ = call(|s| s.scroll(delta.x, delta.y, start.x, start.y));
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn trigger_servo(servo: *mut ServoInstance, x: f32, y: f32, down: bool) {
|
||||||
|
// Servo was triggered
|
||||||
|
if let Some(servo) = servo.as_mut() {
|
||||||
|
let point = DevicePoint::new(x, y);
|
||||||
|
match servo.scroll_state {
|
||||||
|
ScrollState::TriggerUp if down => {
|
||||||
|
servo.scroll_state = ScrollState::TriggerDown(point);
|
||||||
|
let _ = call(|s| s.mouse_down(x, y, MouseButton::Left));
|
||||||
|
},
|
||||||
|
ScrollState::TriggerDown(start) if !down => {
|
||||||
|
servo.scroll_state = ScrollState::TriggerUp;
|
||||||
|
let _ = call(|s| s.mouse_up(start.x, start.y, MouseButton::Left));
|
||||||
|
let _ = call(|s| s.click(start.x as f32, start.y as f32));
|
||||||
|
let _ = call(|s| s.mouse_move(start.x, start.y));
|
||||||
|
},
|
||||||
|
ScrollState::TriggerDragging(start, prev) if !down => {
|
||||||
|
servo.scroll_state = ScrollState::TriggerUp;
|
||||||
|
let delta = (point - prev) * servo.scroll_scale;
|
||||||
|
let start = start.to_i32();
|
||||||
|
let _ = call(|s| s.scroll_end(delta.x, delta.y, start.x, start.y));
|
||||||
|
let _ = call(|s| s.mouse_up(x, y, MouseButton::Left));
|
||||||
|
},
|
||||||
|
_ => return,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn traverse_servo(_servo: *mut ServoInstance, delta: i32) {
|
||||||
|
// Traverse the session history
|
||||||
|
if delta == 0 {
|
||||||
|
let _ = call(|s| s.reload());
|
||||||
|
} else if delta < 0 {
|
||||||
|
let _ = call(|s| s.go_back());
|
||||||
|
} else {
|
||||||
|
let _ = call(|s| s.go_forward());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn navigate_servo(_servo: *mut ServoInstance, text: *const c_char) {
|
||||||
|
let text = CStr::from_ptr(text)
|
||||||
|
.to_str()
|
||||||
|
.expect("Failed to convert text to UTF-8");
|
||||||
|
let url = ServoUrl::parse(text).unwrap_or_else(|_| {
|
||||||
|
let mut search = ServoUrl::parse("https://duckduckgo.com")
|
||||||
|
.expect("Failed to parse search URL")
|
||||||
|
.into_url();
|
||||||
|
search.query_pairs_mut().append_pair("q", text);
|
||||||
|
ServoUrl::from_url(search)
|
||||||
|
});
|
||||||
|
let _ = call(|s| s.load_uri(url.as_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Some magic numbers for shutdown
|
||||||
|
const SHUTDOWN_DURATION: Duration = Duration::from_secs(10);
|
||||||
|
const SHUTDOWN_POLL_INTERVAL: Duration = Duration::from_millis(100);
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn discard_servo(servo: *mut ServoInstance) {
|
||||||
|
if let Some(servo) = servo.as_mut() {
|
||||||
|
let servo = Box::from_raw(servo);
|
||||||
|
let finish = Instant::now() + SHUTDOWN_DURATION;
|
||||||
|
let _ = call(|s| s.request_shutdown());
|
||||||
|
while !servo.shut_down_complete.get() {
|
||||||
|
let _ = call(|s| s.perform_updates());
|
||||||
|
if Instant::now() > finish {
|
||||||
|
warn!("Incomplete shutdown.");
|
||||||
|
}
|
||||||
|
thread::sleep(SHUTDOWN_POLL_INTERVAL);
|
||||||
|
}
|
||||||
|
deinit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct HostCallbacks {
|
||||||
|
ctxt: EGLContext,
|
||||||
|
surf: EGLSurface,
|
||||||
|
disp: EGLDisplay,
|
||||||
|
landscape: bool,
|
||||||
|
shut_down_complete: Rc<Cell<bool>>,
|
||||||
|
history_update: MLHistoryUpdate,
|
||||||
|
url_update: MLURLUpdate,
|
||||||
|
app: MLApp,
|
||||||
|
keyboard: MLKeyboard,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl HostTrait for HostCallbacks {
|
||||||
|
fn flush(&self) {
|
||||||
|
// Immersive and landscape apps have different requirements for who calls SwapBuffers.
|
||||||
|
if self.landscape {
|
||||||
|
SwapBuffers(self.disp, self.surf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make_current(&self) {
|
||||||
|
MakeCurrent(self.disp, self.surf, self.surf, self.ctxt);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prompt_alert(&self, message: String, _trusted: bool) {
|
||||||
|
warn!("Prompt Alert: {}", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prompt_ok_cancel(&self, message: String, _trusted: bool) -> PromptResult {
|
||||||
|
warn!("Prompt not implemented. Cancelled. {}", message);
|
||||||
|
PromptResult::Secondary
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prompt_yes_no(&self, message: String, _trusted: bool) -> PromptResult {
|
||||||
|
warn!("Prompt not implemented. Cancelled. {}", message);
|
||||||
|
PromptResult::Secondary
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prompt_input(&self, message: String, default: String, _trusted: bool) -> Option<String> {
|
||||||
|
warn!("Input prompt not implemented. {}", message);
|
||||||
|
Some(default)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_load_started(&self) {}
|
||||||
|
fn on_load_ended(&self) {}
|
||||||
|
fn on_title_changed(&self, _title: String) {}
|
||||||
|
fn on_allow_navigation(&self, _url: String) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
fn on_url_changed(&self, url: String) {
|
||||||
|
if let Ok(cstr) = CString::new(url.as_str()) {
|
||||||
|
if let Some(url_update) = self.url_update.0 {
|
||||||
|
url_update(self.app, cstr.as_ptr());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_history_changed(&self, can_go_back: bool, can_go_forward: bool) {
|
||||||
|
if let Some(history_update) = self.history_update.0 {
|
||||||
|
history_update(self.app, can_go_back, can_go_forward);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_animating_changed(&self, _animating: bool) {}
|
||||||
|
|
||||||
|
fn on_shutdown_complete(&self) {
|
||||||
|
self.shut_down_complete.set(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_ime_show(
|
||||||
|
&self,
|
||||||
|
_input_type: InputMethodType,
|
||||||
|
_text: Option<(String, i32)>,
|
||||||
|
_multiline: bool,
|
||||||
|
_bounds: DeviceIntRect,
|
||||||
|
) {
|
||||||
|
if let Some(keyboard) = self.keyboard.0 {
|
||||||
|
keyboard(self.app, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_ime_hide(&self) {
|
||||||
|
if let Some(keyboard) = self.keyboard.0 {
|
||||||
|
keyboard(self.app, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_clipboard_contents(&self) -> Option<String> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_clipboard_contents(&self, _contents: String) {}
|
||||||
|
|
||||||
|
fn on_devtools_started(&self, port: Result<u16, ()>) {
|
||||||
|
match port {
|
||||||
|
Ok(p) => info!("Devtools Server running on port {}", p),
|
||||||
|
Err(()) => error!("Error running Devtools server"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ServoInstance {
|
||||||
|
scroll_state: ScrollState,
|
||||||
|
scroll_scale: Scale<f32, DevicePixel, LayoutPixel>,
|
||||||
|
shut_down_complete: Rc<Cell<bool>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
enum ScrollState {
|
||||||
|
TriggerUp,
|
||||||
|
TriggerDown(DevicePoint),
|
||||||
|
TriggerDragging(DevicePoint, DevicePoint),
|
||||||
|
}
|
||||||
|
|
||||||
|
struct EventLoopWakerInstance;
|
||||||
|
|
||||||
|
impl EventLoopWaker for EventLoopWakerInstance {
|
||||||
|
fn clone_box(&self) -> Box<dyn EventLoopWaker> {
|
||||||
|
Box::new(EventLoopWakerInstance)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn wake(&self) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl log::Log for MLLogger {
|
||||||
|
fn enabled(&self, metadata: &log::Metadata) -> bool {
|
||||||
|
metadata.level() <= LOG_LEVEL
|
||||||
|
}
|
||||||
|
|
||||||
|
fn log(&self, record: &log::Record) {
|
||||||
|
if let Some(log) = self.0 {
|
||||||
|
let lvl = match record.level() {
|
||||||
|
log::Level::Error => MLLogLevel::Error,
|
||||||
|
log::Level::Warn => MLLogLevel::Warning,
|
||||||
|
log::Level::Info => MLLogLevel::Info,
|
||||||
|
log::Level::Debug => MLLogLevel::Debug,
|
||||||
|
log::Level::Trace => MLLogLevel::Verbose,
|
||||||
|
};
|
||||||
|
let mut msg = SmallVec::<[u8; 128]>::new();
|
||||||
|
write!(msg, "{}\0", record.args()).unwrap();
|
||||||
|
log(lvl, &msg[0] as *const _ as *const _);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn flush(&self) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn redirect_stdout_to_log(logger: MLLogger) {
|
||||||
|
let log = match logger.0 {
|
||||||
|
None => return,
|
||||||
|
Some(log) => log,
|
||||||
|
};
|
||||||
|
|
||||||
|
// The first step is to redirect stdout and stderr to the logs.
|
||||||
|
// We redirect stdout and stderr to a custom descriptor.
|
||||||
|
let mut pfd: [c_int; 2] = [0, 0];
|
||||||
|
unsafe {
|
||||||
|
pipe(pfd.as_mut_ptr());
|
||||||
|
dup2(pfd[1], 1);
|
||||||
|
dup2(pfd[1], 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
let descriptor = pfd[0];
|
||||||
|
|
||||||
|
// Then we spawn a thread whose only job is to read from the other side of the
|
||||||
|
// pipe and redirect to the logs.
|
||||||
|
let _detached = thread::spawn(move || {
|
||||||
|
const BUF_LENGTH: usize = 512;
|
||||||
|
let mut buf = vec![b'\0' as c_char; BUF_LENGTH];
|
||||||
|
|
||||||
|
// Always keep at least one null terminator
|
||||||
|
const BUF_AVAILABLE: usize = BUF_LENGTH - 1;
|
||||||
|
let buf = &mut buf[..BUF_AVAILABLE];
|
||||||
|
|
||||||
|
let mut cursor = 0_usize;
|
||||||
|
|
||||||
|
loop {
|
||||||
|
let result = {
|
||||||
|
let read_into = &mut buf[cursor..];
|
||||||
|
unsafe {
|
||||||
|
read(
|
||||||
|
descriptor,
|
||||||
|
read_into.as_mut_ptr() as *mut _,
|
||||||
|
read_into.len(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let end = if result == 0 {
|
||||||
|
return;
|
||||||
|
} else if result < 0 {
|
||||||
|
log(
|
||||||
|
MLLogLevel::Error,
|
||||||
|
b"error in log thread; closing\0".as_ptr() as *const _,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
result as usize + cursor
|
||||||
|
};
|
||||||
|
|
||||||
|
// Only modify the portion of the buffer that contains real data.
|
||||||
|
let buf = &mut buf[0..end];
|
||||||
|
|
||||||
|
if let Some(last_newline_pos) = buf.iter().rposition(|&c| c == b'\n' as c_char) {
|
||||||
|
buf[last_newline_pos] = b'\0' as c_char;
|
||||||
|
log(MLLogLevel::Info, buf.as_ptr());
|
||||||
|
if last_newline_pos < buf.len() - 1 {
|
||||||
|
let pos_after_newline = last_newline_pos + 1;
|
||||||
|
let len_not_logged_yet = buf[pos_after_newline..].len();
|
||||||
|
for j in 0..len_not_logged_yet as usize {
|
||||||
|
buf[j] = buf[pos_after_newline + j];
|
||||||
|
}
|
||||||
|
cursor = len_not_logged_yet;
|
||||||
|
} else {
|
||||||
|
cursor = 0;
|
||||||
|
}
|
||||||
|
} else if end == BUF_AVAILABLE {
|
||||||
|
// No newline found but the buffer is full, flush it anyway.
|
||||||
|
// `buf.as_ptr()` is null-terminated by BUF_LENGTH being 1 less than BUF_AVAILABLE.
|
||||||
|
log(MLLogLevel::Info, buf.as_ptr());
|
||||||
|
cursor = 0;
|
||||||
|
} else {
|
||||||
|
cursor = end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-background-repaint-parent.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-background-repaint.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-outline-repaint-parent.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-outline-repaint.html]
|
||||||
|
expected: FAIL
|
|
@ -1,4 +1,4 @@
|
||||||
[gamut-mapping.html]
|
[color-mix-out-of-gamut.html]
|
||||||
[Property color value 'color-mix(in hsl, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hsl, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -14,13 +14,13 @@
|
||||||
[Property color value 'color-mix(in hsl, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hsl, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hsl, oklab(100 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hsl, oklab(1 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hsl, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hsl, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hsl, oklch(100 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hsl, oklch(1 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hsl, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hsl, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
@ -41,26 +41,14 @@
|
||||||
[Property color value 'color-mix(in hwb, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hwb, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hwb, oklab(100 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hwb, oklab(1 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hwb, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hwb, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hwb, oklch(100 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hwb, oklch(1 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hwb, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
[Property color value 'color-mix(in hwb, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property color value 'color-mix(in hsl, oklab(1 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property color value 'color-mix(in hsl, oklch(1 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property color value 'color-mix(in hwb, oklab(1 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property color value 'color-mix(in hwb, oklch(1 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[percentage-padding-004.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,264 @@
|
||||||
|
[overlay-interpolation.html]
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (0.1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (0.9) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
|
@ -490,3 +490,15 @@
|
||||||
|
|
||||||
[ShadowRoot interface: attribute adoptedStyleSheets]
|
[ShadowRoot interface: attribute adoptedStyleSheets]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: attribute layerName]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: attribute supportsText]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: sheet.cssRules[0\] must inherit property "layerName" with the proper type]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: sheet.cssRules[0\] must inherit property "supportsText" with the proper type]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -2,7 +2,13 @@
|
||||||
[readAsDataURL result for Blob with unspecified MIME type]
|
[readAsDataURL result for Blob with unspecified MIME type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[readAsDataURL result for empty Blob]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[filereader_readAsDataURL.any.html]
|
[filereader_readAsDataURL.any.html]
|
||||||
[readAsDataURL result for Blob with unspecified MIME type]
|
[readAsDataURL result for Blob with unspecified MIME type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[readAsDataURL result for empty Blob]
|
||||||
|
expected: FAIL
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-background-repaint-parent.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-background-repaint.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-outline-repaint-parent.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[color-mix-currentcolor-outline-repaint.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,54 @@
|
||||||
|
[color-mix-out-of-gamut.html]
|
||||||
|
[Property color value 'color-mix(in hsl, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, lab(100 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, lab(0 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, lch(100 116 334) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, oklab(1 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, oklch(1 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hsl, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, lab(100 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, lab(0 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, lch(100 116 334) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, oklab(1 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, oklch(1 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property color value 'color-mix(in hwb, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)']
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[at-supports-selector-file-selector-button.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[percentage-padding-004.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,750 @@
|
||||||
|
[font-size-adjust-composition.html]
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [none\] to add [2.0\] at (-0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [none\] to add [2.0\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [none\] to add [2.0\] at (0.5) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [none\] to add [2.0\] at (1) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [none\] to add [2.0\] at (1.5) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to add [2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to add [2.0\] at (0) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to add [2.0\] at (0.5) should be [1.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to add [2.0\] at (1) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to add [2.0\] at (1.5) should be [3.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [0.0\] to add [2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [0.0\] to add [2.0\] at (0) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [0.0\] to add [2.0\] at (0.5) should be [1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [0.0\] to add [2.0\] at (1) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [0.0\] to add [2.0\] at (1.5) should be [3.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to replace [2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to replace [2.0\] at (0) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to replace [2.0\] at (0.5) should be [1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to replace [2.0\] at (1) should be [2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [0.0\] to replace [2.0\] at (1.5) should be [2.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [2.0\] to add [none\] at (-0.5) should be [2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [2.0\] to add [none\] at (0) should be [2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [2.0\] to add [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [2.0\] to add [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [2.0\] to add [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [none\] to add [ex-height 2.0\] at (-0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [none\] to add [ex-height 2.0\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [none\] to add [ex-height 2.0\] at (0.5) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [none\] to add [ex-height 2.0\] at (1) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [none\] to add [ex-height 2.0\] at (1.5) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to add [ex-height 2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to add [ex-height 2.0\] at (0) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to add [ex-height 2.0\] at (0.5) should be [1.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to add [ex-height 2.0\] at (1) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to add [ex-height 2.0\] at (1.5) should be [3.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 0\] to add [ex-height 2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 0\] to add [ex-height 2.0\] at (0) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 0\] to add [ex-height 2.0\] at (0.5) should be [1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 0\] to add [ex-height 2.0\] at (1) should be [2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 0\] to add [ex-height 2.0\] at (1.5) should be [3.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to replace [ex-height 2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to replace [ex-height 2.0\] at (0) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to replace [ex-height 2.0\] at (0.5) should be [1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to replace [ex-height 2.0\] at (1) should be [2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from add [ex-height 0\] to replace [ex-height 2.0\] at (1.5) should be [2.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 2.0\] to add [none\] at (-0.5) should be [2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 2.0\] to add [none\] at (0) should be [2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 2.0\] to add [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 2.0\] to add [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ex-height 0.5\] from replace [ex-height 2.0\] to add [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [none\] to add [cap-height 2.0\] at (-0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [none\] to add [cap-height 2.0\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [none\] to add [cap-height 2.0\] at (0.5) should be [cap-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [none\] to add [cap-height 2.0\] at (1) should be [cap-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [none\] to add [cap-height 2.0\] at (1.5) should be [cap-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0\] to add [cap-height 2.0\] at (-0.5) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0\] to add [cap-height 2.0\] at (0) should be [cap-height 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0\] to add [cap-height 2.0\] at (0.5) should be [cap-height 1.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0\] to add [cap-height 2.0\] at (1) should be [cap-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0\] to add [cap-height 2.0\] at (1.5) should be [cap-height 3.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 0\] to add [cap-height 2.0\] at (-0.5) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 0\] to add [cap-height 2.0\] at (0) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 0\] to add [cap-height 2.0\] at (0.5) should be [cap-height 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 0\] to add [cap-height 2.0\] at (1) should be [cap-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 0\] to add [cap-height 2.0\] at (1.5) should be [cap-height 3.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0.0\] to replace [cap-height 2.0\] at (-0.5) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0.0\] to replace [cap-height 2.0\] at (0) should be [cap-height 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0.0\] to replace [cap-height 2.0\] at (0.5) should be [cap-height 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0.0\] to replace [cap-height 2.0\] at (1) should be [cap-height 2\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from add [cap-height 0.0\] to replace [cap-height 2.0\] at (1.5) should be [cap-height 2.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 2.0\] to add [none\] at (-0.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 2.0\] to add [none\] at (0) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 2.0\] to add [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 2.0\] to add [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [cap-height 0.5\] from replace [cap-height 2.0\] to add [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [none\] to add [ch-width 2.0\] at (-0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [none\] to add [ch-width 2.0\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [none\] to add [ch-width 2.0\] at (0.5) should be [ch-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [none\] to add [ch-width 2.0\] at (1) should be [ch-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [none\] to add [ch-width 2.0\] at (1.5) should be [ch-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to add [ch-width 2.0\] at (-0.5) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to add [ch-width 2.0\] at (0) should be [ch-width 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to add [ch-width 2.0\] at (0.5) should be [ch-width 1.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to add [ch-width 2.0\] at (1) should be [ch-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to add [ch-width 2.0\] at (1.5) should be [ch-width 3.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 0\] to add [ch-width 2.0\] at (-0.5) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 0\] to add [ch-width 2.0\] at (0) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 0\] to add [ch-width 2.0\] at (0.5) should be [ch-width 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 0\] to add [ch-width 2.0\] at (1) should be [ch-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 0\] to add [ch-width 2.0\] at (1.5) should be [ch-width 3.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to replace [ch-width 2.0\] at (-0.5) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to replace [ch-width 2.0\] at (0) should be [ch-width 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to replace [ch-width 2.0\] at (0.5) should be [ch-width 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to replace [ch-width 2.0\] at (1) should be [ch-width 2\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from add [ch-width 0\] to replace [ch-width 2.0\] at (1.5) should be [ch-width 2.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 2.0\] to add [none\] at (-0.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 2.0\] to add [none\] at (0) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 2.0\] to add [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 2.0\] to add [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ch-width 0.5\] from replace [ch-width 2.0\] to add [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [none\] to add [ic-width 2.0\] at (-0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [none\] to add [ic-width 2.0\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [none\] to add [ic-width 2.0\] at (0.5) should be [ic-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [none\] to add [ic-width 2.0\] at (1) should be [ic-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [none\] to add [ic-width 2.0\] at (1.5) should be [ic-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to add [ic-width 2.0\] at (-0.5) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to add [ic-width 2.0\] at (0) should be [ic-width 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to add [ic-width 2.0\] at (0.5) should be [ic-width 1.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to add [ic-width 2.0\] at (1) should be [ic-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to add [ic-width 2.0\] at (1.5) should be [ic-width 3.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 0\] to add [ic-width 2.0\] at (-0.5) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 0\] to add [ic-width 2.0\] at (0) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 0\] to add [ic-width 2.0\] at (0.5) should be [ic-width 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 0\] to add [ic-width 2.0\] at (1) should be [ic-width 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 0\] to add [ic-width 2.0\] at (1.5) should be [ic-width 3.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to replace [ic-width 2.0\] at (-0.5) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to replace [ic-width 2.0\] at (0) should be [ic-width 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to replace [ic-width 2.0\] at (0.5) should be [ic-width 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to replace [ic-width 2.0\] at (1) should be [ic-width 2\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from add [ic-width 0\] to replace [ic-width 2.0\] at (1.5) should be [ic-width 2.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 2.0\] to add [none\] at (-0.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 2.0\] to add [none\] at (0) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 2.0\] to add [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 2.0\] to add [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-width 0.5\] from replace [ic-width 2.0\] to add [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [none\] to add [ic-height 2.0\] at (-0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [none\] to add [ic-height 2.0\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [none\] to add [ic-height 2.0\] at (0.5) should be [ic-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [none\] to add [ic-height 2.0\] at (1) should be [ic-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [none\] to add [ic-height 2.0\] at (1.5) should be [ic-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to add [ic-height 2.0\] at (-0.5) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to add [ic-height 2.0\] at (0) should be [ic-height 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to add [ic-height 2.0\] at (0.5) should be [ic-height 1.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to add [ic-height 2.0\] at (1) should be [ic-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to add [ic-height 2.0\] at (1.5) should be [ic-height 3.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 0\] to add [ic-height 2.0\] at (-0.5) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 0\] to add [ic-height 2.0\] at (0) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 0\] to add [ic-height 2.0\] at (0.5) should be [ic-height 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 0\] to add [ic-height 2.0\] at (1) should be [ic-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 0\] to add [ic-height 2.0\] at (1.5) should be [ic-height 3.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to replace [ic-height 2.0\] at (-0.5) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to replace [ic-height 2.0\] at (0) should be [ic-height 0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to replace [ic-height 2.0\] at (0.5) should be [ic-height 1.25\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to replace [ic-height 2.0\] at (1) should be [ic-height 2\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from add [ic-height 0\] to replace [ic-height 2.0\] at (1.5) should be [ic-height 2.75\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 2.0\] to add [none\] at (-0.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 2.0\] to add [none\] at (0) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 2.0\] to add [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 2.0\] to add [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [ic-height 0.5\] from replace [ic-height 2.0\] to add [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0.0\] to add [cap-height 2.0\] at (-0.5) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0.0\] to add [cap-height 2.0\] at (0) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0.0\] to add [cap-height 2.0\] at (0.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0.0\] to add [cap-height 2.0\] at (1) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0.0\] to add [cap-height 2.0\] at (1.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0.0\] to replace [cap-height 2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0.0\] to replace [cap-height 2.0\] at (0) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0.0\] to replace [cap-height 2.0\] at (0.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0.0\] to replace [cap-height 2.0\] at (1) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0.0\] to replace [cap-height 2.0\] at (1.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0\] to add [cap-height 2.0\] at (-0.5) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0\] to add [cap-height 2.0\] at (0) should be [0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0\] to add [cap-height 2.0\] at (0.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0\] to add [cap-height 2.0\] at (1) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ex-height 0\] to add [cap-height 2.0\] at (1.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0\] to replace [cap-height 2.0\] at (-0.5) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0\] to replace [cap-height 2.0\] at (0) should be [0.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0\] to replace [cap-height 2.0\] at (0.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0\] to replace [cap-height 2.0\] at (1) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ex-height 0\] to replace [cap-height 2.0\] at (1.5) should be [cap-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0.0\] to add [ch-width 2.0\] at (-0.5) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0.0\] to add [ch-width 2.0\] at (0) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0.0\] to add [ch-width 2.0\] at (0.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0.0\] to add [ch-width 2.0\] at (1) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0.0\] to add [ch-width 2.0\] at (1.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0.0\] to replace [ch-width 2.0\] at (-0.5) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0.0\] to replace [ch-width 2.0\] at (0) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0.0\] to replace [ch-width 2.0\] at (0.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0.0\] to replace [ch-width 2.0\] at (1) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0.0\] to replace [ch-width 2.0\] at (1.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0\] to add [ch-width 2.0\] at (-0.5) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0\] to add [ch-width 2.0\] at (0) should be [cap-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0\] to add [ch-width 2.0\] at (0.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0\] to add [ch-width 2.0\] at (1) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [cap-height 0\] to add [ch-width 2.0\] at (1.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0\] to replace [ch-width 2.0\] at (-0.5) should be [cap-height 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0\] to replace [ch-width 2.0\] at (0) should be [cap-height 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0\] to replace [ch-width 2.0\] at (0.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0\] to replace [ch-width 2.0\] at (1) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [cap-height 0\] to replace [ch-width 2.0\] at (1.5) should be [ch-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0.0\] to add [ic-width 2.0\] at (-0.5) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0.0\] to add [ic-width 2.0\] at (0) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0.0\] to add [ic-width 2.0\] at (0.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0.0\] to add [ic-width 2.0\] at (1) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0.0\] to add [ic-width 2.0\] at (1.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0.0\] to replace [ic-width 2.0\] at (-0.5) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0.0\] to replace [ic-width 2.0\] at (0) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0.0\] to replace [ic-width 2.0\] at (0.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0.0\] to replace [ic-width 2.0\] at (1) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0.0\] to replace [ic-width 2.0\] at (1.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0\] to add [ic-width 2.0\] at (-0.5) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0\] to add [ic-width 2.0\] at (0) should be [ch-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0\] to add [ic-width 2.0\] at (0.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0\] to add [ic-width 2.0\] at (1) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ch-width 0\] to add [ic-width 2.0\] at (1.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0\] to replace [ic-width 2.0\] at (-0.5) should be [ch-width 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0\] to replace [ic-width 2.0\] at (0) should be [ch-width 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0\] to replace [ic-width 2.0\] at (0.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0\] to replace [ic-width 2.0\] at (1) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ch-width 0\] to replace [ic-width 2.0\] at (1.5) should be [ic-width 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0.0\] to add [ic-height 2.0\] at (-0.5) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0.0\] to add [ic-height 2.0\] at (0) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0.0\] to add [ic-height 2.0\] at (0.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0.0\] to add [ic-height 2.0\] at (1) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0.0\] to add [ic-height 2.0\] at (1.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0.0\] to replace [ic-height 2.0\] at (-0.5) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0.0\] to replace [ic-height 2.0\] at (0) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0.0\] to replace [ic-height 2.0\] at (0.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0.0\] to replace [ic-height 2.0\] at (1) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0.0\] to replace [ic-height 2.0\] at (1.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0\] to add [ic-height 2.0\] at (-0.5) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0\] to add [ic-height 2.0\] at (0) should be [ic-width 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0\] to add [ic-height 2.0\] at (0.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0\] to add [ic-height 2.0\] at (1) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-width 0\] to add [ic-height 2.0\] at (1.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0\] to replace [ic-height 2.0\] at (-0.5) should be [ic-width 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0\] to replace [ic-height 2.0\] at (0) should be [ic-width 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0\] to replace [ic-height 2.0\] at (0.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0\] to replace [ic-height 2.0\] at (1) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-width 0\] to replace [ic-height 2.0\] at (1.5) should be [ic-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0.0\] to add [ex-height 2.0\] at (-0.5) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0.0\] to add [ex-height 2.0\] at (0) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0.0\] to add [ex-height 2.0\] at (0.5) should be [ex-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0.0\] to add [ex-height 2.0\] at (1) should be [ex-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0.0\] to add [ex-height 2.0\] at (1.5) should be [ex-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0.0\] to replace [ex-height 2.0\] at (-0.5) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0.0\] to replace [ex-height 2.0\] at (0) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0.0\] to replace [ex-height 2.0\] at (0.5) should be [ex-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0.0\] to replace [ex-height 2.0\] at (1) should be [ex-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0.0\] to replace [ex-height 2.0\] at (1.5) should be [ex-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0\] to add [ex-height 2.0\] at (-0.5) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0\] to add [ex-height 2.0\] at (0) should be [ic-height 0.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0\] to add [ex-height 2.0\] at (0.5) should be [ex-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0\] to add [ex-height 2.0\] at (1) should be [ex-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from replace [ic-height 0\] to add [ex-height 2.0\] at (1.5) should be [ex-height 2.5\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0\] to replace [ex-height 2.0\] at (-0.5) should be [ic-height 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0\] to replace [ex-height 2.0\] at (0) should be [ic-height 0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0\] to replace [ex-height 2.0\] at (0.5) should be [ex-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0\] to replace [ex-height 2.0\] at (1) should be [ex-height 2.0\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Compositing: property <font-size-adjust> underlying [0.5\] from add [ic-height 0\] to replace [ex-height 2.0\] at (1.5) should be [ex-height 2.0\]]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,264 @@
|
||||||
|
[overlay-interpolation.html]
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (0.1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (0.9) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (0.1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (0.9) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (-1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (0) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (0.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (1) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [auto\] to [auto\] at (1.5) should be [auto\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Transitions with transition: all: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSS Animations: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (-1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (0) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (0.5) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (1) should be [none\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Web Animations: property <overlay> from [none\] to [none\] at (1.5) should be [none\]]
|
||||||
|
expected: FAIL
|
|
@ -535,3 +535,15 @@
|
||||||
|
|
||||||
[ShadowRoot interface: attribute adoptedStyleSheets]
|
[ShadowRoot interface: attribute adoptedStyleSheets]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: attribute layerName]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: attribute supportsText]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: sheet.cssRules[0\] must inherit property "layerName" with the proper type]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CSSImportRule interface: sheet.cssRules[0\] must inherit property "supportsText" with the proper type]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[response-body-read-task-handling.html]
|
||||||
|
[piping from a body stream to a JS-written WritableStream should occur in a microtask scope]
|
||||||
|
expected: FAIL
|
|
@ -1,6 +0,0 @@
|
||||||
[navigate.window.html]
|
|
||||||
[Nothing fancy]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[base64]
|
|
||||||
expected: FAIL
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe.tentative.https.window.html]
|
[iframe.tentative.https.window.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[private to local: failed preflight.]
|
[private to local: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -33,4 +34,4 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[public to local, grandparent navigates: success.]
|
[public to local, grandparent navigates: success.]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -23,9 +23,6 @@
|
||||||
[treat-as-public to private: failure.]
|
[treat-as-public to private: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[local https to local https: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[private https to local https: failure.]
|
[private https to local https: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -147,5 +147,5 @@
|
||||||
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[border-image sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
|
[border-image sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
[document-state.https.html]
|
||||||
|
[A navigation's initiator origin and referrer are stored in the document state and used in the document repopulation case]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[A navigation's initiator origin and referrer are stored in the document state and used on location.reload()]
|
||||||
|
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
||||||
[document-state.tentative.https.html]
|
|
||||||
[A navigation's initiator origin and referrer are stored in the document state]
|
|
||||||
expected: FAIL
|
|
|
@ -1,6 +1,6 @@
|
||||||
[scroll-restoration-fragment-scrolling-cross-origin.html]
|
[scroll-restoration-fragment-scrolling-cross-origin.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: ERROR
|
||||||
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
|
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
[iframe-src-aboutblank-navigate-immediately.html]
|
[iframe-src-aboutblank-navigate-immediately.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Navigating to a different document with window.open]
|
[Navigating to a different document with window.open]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Navigating to a different document with link click]
|
[Navigating to a different document with link click]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Navigating to a different document with form submission]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -10,3 +10,6 @@
|
||||||
|
|
||||||
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
|
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
[javascript-url-referrer.window.html]
|
[javascript-url-referrer.window.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[unsafe-url referrer policy used to create the starting page]
|
[unsafe-url referrer policy used to create the starting page]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[origin referrer policy used to create the starting page]
|
[origin referrer policy used to create the starting page]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[no-referrer referrer policy used to create the starting page]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -16,3 +16,6 @@
|
||||||
|
|
||||||
[D83D DE0D set in href="" targeting a frame and clicked]
|
[D83D DE0D set in href="" targeting a frame and clicked]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[DE0D 0041 set in href="" targeting a frame and clicked]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
[javascript-url-security-check-same-origin-domain.sub.html]
|
[javascript-url-security-check-same-origin-domain.sub.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[javascript: URL security check for same-origin-domain but not same-origin]
|
[javascript: URL security check for same-origin-domain but not same-origin]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
[navigate-to-unparseable-url.html]
|
[navigate-to-unparseable-url.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
|
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[<a> tag navigate fails for unparseable URLs]
|
[<a> tag navigate fails for unparseable URLs]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[navigation-unload-cross-origin.sub.window.html]
|
||||||
|
[Cross-origin navigation started from unload handler must be ignored]
|
||||||
|
expected: FAIL
|
|
@ -1,4 +1,3 @@
|
||||||
[nav-cancelation-2.sub.html]
|
[nav-cancelation-2.sub.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[grandparent cancels a pending navigation in a cross-origin grandchild]
|
[grandparent cancels a pending navigation in a cross-origin grandchild]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse-during-unload.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[Traversing the history during unload]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,3 @@
|
||||||
|
[traverse_the_history_2.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.requestAnimationFrame.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.toBlob.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,2 +1,2 @@
|
||||||
[canvas.2d.disconnected.html]
|
[canvas.2d.disconnected.html]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.convertToBlob.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.convertToBlob.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.createImageBitmap.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.createImageBitmap.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.drawImage.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.drawImage.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.getImageData.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.getImageData.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.putImageData.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.putImageData.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.render-opportunities.transferToImageBitmap.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.unclosed.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[2d.layer.unclosed.w.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1640,6 +1640,36 @@
|
||||||
[SVGElement interface: attribute onbeforetoggle]
|
[SVGElement interface: attribute onbeforetoggle]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: existence and properties of interface object]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface object length]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface object name]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: existence and properties of interface prototype object]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: existence and properties of interface prototype object's "constructor" property]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: existence and properties of interface prototype object's @@unscopables property]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: attribute name]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: attribute entryType]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: attribute startTime]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[VisibilityStateEntry interface: attribute duration]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[idlharness.https.html?include=(Document|Window)]
|
[idlharness.https.html?include=(Document|Window)]
|
||||||
[Document interface: documentWithHandlers must inherit property "queryCommandEnabled(DOMString)" with the proper type]
|
[Document interface: documentWithHandlers must inherit property "queryCommandEnabled(DOMString)" with the proper type]
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
[update-the-rendering.html]
|
[update-the-rendering.html]
|
||||||
expected: TIMEOUT
|
|
||||||
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
|
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
|
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
[form-double-submit-requestsubmit.html]
|
||||||
|
[test runTest2 with submitterType: input, callRequestSubmit: true, callSubmit: true, preventDefault: false, passSubmitter: true]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[test runTest2 with submitterType: input, callRequestSubmit: false, callSubmit: true, preventDefault: false, passSubmitter: true]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[test runTest2 with submitterType: button, callRequestSubmit: true, callSubmit: true, preventDefault: false, passSubmitter: true]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[test runTest2 with submitterType: button, callRequestSubmit: false, callSubmit: true, preventDefault: false, passSubmitter: true]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,9 @@
|
||||||
|
[name-attribute.tentative.html]
|
||||||
|
[basic handling of mutually exclusive details]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[more complex handling of mutually exclusive details]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[mutually exclusive details across multiple names and multiple tree scopes]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[dialog-focus-previous-outside.html]
|
||||||
|
expected: ERROR
|
|
@ -0,0 +1,3 @@
|
||||||
|
[dialog-no-throw-requested-state.html]
|
||||||
|
[dialog-no-throw-requested-state]
|
||||||
|
expected: FAIL
|
|
@ -1,6 +1,5 @@
|
||||||
[htmlanchorelement_noopener.html]
|
[htmlanchorelement_noopener.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[Check that targeting of rel=noopener with a given name ignores an existing window with that name]
|
[Check that targeting of rel=noopener with a given name ignores an existing window with that name]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
@ -8,10 +7,10 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Check that rel=noopener with target=_top does a normal load]
|
[Check that rel=noopener with target=_top does a normal load]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Check that rel=noopener with target=_parent does a normal load]
|
[Check that rel=noopener with target=_parent does a normal load]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Check that rel=noopener with target=_self does a normal load]
|
[Check that rel=noopener with target=_self does a normal load]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[module-delayed.html]
|
|
||||||
[async document.write in a module]
|
|
||||||
expected: FAIL
|
|
|
@ -1,4 +0,0 @@
|
||||||
[reload.window.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[Reloading a document.open()'d page should reload the URL of the entry realm's responsible document]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -3,3 +3,6 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
[atomics-wait-async.https.any.html]
|
||||||
|
[Atomics.waitAsync timeout in a Window]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Atomics.waitAsync notification in a Window]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[atomics-wait-async.https.any.worker.html]
|
||||||
|
[Atomics.waitAsync timeout in a DedicatedWorkerGlobalScope]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Atomics.waitAsync notification in a DedicatedWorkerGlobalScope]
|
||||||
|
expected: FAIL
|
|
@ -1,6 +1,7 @@
|
||||||
[promise-rejection-events.html]
|
[promise-rejection-events.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[unhandledrejection: from createImageBitmap which is UA triggered]
|
[unhandledrejection: from createImageBitmap which is UA triggered]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
[navigation-id-element-timing.tentative.html]
|
[navigation-id-element-timing.tentative.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Element Timing navigation id test]
|
[Element Timing navigation id test]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -2,3 +2,6 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Navigation Id should be 1 at initial navigations.]
|
[Navigation Id should be 1 at initial navigations.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Navigation Ids should exist and are all the same as the initial navigation.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
[navigation-id-long-task-task-attribution.tentative.html]
|
[navigation-id-long-task-task-attribution.tentative.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Long Task/Task Attribution navigation id test]
|
[Long Task/Task Attribution navigation id test]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
[navigation-id-mark-measure.tentative.html]
|
[navigation-id-mark-measure.tentative.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Mark/Measure navigation id test]
|
[Mark/Measure navigation id test]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
[navigation-id-reset.tentative.html]
|
[navigation-id-reset.tentative.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Navigation Id should be reset to 1 after reload.]
|
[Navigation Id should be reset to 1 after reload.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Navigation Id should be re-generated after reload.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
[navigation-id-resource-timing.tentative.html]
|
[navigation-id-resource-timing.tentative.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Resource Timing navigation id test]
|
[Resource Timing navigation id test]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[navigation-id-worker-created-entries.html]
|
||||||
|
[Navigation id of performance entries created by workers should be empty]
|
||||||
|
expected: FAIL
|
|
@ -26,6 +26,12 @@
|
||||||
[PerformanceResourceTiming interface: resource must inherit property "deliveryType" with the proper type]
|
[PerformanceResourceTiming interface: resource must inherit property "deliveryType" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[PerformanceResourceTiming interface: attribute firstInterimResponseStart]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[PerformanceResourceTiming interface: resource must inherit property "firstInterimResponseStart" with the proper type]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[idlharness.any.worker.html]
|
[idlharness.any.worker.html]
|
||||||
[PerformanceResourceTiming interface: resource must inherit property "workerStart" with the proper type]
|
[PerformanceResourceTiming interface: resource must inherit property "workerStart" with the proper type]
|
||||||
|
@ -54,3 +60,9 @@
|
||||||
|
|
||||||
[PerformanceResourceTiming interface: resource must inherit property "deliveryType" with the proper type]
|
[PerformanceResourceTiming interface: resource must inherit property "deliveryType" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[PerformanceResourceTiming interface: attribute firstInterimResponseStart]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[PerformanceResourceTiming interface: resource must inherit property "firstInterimResponseStart" with the proper type]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,10 +1,25 @@
|
||||||
[nested-context-navigations-iframe.html]
|
[nested-context-navigations-iframe.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Test that iframe refreshes are not observable by the parent]
|
[Test that iframe refreshes are not observable by the parent]
|
||||||
expected: TIMEOUT
|
expected: NOTRUN
|
||||||
|
|
||||||
[Test that crossorigin iframe refreshes are not observable by the parent]
|
[Test that crossorigin iframe refreshes are not observable by the parent]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[Test that cross-site iframe refreshes are not observable by the parent]
|
[Test that cross-site iframe refreshes are not observable by the parent]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Test that crossorigin iframe navigations are not observable by the parent, even after history navigations by the parent]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Test that cross-site iframe navigations are not observable by the parent, even after history navigations by the parent]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Test that iframe navigations are not observable by the parent]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Test that crossorigin iframe navigations are not observable by the parent]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Test that cross-site iframe navigations are not observable by the parent]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
[owning-type-message-port.any.sharedworker.html]
|
||||||
|
expected: ERROR
|
||||||
|
|
||||||
|
[owning-type-message-port.any.worker.html]
|
||||||
|
[Transferred MessageChannel works as expected]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Second branch of owning ReadableStream tee should end up into errors with transfer only values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[owning-type-message-port.any.html]
|
||||||
|
[Transferred MessageChannel works as expected]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Second branch of owning ReadableStream tee should end up into errors with transfer only values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[owning-type-message-port.any.serviceworker.html]
|
||||||
|
expected: ERROR
|
|
@ -0,0 +1,38 @@
|
||||||
|
[owning-type-video-frame.any.serviceworker.html]
|
||||||
|
expected: ERROR
|
||||||
|
|
||||||
|
[owning-type-video-frame.any.sharedworker.html]
|
||||||
|
expected: ERROR
|
||||||
|
|
||||||
|
[owning-type-video-frame.any.worker.html]
|
||||||
|
[ReadableStream of type owning should close serialized chunks]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should transfer JS chunks with transferred values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should error when trying to enqueue not serializable values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should clone serializable objects when teeing]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should clone JS Objects with serializables when teeing]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[owning-type-video-frame.any.html]
|
||||||
|
[ReadableStream of type owning should close serialized chunks]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should transfer JS chunks with transferred values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should error when trying to enqueue not serializable values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should clone serializable objects when teeing]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should clone JS Objects with serializables when teeing]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,39 @@
|
||||||
|
[owning-type.any.html]
|
||||||
|
[ReadableStream can be constructed with owning type]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should call start with a ReadableStreamDefaultController]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream should be able to call enqueue with an empty transfer list]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream should check transfer parameter]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should transfer enqueued chunks]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[owning-type.any.sharedworker.html]
|
||||||
|
expected: ERROR
|
||||||
|
|
||||||
|
[owning-type.any.worker.html]
|
||||||
|
[ReadableStream can be constructed with owning type]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should call start with a ReadableStreamDefaultController]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream should be able to call enqueue with an empty transfer list]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream should check transfer parameter]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[ReadableStream of type owning should transfer enqueued chunks]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[owning-type.any.serviceworker.html]
|
||||||
|
expected: ERROR
|
|
@ -1,5 +1,5 @@
|
||||||
[cross-partition.https.tentative.html]
|
[cross-partition.https.tentative.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[BroadcastChannel messages aren't received from a cross-partition iframe]
|
[BroadcastChannel messages aren't received from a cross-partition iframe]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[url-parsing.html]
|
||||||
|
[Multiple globals for base URL in WebSocket constructor]
|
||||||
|
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
||||||
[stylesheet_media_queries.html]
|
|
||||||
[Media queries within stylesheets]
|
|
||||||
expected: FAIL
|
|
|
@ -34,7 +34,7 @@ jobs:
|
||||||
displayName: 'affected tests: Safari Technology Preview'
|
displayName: 'affected tests: Safari Technology Preview'
|
||||||
condition: eq(variables['Build.Reason'], 'PullRequest')
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -51,7 +51,7 @@ jobs:
|
||||||
displayName: 'affected tests without changes: Safari Technology Preview'
|
displayName: 'affected tests without changes: Safari Technology Preview'
|
||||||
condition: eq(variables['Build.Reason'], 'PullRequest')
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -93,7 +93,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_infrastructure']
|
condition: dependencies.decision.outputs['test_jobs.wptrunner_infrastructure']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -104,6 +104,7 @@ jobs:
|
||||||
packages: virtualenv
|
packages: virtualenv
|
||||||
- template: tools/ci/azure/install_fonts.yml
|
- template: tools/ci/azure/install_fonts.yml
|
||||||
- template: tools/ci/azure/install_certs.yml
|
- template: tools/ci/azure/install_certs.yml
|
||||||
|
- template: tools/ci/azure/color_profile.yml
|
||||||
- template: tools/ci/azure/install_chrome.yml
|
- template: tools/ci/azure/install_chrome.yml
|
||||||
- template: tools/ci/azure/install_firefox.yml
|
- template: tools/ci/azure/install_firefox.yml
|
||||||
- template: tools/ci/azure/install_safari.yml
|
- template: tools/ci/azure/install_safari.yml
|
||||||
|
@ -138,7 +139,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -154,7 +155,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -170,7 +171,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -186,7 +187,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -202,7 +203,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
# full checkout required
|
# full checkout required
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
|
@ -222,7 +223,7 @@ jobs:
|
||||||
dependsOn: decision
|
dependsOn: decision
|
||||||
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
# full checkout required
|
# full checkout required
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
|
@ -477,7 +478,7 @@ jobs:
|
||||||
parallel: 8 # chosen to make runtime ~2h
|
parallel: 8 # chosen to make runtime ~2h
|
||||||
timeoutInMinutes: 180
|
timeoutInMinutes: 180
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -487,6 +488,7 @@ jobs:
|
||||||
parameters:
|
parameters:
|
||||||
packages: virtualenv
|
packages: virtualenv
|
||||||
- template: tools/ci/azure/install_certs.yml
|
- template: tools/ci/azure/install_certs.yml
|
||||||
|
- template: tools/ci/azure/color_profile.yml
|
||||||
- template: tools/ci/azure/install_safari.yml
|
- template: tools/ci/azure/install_safari.yml
|
||||||
parameters:
|
parameters:
|
||||||
channel: stable
|
channel: stable
|
||||||
|
@ -518,7 +520,7 @@ jobs:
|
||||||
parallel: 8 # chosen to make runtime ~2h
|
parallel: 8 # chosen to make runtime ~2h
|
||||||
timeoutInMinutes: 180
|
timeoutInMinutes: 180
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -528,6 +530,7 @@ jobs:
|
||||||
parameters:
|
parameters:
|
||||||
packages: virtualenv
|
packages: virtualenv
|
||||||
- template: tools/ci/azure/install_certs.yml
|
- template: tools/ci/azure/install_certs.yml
|
||||||
|
- template: tools/ci/azure/color_profile.yml
|
||||||
- template: tools/ci/azure/install_safari.yml
|
- template: tools/ci/azure/install_safari.yml
|
||||||
- template: tools/ci/azure/update_hosts.yml
|
- template: tools/ci/azure/update_hosts.yml
|
||||||
- template: tools/ci/azure/update_manifest.yml
|
- template: tools/ci/azure/update_manifest.yml
|
||||||
|
@ -556,7 +559,7 @@ jobs:
|
||||||
parallel: 8 # chosen to make runtime ~2h
|
parallel: 8 # chosen to make runtime ~2h
|
||||||
timeoutInMinutes: 180
|
timeoutInMinutes: 180
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-12'
|
vmImage: 'macOS-13'
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -566,6 +569,7 @@ jobs:
|
||||||
parameters:
|
parameters:
|
||||||
packages: virtualenv
|
packages: virtualenv
|
||||||
- template: tools/ci/azure/install_certs.yml
|
- template: tools/ci/azure/install_certs.yml
|
||||||
|
- template: tools/ci/azure/color_profile.yml
|
||||||
- template: tools/ci/azure/update_hosts.yml
|
- template: tools/ci/azure/update_hosts.yml
|
||||||
- template: tools/ci/azure/update_manifest.yml
|
- template: tools/ci/azure/update_manifest.yml
|
||||||
- script: |
|
- script: |
|
||||||
|
|
|
@ -39,4 +39,16 @@ async_test(function(testCase) {
|
||||||
testCase.done();
|
testCase.done();
|
||||||
});
|
});
|
||||||
reader.readAsDataURL(blob);
|
reader.readAsDataURL(blob);
|
||||||
}, 'readAsDataURL result for Blob with unspecified MIME type');
|
}, 'readAsDataURL result for Blob with unspecified MIME type');
|
||||||
|
|
||||||
|
async_test(function(testCase) {
|
||||||
|
var blob = new Blob([]);
|
||||||
|
var reader = new FileReader();
|
||||||
|
|
||||||
|
reader.onload = this.step_func(function() {
|
||||||
|
assert_equals(reader.result,
|
||||||
|
"data:application/octet-stream;base64,");
|
||||||
|
testCase.done();
|
||||||
|
});
|
||||||
|
reader.readAsDataURL(blob);
|
||||||
|
}, 'readAsDataURL result for empty Blob');
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
// Here's the set-up for this test:
|
||||||
|
// Step 1 (top-frame) Embeds a cross-origin iframe.
|
||||||
|
// Step 2 (sub-frame) Make a cross-origin POST request.
|
||||||
|
// Step 3 (sub-frame) Checks if platform version header is present and alerts top frame.
|
||||||
|
// Step 4 (top-frame) Asserts header was present and returns.
|
||||||
|
async_test(t => {
|
||||||
|
// Step 4
|
||||||
|
window.addEventListener("message", t.step_func(e => {
|
||||||
|
assert_equals(e.data, "HadPlatformVersion");
|
||||||
|
t.done();
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Step 1
|
||||||
|
let iframe = document.createElement("iframe");
|
||||||
|
iframe.src = "https://{{domains[www1]}}:{{ports[https][0]}}/client-hints/resources/accept-ch.wildcard.iframe.https.sub.html";
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
}, "Accept-CH with wildcard policy and iframe subresource");
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,2 @@
|
||||||
|
Accept-CH: sec-ch-ua-platform-version
|
||||||
|
Permissions-Policy: ch-ua-platform-version=("https://*.{{domains[]}}:{{ports[https][0]}}")
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
promise_test(async t => {
|
||||||
|
var navigationTiming = window.performance.getEntriesByType('navigation')[0];
|
||||||
|
assert_not_equals(navigationTiming, undefined);
|
||||||
|
assert_equals(navigationTiming.criticalCHRestart, 0, "This should be 0 as there was no restart.");
|
||||||
|
}, "Critical-CH no-restart navigation timing test");
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
promise_test(async t => {
|
||||||
|
var navigationTiming = window.performance.getEntriesByType('navigation')[0];
|
||||||
|
assert_not_equals(navigationTiming, undefined);
|
||||||
|
assert_less_than(navigationTiming.startTime, navigationTiming.criticalCHRestart, "Restarts happen after the beginning of the navigation");
|
||||||
|
assert_less_than(navigationTiming.criticalCHRestart, navigationTiming.fetchStart, "Restarts happen before fetch");
|
||||||
|
}, "Critical-CH restart navigation timing test");
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,2 @@
|
||||||
|
Accept-CH: sec-ch-device-memory
|
||||||
|
Critical-CH: sec-ch-device-memory
|
|
@ -0,0 +1,16 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<script>
|
||||||
|
// Step 2 (client-hints/accept-ch.wildcard.https.sub.html)
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('POST', "https://{{domains[www2]}}:{{ports[https][0]}}/client-hints/resources/echo-ua-client-hints-received.py");
|
||||||
|
xhr.onload = function() {
|
||||||
|
// Step 3 (client-hints/accept-ch.wildcard.https.sub.html)
|
||||||
|
if (xhr.getResponseHeader("sec-ch-ua-platform-received") != null) {
|
||||||
|
window.top.postMessage("HadPlatformVersion", "*");
|
||||||
|
} else {
|
||||||
|
window.top.postMessage("MissingPlatformVersion", "*");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.send();
|
||||||
|
</script>
|
|
@ -0,0 +1 @@
|
||||||
|
Permissions-Policy: ch-ua-platform-version=("https://*.{{domains[]}}:{{ports[https][0]}}")
|
|
@ -0,0 +1,106 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Async Clipboard write should cancel the prior pending request</title>
|
||||||
|
<link rel="help" href="https://github.com/w3c/clipboard-apis/issues/161">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
<script src="resources/user-activation.js"></script>
|
||||||
|
|
||||||
|
<iframe width="50" height="50" id="same" src="resources/page.html"></iframe><br>
|
||||||
|
<iframe width="50" height="50" id="cross" src="https://{{hosts[alt][]}}:{{ports[https][1]}}/clipboard-apis/resources/page.html"></iframe><br>
|
||||||
|
<input value="Test">
|
||||||
|
<script>
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Permissions are required in order to invoke navigator.clipboard functions in
|
||||||
|
// an automated test.
|
||||||
|
async function getPermissions() {
|
||||||
|
await test_driver.set_permission({name: "clipboard-read"}, "granted");
|
||||||
|
await test_driver.set_permission({name: "clipboard-write"}, "granted");
|
||||||
|
await waitForUserActivation();
|
||||||
|
}
|
||||||
|
|
||||||
|
function waitForMessage(msg) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
window.addEventListener("message", function handler(e) {
|
||||||
|
if (e.data == msg) {
|
||||||
|
window.removeEventListener("message", handler);
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateRandomString() {
|
||||||
|
return "random number: " + Math.random();
|
||||||
|
}
|
||||||
|
|
||||||
|
function testCancelPendingWrite(funcToMakeNewRequest, msg) {
|
||||||
|
promise_test(async t => {
|
||||||
|
await getPermissions();
|
||||||
|
|
||||||
|
// Create a pending write request which should be rejected after a new
|
||||||
|
// request is made.
|
||||||
|
let resolvePendingPromise;
|
||||||
|
let promise = navigator.clipboard.write([
|
||||||
|
new ClipboardItem({
|
||||||
|
"text/plain": new Promise((resolve) => { resolvePendingPromise = resolve; }),
|
||||||
|
}),
|
||||||
|
]).catch(e => { return e; });
|
||||||
|
|
||||||
|
// Make a new request that should cancel the prior pending request.
|
||||||
|
let str = generateRandomString();
|
||||||
|
await funcToMakeNewRequest(str);
|
||||||
|
|
||||||
|
// Pending request should be rejected with NotAllowedError.
|
||||||
|
let error = await promise;
|
||||||
|
assert_not_equals(error, undefined);
|
||||||
|
assert_equals(error.name, "NotAllowedError");
|
||||||
|
|
||||||
|
// Resolve pending promise.
|
||||||
|
resolvePendingPromise(generateRandomString());
|
||||||
|
// Check clipboard data.
|
||||||
|
assert_equals(await navigator.clipboard.readText(), str);
|
||||||
|
}, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
testCancelPendingWrite(async (str) => {
|
||||||
|
// A new write request should cancel the prior pending request.
|
||||||
|
await navigator.clipboard.write([
|
||||||
|
new ClipboardItem({
|
||||||
|
"text/plain": str,
|
||||||
|
}),
|
||||||
|
]).catch(() => {
|
||||||
|
assert_true(false, "should not fail");
|
||||||
|
});
|
||||||
|
}, "clipboard.write() should cancel the prior pending one (same document)");
|
||||||
|
|
||||||
|
testCancelPendingWrite(async (str) => {
|
||||||
|
// A new write should cancel the prior pending request.
|
||||||
|
const iframe = document.getElementById("same");
|
||||||
|
iframe.contentWindow.postMessage(["write", str], "*");
|
||||||
|
await waitForMessage("done");
|
||||||
|
}, "clipboard.write() should cancel the prior pending one (same-origin iframe)");
|
||||||
|
|
||||||
|
testCancelPendingWrite(async (str) => {
|
||||||
|
// A new write should cancel the prior pending request.
|
||||||
|
const iframe = document.getElementById("cross");
|
||||||
|
iframe.contentWindow.postMessage(["write", str], "*");
|
||||||
|
await waitForMessage("done");
|
||||||
|
}, "clipboard.write() should cancel the prior pending one (cross-origin iframe)");
|
||||||
|
|
||||||
|
testCancelPendingWrite(async (str) => {
|
||||||
|
const input = document.querySelector("input");
|
||||||
|
input.value = str;
|
||||||
|
input.focus();
|
||||||
|
input.select();
|
||||||
|
|
||||||
|
// A new copy action should cancel the prior pending request.
|
||||||
|
const modifier_key = navigator.platform.includes("Mac") ? "\uE03D" : "\uE009";
|
||||||
|
await new test_driver.Actions().keyDown(modifier_key).keyDown("c").send();
|
||||||
|
}, "copy action should cancel the prior pending clipboard.write() request");
|
||||||
|
|
||||||
|
</script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-action.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
<script src="user-activation.js"></script>
|
||||||
|
|
||||||
|
<div style="width: 10px; height: 10px"></div>
|
||||||
|
<script>
|
||||||
|
window.addEventListener("message", async (e) => {
|
||||||
|
if (e.data && e.data[0] == "write") {
|
||||||
|
test_driver.set_test_context(window.parent);
|
||||||
|
await test_driver.set_permission({name: 'clipboard-read'}, 'granted');
|
||||||
|
await test_driver.set_permission({name: 'clipboard-write'}, 'granted');
|
||||||
|
await waitForUserActivation();
|
||||||
|
await navigator.clipboard.write([
|
||||||
|
new ClipboardItem({
|
||||||
|
"text/plain": e.data[1],
|
||||||
|
}),
|
||||||
|
]).catch(() => {
|
||||||
|
assert_true(false, `should not fail`);
|
||||||
|
});
|
||||||
|
window.parent.postMessage("done", "*");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -7,14 +7,12 @@
|
||||||
*/
|
*/
|
||||||
function waitForAtLeastOneFrame() {
|
function waitForAtLeastOneFrame() {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
// Different web engines work slightly different on this area but 1) waiting
|
// Different web engines work slightly different on this area but waiting
|
||||||
// for two requestAnimationFrames() to happen one after another and 2)
|
// for two requestAnimationFrames() to happen, one after another, should be
|
||||||
// adding a step_timeout(0) to guarantee events have finished should be
|
|
||||||
// sufficient to ensure at least one frame has been generated anywhere.
|
// sufficient to ensure at least one frame has been generated anywhere.
|
||||||
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1785615
|
|
||||||
window.requestAnimationFrame(() => {
|
window.requestAnimationFrame(() => {
|
||||||
window.requestAnimationFrame(() => {
|
window.requestAnimationFrame(() => {
|
||||||
setTimeout(resolve, 0);
|
resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -85,8 +85,10 @@
|
||||||
|
|
||||||
tests.forEach(test => {
|
tests.forEach(test => {
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
var url = generateUrlWithAllowCSPFrom(test.origin, test.allow_csp_from);
|
const url = generateUrlWithAllowCSPFrom(
|
||||||
assert_iframe_with_csp(t, url, test.csp, test.expected, test.name, test.blockedURI);
|
test.origin, test.allow_csp_from);
|
||||||
|
assert_iframe_with_csp(t, url, test.csp, test.expected, test.name,
|
||||||
|
test.blockedURI, /*checkImageLoaded=*/true);
|
||||||
}, test.name);
|
}, test.name);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -102,14 +102,16 @@ function assert_required_csp(t, url, csp, expected) {
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
function assert_iframe_with_csp(t, url, csp, shouldBlock, urlId, blockedURI) {
|
function assert_iframe_with_csp(t, url, csp, shouldBlock, urlId, blockedURI,
|
||||||
var i = document.createElement('iframe');
|
checkImageLoaded) {
|
||||||
|
const i = document.createElement('iframe');
|
||||||
url.searchParams.append("id", urlId);
|
url.searchParams.append("id", urlId);
|
||||||
i.src = url.toString();
|
i.src = url.toString();
|
||||||
if (csp != null)
|
if (csp != null)
|
||||||
i.csp = csp;
|
i.csp = csp;
|
||||||
|
|
||||||
var loaded = {};
|
var loaded = {};
|
||||||
|
var onLoadReceived = {};
|
||||||
window.addEventListener("message", function (e) {
|
window.addEventListener("message", function (e) {
|
||||||
if (e.source != i.contentWindow)
|
if (e.source != i.contentWindow)
|
||||||
return;
|
return;
|
||||||
|
@ -146,24 +148,22 @@ function assert_iframe_with_csp(t, url, csp, shouldBlock, urlId, blockedURI) {
|
||||||
} else {
|
} else {
|
||||||
// Assert iframe loads. Wait for the load event, the postMessage from the
|
// Assert iframe loads. Wait for the load event, the postMessage from the
|
||||||
// script and the img load event.
|
// script and the img load event.
|
||||||
let postMessage_received = false;
|
let img_loaded = !checkImageLoaded;
|
||||||
let img_loaded = false;
|
|
||||||
window.addEventListener('message', t.step_func(e => {
|
window.addEventListener('message', t.step_func(e => {
|
||||||
if (e.source != i.contentWindow)
|
if (e.source != i.contentWindow)
|
||||||
return;
|
return;
|
||||||
if (e.data.loaded) {
|
if (e.data === "img loaded")
|
||||||
assert_true(loaded[urlId]);
|
|
||||||
postMessage_received = true;
|
|
||||||
} else if (e.data === "img.loaded")
|
|
||||||
img_loaded = true;
|
img_loaded = true;
|
||||||
|
|
||||||
if (i.onloadReceived && postMessage_received && img_loaded)
|
if (loaded[urlId] && onLoadReceived[urlId] && img_loaded) {
|
||||||
t.done();
|
t.done();
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
i.onload = t.step_func(function () {
|
i.onload = t.step_func(function () {
|
||||||
if (loaded[urlId])
|
onLoadReceived[urlId] = true;
|
||||||
|
if (loaded[urlId] && onLoadReceived[urlId] && img_loaded) {
|
||||||
t.done();
|
t.done();
|
||||||
i.onloadReceived = true;
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue