diff options
229 files changed, 7980 insertions, 614 deletions
diff --git a/Cargo.lock b/Cargo.lock index 0a3b71daf20..872c4f62549 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -779,6 +779,7 @@ dependencies = [ "num-traits", "pixels", "profile_traits", + "rust-webvr", "script_traits", "servo-media", "servo_geometry", @@ -788,7 +789,6 @@ dependencies = [ "toml", "webrender", "webrender_api", - "webvr", "webvr_traits", "webxr", ] @@ -6585,6 +6585,7 @@ name = "webdriver_server" version = "0.0.1" dependencies = [ "base64", + "compositing", "cookie", "crossbeam-channel", "euclid", @@ -6703,6 +6704,7 @@ name = "webvr" version = "0.0.1" dependencies = [ "canvas_traits", + "compositing", "crossbeam-channel", "euclid", "ipc-channel", @@ -6710,7 +6712,6 @@ dependencies = [ "msg", "rust-webvr", "rust-webvr-api", - "script_traits", "servo_config", "sparkle", "webvr_traits", @@ -6763,7 +6764,7 @@ dependencies = [ [[package]] name = "wgpu-core" version = "0.1.0" -source = "git+https://github.com/gfx-rs/wgpu#881222a9477036e9e3504045452d88abfe5ae177" +source = "git+https://github.com/gfx-rs/wgpu#d4a46cb60e71d6b108e9052cc581e52e44a16a44" dependencies = [ "arrayvec 0.5.1", "battery", diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs index 80017dc194a..165e5cb1e18 100644 --- a/components/canvas/canvas_paint_thread.rs +++ b/components/canvas/canvas_paint_thread.rs @@ -87,6 +87,7 @@ impl<'a> CanvasPaintThread<'a> { Ok(ConstellationCanvasMsg::Exit) => break, Err(e) => { warn!("Error on CanvasPaintThread receive ({})", e); + break; }, } } diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index 90daa3a3be5..c1c9244cda5 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -31,6 +31,7 @@ net_traits = {path = "../net_traits"} num-traits = "0.2" pixels = {path = "../pixels", optional = true} profile_traits = {path = "../profile_traits"} +rust-webvr = {version = "0.16", features = ["mock", "openvr", "vrexternal"]} script_traits = {path = "../script_traits"} servo_geometry = {path = "../geometry"} servo-media = {git = "https://github.com/servo/media"} @@ -40,7 +41,6 @@ time = "0.1.17" webrender = {git = "https://github.com/servo/webrender", features = ["capture"]} webrender_api = {git = "https://github.com/servo/webrender"} webvr_traits = {path = "../webvr_traits"} -webvr = {path = "../webvr"} webxr = {git = "https://github.com/servo/webxr"} [build-dependencies] diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 10f7e6de2e6..ec453d95f6c 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -10,8 +10,7 @@ use crate::touch::{TouchAction, TouchHandler}; use crate::windowing::{ self, EmbedderCoordinates, MouseWindowEvent, WebRenderDebugOption, WindowMethods, }; -use crate::CompositionPipeline; -use crate::SendableFrameTree; +use crate::{CompositionPipeline, ConstellationMsg, SendableFrameTree}; use crossbeam_channel::Sender; use embedder_traits::Cursor; use euclid::{Point2D, Rect, Scale, Vector2D}; @@ -28,7 +27,7 @@ use num_traits::FromPrimitive; use pixels::PixelFormat; use profile_traits::time::{self as profile_time, profile, ProfilerCategory}; use script_traits::CompositorEvent::{MouseButtonEvent, MouseMoveEvent, TouchEvent, WheelEvent}; -use script_traits::{AnimationState, AnimationTickType, ConstellationMsg, LayoutControlMsg}; +use script_traits::{AnimationState, AnimationTickType, LayoutControlMsg}; use script_traits::{ MouseButton, MouseEventType, ScrollState, TouchEventType, TouchId, WheelDelta, }; diff --git a/components/compositing/compositor_thread.rs b/components/compositing/compositor_thread.rs index 9ba7f53c22c..0c0f014f9da 100644 --- a/components/compositing/compositor_thread.rs +++ b/components/compositing/compositor_thread.rs @@ -5,7 +5,7 @@ //! Communication with the compositor thread. use crate::compositor::CompositingReason; -use crate::SendableFrameTree; +use crate::{ConstellationMsg, SendableFrameTree}; use crossbeam_channel::{Receiver, Sender}; use embedder_traits::EventLoopWaker; use euclid::Rect; @@ -15,7 +15,7 @@ use msg::constellation_msg::{PipelineId, TopLevelBrowsingContextId}; use net_traits::image::base::Image; use profile_traits::mem; use profile_traits::time; -use script_traits::{AnimationState, ConstellationMsg, EventResult, MouseButton, MouseEventType}; +use script_traits::{AnimationState, EventResult, MouseButton, MouseEventType}; use std::fmt::{Debug, Error, Formatter}; use style_traits::viewport::ViewportConstraints; use style_traits::CSSPixel; diff --git a/components/compositing/lib.rs b/components/compositing/lib.rs index 49b2ab7bf70..a6c94697142 100644 --- a/components/compositing/lib.rs +++ b/components/compositing/lib.rs @@ -11,10 +11,24 @@ pub use crate::compositor::CompositingReason; pub use crate::compositor::IOCompositor; pub use crate::compositor::ShutdownState; pub use crate::compositor_thread::CompositorProxy; +use embedder_traits::Cursor; +use gfx_traits::Epoch; use ipc_channel::ipc::IpcSender; +use keyboard_types::KeyboardEvent; use msg::constellation_msg::PipelineId; use msg::constellation_msg::TopLevelBrowsingContextId; -use script_traits::{ConstellationControlMsg, LayoutControlMsg}; +use msg::constellation_msg::{BrowsingContextId, TraversalDirection}; +use script_traits::{ + AnimationTickType, LogEntry, WebDriverCommandMsg, WindowSizeData, WindowSizeType, +}; +use script_traits::{ + CompositorEvent, ConstellationControlMsg, LayoutControlMsg, MediaSessionActionType, +}; +use servo_url::ServoUrl; +use std::collections::HashMap; +use std::fmt; +use std::time::Duration; +use webvr_traits::WebVREvent; mod compositor; pub mod compositor_thread; @@ -36,3 +50,98 @@ pub struct CompositionPipeline { pub script_chan: IpcSender<ConstellationControlMsg>, pub layout_chan: IpcSender<LayoutControlMsg>, } + +/// Messages to the constellation. +pub enum ConstellationMsg { + /// Exit the constellation. + Exit, + /// Request that the constellation send the BrowsingContextId corresponding to the document + /// with the provided pipeline id + GetBrowsingContext(PipelineId, IpcSender<Option<BrowsingContextId>>), + /// Request that the constellation send the current pipeline id for the provided + /// browsing context id, over a provided channel. + GetPipeline(BrowsingContextId, IpcSender<Option<PipelineId>>), + /// Request that the constellation send the current focused top-level browsing context id, + /// over a provided channel. + GetFocusTopLevelBrowsingContext(IpcSender<Option<TopLevelBrowsingContextId>>), + /// Query the constellation to see if the current compositor output is stable + IsReadyToSaveImage(HashMap<PipelineId, Epoch>), + /// Inform the constellation of a key event. + Keyboard(KeyboardEvent), + /// Whether to allow script to navigate. + AllowNavigationResponse(PipelineId, bool), + /// Request to load a page. + LoadUrl(TopLevelBrowsingContextId, ServoUrl), + /// Request to traverse the joint session history of the provided browsing context. + TraverseHistory(TopLevelBrowsingContextId, TraversalDirection), + /// Inform the constellation of a window being resized. + WindowSize( + Option<TopLevelBrowsingContextId>, + WindowSizeData, + WindowSizeType, + ), + /// Requests that the constellation instruct layout to begin a new tick of the animation. + TickAnimation(PipelineId, AnimationTickType), + /// Dispatch a webdriver command + WebDriverCommand(WebDriverCommandMsg), + /// Reload a top-level browsing context. + Reload(TopLevelBrowsingContextId), + /// A log entry, with the top-level browsing context id and thread name + LogEntry(Option<TopLevelBrowsingContextId>, Option<String>, LogEntry), + /// Dispatch WebVR events to the subscribed script threads. + WebVREvents(Vec<PipelineId>, Vec<WebVREvent>), + /// Create a new top level browsing context. + NewBrowser(ServoUrl, TopLevelBrowsingContextId), + /// Close a top level browsing context. + CloseBrowser(TopLevelBrowsingContextId), + /// Panic a top level browsing context. + SendError(Option<TopLevelBrowsingContextId>, String), + /// Make browser visible. + SelectBrowser(TopLevelBrowsingContextId), + /// Forward an event to the script task of the given pipeline. + ForwardEvent(PipelineId, CompositorEvent), + /// Requesting a change to the onscreen cursor. + SetCursor(Cursor), + /// Enable the sampling profiler, with a given sampling rate and max total sampling duration. + EnableProfiler(Duration, Duration), + /// Disable the sampling profiler. + DisableProfiler, + /// Request to exit from fullscreen mode + ExitFullScreen(TopLevelBrowsingContextId), + /// Media session action. + MediaSessionAction(MediaSessionActionType), +} + +impl fmt::Debug for ConstellationMsg { + fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + use self::ConstellationMsg::*; + let variant = match *self { + Exit => "Exit", + GetBrowsingContext(..) => "GetBrowsingContext", + GetPipeline(..) => "GetPipeline", + GetFocusTopLevelBrowsingContext(..) => "GetFocusTopLevelBrowsingContext", + IsReadyToSaveImage(..) => "IsReadyToSaveImage", + Keyboard(..) => "Keyboard", + AllowNavigationResponse(..) => "AllowNavigationResponse", + LoadUrl(..) => "LoadUrl", + TraverseHistory(..) => "TraverseHistory", + WindowSize(..) => "WindowSize", + TickAnimation(..) => "TickAnimation", + WebDriverCommand(..) => "WebDriverCommand", + Reload(..) => "Reload", + LogEntry(..) => "LogEntry", + WebVREvents(..) => "WebVREvents", + NewBrowser(..) => "NewBrowser", + CloseBrowser(..) => "CloseBrowser", + SendError(..) => "SendError", + SelectBrowser(..) => "SelectBrowser", + ForwardEvent(..) => "ForwardEvent", + SetCursor(..) => "SetCursor", + EnableProfiler(..) => "EnableProfiler", + DisableProfiler => "DisableProfiler", + ExitFullScreen(..) => "ExitFullScreen", + MediaSessionAction(..) => "MediaSessionAction", + }; + write!(formatter, "ConstellationMsg::{}", variant) + } +} diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index cdc1b7ff883..93e7c914313 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -20,10 +20,10 @@ use std::rc::Rc; use std::time::Duration; use style_traits::DevicePixel; +use rust_webvr::VRServiceManager; use webrender_api::units::DevicePoint; use webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize}; use webrender_api::ScrollLocation; -use webvr::VRServiceManager; use webvr_traits::WebVRMainThreadHeartbeat; #[derive(Clone)] diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index 89d0b4462a1..e594594cc22 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -109,7 +109,7 @@ use canvas_traits::canvas::{CanvasId, CanvasMsg}; use canvas_traits::webgl::WebGLThreads; use compositing::compositor_thread::CompositorProxy; use compositing::compositor_thread::Msg as ToCompositorMsg; -use compositing::SendableFrameTree; +use compositing::{ConstellationMsg as FromCompositorMsg, SendableFrameTree}; use crossbeam_channel::{after, never, unbounded, Receiver, Sender}; use devtools_traits::{ChromeToDevtoolsControlMsg, DevtoolsControlMsg}; use embedder_traits::{Cursor, EmbedderMsg, EmbedderProxy, EventLoopWaker}; @@ -145,9 +145,7 @@ use script_traits::{webdriver_msg, LogEntry, ScriptToConstellationChan, ServiceW use script_traits::{ AnimationState, AnimationTickType, AuxiliaryBrowsingContextLoadInfo, CompositorEvent, }; -use script_traits::{ - ConstellationControlMsg, ConstellationMsg as FromCompositorMsg, DiscardBrowsingContext, -}; +use script_traits::{ConstellationControlMsg, DiscardBrowsingContext}; use script_traits::{DocumentActivity, DocumentState, LayoutControlMsg, LoadData, LoadOrigin}; use script_traits::{HistoryEntryReplacement, IFrameSizeMsg, WindowSizeData, WindowSizeType}; use script_traits::{ diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs index 466d844418a..c47635afedb 100644 --- a/components/layout_thread/dom_wrapper.rs +++ b/components/layout_thread/dom_wrapper.rs @@ -955,6 +955,7 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { NonTSPseudoClass::Focus | NonTSPseudoClass::Fullscreen | NonTSPseudoClass::Hover | + NonTSPseudoClass::Defined | NonTSPseudoClass::Enabled | NonTSPseudoClass::Disabled | NonTSPseudoClass::Checked | diff --git a/components/layout_thread_2020/dom_wrapper.rs b/components/layout_thread_2020/dom_wrapper.rs index 520014837db..e2bdc0f42a6 100644 --- a/components/layout_thread_2020/dom_wrapper.rs +++ b/components/layout_thread_2020/dom_wrapper.rs @@ -962,6 +962,7 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { NonTSPseudoClass::Focus | NonTSPseudoClass::Fullscreen | NonTSPseudoClass::Hover | + NonTSPseudoClass::Defined | NonTSPseudoClass::Enabled | NonTSPseudoClass::Disabled | NonTSPseudoClass::Checked | diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index ffd4a4952d0..471d890c80b 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -152,7 +152,8 @@ use tendril::{StrTendril, TendrilSink}; use time::{Duration, Timespec, Tm}; use uuid::Uuid; use webgpu::{ - WebGPU, WebGPUAdapter, WebGPUBindGroupLayout, WebGPUBuffer, WebGPUDevice, WebGPUPipelineLayout, + WebGPU, WebGPUAdapter, WebGPUBindGroup, WebGPUBindGroupLayout, WebGPUBuffer, WebGPUDevice, + WebGPUPipelineLayout, }; use webrender_api::{DocumentId, ImageKey}; use webvr_traits::{WebVRGamepadData, WebVRGamepadHand, WebVRGamepadState}; @@ -532,6 +533,7 @@ unsafe_no_jsmanaged_fields!(WebGPU); unsafe_no_jsmanaged_fields!(WebGPUAdapter); unsafe_no_jsmanaged_fields!(WebGPUDevice); unsafe_no_jsmanaged_fields!(WebGPUBuffer); +unsafe_no_jsmanaged_fields!(WebGPUBindGroup); unsafe_no_jsmanaged_fields!(WebGPUBindGroupLayout); unsafe_no_jsmanaged_fields!(WebGPUPipelineLayout); unsafe_no_jsmanaged_fields!(GPUBufferState); diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index d67550ee47f..f68a680483d 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -200,6 +200,8 @@ fn create_html_element( None => { if is_valid_custom_element_name(&*name.local) { result.set_custom_element_state(CustomElementState::Undefined); + } else { + result.set_custom_element_state(CustomElementState::Uncustomized); } }, }; diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index b870ab4f16d..7f56f58c502 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -52,6 +52,17 @@ impl DOMTokenList { slice => Ok(Atom::from(slice)), } } + + // https://dom.spec.whatwg.org/#concept-dtl-update + fn perform_update_steps(&self, atoms: Vec<Atom>) { + // Step 1 + if !self.element.has_attribute(&self.local_name) && atoms.len() == 0 { + return; + } + // step 2 + self.element + .set_atomic_tokenlist_attribute(&self.local_name, atoms) + } } // https://dom.spec.whatwg.org/#domtokenlist @@ -93,8 +104,7 @@ impl DOMTokenListMethods for DOMTokenList { atoms.push(token); } } - self.element - .set_atomic_tokenlist_attribute(&self.local_name, atoms); + self.perform_update_steps(atoms); Ok(()) } @@ -108,8 +118,7 @@ impl DOMTokenListMethods for DOMTokenList { .position(|atom| *atom == token) .map(|index| atoms.remove(index)); } - self.element - .set_atomic_tokenlist_attribute(&self.local_name, atoms); + self.perform_update_steps(atoms); Ok(()) } @@ -122,8 +131,7 @@ impl DOMTokenListMethods for DOMTokenList { Some(true) => Ok(true), _ => { atoms.remove(index); - self.element - .set_atomic_tokenlist_attribute(&self.local_name, atoms); + self.perform_update_steps(atoms); Ok(false) }, }, @@ -131,8 +139,7 @@ impl DOMTokenListMethods for DOMTokenList { Some(false) => Ok(false), _ => { atoms.push(token); - self.element - .set_atomic_tokenlist_attribute(&self.local_name, atoms); + self.perform_update_steps(atoms); Ok(true) }, }, @@ -166,14 +173,27 @@ impl DOMTokenListMethods for DOMTokenList { let mut atoms = self.element.get_tokenlist_attribute(&self.local_name); let mut result = false; if let Some(pos) = atoms.iter().position(|atom| *atom == token) { - if !atoms.contains(&new_token) { - atoms[pos] = new_token; + if let Some(redundant_pos) = atoms.iter().position(|atom| *atom == new_token) { + if redundant_pos > pos { + // The replacement is already in the list, later, + // so we perform the replacement and remove the + // later copy. + atoms[pos] = new_token; + atoms.remove(redundant_pos); + } else if redundant_pos < pos { + // The replacement is already in the list, earlier, + // so we remove the index where we'd be putting the + // later copy. + atoms.remove(pos); + } + // else we are replacing the token with itself, nothing to change } else { - atoms.remove(pos); + // The replacement is not in the list already + atoms[pos] = new_token; } + // Step 5. - self.element - .set_atomic_tokenlist_attribute(&self.local_name, atoms); + self.perform_update_steps(atoms); result = true; } Ok(result) diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 29bdaf2f3bf..c26e492d544 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -324,14 +324,23 @@ impl Element { } pub fn set_custom_element_state(&self, state: CustomElementState) { - self.ensure_rare_data().custom_element_state = state; + // no need to inflate rare data for uncustomized + if state != CustomElementState::Uncustomized || self.rare_data().is_some() { + self.ensure_rare_data().custom_element_state = state; + } + // https://dom.spec.whatwg.org/#concept-element-defined + let in_defined_state = match state { + CustomElementState::Uncustomized | CustomElementState::Custom => true, + _ => false, + }; + self.set_state(ElementState::IN_DEFINED_STATE, in_defined_state) } pub fn get_custom_element_state(&self) -> CustomElementState { if let Some(rare_data) = self.rare_data().as_ref() { return rare_data.custom_element_state; } - CustomElementState::Undefined + CustomElementState::Uncustomized } pub fn set_custom_element_definition(&self, definition: Rc<CustomElementDefinition>) { @@ -3039,6 +3048,7 @@ impl<'a> SelectorsElement for DomRoot<Element> { NonTSPseudoClass::Focus | NonTSPseudoClass::Fullscreen | NonTSPseudoClass::Hover | + NonTSPseudoClass::Defined | NonTSPseudoClass::Enabled | NonTSPseudoClass::Disabled | NonTSPseudoClass::Checked | diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index e8e7ad7251c..561022f0f3a 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -419,7 +419,7 @@ pub enum EventPhase { /// helps us to prevent such events from being [sent to the constellation][msg] where it will be /// handled once again for page scrolling (which is definitely not what we'd want). /// -/// [msg]: https://doc.servo.org/script_traits/enum.ConstellationMsg.html#variant.KeyEvent +/// [msg]: https://doc.servo.org/compositing/enum.ConstellationMsg.html#variant.KeyEvent /// #[derive(Clone, Copy, JSTraceable, MallocSizeOf, PartialEq)] pub enum EventDefault { diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 5de65567595..1d80781a2fb 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -404,9 +404,15 @@ impl EventTarget { }); match idx { - Some(idx) => { - entries[idx].listener = - EventListenerType::Inline(listener.unwrap_or(InlineEventListener::Null)); + Some(idx) => match listener { + // Replace if there's something to replace with, + // but remove entirely if there isn't. + Some(listener) => { + entries[idx].listener = EventListenerType::Inline(listener); + }, + None => { + entries.remove(idx); + }, }, None => { if let Some(listener) = listener { diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index f8427ffd083..aa0bfee1b79 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -98,7 +98,7 @@ use std::sync::Arc; use time::{get_time, Timespec}; use uuid::Uuid; use webgpu::wgpu::{ - id::{AdapterId, BindGroupLayoutId, BufferId, DeviceId, PipelineLayoutId}, + id::{AdapterId, BindGroupId, BindGroupLayoutId, BufferId, DeviceId, PipelineLayoutId}, Backend, }; @@ -2105,6 +2105,10 @@ impl GlobalScope { self.gpu_id_hub.borrow_mut().create_adapter_ids() } + pub fn wgpu_create_bind_group_id(&self, backend: Backend) -> BindGroupId { + self.gpu_id_hub.borrow_mut().create_bind_group_id(backend) + } + pub fn wgpu_create_bind_group_layout_id(&self, backend: Backend) -> BindGroupLayoutId { self.gpu_id_hub .borrow_mut() diff --git a/components/script/dom/gpubindgroup.rs b/components/script/dom/gpubindgroup.rs new file mode 100644 index 00000000000..c14ca7a23b5 --- /dev/null +++ b/components/script/dom/gpubindgroup.rs @@ -0,0 +1,58 @@ +/* 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 crate::dom::bindings::cell::DomRefCell; +use crate::dom::bindings::codegen::Bindings::GPUBindGroupBinding::{ + GPUBindGroupBinding, GPUBindGroupMethods, +}; +use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::DOMString; +use crate::dom::globalscope::GlobalScope; +use dom_struct::dom_struct; +use std::cell::Cell; +use webgpu::WebGPUBindGroup; + +#[dom_struct] +pub struct GPUBindGroup { + reflector_: Reflector, + label: DomRefCell<Option<DOMString>>, + bind_group: WebGPUBindGroup, + valid: Cell<bool>, +} + +impl GPUBindGroup { + fn new_inherited(bind_group: WebGPUBindGroup, valid: bool) -> GPUBindGroup { + Self { + reflector_: Reflector::new(), + label: DomRefCell::new(None), + bind_group, + valid: Cell::new(valid), + } + } + + pub fn new( + global: &GlobalScope, + bind_group: WebGPUBindGroup, + valid: bool, + ) -> DomRoot<GPUBindGroup> { + reflect_dom_object( + Box::new(GPUBindGroup::new_inherited(bind_group, valid)), + global, + GPUBindGroupBinding::Wrap, + ) + } +} + +impl GPUBindGroupMethods for GPUBindGroup { + /// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label + fn GetLabel(&self) -> Option<DOMString> { + self.label.borrow().clone() + } + + /// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label + fn SetLabel(&self, value: Option<DOMString>) { + *self.label.borrow_mut() = value; + } +} diff --git a/components/script/dom/gpubuffer.rs b/components/script/dom/gpubuffer.rs index 160ef6cf79c..8cc9bc52249 100644 --- a/components/script/dom/gpubuffer.rs +++ b/components/script/dom/gpubuffer.rs @@ -79,6 +79,20 @@ impl GPUBuffer { } } +impl GPUBuffer { + pub fn id(&self) -> WebGPUBuffer { + self.buffer + } + + pub fn size(&self) -> GPUBufferSize { + self.size + } + + pub fn usage(&self) -> u32 { + self.usage + } +} + impl Drop for GPUBuffer { fn drop(&mut self) { self.Destroy() diff --git a/components/script/dom/gpudevice.rs b/components/script/dom/gpudevice.rs index de3efec8117..4c576c37e8b 100644 --- a/components/script/dom/gpudevice.rs +++ b/components/script/dom/gpudevice.rs @@ -6,6 +6,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::GPUAdapterBinding::GPULimits; +use crate::dom::bindings::codegen::Bindings::GPUBindGroupBinding::GPUBindGroupDescriptor; use crate::dom::bindings::codegen::Bindings::GPUBindGroupLayoutBinding::{ GPUBindGroupLayoutBindings, GPUBindGroupLayoutDescriptor, GPUBindingType, }; @@ -18,6 +19,7 @@ use crate::dom::bindings::str::DOMString; use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; use crate::dom::gpuadapter::GPUAdapter; +use crate::dom::gpubindgroup::GPUBindGroup; use crate::dom::gpubindgrouplayout::GPUBindGroupLayout; use crate::dom::gpubuffer::{GPUBuffer, GPUBufferState}; use crate::dom::gpupipelinelayout::GPUPipelineLayout; @@ -29,7 +31,10 @@ use js::jsval::{JSVal, ObjectValue}; use js::typedarray::{ArrayBuffer, CreateWith}; use std::collections::{HashMap, HashSet}; use std::ptr::{self, NonNull}; -use webgpu::wgpu::binding_model::{BindGroupLayoutBinding, BindingType, ShaderStage}; +use webgpu::wgpu::binding_model::{ + BindGroupBinding, BindGroupLayoutBinding, BindingResource, BindingType, BufferBinding, + ShaderStage, +}; use webgpu::wgpu::resource::{BufferDescriptor, BufferUsage}; use webgpu::{WebGPU, WebGPUBuffer, WebGPUDevice, WebGPURequest}; @@ -463,4 +468,64 @@ impl GPUDeviceMethods for GPUDevice { let pipeline_layout = receiver.recv().unwrap(); GPUPipelineLayout::new(&self.global(), bind_group_layouts, pipeline_layout, valid) } + + /// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbindgroup + fn CreateBindGroup(&self, descriptor: &GPUBindGroupDescriptor) -> DomRoot<GPUBindGroup> { + let alignment: u64 = 256; + let mut valid = descriptor.layout.bindings().len() == descriptor.bindings.len(); + + valid &= descriptor.bindings.iter().all(|bind| { + let buffer_size = bind.resource.buffer.size(); + let resource_size = bind.resource.size.unwrap_or(buffer_size); + let length = bind.resource.offset.checked_add(resource_size); + let usage = BufferUsage::from_bits(bind.resource.buffer.usage()).unwrap(); + + length.is_some() && + buffer_size >= length.unwrap() && // check buffer OOB + bind.resource.offset % alignment == 0 && // check alignment + bind.resource.offset < buffer_size && // on Vulkan offset must be less than size of buffer + descriptor.layout.bindings().iter().any(|layout_bind| { + let ty = match layout_bind.type_ { + GPUBindingType::Storage_buffer => BufferUsage::STORAGE, + // GPUBindingType::Readonly_storage_buffer => BufferUsage::STORAGE_READ, + GPUBindingType::Uniform_buffer => BufferUsage::UNIFORM, + _ => unimplemented!(), + }; + // binding must be present in layout + layout_bind.binding == bind.binding && + // binding must contain one buffer of its type + usage.contains(ty) + }) + }); + + let bindings = descriptor + .bindings + .iter() + .map(|bind| BindGroupBinding { + binding: bind.binding, + resource: BindingResource::Buffer(BufferBinding { + buffer: bind.resource.buffer.id().0, + offset: bind.resource.offset, + size: bind.resource.size.unwrap_or(bind.resource.buffer.size()), + }), + }) + .collect::<Vec<_>>(); + let (sender, receiver) = ipc::channel().unwrap(); + let id = self + .global() + .wgpu_create_bind_group_id(self.device.0.backend()); + self.channel + .0 + .send(WebGPURequest::CreateBindGroup( + sender, + self.device, + id, + descriptor.layout.id(), + bindings, + )) + .expect("Failed to create WebGPU PipelineLayout"); + + let bind_group = receiver.recv().unwrap(); + GPUBindGroup::new(&self.global(), bind_group, valid) + } } diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index b7c7da1e9bf..49541a2d4a0 100755 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -307,7 +307,7 @@ impl Activatable for HTMLButtonElement { if let Some(owner) = self.form_owner() { owner.submit( SubmittedFrom::NotFromForm, - FormSubmitter::ButtonElement(self.clone()), + FormSubmitter::ButtonElement(self), ); } }, diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index ebbe1d49615..bf59dc0280b 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -48,6 +48,7 @@ use crate::dom::node::{Node, NodeFlags, ShadowIncluding}; use crate::dom::node::{UnbindContext, VecPreOrderInsertionHelper}; use crate::dom::nodelist::{NodeList, RadioListMode}; use crate::dom::radionodelist::RadioNodeList; +use crate::dom::submitevent::SubmitEvent; use crate::dom::validitystate::ValidationFlags; use crate::dom::virtualmethods::VirtualMethods; use crate::dom::window::Window; @@ -604,10 +605,29 @@ impl HTMLFormElement { } } // Step 7 + // spec calls this "submitterButton" but it doesn't have to be a button, + // just not be the form itself + let submitter_button = match submitter { + FormSubmitter::FormElement(f) => { + if f == self { + None + } else { + Some(f.upcast::<HTMLElement>()) + } + }, + FormSubmitter::InputElement(i) => Some(i.upcast::<HTMLElement>()), + FormSubmitter::ButtonElement(b) => Some(b.upcast::<HTMLElement>()), + }; if submit_method_flag == SubmittedFrom::NotFromForm { - let event = self - .upcast::<EventTarget>() - .fire_bubbling_cancelable_event(atom!("submit")); + let event = SubmitEvent::new( + &self.global(), + atom!("submit"), + true, + true, + submitter_button.map(|s| DomRoot::from_ref(s)), + ); + let event = event.upcast::<Event>(); + event.fire(self.upcast::<EventTarget>()); if event.DefaultPrevented() { return; } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index a8587b58ed0..88b2e688d65 100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -2470,7 +2470,7 @@ impl Activatable for HTMLInputElement { self.form_owner().map(|o| { o.submit( SubmittedFrom::NotFromForm, - FormSubmitter::InputElement(self.clone()), + FormSubmitter::InputElement(self), ) }); }, diff --git a/components/script/dom/identityhub.rs b/components/script/dom/identityhub.rs index 91ead1acf0a..311428893c0 100644 --- a/components/script/dom/identityhub.rs +++ b/components/script/dom/identityhub.rs @@ -5,7 +5,7 @@ use smallvec::SmallVec; use webgpu::wgpu::{ hub::IdentityManager, - id::{AdapterId, BindGroupLayoutId, BufferId, DeviceId, PipelineLayoutId}, + id::{AdapterId, BindGroupId, BindGroupLayoutId, BufferId, DeviceId, PipelineLayoutId}, Backend, }; @@ -14,6 +14,7 @@ pub struct IdentityHub { adapters: IdentityManager, devices: IdentityManager, buffers: IdentityManager, + bind_groups: IdentityManager, bind_group_layouts: IdentityManager, pipeline_layouts: IdentityManager, backend: Backend, @@ -25,6 +26,7 @@ impl IdentityHub { adapters: IdentityManager::default(), devices: IdentityManager::default(), buffers: IdentityManager::default(), + bind_groups: IdentityManager::default(), bind_group_layouts: IdentityManager::default(), pipeline_layouts: IdentityManager::default(), backend, @@ -43,6 +45,10 @@ impl IdentityHub { self.buffers.alloc(self.backend) } + fn create_bind_group_id(&mut self) -> BindGroupId { + self.bind_groups.alloc(self.backend) + } + fn create_bind_group_layout_id(&mut self) -> BindGroupLayoutId { self.bind_group_layouts.alloc(self.backend) } @@ -82,6 +88,20 @@ impl Identities { } } + fn select(&mut self, backend: Backend) -> &mut IdentityHub { + match backend { + #[cfg(any(target_os = "linux", target_os = "windows"))] + Backend::Vulkan => &mut self.vk_hub, + #[cfg(target_os = "windows")] + Backend::Dx12 => &mut self.dx12_hub, + #[cfg(target_os = "windows")] + Backend::Dx11 => &mut self.dx11_hub, + #[cfg(any(target_os = "ios", target_os = "macos"))] + Backend::Metal => &mut self.metal_hub, + _ => &mut self.dummy_hub, + } + } + fn hubs(&mut self) -> Vec<&mut IdentityHub> { vec![ #[cfg(any(target_os = "linux", target_os = "windows"))] @@ -97,17 +117,7 @@ impl Identities { } pub fn create_device_id(&mut self, backend: Backend) -> DeviceId { - match backend { - #[cfg(any(target_os = "linux", target_os = "windows"))] - Backend::Vulkan => self.vk_hub.create_device_id(), - #[cfg(target_os = "windows")] - Backend::Dx12 => self.dx12_hub.create_device_id(), - #[cfg(target_os = "windows")] - Backend::Dx11 => self.dx11_hub.create_device_id(), - #[cfg(any(target_os = "ios", target_os = "macos"))] - Backend::Metal => self.metal_hub.create_device_id(), - _ => self.dummy_hub.create_device_id(), - } + self.select(backend).create_device_id() } pub fn create_adapter_ids(&mut self) -> SmallVec<[AdapterId; 4]> { @@ -119,44 +129,28 @@ impl Identities { } pub fn create_buffer_id(&mut self, backend: Backend) -> BufferId { + self.select(backend).create_buffer_id() + } + + pub fn create_bind_group_id(&mut self, backend: Backend) -> BindGroupId { match backend { #[cfg(any(target_os = "linux", target_os = "windows"))] - Backend::Vulkan => self.vk_hub.create_buffer_id(), + Backend::Vulkan => self.vk_hub.create_bind_group_id(), #[cfg(target_os = "windows")] - Backend::Dx12 => self.dx12_hub.create_buffer_id(), + Backend::Dx12 => self.dx12_hub.create_bind_group_id(), #[cfg(target_os = "windows")] - Backend::Dx11 => self.dx11_hub.create_buffer_id(), + Backend::Dx11 => self.dx11_hub.create_bind_group_id(), #[cfg(any(target_os = "ios", target_os = "macos"))] - Backend::Metal => self.metal_hub.create_buffer_id(), - _ => self.dummy_hub.create_buffer_id(), + Backend::Metal => self.metal_hub.create_bind_group_id(), + _ => self.dummy_hub.create_bind_group_id(), } } pub fn create_bind_group_layout_id(&mut self, backend: Backend) -> BindGroupLayoutId { - match backend { - #[cfg(any(target_os = "linux", target_os = "windows"))] - Backend::Vulkan => self.vk_hub.create_bind_group_layout_id(), - #[cfg(target_os = "windows")] - Backend::Dx12 => self.dx12_hub.create_bind_group_layout_id(), - #[cfg(target_os = "windows")] - Backend::Dx11 => self.dx11_hub.create_bind_group_layout_id(), - #[cfg(any(target_os = "ios", target_os = "macos"))] - Backend::Metal => self.metal_hub.create_bind_group_layout_id(), - _ => self.dummy_hub.create_bind_group_layout_id(), - } + self.select(backend).create_bind_group_layout_id() } pub fn create_pipeline_layout_id(&mut self, backend: Backend) -> PipelineLayoutId { - match backend { - #[cfg(any(target_os = "linux", target_os = "windows"))] - Backend::Vulkan => self.vk_hub.create_pipeline_layout_id(), - #[cfg(target_os = "windows")] - Backend::Dx12 => self.dx12_hub.create_pipeline_layout_id(), - #[cfg(target_os = "windows")] - Backend::Dx11 => self.dx11_hub.create_pipeline_layout_id(), - #[cfg(any(target_os = "ios", target_os = "macos"))] - Backend::Metal => self.metal_hub.create_pipeline_layout_id(), - _ => self.dummy_hub.create_pipeline_layout_id(), - } + self.select(backend).create_pipeline_layout_id() } } diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index 2550eeda007..c1a1ab72354 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -318,6 +318,7 @@ pub mod gamepadlist; pub mod globalscope; pub mod gpu; pub mod gpuadapter; +pub mod gpubindgroup; pub mod gpubindgrouplayout; pub mod gpubuffer; pub mod gpubufferusage; @@ -483,6 +484,7 @@ pub mod storageevent; pub mod stylepropertymapreadonly; pub mod stylesheet; pub mod stylesheetlist; +pub mod submitevent; pub mod svgelement; pub mod svggraphicselement; pub mod svgsvgelement; diff --git a/components/script/dom/submitevent.rs b/components/script/dom/submitevent.rs new file mode 100644 index 00000000000..17f8e7fd003 --- /dev/null +++ b/components/script/dom/submitevent.rs @@ -0,0 +1,79 @@ +/* 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 crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; +use crate::dom::bindings::codegen::Bindings::SubmitEventBinding; +use crate::dom::bindings::codegen::Bindings::SubmitEventBinding::SubmitEventMethods; +use crate::dom::bindings::inheritance::Castable; +use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::DOMString; +use crate::dom::event::Event; +use crate::dom::globalscope::GlobalScope; +use crate::dom::htmlelement::HTMLElement; +use crate::dom::window::Window; +use dom_struct::dom_struct; +use servo_atoms::Atom; + +#[dom_struct] +#[allow(non_snake_case)] +pub struct SubmitEvent { + event: Event, + submitter: Option<DomRoot<HTMLElement>>, +} + +impl SubmitEvent { + fn new_inherited(submitter: Option<DomRoot<HTMLElement>>) -> SubmitEvent { + SubmitEvent { + event: Event::new_inherited(), + submitter: submitter, + } + } + + pub fn new( + global: &GlobalScope, + type_: Atom, + bubbles: bool, + cancelable: bool, + submitter: Option<DomRoot<HTMLElement>>, + ) -> DomRoot<SubmitEvent> { + let ev = reflect_dom_object( + Box::new(SubmitEvent::new_inherited(submitter)), + global, + SubmitEventBinding::Wrap, + ); + { + let event = ev.upcast::<Event>(); + event.init_event(type_, bubbles, cancelable); + } + ev + } + + #[allow(non_snake_case)] + pub fn Constructor( + window: &Window, + type_: DOMString, + init: &SubmitEventBinding::SubmitEventInit, + ) -> DomRoot<SubmitEvent> { + SubmitEvent::new( + &window.global(), + Atom::from(type_), + init.parent.bubbles, + init.parent.cancelable, + init.submitter.as_ref().map(|s| DomRoot::from_ref(&**s)), + ) + } +} + +impl SubmitEventMethods for SubmitEvent { + /// <https://dom.spec.whatwg.org/#dom-event-istrusted> + fn IsTrusted(&self) -> bool { + self.event.IsTrusted() + } + + /// https://html.spec.whatwg.org/multipage/#dom-submitevent-submitter + fn GetSubmitter(&self) -> Option<DomRoot<HTMLElement>> { + self.submitter.as_ref().map(|s| DomRoot::from_ref(&**s)) + } +} diff --git a/components/script/dom/webidls/GPUBindGroup.webidl b/components/script/dom/webidls/GPUBindGroup.webidl new file mode 100644 index 00000000000..537fda29a63 --- /dev/null +++ b/components/script/dom/webidls/GPUBindGroup.webidl @@ -0,0 +1,31 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +// https://gpuweb.github.io/gpuweb/#gpubindgrouplayout +[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"] +interface GPUBindGroup { +}; +GPUBindGroup includes GPUObjectBase; + +dictionary GPUBindGroupDescriptor : GPUObjectDescriptorBase { + required GPUBindGroupLayout layout; + required sequence<GPUBindGroupBindings> bindings; +}; + +typedef /*(GPUSampler or GPUTextureView or*/ GPUBufferBindings/*)*/ GPUBindingResource; + +// Note: Servo codegen doesn't like the name `GPUBindGroupBinding` because it's already occupied +// dictionary GPUBindGroupBinding { +dictionary GPUBindGroupBindings { + required unsigned long binding; + required GPUBindingResource resource; +}; + +// Note: Servo codegen doesn't like the name `GPUBufferBinding` because it's already occupied +// dictionary GPUBufferBinding { +dictionary GPUBufferBindings { + required GPUBuffer buffer; + GPUBufferSize offset = 0; + GPUBufferSize size; +}; diff --git a/components/script/dom/webidls/GPUDevice.webidl b/components/script/dom/webidls/GPUDevice.webidl index 85e8a3ea633..1966c9b1e92 100644 --- a/components/script/dom/webidls/GPUDevice.webidl +++ b/components/script/dom/webidls/GPUDevice.webidl @@ -17,9 +17,9 @@ interface GPUDevice : EventTarget { GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor); GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor); - /*GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor); + GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor); - GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor); + /*GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor); GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor); GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor); diff --git a/components/script/dom/webidls/SubmitEvent.webidl b/components/script/dom/webidls/SubmitEvent.webidl new file mode 100644 index 00000000000..f5b2c49257d --- /dev/null +++ b/components/script/dom/webidls/SubmitEvent.webidl @@ -0,0 +1,15 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +// https://html.spec.whatwg.org/multipage/#submitevent +[Exposed=Window] +interface SubmitEvent : Event { + constructor(DOMString typeArg, optional SubmitEventInit eventInitDict = {}); + + readonly attribute HTMLElement? submitter; +}; + +dictionary SubmitEventInit : EventInit { + HTMLElement? submitter = null; +}; diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 08b37c946c5..6c531e5b4d6 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -618,7 +618,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { } // Substep 2 if !self.upload_complete.get() { - self.dispatch_upload_progress_event(atom!("loadstart"), Some(0)); + self.dispatch_upload_progress_event(atom!("loadstart"), Ok(Some(0))); if self.generation_id.get() != gen_id { return Ok(()); } @@ -1062,11 +1062,11 @@ impl XMLHttpRequest { self.upload_complete.set(true); // Substeps 2-4 if !self.sync.get() { - self.dispatch_upload_progress_event(atom!("progress"), None); + self.dispatch_upload_progress_event(atom!("progress"), Ok(None)); return_if_fetch_was_terminated!(); - self.dispatch_upload_progress_event(atom!("load"), None); + self.dispatch_upload_progress_event(atom!("load"), Ok(None)); return_if_fetch_was_terminated!(); - self.dispatch_upload_progress_event(atom!("loadend"), None); + self.dispatch_upload_progress_event(atom!("loadend"), Ok(None)); return_if_fetch_was_terminated!(); } // Part of step 13, send() (processing response) @@ -1164,9 +1164,9 @@ impl XMLHttpRequest { let upload_complete = &self.upload_complete; if !upload_complete.get() { upload_complete.set(true); - self.dispatch_upload_progress_event(Atom::from(errormsg), None); + self.dispatch_upload_progress_event(Atom::from(errormsg), Err(())); return_if_fetch_was_terminated!(); - self.dispatch_upload_progress_event(atom!("loadend"), None); + self.dispatch_upload_progress_event(atom!("loadend"), Err(())); return_if_fetch_was_terminated!(); } self.dispatch_response_progress_event(Atom::from(errormsg)); @@ -1210,11 +1210,19 @@ impl XMLHttpRequest { progressevent.upcast::<Event>().fire(target); } - fn dispatch_upload_progress_event(&self, type_: Atom, partial_load: Option<u64>) { - // If partial_load is None, loading has completed and we can just use the value from the request body + fn dispatch_upload_progress_event(&self, type_: Atom, partial_load: Result<Option<u64>, ()>) { + // If partial_load is Ok(None), loading has completed and we can just use the value from the request body + // If an error occured, we pass 0 for both loaded and total - let total = self.request_body_len.get() as u64; - self.dispatch_progress_event(true, type_, partial_load.unwrap_or(total), Some(total)); + let request_body_len = self.request_body_len.get() as u64; + let (loaded, total) = match partial_load { + Ok(l) => match l { + Some(loaded) => (loaded, Some(request_body_len)), + None => (request_body_len, Some(request_body_len)), + }, + Err(()) => (0, None), + }; + self.dispatch_progress_event(true, type_, loaded, total); } fn dispatch_response_progress_event(&self, type_: Atom) { diff --git a/components/script/fetch.rs b/components/script/fetch.rs index 8a8007471d9..66b5ee3c6ef 100644 --- a/components/script/fetch.rs +++ b/components/script/fetch.rs @@ -123,7 +123,7 @@ fn request_init_from_request(request: NetTraitsRequest) -> RequestBuilder { referrer_policy: request.referrer_policy, pipeline_id: request.pipeline_id, redirect_mode: request.redirect_mode, - integrity_metadata: "".to_owned(), + integrity_metadata: request.integrity_metadata.clone(), url_list: vec![], parser_metadata: request.parser_metadata, initiator: request.initiator, diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index ed53c70ae39..b85dffd790c 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -28,7 +28,7 @@ use bluetooth_traits::BluetoothRequest; use canvas_traits::webgl::WebGLPipeline; use crossbeam_channel::{Receiver, RecvTimeoutError, Sender}; use devtools_traits::{DevtoolScriptControlMsg, ScriptToDevtoolsControlMsg, WorkerId}; -use embedder_traits::{Cursor, EventLoopWaker}; +use embedder_traits::EventLoopWaker; use euclid::{default::Point2D, Length, Rect, Scale, Size2D, UnknownUnit, Vector2D}; use gfx_traits::Epoch; use http::HeaderMap; @@ -44,7 +44,7 @@ use msg::constellation_msg::BackgroundHangMonitorRegister; use msg::constellation_msg::{ BlobId, BrowsingContextId, HistoryStateId, MessagePortId, PipelineId, }; -use msg::constellation_msg::{PipelineNamespaceId, TopLevelBrowsingContextId, TraversalDirection}; +use msg::constellation_msg::{PipelineNamespaceId, TopLevelBrowsingContextId}; use net_traits::image::base::Image; use net_traits::image_cache::ImageCache; use net_traits::request::Referrer; @@ -62,7 +62,6 @@ use std::collections::{HashMap, VecDeque}; use std::fmt; use std::sync::atomic::AtomicBool; use std::sync::Arc; -use std::time::Duration; use style_traits::CSSPixel; use style_traits::SpeculativePainter; use webrender_api::units::{ @@ -836,102 +835,6 @@ pub enum WebDriverCommandMsg { ), } -/// Messages to the constellation. -#[derive(Deserialize, Serialize)] -pub enum ConstellationMsg { - /// Exit the constellation. - Exit, - /// Request that the constellation send the BrowsingContextId corresponding to the document - /// with the provided pipeline id - GetBrowsingContext(PipelineId, IpcSender<Option<BrowsingContextId>>), - /// Request that the constellation send the current pipeline id for the provided - /// browsing context id, over a provided channel. - GetPipeline(BrowsingContextId, IpcSender<Option<PipelineId>>), - /// Request that the constellation send the current focused top-level browsing context id, - /// over a provided channel. - GetFocusTopLevelBrowsingContext(IpcSender<Option<TopLevelBrowsingContextId>>), - /// Query the constellation to see if the current compositor output is stable - IsReadyToSaveImage(HashMap<PipelineId, Epoch>), - /// Inform the constellation of a key event. - Keyboard(KeyboardEvent), - /// Whether to allow script to navigate. - AllowNavigationResponse(PipelineId, bool), - /// Request to load a page. - LoadUrl(TopLevelBrowsingContextId, ServoUrl), - /// Request to traverse the joint session history of the provided browsing context. - TraverseHistory(TopLevelBrowsingContextId, TraversalDirection), - /// Inform the constellation of a window being resized. - WindowSize( - Option<TopLevelBrowsingContextId>, - WindowSizeData, - WindowSizeType, - ), - /// Requests that the constellation instruct layout to begin a new tick of the animation. - TickAnimation(PipelineId, AnimationTickType), - /// Dispatch a webdriver command - WebDriverCommand(WebDriverCommandMsg), - /// Reload a top-level browsing context. - Reload(TopLevelBrowsingContextId), - /// A log entry, with the top-level browsing context id and thread name - LogEntry(Option<TopLevelBrowsingContextId>, Option<String>, LogEntry), - /// Dispatch WebVR events to the subscribed script threads. - WebVREvents(Vec<PipelineId>, Vec<WebVREvent>), - /// Create a new top level browsing context. - NewBrowser(ServoUrl, TopLevelBrowsingContextId), - /// Close a top level browsing context. - CloseBrowser(TopLevelBrowsingContextId), - /// Panic a top level browsing context. - SendError(Option<TopLevelBrowsingContextId>, String), - /// Make browser visible. - SelectBrowser(TopLevelBrowsingContextId), - /// Forward an event to the script task of the given pipeline. - ForwardEvent(PipelineId, CompositorEvent), - /// Requesting a change to the onscreen cursor. - SetCursor(Cursor), - /// Enable the sampling profiler, with a given sampling rate and max total sampling duration. - EnableProfiler(Duration, Duration), - /// Disable the sampling profiler. - DisableProfiler, - /// Request to exit from fullscreen mode - ExitFullScreen(TopLevelBrowsingContextId), - /// Media session action. - MediaSessionAction(MediaSessionActionType), -} - -impl fmt::Debug for ConstellationMsg { - fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - use self::ConstellationMsg::*; - let variant = match *self { - Exit => "Exit", - GetBrowsingContext(..) => "GetBrowsingContext", - GetPipeline(..) => "GetPipeline", - GetFocusTopLevelBrowsingContext(..) => "GetFocusTopLevelBrowsingContext", - IsReadyToSaveImage(..) => "IsReadyToSaveImage", - Keyboard(..) => "Keyboard", - AllowNavigationResponse(..) => "AllowNavigationResponse", - LoadUrl(..) => "LoadUrl", - TraverseHistory(..) => "TraverseHistory", - WindowSize(..) => "WindowSize", - TickAnimation(..) => "TickAnimation", - WebDriverCommand(..) => "WebDriverCommand", - Reload(..) => "Reload", - LogEntry(..) => "LogEntry", - WebVREvents(..) => "WebVREvents", - NewBrowser(..) => "NewBrowser", - CloseBrowser(..) => "CloseBrowser", - SendError(..) => "SendError", - SelectBrowser(..) => "SelectBrowser", - ForwardEvent(..) => "ForwardEvent", - SetCursor(..) => "SetCursor", - EnableProfiler(..) => "EnableProfiler", - DisableProfiler => "DisableProfiler", - ExitFullScreen(..) => "ExitFullScreen", - MediaSessionAction(..) => "MediaSessionAction", - }; - write!(formatter, "ConstellationMsg::{}", variant) - } -} - /// Resources required by workerglobalscopes #[derive(Clone, Debug, Deserialize, Serialize)] pub struct WorkerGlobalScopeInit { diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 2ae1908f8bb..708c1036a8b 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -71,7 +71,7 @@ use compositing::compositor_thread::{ CompositorProxy, CompositorReceiver, InitialCompositorState, Msg, }; use compositing::windowing::{EmbedderMethods, WindowEvent, WindowMethods}; -use compositing::{CompositingReason, IOCompositor, ShutdownState}; +use compositing::{CompositingReason, ConstellationMsg, IOCompositor, ShutdownState}; #[cfg(all( not(target_os = "windows"), not(target_os = "ios"), @@ -106,9 +106,7 @@ use profile::time as profile_time; use profile_traits::mem; use profile_traits::time; use script::JSEngineSetup; -use script_traits::{ - ConstellationMsg, SWManagerSenders, ScriptToConstellationChan, WindowSizeData, -}; +use script_traits::{SWManagerSenders, ScriptToConstellationChan, WindowSizeData}; use servo_config::opts; use servo_config::{pref, prefs}; use servo_media::player::context::GlContext; diff --git a/components/style/servo/selector_parser.rs b/components/style/servo/selector_parser.rs index 942dcdba1bb..599b603f4ff 100644 --- a/components/style/servo/selector_parser.rs +++ b/components/style/servo/selector_parser.rs @@ -278,6 +278,7 @@ pub enum NonTSPseudoClass { Active, AnyLink, Checked, + Defined, Disabled, Enabled, Focus, @@ -332,6 +333,7 @@ impl ToCss for NonTSPseudoClass { Active => ":active", AnyLink => ":any-link", Checked => ":checked", + Defined => ":defined", Disabled => ":disabled", Enabled => ":enabled", Focus => ":focus", @@ -371,6 +373,7 @@ impl NonTSPseudoClass { Focus => ElementState::IN_FOCUS_STATE, Fullscreen => ElementState::IN_FULLSCREEN_STATE, Hover => ElementState::IN_HOVER_STATE, + Defined => ElementState::IN_DEFINED_STATE, Enabled => ElementState::IN_ENABLED_STATE, Disabled => ElementState::IN_DISABLED_STATE, Checked => ElementState::IN_CHECKED_STATE, @@ -436,6 +439,7 @@ impl<'a, 'i> ::selectors::Parser<'i> for SelectorParser<'a> { "active" => Active, "any-link" => AnyLink, "checked" => Checked, + "defined" => Defined, "disabled" => Disabled, "enabled" => Enabled, "focus" => Focus, diff --git a/components/webdriver_server/Cargo.toml b/components/webdriver_server/Cargo.toml index 3df9701b2bf..e023a2fc377 100644 --- a/components/webdriver_server/Cargo.toml +++ b/components/webdriver_server/Cargo.toml @@ -12,6 +12,7 @@ path = "lib.rs" [dependencies] base64 = "0.10" +compositing = {path = "../compositing"} cookie = "0.11" crossbeam-channel = "0.3" euclid = "0.20" diff --git a/components/webdriver_server/actions.rs b/components/webdriver_server/actions.rs index e04c40d54c8..4fae56b7cee 100644 --- a/components/webdriver_server/actions.rs +++ b/components/webdriver_server/actions.rs @@ -3,10 +3,11 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::Handler; +use compositing::ConstellationMsg; use ipc_channel::ipc; use keyboard_types::webdriver::KeyInputState; use script_traits::webdriver_msg::WebDriverScriptCommand; -use script_traits::{ConstellationMsg, MouseButton, MouseEventType, WebDriverCommandMsg}; +use script_traits::{MouseButton, MouseEventType, WebDriverCommandMsg}; use std::cmp; use std::collections::HashSet; use std::thread; diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index c6813488df7..6cf3db4bc18 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -21,6 +21,7 @@ mod capabilities; use crate::actions::{InputSourceState, PointerInputState}; use base64; use capabilities::ServoCapabilities; +use compositing::ConstellationMsg; use crossbeam_channel::{after, unbounded, Receiver, Sender}; use euclid::{Rect, Size2D}; use hyper::Method; @@ -34,7 +35,7 @@ use script_traits::webdriver_msg::{LoadStatus, WebDriverCookieError, WebDriverFr use script_traits::webdriver_msg::{ WebDriverJSError, WebDriverJSResult, WebDriverJSValue, WebDriverScriptCommand, }; -use script_traits::{ConstellationMsg, LoadData, LoadOrigin, WebDriverCommandMsg}; +use script_traits::{LoadData, LoadOrigin, WebDriverCommandMsg}; use serde::de::{Deserialize, Deserializer, MapAccess, Visitor}; use serde::ser::{Serialize, Serializer}; use serde_json::{json, Value}; diff --git a/components/webgpu/lib.rs b/components/webgpu/lib.rs index 8d223a12366..e3548a158ca 100644 --- a/components/webgpu/lib.rs +++ b/components/webgpu/lib.rs @@ -5,8 +5,6 @@ #[macro_use] extern crate log; #[macro_use] -extern crate serde; -#[macro_use] pub extern crate wgpu_core as wgpu; use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; @@ -48,6 +46,13 @@ pub enum WebGPURequest { wgpu::id::BufferId, wgpu::resource::BufferDescriptor, ), + CreateBindGroup( + IpcSender<WebGPUBindGroup>, + WebGPUDevice, + wgpu::id::BindGroupId, + WebGPUBindGroupLayout, + Vec<wgpu::binding_model::BindGroupBinding>, + ), CreateBindGroupLayout( IpcSender<WebGPUBindGroupLayout>, WebGPUDevice, @@ -232,6 +237,23 @@ impl WGPU { let global = &self.global; gfx_select!(buffer.0 => global.buffer_destroy(buffer.0)); }, + WebGPURequest::CreateBindGroup(sender, device, id, layout_id, bindings) => { + let global = &self.global; + let descriptor = wgpu_core::binding_model::BindGroupDescriptor { + layout: layout_id.0, + bindings: bindings.as_ptr(), + bindings_length: bindings.len(), + }; + let bg_id = gfx_select!(id => global.device_create_bind_group(device.0, &descriptor, id)); + let bind_group = WebGPUBindGroup(bg_id); + + if let Err(e) = sender.send(bind_group) { + warn!( + "Failed to send response to WebGPURequest::CreateBindGroup ({})", + e + ) + } + }, WebGPURequest::CreateBindGroupLayout(sender, device, id, bindings) => { let global = &self.global; let descriptor = wgpu_core::binding_model::BindGroupLayoutDescriptor { @@ -294,5 +316,6 @@ macro_rules! webgpu_resource { webgpu_resource!(WebGPUAdapter, wgpu::id::AdapterId); webgpu_resource!(WebGPUDevice, wgpu::id::DeviceId); webgpu_resource!(WebGPUBuffer, wgpu::id::BufferId); +webgpu_resource!(WebGPUBindGroup, wgpu::id::BindGroupId); webgpu_resource!(WebGPUBindGroupLayout, wgpu::id::BindGroupLayoutId); webgpu_resource!(WebGPUPipelineLayout, wgpu::id::PipelineLayoutId); diff --git a/components/webvr/Cargo.toml b/components/webvr/Cargo.toml index 4556fae2f17..02b65782e82 100644 --- a/components/webvr/Cargo.toml +++ b/components/webvr/Cargo.toml @@ -16,6 +16,7 @@ oculusvr = ['rust-webvr/oculusvr'] [dependencies] canvas_traits = {path = "../canvas_traits"} +compositing = {path = "../compositing"} crossbeam-channel = "0.3" euclid = "0.20" ipc-channel = "0.12" @@ -23,7 +24,6 @@ log = "0.4" msg = {path = "../msg"} rust-webvr = {version = "0.16", features = ["mock", "openvr", "vrexternal"]} rust-webvr-api = "0.16" -script_traits = {path = "../script_traits"} servo_config = {path = "../config"} sparkle = "0.1" webvr_traits = {path = "../webvr_traits" } diff --git a/components/webvr/webvr_thread.rs b/components/webvr/webvr_thread.rs index d27e63d6c0b..397fb672733 100644 --- a/components/webvr/webvr_thread.rs +++ b/components/webvr/webvr_thread.rs @@ -3,13 +3,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use canvas_traits::webgl; +use compositing::ConstellationMsg; use crossbeam_channel::{unbounded, Receiver, Sender}; use euclid::default::Size2D; use ipc_channel::ipc; use ipc_channel::ipc::{IpcReceiver, IpcSender}; use msg::constellation_msg::PipelineId; use rust_webvr::VRServiceManager; -use script_traits::ConstellationMsg; use servo_config::pref; use sparkle::gl::Gl; use std::collections::hash_map::Entry; diff --git a/ports/glutin/backtrace.rs b/ports/glutin/backtrace.rs index 6e5a8390042..aa6bb6b3297 100644 --- a/ports/glutin/backtrace.rs +++ b/ports/glutin/backtrace.rs @@ -13,8 +13,8 @@ use std::fmt::{self, Write}; use backtrace::{BytesOrWideString, PrintFmt}; #[inline(never)] -pub(crate) fn print() { - println!("{:?}", Print { +pub(crate) fn print(w: &mut dyn std::io::Write) -> Result<(), std::io::Error> { + write!(w, "{:?}", Print { print_fn_address: print as usize, }) } diff --git a/ports/glutin/main2.rs b/ports/glutin/main2.rs index 630ccaf8945..fc8881dddea 100644 --- a/ports/glutin/main2.rs +++ b/ports/glutin/main2.rs @@ -29,6 +29,7 @@ use servo::config::opts::{self, ArgumentParsingResult}; use servo::config::servo_version; use servo::servo_config::pref; use std::env; +use std::io::Write; use std::panic; use std::process; use std::thread; @@ -57,12 +58,14 @@ fn install_crash_handler() { use std::sync::atomic; static BEEN_HERE_BEFORE: atomic::AtomicBool = atomic::AtomicBool::new(false); if !BEEN_HERE_BEFORE.swap(true, atomic::Ordering::SeqCst) { - print!("Stack trace"); + let stdout = std::io::stdout(); + let mut stdout = stdout.lock(); + let _ = write!(&mut stdout, "Stack trace"); if let Some(name) = thread::current().name() { - print!(" for thread \"{}\"", name); + let _ = write!(&mut stdout, " for thread \"{}\"", name); } - println!(); - backtrace::print(); + let _ = write!(&mut stdout, "\n"); + let _ = backtrace::print(&mut stdout); } unsafe { _exit(sig); @@ -131,8 +134,11 @@ pub fn main() { }; let current_thread = thread::current(); let name = current_thread.name().unwrap_or("<unnamed>"); + let stdout = std::io::stdout(); + let mut stdout = stdout.lock(); if let Some(location) = info.location() { - println!( + let _ = writeln!( + &mut stdout, "{} (thread {}, at {}:{})", msg, name, @@ -140,11 +146,12 @@ pub fn main() { location.line() ); } else { - println!("{} (thread {})", msg, name); + let _ = writeln!(&mut stdout, "{} (thread {})", msg, name); } if env::var("RUST_BACKTRACE").is_ok() { - backtrace::print(); + let _ = backtrace::print(&mut stdout); } + drop(stdout); error!("{}", msg); })); diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 8fca326031a..b20d6d365aa 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -1009,7 +1009,12 @@ install them, let us know by filing a bug!") self.ensure_rustup_version() toolchain = self.rust_toolchain() - if toolchain.encode("utf-8") not in check_output(["rustup", "toolchain", "list"]): + status = subprocess.call( + ["rustup", "run", toolchain.encode("utf-8"), "rustc", "--version"], + stdout=open(os.devnull, "wb"), + stderr=subprocess.STDOUT, + ) + if status: check_call(["rustup", "toolchain", "install", "--profile", "minimal", toolchain]) installed = check_output( diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-composition.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-composition.html.ini new file mode 100644 index 00000000000..3e9c04c35ea --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-composition.html.ini @@ -0,0 +1,121 @@ +[box-shadow-composition.html] + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px 118px, rgba(0, 0, 0, 0) -1px -2px 0px -4px, rgba(0, 0, 0, 0) -2px -4px 0px -8px, rgba(0, 0, 0, 0) -5px -10px 0px -20px, rgba(0, 0, 0, 0) -10px -20px 0px -40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px, rgb(250, 250, 250) 25px 50px 75px 100px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px, rgb(150, 150, 150) 15px 30px 45px 60px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px 42px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(100, 100, 100, 0.5) 5px 10px 15px 20px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px, rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px -18.8px, rgb(26, 52, 78) 2.6px 5.2px 7.8px 10.4px, rgb(130, 130, 130) 13px 26px 39px 52px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(70, 70, 70 ) 7px 14px 21px 28px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px -18.8px, rgb(26, 52, 78) 2.6px 5.2px 7.8px 10.4px, rgb(52, 104, 156) 5.2px 10.4px 15.6px 20.8px, rgb(130, 130, 130) 13px 26px 39px 52px, rgb(255, 255, 255) 26px 52px 78px 104px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(150, 150, 150) 15px 30px 45px 60px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(70, 70, 70) 7px 14px 21px 28px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px 42px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(40, 80, 120, 0.5) 2px 4px 6px 8px, rgba(100, 100, 100, 0.5) 5px 10px 15px 20px, rgba(200, 200, 200, 0.5) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(150, 150, 150) 15px 30px 45px 60px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(127, 124, 121) 12.7px 25.4px 38.1px 50.8px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px -2.4px, rgba(0, 0, 0, 0) -6px -12px 0px -24px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px, rgb(70, 70, 70) 7px 14px 21px 28px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(250, 250, 250) 25px 50px 75px 100px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(250, 250, 250) 25px 50px 75px 100px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(0, 0, 0) -3.5px -7px 0px -14px, rgb(30, 60, 90) 3px 6px 9px 12px, rgb(255, 255, 255) 30px 60px 90px 120px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(55, 60, 65) 5.5px 11px 16.5px 22px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(200, 200, 200, 0.5) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px 118px, rgba(0, 0, 0, 0) -1px -2px 0px -4px, rgba(0, 0, 0, 0) -5px -10px 0px -20px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 0dee8a56d65..a6ded09628b 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -111221,6 +111221,18 @@ {} ] ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial.html": [ + [ + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial.html", + [ + [ + "/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-color/border-bottom-color.xht": [ [ "css/css-color/border-bottom-color.xht", @@ -126639,6 +126651,114 @@ {} ] ], + "css/css-grid/alignment/grid-item-content-baseline-001.html": [ + [ + "css/css-grid/alignment/grid-item-content-baseline-001.html", + [ + [ + "/css/css-grid/alignment/grid-item-content-baseline-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-content-baseline-002.html": [ + [ + "css/css-grid/alignment/grid-item-content-baseline-002.html", + [ + [ + "/css/css-grid/alignment/grid-item-content-baseline-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-content-baseline-003.html": [ + [ + "css/css-grid/alignment/grid-item-content-baseline-003.html", + [ + [ + "/css/css-grid/alignment/grid-item-content-baseline-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-content-baseline-004.html": [ + [ + "css/css-grid/alignment/grid-item-content-baseline-004.html", + [ + [ + "/css/css-grid/alignment/grid-item-content-baseline-004-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-001.html": [ + [ + "css/css-grid/alignment/grid-item-mixed-baseline-001.html", + [ + [ + "/css/css-grid/alignment/grid-item-mixed-baseline-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-002.html": [ + [ + "css/css-grid/alignment/grid-item-mixed-baseline-002.html", + [ + [ + "/css/css-grid/alignment/grid-item-mixed-baseline-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-003.html": [ + [ + "css/css-grid/alignment/grid-item-mixed-baseline-003.html", + [ + [ + "/css/css-grid/alignment/grid-item-mixed-baseline-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-004.html": [ + [ + "css/css-grid/alignment/grid-item-mixed-baseline-004.html", + [ + [ + "/css/css-grid/alignment/grid-item-mixed-baseline-004-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-item-self-baseline-001.html": [ + [ + "css/css-grid/alignment/grid-item-self-baseline-001.html", + [ + [ + "/css/css-grid/alignment/grid-item-self-baseline-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html": [ [ "css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html", @@ -134055,6 +134175,30 @@ {} ] ], + "css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html": [ + [ + "css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html", + [ + [ + "/css/css-masking/clip-path/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/css-masking/clip-path/clip-path-url-reference-change.html": [ + [ + "css/css-masking/clip-path/clip-path-url-reference-change.html", + [ + [ + "/css/css-masking/clip-path/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], "css/css-masking/clip-rule/clip-rule-001.html": [ [ "css/css-masking/clip-rule/clip-rule-001.html", @@ -201917,6 +202061,18 @@ {} ] ], + "forced-colors-mode/forced-colors-mode-26.html": [ + [ + "forced-colors-mode/forced-colors-mode-26.html", + [ + [ + "/forced-colors-mode/forced-colors-mode-26-ref.html", + "==" + ] + ], + {} + ] + ], "html/browsers/sandboxing/sandbox-parse-noscript.html": [ [ "html/browsers/sandboxing/sandbox-parse-noscript.html", @@ -246302,6 +246458,9 @@ "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html": [ [] ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial-ref.html": [ + [] + ], "css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css": [ [] ], @@ -253202,6 +253361,33 @@ "css/css-grid/abspos/support/positioned-grid-descendants.js": [ [] ], + "css/css-grid/alignment/grid-item-content-baseline-001-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-content-baseline-002-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-content-baseline-003-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-content-baseline-004-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-001-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-002-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-003-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-mixed-baseline-004-ref.html": [ + [] + ], + "css/css-grid/alignment/grid-item-self-baseline-001-ref.html": [ + [] + ], "css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001-ref.html": [ [] ], @@ -254162,6 +254348,9 @@ "css/css-masking/clip-path/reference/clip-path-stripes-003-ref.html": [ [] ], + "css/css-masking/clip-path/reference/green-100x100.html": [ + [] + ], "css/css-masking/clip-path/svg-clipPath.svg": [ [] ], @@ -269756,6 +269945,9 @@ "forced-colors-mode/forced-colors-mode-25-ref.html": [ [] ], + "forced-colors-mode/forced-colors-mode-26-ref.html": [ + [] + ], "forced-colors-mode/resources/float-image.jpg": [ [] ], @@ -277541,6 +277733,9 @@ "interfaces/vibration.idl": [ [] ], + "interfaces/visual-viewport.idl": [ + [] + ], "interfaces/wai-aria.idl": [ [] ], @@ -277559,6 +277754,9 @@ "interfaces/web-bluetooth.idl": [ [] ], + "interfaces/web-locks.idl": [ + [] + ], "interfaces/web-nfc.idl": [ [] ], @@ -277592,6 +277790,9 @@ "interfaces/webrtc-stats.idl": [ [] ], + "interfaces/webrtc-svc.idl": [ + [] + ], "interfaces/webrtc.idl": [ [] ], @@ -279698,6 +279899,9 @@ "portals/references/portals-rendering.html": [ [] ], + "portals/resources/204-no-content.asis": [ + [] + ], "portals/resources/blank-host.html": [ [] ], @@ -293414,6 +293618,33 @@ "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-classic/same-https.downgrade.https.html.headers": [ [] ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html.headers": [ + [] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html.headers": [ + [] + ], "upgrade-insecure-requests/gen/top.http-rp/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html.headers": [ [] ], @@ -293969,9 +294200,6 @@ "web-locks/resources/worker.js": [ [] ], - "web-locks/web-locks.idl": [ - [] - ], "web-nfc/META.yml": [ [] ], @@ -321252,7 +321480,9 @@ "cookies/http-state/general-tests.html": [ [ "cookies/http-state/general-tests.html", - {} + { + "timeout": "long" + } ] ], "cookies/http-state/mozilla-tests.html": [ @@ -321264,7 +321494,9 @@ "cookies/http-state/name-tests.html": [ [ "cookies/http-state/name-tests.html", - {} + { + "timeout": "long" + } ] ], "cookies/http-state/ordering-tests.html": [ @@ -322788,6 +323020,12 @@ {} ] ], + "css/css-animations/CSSAnimation-compositeOrder.tentative.html": [ + [ + "css/css-animations/CSSAnimation-compositeOrder.tentative.html", + {} + ] + ], "css/css-animations/CSSAnimation-effect.tentative.html": [ [ "css/css-animations/CSSAnimation-effect.tentative.html", @@ -323292,6 +323530,12 @@ {} ] ], + "css/css-backgrounds/animations/box-shadow-composition.html": [ + [ + "css/css-backgrounds/animations/box-shadow-composition.html", + {} + ] + ], "css/css-backgrounds/animations/box-shadow-interpolation.html": [ [ "css/css-backgrounds/animations/box-shadow-interpolation.html", @@ -324300,6 +324544,12 @@ {} ] ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html": [ + [ + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html", + {} + ] + ], "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html": [ [ "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html", @@ -324330,6 +324580,12 @@ {} ] ], + "css/css-color/color-initial-canvastext.html": [ + [ + "css/css-color/color-initial-canvastext.html", + {} + ] + ], "css/css-color/color-resolving-hsl.html": [ [ "css/css-color/color-resolving-hsl.html", @@ -335582,6 +335838,12 @@ {} ] ], + "css/css-transitions/animations/text-shadow-composition.html": [ + [ + "css/css-transitions/animations/text-shadow-composition.html", + {} + ] + ], "css/css-transitions/animations/text-shadow-interpolation.html": [ [ "css/css-transitions/animations/text-shadow-interpolation.html", @@ -338632,6 +338894,12 @@ {} ] ], + "css/css-values/round-function.html": [ + [ + "css/css-values/round-function.html", + {} + ] + ], "css/css-values/unset-value-storage.html": [ [ "css/css-values/unset-value-storage.html", @@ -395611,6 +395879,12 @@ {} ] ], + "portals/portals-activate-empty-browsing-context.html": [ + [ + "portals/portals-activate-empty-browsing-context.html", + {} + ] + ], "portals/portals-activate-inside-iframe.html": [ [ "portals/portals-activate-inside-iframe.html", @@ -450222,6 +450496,60 @@ {} ] ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -450756,6 +451084,60 @@ {} ] ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -451290,6 +451672,60 @@ {} ] ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -451824,6 +452260,60 @@ {} ] ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -452358,6 +452848,60 @@ {} ] ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/top.http-rp/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/top.http-rp/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -452892,6 +453436,60 @@ {} ] ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/top.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/top.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -453426,6 +454024,60 @@ {} ] ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html", + {} + ] + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + [ + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-https.downgrade.https.html", + {} + ] + ], "upgrade-insecure-requests/gen/top.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ [ "upgrade-insecure-requests/gen/top.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html", @@ -454723,6 +455375,23 @@ {} ] ], + "visual-viewport/idlharness.window.js": [ + [ + "visual-viewport/idlharness.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ] + ] + } + ] + ], "visual-viewport/viewport-no-resize-event-on-overflow-recalc.html": [ [ "visual-viewport/viewport-no-resize-event-on-overflow-recalc.html", @@ -503435,7 +504104,7 @@ "testharness" ], "beacon/headers/header-referrer-no-referrer-when-downgrade.https.html": [ - "c65b9fd60f20065d5ed593087fbf17591a99130d", + "d09d4ea5606751edeb0e67a631250d24e8d3130c", "testharness" ], "beacon/headers/header-referrer-no-referrer.html": [ @@ -504779,7 +505448,7 @@ "support" ], "common/security-features/resources/common.sub.js": [ - "ed7c32b8ce1d65c1e22f919e6a2fbcc80beec31c", + "afb11de6fe66b5ee7629108b49b3e41295fddc79", "support" ], "common/security-features/resources/common.sub.js.headers": [ @@ -525775,7 +526444,7 @@ "testharness" ], "cookie-store/cookieListItem_attributes.tentative.https.any.js": [ - "1b1ae529767fdb2744f31fd860bb881d2b744735", + "4e5f9b02fc64b3707bd330ab729deb736274bb3a", "testharness" ], "cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js": [ @@ -526007,7 +526676,7 @@ "testharness" ], "cookies/http-state/general-tests.html": [ - "f563bf7c68d662be8182ade0b4fd1629295df754", + "fcc99d0f75afb318060889eff6e00298948e2c7b", "testharness" ], "cookies/http-state/mozilla-tests.html": [ @@ -526015,7 +526684,7 @@ "testharness" ], "cookies/http-state/name-tests.html": [ - "adc550b9bb99871aa5e118271e2ef5b7ac750667", + "2f6e97aff89311af31045be9d3db11d788cf9200", "testharness" ], "cookies/http-state/ordering-tests.html": [ @@ -589034,6 +589703,10 @@ "b76af2c24ac636bf3ea73050eb64555d6b0e2100", "testharness" ], + "css/css-animations/CSSAnimation-compositeOrder.tentative.html": [ + "225efd23addd664d6fb842264bbf04da4990378d", + "testharness" + ], "css/css-animations/CSSAnimation-effect.tentative.html": [ "bbf35d5113a9c3d1e4dba7318f649494c88feb4c", "testharness" @@ -589698,6 +590371,10 @@ "11f92f41652a9f1b167c5a399849d1e1e61c4df7", "testharness" ], + "css/css-backgrounds/animations/box-shadow-composition.html": [ + "3f01473a29f52c0d505ee2253b8400431edf9707", + "testharness" + ], "css/css-backgrounds/animations/box-shadow-interpolation.html": [ "d99e08faf137e05c48ad68938a83666fd3473a8f", "testharness" @@ -593970,6 +594647,10 @@ "5fb481783f0134b3b233ceb17ea4a0897eeee403", "testharness" ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html": [ + "193b759abcb3c73437914861775c9d27dbdf6925", + "testharness" + ], "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html": [ "8cc4618ede4af030adc8fe5f119deccf3c2e3882", "support" @@ -593982,6 +594663,14 @@ "a6363971819a44e4bfc29891cbf51af6d24d1279", "testharness" ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial-ref.html": [ + "6c39b446e9c5f6e628a2646eca155220a56886c5", + "support" + ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial.html": [ + "ba8f10cf23832d986601926abfbd5cf33e9847ce", + "reftest" + ], "css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css": [ "73671b8a819ed81958b4359a1a3904f86cc98ec6", "support" @@ -594054,6 +594743,10 @@ "7f483bb5c8b99c08137bae5b7aec06c782c300fb", "testharness" ], + "css/css-color/color-initial-canvastext.html": [ + "97ea2b7b68f899c1385b490c745ef69201460f63", + "testharness" + ], "css/css-color/color-resolving-hsl.html": [ "d33701759d6068e3d335a9bf17795df1a4235cd0", "testharness" @@ -611594,6 +612287,78 @@ "c506547a7607ccb174c9bf3758b432f68ebfe3a9", "testharness" ], + "css/css-grid/alignment/grid-item-content-baseline-001-ref.html": [ + "e55fe0b9f96c3f3ae4a4f6b66bfd2283fb88659b", + "support" + ], + "css/css-grid/alignment/grid-item-content-baseline-001.html": [ + "aa33f3c15b24e945449dd0aeea9d5cfa3e34a9f8", + "reftest" + ], + "css/css-grid/alignment/grid-item-content-baseline-002-ref.html": [ + "d32bbf29311ec3760d842a8c7c333b5b17a1b8e1", + "support" + ], + "css/css-grid/alignment/grid-item-content-baseline-002.html": [ + "3d12f68cb0db505f05aac4a9f82d1b1ad28a23a5", + "reftest" + ], + "css/css-grid/alignment/grid-item-content-baseline-003-ref.html": [ + "5efb78b00f8fa519b6fbe35de0d6564ee167b5cb", + "support" + ], + "css/css-grid/alignment/grid-item-content-baseline-003.html": [ + "8845afe86411ec481c187e32f35f4ce097fb7fb8", + "reftest" + ], + "css/css-grid/alignment/grid-item-content-baseline-004-ref.html": [ + "2394818c7db114bf37c44a1b1215655a18e4e35d", + "support" + ], + "css/css-grid/alignment/grid-item-content-baseline-004.html": [ + "81a046be91ba3432e998a78eb75d109fa3765ff5", + "reftest" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-001-ref.html": [ + "6b89ef49d0dc837d769f5745f6a08551f1033eac", + "support" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-001.html": [ + "f724b3b6c4980d3e98d82143d3d734d335be2fa4", + "reftest" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-002-ref.html": [ + "fae8d2e9b857a8aac32e6d75bb6ea6a8de9dfe69", + "support" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-002.html": [ + "d14a8cae7a8e439ccef7f5dd5a75a003e23303d1", + "reftest" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-003-ref.html": [ + "181041481605e240b1e3f70fefa290545cbf8c91", + "support" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-003.html": [ + "0a78d59e982937169adfb61719ece1841c92e09c", + "reftest" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-004-ref.html": [ + "d167a5f1542b5a71b51ce06b806a2f9425d7f6ab", + "support" + ], + "css/css-grid/alignment/grid-item-mixed-baseline-004.html": [ + "6202845f6f5552ad2aaffda48d8a42798450bb13", + "reftest" + ], + "css/css-grid/alignment/grid-item-self-baseline-001-ref.html": [ + "6eadf9a02a55822a54fa44715d80bece93997b0f", + "support" + ], + "css/css-grid/alignment/grid-item-self-baseline-001.html": [ + "ccc50c764975906b59f54aa1205a4513149e85f2", + "reftest" + ], "css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html": [ "967b0e4be967e9b3619e24cdf372aefcfd6b4f24", "testharness" @@ -616734,6 +617499,14 @@ "0bf921c7cf125c1e8a9e6842c62f294b13104790", "reftest" ], + "css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html": [ + "2de0bb866f1c837887d6fa3c5889f8d38da3c055", + "reftest" + ], + "css/css-masking/clip-path/clip-path-url-reference-change.html": [ + "4a6266aabd0c5ecc0a3acf1f40ac55fbbcbab1e0", + "reftest" + ], "css/css-masking/clip-path/interpolation.html": [ "da3981feed6ed681ee4a7d88b7ecd167b9fd5c7b", "testharness" @@ -616806,6 +617579,10 @@ "e31282c02fdbfd08bbe80acb245bb7b85c28bee9", "support" ], + "css/css-masking/clip-path/reference/green-100x100.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + "support" + ], "css/css-masking/clip-path/svg-clipPath.svg": [ "d31a1df42e0ed94c43c2f9d0999d7dbde9e83130", "support" @@ -639478,6 +640255,10 @@ "f72f11dccae5e8b63de6148573723f86fbb4c708", "support" ], + "css/css-transitions/animations/text-shadow-composition.html": [ + "dc297ec9fac9dc23acd25e27f8707470a3d7685d", + "testharness" + ], "css/css-transitions/animations/text-shadow-interpolation.html": [ "c007816ecb04236421ff0aea8861da19c244338a", "testharness" @@ -644511,11 +645292,11 @@ "reftest" ], "css/css-values/ch-pseudo-recalc-on-font-load.html": [ - "6a60bdfa64d874a74d65d60dfc4c2f82d9aaf07a", + "d4c9a59782d0e69d70d3c9af1c5740768d511eea", "testharness" ], "css/css-values/ch-recalc-on-font-load.html": [ - "625521b8102deb6cb2ca89eced91dda720c8408c", + "befa7fbfa5ee53451011402d0879771c425443dd", "testharness" ], "css/css-values/ch-unit-001.html": [ @@ -644878,6 +645659,10 @@ "84c317033063b72716e36cfd15466780e010ba11", "testharness" ], + "css/css-values/round-function.html": [ + "e63976c788e91d07d2050e3cbed0819c15b14d6f", + "testharness" + ], "css/css-values/support/1x1-green.png": [ "b98ca0ba0a03c580ac339e4a3653539cfa8edc71", "support" @@ -667507,7 +668292,7 @@ "testharness" ], "custom-elements/pseudo-class-defined.html": [ - "24cb5fe4cd392246e292d255c0858aa7f2b5dd0e", + "ed12830d5a9582dbf3ec30c74a43fe381221a139", "testharness" ], "custom-elements/range-and-constructors.html": [ @@ -668071,7 +668856,7 @@ "support" ], "docs/writing-tests/visual.md": [ - "464b80fd81966e0e0523b0dc04d5a99aae4e0b87", + "de87d650247bbdff211d8fc0f9326d965e46edf6", "support" ], "docs/writing-tests/wdspec.md": [ @@ -669947,7 +670732,7 @@ "testharness" ], "domparsing/idlharness.window.js": [ - "870c165b2156c45a6a6efb0848cad4180cb050d0", + "f5f32b3bb58bfa6e77e48fe9444c8d76d6a4b12a", "testharness" ], "domparsing/innerhtml-01.xhtml": [ @@ -677198,6 +677983,14 @@ "ea1f973f04aa66c9e00a63cedacf929d62c70524", "reftest" ], + "forced-colors-mode/forced-colors-mode-26-ref.html": [ + "af6bb10a8d168ca833e017de140e3f718d80c6dd", + "support" + ], + "forced-colors-mode/forced-colors-mode-26.html": [ + "a3165fc9398eb0d646238dc0e9fde48ec6428f77", + "reftest" + ], "forced-colors-mode/resources/float-image.jpg": [ "ab06d5f94d16e22bb08fad79d6fef662b2a7de5a", "support" @@ -681031,7 +681824,7 @@ "support" ], "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html": [ - "d6521bd9dc4cdf32aae3e252a77af3c7b1bf5b83", + "6589ad923c1fe2111f6a9865439284875d081b0f", "testharness" ], "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.headers": [ @@ -682231,7 +683024,7 @@ "testharness" ], "html/dom/idlharness.https.html": [ - "42d521272dd6bbbce20288e65ec507eb3d44a274", + "05b1f69ebb91c9a5789f28b4508648c62644f2c9", "testharness" ], "html/dom/idlharness.worker.js": [ @@ -692035,7 +692828,7 @@ "testharness" ], "html/semantics/forms/constraints/form-validation-validity-valueMissing.html": [ - "223d54cef8dab9f30c8eb5d6ca8c3a406f1e281d", + "844493abe95930951cebfaa8da85b21fcff2aa61", "testharness" ], "html/semantics/forms/constraints/form-validation-willValidate.html": [ @@ -692159,15 +692952,15 @@ "testharness" ], "html/semantics/forms/form-submission-0/form-double-submit-2.html": [ - "f0c9471a704d4c0c0742d7ed8e8f13a789514d69", + "4c715de250e22bf48c225f5337ff38736f3fa80b", "testharness" ], "html/semantics/forms/form-submission-0/form-double-submit-3.html": [ - "1bad23260d054b8f60e255de4d1a074803db4b2f", + "cdb50d226a893de2250a19a93c0b5a0f72bbcfee", "testharness" ], "html/semantics/forms/form-submission-0/form-double-submit.html": [ - "1102e304174eeec18b65b54deec74a328d998be0", + "005f393bfd42fb850a81eb1d87bae048b7cad30b", "testharness" ], "html/semantics/forms/form-submission-0/form-echo.py": [ @@ -699783,7 +700576,7 @@ "support" ], "interfaces/DOM-Parsing.idl": [ - "bcdbaa64623b8b887e92a6be6e555c3eca88a79a", + "2e1ea02c6416c1a8b4bf960f518007504f8ec49d", "support" ], "interfaces/FileAPI.idl": [ @@ -700023,7 +700816,7 @@ "support" ], "interfaces/html.idl": [ - "374ce8342b02f99cfca5eda1d23dd3c6bd9a4451", + "7d03a617f10d69f072384dfdfe9038fd194ad119", "support" ], "interfaces/image-capture.idl": [ @@ -700071,7 +700864,7 @@ "support" ], "interfaces/media-source.idl": [ - "1d3c02d847ea66e6bc5a8c0f520d6c7b9ad9e1d6", + "f718db1f29ca13cf8b066400d94f87285f97c120", "support" ], "interfaces/mediacapture-depth.idl": [ @@ -700262,6 +701055,10 @@ "cc5cd194b558952dc5791b28ffe9a1d03bbc004b", "support" ], + "interfaces/visual-viewport.idl": [ + "8e9316bf854fb80c2dc79cad72d90cdde6d95c46", + "support" + ], "interfaces/wai-aria.idl": [ "f9406b3989b61656b9c2681f5f19d971fe98ed8a", "support" @@ -700286,6 +701083,10 @@ "ec7a8e71ca09c7648801e6f2bb91c711c857fe34", "support" ], + "interfaces/web-locks.idl": [ + "83905d64fec095750d270f3dba43fe937e1fd119", + "support" + ], "interfaces/web-nfc.idl": [ "f2e31b7352867d39edc9c43a4f1fffb3a02cb985", "support" @@ -700299,7 +701100,7 @@ "support" ], "interfaces/webauthn.idl": [ - "56c2856b19a76d85a0b0495d620c025247ad3f42", + "8dceeb5768b3b31934f126d40bcce70e0209ebca", "support" ], "interfaces/webdriver.idl": [ @@ -700330,6 +701131,10 @@ "d1a54898b9a62e85a3c1488704afe736058d5e93", "support" ], + "interfaces/webrtc-svc.idl": [ + "2691a87b30d39d7db42e29e04964fb4e8f7fefca", + "support" + ], "interfaces/webrtc.idl": [ "852ec06209ea13a0a618d32ff836624b92d65642", "support" @@ -715322,6 +716127,10 @@ "c9f07fcc889043cd523206728f7daaaefa653409", "testharness" ], + "portals/portals-activate-empty-browsing-context.html": [ + "50439f6331765e8727ab2deae2e23911f5c7e97a", + "testharness" + ], "portals/portals-activate-inside-iframe.html": [ "3c9149f485d1ac44b8d2303a4448a78ea7525243", "testharness" @@ -715419,13 +716228,17 @@ "testharness" ], "portals/predecessor-fires-unload.html": [ - "6512195eaf613ad556a148d9136425aa20915648", + "381221222b59c0346dae48cc83d4985d155610c9", "testharness" ], "portals/references/portals-rendering.html": [ "4a8414ab5656593811772c3728e4ee83eb034457", "support" ], + "portals/resources/204-no-content.asis": [ + "58e46abbc9e0d5d744cc41d49fdb869d23e23801", + "support" + ], "portals/resources/blank-host.html": [ "d9f3a61eb8488ba78df7439ff612fa600ff53008", "support" @@ -715547,7 +716360,7 @@ "support" ], "portals/resources/predecessor-fires-unload-watch-unload.html": [ - "ada5a64967e9b169209b5cfede256c60ac3f8acc", + "f58da48ca1c78ffd22b86846484d011ac1133bb9", "support" ], "portals/resources/simple-portal-adopts-and-activates-predecessor.html": [ @@ -767667,7 +768480,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/firefox.py": [ - "641e0daa89519eabb6d958e22334d69c075547e9", + "62790181d51e84762cbfdf55c3ecae2255a473b9", "support" ], "tools/wptrunner/wptrunner/browsers/firefox_android.py": [ @@ -767687,7 +768500,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/sauce.py": [ - "3301c75b21004a554f91d4767b8560fc40214412", + "dea184d6809c82dcd9a0207c5ae9170910d89330", "support" ], "tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat": [ @@ -767763,7 +768576,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorservo.py": [ - "8f8e120e66da6403f256f99f279f1f5dc8008272", + "4816c3df06e87f8e85301918c341bbff97817777", "support" ], "tools/wptrunner/wptrunner/executors/executorservodriver.py": [ @@ -767919,7 +768732,7 @@ "support" ], "tools/wptrunner/wptrunner/tests/browsers/test_sauce.py": [ - "06a5641d50fbbaed4de9df511c567753ef1a326d", + "56e8ddac3763a740d1a85f14b355d0aa8016eb99", "support" ], "tools/wptrunner/wptrunner/tests/browsers/test_webkitgtk.py": [ @@ -769110,6 +769923,42 @@ "e3181df0e5017d9730f56b2b36e1d5a8b507f749", "testharness" ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "ecadd521ae5b0eac486ce799512e2f4dee75a27d", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "7f76e44de4e9bcc6311b6f8cdc8ef5f922491a4c", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html": [ + "a3b80337ff8d9fde47e01768cddd0df199122e9d", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "d8bf1448b44a8b5f73d1b5ac5b22778fbd73036f", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "a721e88cba73dd8bf3b446d135fe52a186f84a49", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html": [ + "c6cbbcb191dfdc6541f1e834a18548f8344afdfa", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "34ddb296009e63c6073294a4464f557050fe1d7c", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "27fb1e0b2a4261bed365fd09fd12f9efa8990268", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html": [ + "27f2c421f1f4939f7b23bcbd5eab36045e1c604e", + "testharness" + ], "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html": [ "d85c6364cc59c52ae198d74d862667bd645895de", "testharness" @@ -769466,6 +770315,42 @@ "d14816246a22f0145ded294f1f933496d0490a8e", "testharness" ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "8206c81a700026242d33bbb373dcbe5f4d164263", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "5d989c95f745f3fbbe6834ad8bd4928959786199", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + "8f1918d6414c9e48065f83204c4dddc5465a759e", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "8297f563e04e3009fe7d659d59527621a346df83", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "f03b2423f29560b1467d01ec7296990990248900", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + "b04875c41faae2a6dd768463e290407fcd70321e", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "c95bab5c0a83ca59145f4ad08a0f42ee34a5166f", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "028b57f4b748e2fd4d5886bed54f8bc031e2b14d", + "testharness" + ], + "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + "231253e238768c4096b113301bde8d8454200b50", + "testharness" + ], "upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ "a79e3c6d9339a5f6e5e7ec774d57592d3b7abbdf", "testharness" @@ -769822,6 +770707,42 @@ "5ed7f7b3afb92c92b23d01f06a8b3662da016faa", "testharness" ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "25162898dec6b846b3fdec330ce52b7ef30f09ba", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "b8f9b73d6ac66d20c3fc4192914683af7718c288", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html": [ + "85cc77451a3d26e1fe5e11b2a86fc8964ff9bb68", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "a02cee7af4066619af3759ad7fa7108600b77967", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "92b0327192f567f8e207d9d39e4c11675ae4c5c9", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html": [ + "2f210b44a294de30975824b38fa4a8335a440869", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "b7b4b161f14a670d87318f8d1bc0ed4785e40a9b", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "9a651679d1d667d1da2907b2418ffa3c9ef26bc9", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html": [ + "5c6a5cdefad7f706ce29d23bb8cae11c1f1ccafc", + "testharness" + ], "upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html": [ "d4665f488e9eec0d8a5a7707899d63edde8ca2ee", "testharness" @@ -770178,6 +771099,42 @@ "a37cf7b1c1201d342b9742c82d7430a67292d1d3", "testharness" ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "f6aa8f9530e1b5df64607c38de38beaa523b4b16", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "6f212bd7fb76850f1de402173040690434ef06ec", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + "197b4e7faccbcabe7957a31fadc5ca9b0fe7ea6b", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "9cdf951d1b6794da6f5016d5876f8f672356b334", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "ed497ab2b2ade1bb01a984a7b302ac597fc7c257", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + "d79da74edd172c3da7416b508ea6be264b5a5beb", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "325b1cddd4319211891c7f970b86907bffcd63f9", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "dbf2f339d413957209c40c87bf20943e53cd4349", + "testharness" + ], + "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + "00c1ab098bfa3c9a59463eb7e3bc47098df09d7b", + "testharness" + ], "upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ "75e6a885f59384392ea797209ca9cc72dcf601ac", "testharness" @@ -770618,6 +771575,78 @@ "602d9dc38d0a5975e8d40c26daae9329de69840c", "support" ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "fd6f20457a196d5caaedaf94fdd31c804e995fd3", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "4fefeb213df5c1eddd6ca6f85df5e83364d7b707", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + "72528b29cc01f9a256081ccc249c25110e9659fc", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "b962fced782578333258d23e59841ac5b05b0c64", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "5636ea3f51b81eb855235844f0702d4b7608a0f4", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + "66694b3d06e5572ea815c03257d758526a342bd8", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "cad99b410cbd2c25231ad74e20d335da14fdc1e6", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "c99829fa311a452f5128d4d633d59119156a869d", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + "9d07a9923e9739dacd106e12e3628c00c464180d", + "testharness" + ], + "upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html.headers": [ + "602d9dc38d0a5975e8d40c26daae9329de69840c", + "support" + ], "upgrade-insecure-requests/gen/top.http-rp/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ "123a25f7fb7e7e8ef5c337ea061e1e6076c10171", "testharness" @@ -771246,6 +772275,42 @@ "3a1d79eafaeb712eaefd291fb2be69bb48bdaf26", "testharness" ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "e4fe253ba544f0ca9cc982dce38a3963f4ee3d16", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "17920b35ba76245d961cb9c3e46c58e04c769063", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html": [ + "5fd7087950d59045756f6531d6ed23e83fa6e1a6", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "47b5bc1570ded38a924daf66aef63c62716de6de", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "1550a3c59eb160077f054de5cc166f66c0687837", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-https.downgrade.https.html": [ + "c738bc62b18752ddb5f9964f3335edf7655aeb3d", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "1da71a2d8bc3af25372603a16defa903e5693729", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "24808604f0b767a8dee58cad18f990291ecf0400", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-https.downgrade.https.html": [ + "cf3c2e8b2a03d221eb9b6ad5a7381d651221f08e", + "testharness" + ], "upgrade-insecure-requests/gen/top.meta/unset/websocket/cross-ws-downgrade.no-redirect.https.html": [ "77db067c64628c3b5828831ad9e3d380bc80b638", "testharness" @@ -771602,6 +772667,42 @@ "22fffb7e65d66e310fcd3d708ffd6f0cc7726f38", "testharness" ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html": [ + "6602343a2f0904bda196101f64ca3e0dd5971342", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html": [ + "d0e647c3ded4f774013636a0856fb0818057c3f9", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html": [ + "07f7b720964f4a014e22240402988334599e5525", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html": [ + "9df358ca888ff1046e5c0f5706479a34654a6bc2", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html": [ + "58cd0a717208b85d5a03a3d6992bfa95405b7e59", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html": [ + "c8bdac0fa2c2d8d8f5231a54b6a59044b551bbc8", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html": [ + "9d0ef1888ba3bab85da3a5db0c457e6ba60cf46c", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html": [ + "f1d4f2697d67291fca7edc8aa9c46a2922ad3808", + "testharness" + ], + "upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-https.downgrade.https.html": [ + "46c93a3215d902cbbffea6464ba0fd4065e0b882", + "testharness" + ], "upgrade-insecure-requests/gen/top.meta/upgrade/websocket/cross-ws-downgrade.no-redirect.https.html": [ "65f84d20c67b9121c68d6f3fcf39aee8d9ec5473", "testharness" @@ -771987,7 +773088,7 @@ "testharness" ], "upgrade-insecure-requests/generic/spec_json.js": [ - "822afa11397701de01572c7f039be75c9d6e060e", + "0adba4938d47d896fa2d343f58022cfa113615da", "support" ], "upgrade-insecure-requests/generic/test-case.sub.js": [ @@ -772079,7 +773180,7 @@ "support" ], "upgrade-insecure-requests/spec.src.json": [ - "dcf63008f63116fceb47d5d2bfb7aa15696202f0", + "70417038bcccc269cb5fb40df09dfe7ec0f7b578", "support" ], "upgrade-insecure-requests/support/redirect-cors.py": [ @@ -772470,6 +773571,10 @@ "c036b16ec87bc7e562c4040ad1923c5a8b483cec", "support" ], + "visual-viewport/idlharness.window.js": [ + "f0b5aeb173a567dd1160caf262a57e6ecf8328b4", + "testharness" + ], "visual-viewport/viewport-attribute-event-handlers-manual.html": [ "896f6cd98b3f94099ba59efce24bf301997d8a28", "manual" @@ -774419,7 +775524,7 @@ "testharness" ], "web-locks/idlharness.tentative.https.any.js": [ - "168f57328b839ed7f9dbf17e98bbbd5deedc146a", + "1ad570370e5cdf49fe1c457fc0d37eb44eeedada", "testharness" ], "web-locks/ifAvailable.tentative.https.any.js": [ @@ -774498,10 +775603,6 @@ "7f9a53e0d631f5184fd8f46e2d88889489b19660", "testharness" ], - "web-locks/web-locks.idl": [ - "14bc3a22cc395f2999dcd53dd52ff0f4d896e129", - "support" - ], "web-locks/workers.tentative.https.html": [ "04af72c8ad04a940f289678f4bde41ee4cde9654", "testharness" @@ -775467,15 +776568,15 @@ "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html": [ - "28674686615905b330cf35b4bcd1d1f283e95098", + "de1cec6c9c26eb3fb71d76dab75cc70372f31f3f", "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html": [ - "b30ef1f17c45a871d473df43711d9e7844a00da5", + "6da72afb270f6c6a390b33a1a4b26ce16f039420", "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html": [ - "2e8a1c7876b51103b548844c02eddbe69852b333", + "490d2c378433d2934d673eea54a0504770ebaf09", "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html": [ @@ -775491,7 +776592,7 @@ "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html": [ - "97684b2131277f61095c414230f76f06db85d06e", + "28a0fc1c3c75e5b5804d892798ad8f38aa3216e3", "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html": [ @@ -776763,7 +777864,7 @@ "support" ], "webdriver/tests/support/sync.py": [ - "30de3b3cc75140605f0a616e96777245e809d970", + "3fc77131c766f68d2f7c4c0af33ed6478d31e300", "support" ], "webdriver/tests/switch_to_frame/__init__.py": [ @@ -777871,7 +778972,7 @@ "support" ], "webrtc/RTCIceTransport-extension.https.html": [ - "40e9f30d1704e48a808b8d0ff029188b3b7d6519", + "bb4d52adce5673bab5d527536d67f89a03a48cd2", "testharness" ], "webrtc/RTCIceTransport.html": [ diff --git a/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini b/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini new file mode 100644 index 00000000000..1925ea70ab5 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini @@ -0,0 +1,4 @@ +[CSSAnimation-compositeOrder.tentative.html] + [Animations are composited by their order in the animation-name property.] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-composition.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-composition.html.ini new file mode 100644 index 00000000000..3e9c04c35ea --- /dev/null +++ b/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-composition.html.ini @@ -0,0 +1,121 @@ +[box-shadow-composition.html] + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px 118px, rgba(0, 0, 0, 0) -1px -2px 0px -4px, rgba(0, 0, 0, 0) -2px -4px 0px -8px, rgba(0, 0, 0, 0) -5px -10px 0px -20px, rgba(0, 0, 0, 0) -10px -20px 0px -40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px, rgb(250, 250, 250) 25px 50px 75px 100px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px, rgb(150, 150, 150) 15px 30px 45px 60px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px 42px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(100, 100, 100, 0.5) 5px 10px 15px 20px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px, rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px -18.8px, rgb(26, 52, 78) 2.6px 5.2px 7.8px 10.4px, rgb(130, 130, 130) 13px 26px 39px 52px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(70, 70, 70 ) 7px 14px 21px 28px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px -18.8px, rgb(26, 52, 78) 2.6px 5.2px 7.8px 10.4px, rgb(52, 104, 156) 5.2px 10.4px 15.6px 20.8px, rgb(130, 130, 130) 13px 26px 39px 52px, rgb(255, 255, 255) 26px 52px 78px 104px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(150, 150, 150) 15px 30px 45px 60px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(200, 200, 200) 20px 40px 60px 80px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(70, 70, 70) 7px 14px 21px 28px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px 42px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(40, 80, 120, 0.5) 2px 4px 6px 8px, rgba(100, 100, 100, 0.5) 5px 10px 15px 20px, rgba(200, 200, 200, 0.5) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(150, 150, 150) 15px 30px 45px 60px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(127, 124, 121) 12.7px 25.4px 38.1px 50.8px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px -2.4px, rgba(0, 0, 0, 0) -6px -12px 0px -24px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px, rgb(70, 70, 70) 7px 14px 21px 28px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px inset\] to add [rgb(200, 200, 200) 20px 40px 60px 80px inset\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px inset\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(250, 250, 250) 25px 50px 75px 100px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(250, 250, 250) 25px 50px 75px 100px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(0, 0, 0) -3.5px -7px 0px -14px, rgb(30, 60, 90) 3px 6px 9px 12px, rgb(255, 255, 255) 30px 60px 90px 120px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0.5) should be [rgb(55, 60, 65) 5.5px 11px 16.5px 22px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(200, 200, 200, 0.5) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to replace [rgb(200, 200, 200) 20px 40px 60px 80px\] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px 118px, rgba(0, 0, 0, 0) -1px -2px 0px -4px, rgba(0, 0, 0, 0) -5px -10px 0px -20px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px\] from replace [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (0) should be [rgb(100, 100, 100) 10px 20px 30px 40px\]] + expected: FAIL + + [Compositing: property <box-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px 4px\] from add [rgb(100, 100, 100) 10px 20px 30px 40px\] to add [rgb(200, 200, 200) 20px 40px 60px 80px\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-color/color-initial-canvastext.html.ini b/tests/wpt/metadata/css/css-color/color-initial-canvastext.html.ini new file mode 100644 index 00000000000..1ab1e809e50 --- /dev/null +++ b/tests/wpt/metadata/css/css-color/color-initial-canvastext.html.ini @@ -0,0 +1,2 @@ +[color-initial-canvastext.html] + expected: ERROR diff --git a/tests/wpt/metadata/css/css-transitions/animations/text-shadow-composition.html.ini b/tests/wpt/metadata/css/css-transitions/animations/text-shadow-composition.html.ini new file mode 100644 index 00000000000..424f103ee0e --- /dev/null +++ b/tests/wpt/metadata/css/css-transitions/animations/text-shadow-composition.html.ini @@ -0,0 +1,91 @@ +[text-shadow-composition.html] + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(100, 100, 100, 0.5) 5px 10px 15px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -5px -10px 0px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px\] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -2px -4px 0px, rgba(0, 0, 0, 0) -5px -10px 0px, rgba(0, 0, 0, 0) -10px -20px 0px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0.5) should be [rgb(150, 150, 150) 15px 30px 45px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(250, 250, 250) 25px 50px 75px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px\] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(52, 104, 156) 5.2px 10.4px 15.6px, rgb(130, 130, 130) 13px 26px 39px, rgb(255, 255, 255) 26px 52px 78px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(150, 150, 150) 15px 30px 45px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(70, 70, 70) 7px 14px 21px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px\] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(40, 80, 120, 0.5) 2px 4px 6px, rgba(100, 100, 100, 0.5) 5px 10px 15px, rgba(200, 200, 200, 0.5) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1.5) should be [rgb(0, 0, 0) -3.5px -7px 0px, rgb(30, 60, 90) 3px 6px 9px, rgb(255, 255, 255) 30px 60px 90px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px\] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px, rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0.5) should be [rgb(55, 60, 65) 5.5px 11px 16.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(200, 200, 200, 0.5) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(130, 130, 130) 13px 26px 39px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (-0.3) should be [rgb(70, 70, 70 ) 7px 14px 21px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(100, 100, 100) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(250, 250, 250) 25px 50px 75px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(70, 70, 70) 7px 14px 21px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0) should be [rgb(100, 100, 100) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px\] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px\] to replace [rgb(200, 200, 200) 20px 40px 60px\] at (1) should be [rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0) should be [rgb(100, 100, 100) 10px 20px 30px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [undefined\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1.5) should be [rgb(250, 250, 250) 25px 50px 75px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (-0.3) should be [rgb(127, 124, 121) 12.7px 25.4px 38.1px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px, rgba(0, 0, 0, 0) -6px -12px 0px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from replace [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(150, 150, 150) 15px 30px 45px\]] + expected: FAIL + + [Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px\] from add [rgb(100, 100, 100) 10px 20px 30px\] to add [rgb(200, 200, 200) 20px 40px 60px\] at (1) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini b/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini index 6e8e5c32f59..db832d8d4e8 100644 --- a/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini +++ b/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini @@ -1,11 +1,11 @@ [ch-recalc-on-font-load.html] expected: ERROR [ch in a normal div should be recalculated after loading a web font] - expected: FAIL + expected: TIMEOUT [ch in display:none should be recalculated after loading a web font] - expected: FAIL + expected: TIMEOUT [ch in display:contents should be recalculated after loading a web font] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-values/round-function.html.ini b/tests/wpt/metadata/css/css-values/round-function.html.ini new file mode 100644 index 00000000000..5cf7dccb0fd --- /dev/null +++ b/tests/wpt/metadata/css/css-values/round-function.html.ini @@ -0,0 +1,139 @@ +[round-function.html] + [round(down, 18px, 10px) should round to 10px] + expected: FAIL + + [round(13px, -10px) should round to 10px] + expected: FAIL + + [round(18px, 10px) should round to 20px] + expected: FAIL + + [round(5px, 0px) should round to calc(NaN)] + expected: FAIL + + [round(down, -18px, 10px) should round to -20px] + expected: FAIL + + [round(-18px, -10px) should round to -20px] + expected: FAIL + + [round(up, -13px, 10px) should round to -10px] + expected: FAIL + + [round(up, -18px, 10px) should round to -10px] + expected: FAIL + + [round(1px/0, 1px/0) should round to calc(NaN)] + expected: FAIL + + [round(to-zero, -13px, 10px) should round to -10px] + expected: FAIL + + [round(up, 13px, 10px) should round to 20px] + expected: FAIL + + [calc(1/round(-5px, 1px/0)) should round to calc(-infinity * 1px)] + expected: FAIL + + [round(1px/0, 5px) should round to calc(infinity * 1px)] + expected: FAIL + + [round(nearest, 18px, 10px) should round to 20px] + expected: FAIL + + [round(nearest, 15px, 10px) should round to 20px] + expected: FAIL + + [round(to-zero, -18px, 10px) should round to -10px] + expected: FAIL + + [round(up, 18px, 10px) should round to 20px] + expected: FAIL + + [round(-13px, 10px) should round to -10px] + expected: FAIL + + [round(up, 23px, 10px) should round to 30px] + expected: FAIL + + [round(nearest, 13px, 10px) should round to 10px] + expected: FAIL + + [round(-1px/0, -5px) should round to calc(-infinity * 1px)] + expected: FAIL + + [round(to-zero, 23px, 10px) should round to 20px] + expected: FAIL + + [round(18px, -10px) should round to 20px] + expected: FAIL + + [round(to-zero, 15px, 10px) should round to 10px] + expected: FAIL + + [round(nearest, -13px, 10px) should round to -10px] + expected: FAIL + + [round(23px, -10px) should round to 20px] + expected: FAIL + + [round(15px, -10px) should round to 20px] + expected: FAIL + + [calc(1/round(5px, 1px/0)) should round to calc(infinity * 1px)] + expected: FAIL + + [round(-13px, -10px) should round to -10px] + expected: FAIL + + [round(15px, 10px) should round to 20px] + expected: FAIL + + [round(down, 13px, 10px) should round to 10px] + expected: FAIL + + [round(-18px, 10px) should round to -20px] + expected: FAIL + + [round(down, -13px, 10px) should round to -20px] + expected: FAIL + + [round(down, 15px, 10px) should round to 10px] + expected: FAIL + + [calc(1/round(5px, -1px/0)) should round to calc(infinity * 1px)] + expected: FAIL + + [round(nearest, -18px, 10px) should round to -20px] + expected: FAIL + + [round(-1px/0, 5px) should round to calc(-infinity * 1px)] + expected: FAIL + + [calc(1/round(-5px, -1px/0)) should round to calc(-infinity * 1px)] + expected: FAIL + + [round(13px, 10px) should round to 10px] + expected: FAIL + + [round(down, 23px, 10px) should round to 20px] + expected: FAIL + + [round(up, 15px, 10px) should round to 20px] + expected: FAIL + + [round(to-zero, 13px, 10px) should round to 10px] + expected: FAIL + + [round(23px, 10px) should round to 20px] + expected: FAIL + + [round(1px/0, -5px) should round to calc(infinity * 1px)] + expected: FAIL + + [round(nearest, 23px, 10px) should round to 20px] + expected: FAIL + + [round(to-zero, 18px, 10px) should round to 10px] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index 4c79907309b..00000000000 --- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 628b1fab770..c884dc82eab 100644 --- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,3 +2,6 @@ [listeners are called when <iframe> is resized] expected: FAIL + [listeners are called correct number of times] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/Document-createElement.html.ini b/tests/wpt/metadata/custom-elements/Document-createElement.html.ini deleted file mode 100644 index ef2a2e288c1..00000000000 --- a/tests/wpt/metadata/custom-elements/Document-createElement.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[Document-createElement.html] - [document.createElement must create an instance of autonomous custom elements when it has is attribute] - expected: FAIL diff --git a/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini b/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini index 1739e94c1d0..a146ed2bf32 100644 --- a/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini +++ b/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini @@ -1,8 +1,37 @@ [pseudo-class-defined.html] - expected: ERROR [Untitled] expected: FAIL [pseudo-class-defined] expected: FAIL + [createElementNS("http://www.w3.org/2000/svg", "div") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "div") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "p", { is: "" }) should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "p", { is: "" }) should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "abbr", { is: "my-abbr" }) should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "abbr", { is: "my-abbr" }) should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "font-face") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "font-face") should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "a-a") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "a-a") should be :defined] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini deleted file mode 100644 index 4456e76a8d1..00000000000 --- a/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[HTMLMediaElement.html] - expected: CRASH diff --git a/tests/wpt/metadata/dom/nodes/Element-classlist.html.ini b/tests/wpt/metadata/dom/nodes/Element-classlist.html.ini deleted file mode 100644 index 95c9293d995..00000000000 --- a/tests/wpt/metadata/dom/nodes/Element-classlist.html.ini +++ /dev/null @@ -1,77 +0,0 @@ -[Element-classlist.html] - type: testharness - [classList.remove("a") with attribute value null (HTML node)] - expected: FAIL - - [classList.remove("a", "b") with attribute value null (HTML node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a" (HTML node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a a a b" (HTML node)] - expected: FAIL - - [classList.replace("c", "a") with attribute value "c b a" (HTML node)] - expected: FAIL - - [classList.remove("a") with attribute value null (XHTML node)] - expected: FAIL - - [classList.remove("a", "b") with attribute value null (XHTML node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a" (XHTML node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a a a b" (XHTML node)] - expected: FAIL - - [classList.replace("c", "a") with attribute value "c b a" (XHTML node)] - expected: FAIL - - [classList.remove("a") with attribute value null (MathML node)] - expected: FAIL - - [classList.remove("a", "b") with attribute value null (MathML node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a" (MathML node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a a a b" (MathML node)] - expected: FAIL - - [classList.replace("c", "a") with attribute value "c b a" (MathML node)] - expected: FAIL - - [classList.remove("a") with attribute value null (XML node with null namespace)] - expected: FAIL - - [classList.remove("a", "b") with attribute value null (XML node with null namespace)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a" (XML node with null namespace)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a a a b" (XML node with null namespace)] - expected: FAIL - - [classList.replace("c", "a") with attribute value "c b a" (XML node with null namespace)] - expected: FAIL - - [classList.remove("a") with attribute value null (foo node)] - expected: FAIL - - [classList.remove("a", "b") with attribute value null (foo node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a" (foo node)] - expected: FAIL - - [classList.replace("a", "a") with attribute value "a a a b" (foo node)] - expected: FAIL - - [classList.replace("c", "a") with attribute value "c b a" (foo node)] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini b/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini index a68b5430141..98e80ffce7b 100644 --- a/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini +++ b/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini @@ -1,42 +1,2 @@ [integrity.sub.any.sharedworker.html] expected: ERROR - [Untitled] - expected: FAIL - - [integrity] - expected: FAIL - - -[integrity.sub.any.worker.html] - [Invalid integrity] - expected: FAIL - - [Multiple integrities: invalid stronger than valid] - expected: FAIL - - [Multiple integrities: both are invalid] - expected: FAIL - - [CORS invalid integrity] - expected: FAIL - - [SHA-* integrity for opaque response] - expected: FAIL - - -[integrity.sub.any.html] - [Invalid integrity] - expected: FAIL - - [Multiple integrities: invalid stronger than valid] - expected: FAIL - - [Multiple integrities: both are invalid] - expected: FAIL - - [CORS invalid integrity] - expected: FAIL - - [SHA-* integrity for opaque response] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 953229f086c..dd3c623ccbc 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,21 +312,21 @@ [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: */* text/html] + [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*] + [<iframe>: separate response Content-Type: text/html */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: text/plain;charset=gbk text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/html;x=" text/plain] expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index a63e414f43a..87c807a49ff 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,6 +11,3 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini index 0cb858e8b2e..d3de645928d 100644 --- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini @@ -16,3 +16,6 @@ [Embedded credentials matching the top-level are not treated as network errors for relative URLs.] expected: TIMEOUT + [Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini index 02999abae84..ced66541669 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini @@ -1,6 +1,5 @@ [location-protocol-setter-non-broken.html] type: testharness - expected: CRASH [Set data URL frame location.protocol to gopher] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/idlharness.https.html.ini b/tests/wpt/metadata/html/dom/idlharness.https.html.ini index 2ed0991f98c..7d0fadaea7d 100644 --- a/tests/wpt/metadata/html/dom/idlharness.https.html.ini +++ b/tests/wpt/metadata/html/dom/idlharness.https.html.ini @@ -1376,27 +1376,6 @@ [SVGAElement includes HTMLHyperlinkElementUtils: member names are unique] expected: FAIL - [SubmitEvent interface object name] - expected: FAIL - - [SubmitEvent interface object length] - expected: FAIL - - [SubmitEvent interface: existence and properties of interface prototype object] - expected: FAIL - - [SubmitEvent interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - - [SubmitEvent interface: attribute submitter] - expected: FAIL - - [SubmitEvent interface: existence and properties of interface object] - expected: FAIL - - [SubmitEvent interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - [SVGElement interface: attribute onwebkitanimationend] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index f6a7aca3306..cb0211f1d21 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,5 +1,6 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness + expected: CRASH [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index e440b1e38c6..dc856a3d5a3 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_nonescaping-3.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini index d8b1ff6206d..ee12d7de99c 100644 --- a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini @@ -318,3 +318,6 @@ [[INPUT in RADIO status\] The checked attribute is false and the name attribute is empty] expected: FAIL + [validationMessage should return empty string when willValidate is false and valueMissing is true] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini deleted file mode 100644 index 74cd4de030f..00000000000 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini +++ /dev/null @@ -1,22 +0,0 @@ -[SubmitEvent.window.html] - [Successful SubmitEvent constructor] - expected: FAIL - - [Failing SubmitEvent constructor] - expected: FAIL - - [Successful SubmitEvent constructor; empty dictionary] - expected: FAIL - - [Successful SubmitEvent constructor; null submitter] - expected: FAIL - - [Successful SubmitEvent constructor; missing dictionary] - expected: FAIL - - [Successful SubmitEvent constructor; null/undefined submitter] - expected: FAIL - - [Successful SubmitEvent constructor; null/undefined dictionary] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini index 61799e4c935..633a99517d3 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini @@ -1,5 +1,4 @@ [form-double-submit-2.html] - expected: ERROR [preventDefault should allow onclick submit() to succeed] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini index df89cd21511..9f416703229 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini @@ -1,5 +1,4 @@ [form-double-submit-3.html] - expected: ERROR [<button> should have the same double-submit protection as <input type=submit>] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini index dce74c6dd71..b193c33c2b6 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini @@ -1,5 +1,4 @@ [form-double-submit.html] - expected: ERROR [default submit action should supersede onclick submit()] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini index 52cb32ee092..f2a5ec38b79 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini @@ -5,9 +5,6 @@ [firing an event named submit; form.requestSubmit(submitter)] expected: FAIL - [firing an event named submit; clicking a submit button] - expected: FAIL - [firing an event named submit; form.requestSubmit(null)] expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-removal.window.js.ini b/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-removal.window.js.ini index 0a33b8d57c0..b89234a7182 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-removal.window.js.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-removal.window.js.ini @@ -1,10 +1,3 @@ [event-handler-removal.window.html] [Event handler set through content attribute should be deactivated when the content attribute is removed.] expected: FAIL - - [Event handler set through IDL should be deactivated when the IDL attribute is set to null.] - expected: FAIL - - [Event handler set through content attribute should be removed when they are set to null.] - expected: FAIL - diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini index 39dde8493e8..5a1f31e3b88 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini @@ -14,3 +14,27 @@ [Executing "1-channel input"] expected: FAIL + [X new ConvolverNode({channelCountMode: 'explicit'}) incorrectly threw ReferenceError: "ConvolverNode is not defined".] + expected: FAIL + + [Executing "3-channel input, explicit"] + expected: FAIL + + [Executing "5.1-channel input, explicit"] + expected: FAIL + + [Executing "mono-upmix-clamped-max"] + expected: FAIL + + [X new ConvolverNode({channelCountMode: 'clamped-max'}) incorrectly threw ReferenceError: "ConvolverNode is not defined".] + expected: FAIL + + [Executing "4-channel input, explicit"] + expected: FAIL + + [Executing "mono-upmix-explicit"] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 2 out of 11 tasks were failed.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini index 3439700de3f..0746797e14e 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini @@ -14,3 +14,15 @@ [Executing "5.1-channel input"] expected: FAIL + [Executing "3-channel input explicit mode"] + expected: FAIL + + [Executing "2-channel input, explicit mode"] + expected: FAIL + + [Executing "5.1-channel input explicit mode"] + expected: FAIL + + [Executing "4-channel input explicit mode"] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini index acf644dc3e7..e8599055c24 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini @@ -17,3 +17,12 @@ [Executing "5.1-channel input"] expected: FAIL + [Executing "count 1, 5.1-channel in"] + expected: FAIL + + [Executing "count 1, 2-channel in"] + expected: FAIL + + [Executing "count 1, 4-channel in"] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini index a70eac76243..eac4fc32f95 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini @@ -44,3 +44,6 @@ [X node1 = new ConvolverNode(c, {"buffer":null} incorrectly threw ReferenceError: "ConvolverNode is not defined".] expected: FAIL + [X new ConvolverNode(c, {"channelCount":1}) incorrectly threw ReferenceError: "ConvolverNode is not defined".] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index 268949ced5c..f584fce5df1 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,4 +1,5 @@ [005.html] + expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/metadata/xhr/abort-during-upload.any.js.ini b/tests/wpt/metadata/xhr/abort-during-upload.any.js.ini deleted file mode 100644 index d51a28579eb..00000000000 --- a/tests/wpt/metadata/xhr/abort-during-upload.any.js.ini +++ /dev/null @@ -1,9 +0,0 @@ -[abort-during-upload.any.html] - [XMLHttpRequest: abort() while sending data] - expected: FAIL - - -[abort-during-upload.any.worker.html] - [XMLHttpRequest: abort() while sending data] - expected: FAIL - diff --git a/tests/wpt/metadata/xhr/abort-event-order.htm.ini b/tests/wpt/metadata/xhr/abort-event-order.htm.ini deleted file mode 100644 index c77110633c2..00000000000 --- a/tests/wpt/metadata/xhr/abort-event-order.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[abort-event-order.htm] - type: testharness - [XMLHttpRequest: The abort() method: abort and loadend events] - expected: FAIL - diff --git a/tests/wpt/metadata/xhr/event-error-order.sub.html.ini b/tests/wpt/metadata/xhr/event-error-order.sub.html.ini deleted file mode 100644 index 2cf89c33915..00000000000 --- a/tests/wpt/metadata/xhr/event-error-order.sub.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[event-error-order.sub.html] - type: testharness - [XMLHttpRequest: event - error (order of events)] - expected: FAIL - diff --git a/tests/wpt/metadata/xhr/event-timeout-order.any.js.ini b/tests/wpt/metadata/xhr/event-timeout-order.any.js.ini deleted file mode 100644 index 3dc3d95f74b..00000000000 --- a/tests/wpt/metadata/xhr/event-timeout-order.any.js.ini +++ /dev/null @@ -1,9 +0,0 @@ -[event-timeout-order.any.html] - [XMLHttpRequest: event - timeout (order of events)] - expected: FAIL - - -[event-timeout-order.any.worker.html] - [XMLHttpRequest: event - timeout (order of events)] - expected: FAIL - diff --git a/tests/wpt/metadata/xhr/send-timeout-events.htm.ini b/tests/wpt/metadata/xhr/send-timeout-events.htm.ini deleted file mode 100644 index a3bbcb2e325..00000000000 --- a/tests/wpt/metadata/xhr/send-timeout-events.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[send-timeout-events.htm] - type: testharness - [XMLHttpRequest: The send() method: timeout is not 0 ] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index fb721fd2900..145f8189f02 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -19032,7 +19032,7 @@ "testharness" ], "mozilla/interfaces.html": [ - "114ec29df620cc0526d39a41928f72d9359890a9", + "fc82a7e82e936811024cbefadaa9cc396511942b", "testharness" ], "mozilla/interfaces.js": [ diff --git a/tests/wpt/mozilla/tests/mozilla/interfaces.html b/tests/wpt/mozilla/tests/mozilla/interfaces.html index 114ec29df62..fc82a7e82e9 100644 --- a/tests/wpt/mozilla/tests/mozilla/interfaces.html +++ b/tests/wpt/mozilla/tests/mozilla/interfaces.html @@ -218,6 +218,7 @@ test_interfaces([ "StorageEvent", "StyleSheet", "StyleSheetList", + "SubmitEvent", "Text", "TextTrack", "TextTrackCue", diff --git a/tests/wpt/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html b/tests/wpt/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html index c65b9fd60f2..d09d4ea5606 100644 --- a/tests/wpt/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html +++ b/tests/wpt/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html @@ -15,7 +15,7 @@ var testBase = get_host_info().HTTPS_ORIGIN + RESOURCES_DIR; testReferrerHeader(testBase, referrerUrl); testBase = get_host_info().HTTP_ORIGIN + RESOURCES_DIR; - testReferrerHeader(testBase, ""); + testReferrerHeader(testBase, "", true); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/common/security-features/resources/common.sub.js b/tests/wpt/web-platform-tests/common/security-features/resources/common.sub.js index ed7c32b8ce1..afb11de6fe6 100644 --- a/tests/wpt/web-platform-tests/common/security-features/resources/common.sub.js +++ b/tests/wpt/web-platform-tests/common/security-features/resources/common.sub.js @@ -398,7 +398,7 @@ function wrapResult(server_data) { requestViaPicture 3 - Y - requestViaScript 2 Y Y - requestViaSendBeacon 3 - Y - - requestViaSharedWorker 2 Y - - + requestViaSharedWorker 2 Y - Y requestViaVideo 3 - Y - requestViaWebSocket 3 - Y - requestViaWorklet 3 - Y Y @@ -924,6 +924,11 @@ const subresourceMap = { path: "/common/security-features/subresource/shared-worker.py", invoker: url => requestViaSharedWorker(url, {type: "module"}), }, + "sharedworker-import-data": { + path: "/common/security-features/subresource/shared-worker.py", + invoker: url => + requestViaSharedWorker(workerUrlThatImports(url), {type: "module"}), + }, "websocket": { path: "/stash_responder", diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js index 1b1ae529767..4e5f9b02fc6 100644 --- a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js @@ -187,7 +187,7 @@ promise_test(async testCase => { assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); }, 'CookieListItem - cookieStore.set with secure set to false'); -['strict', 'lax', 'unrestricted'].forEach(sameSiteValue => { +['strict', 'lax', 'none'].forEach(sameSiteValue => { promise_test(async testCase => { await cookieStore.delete('cookie-name'); @@ -226,4 +226,4 @@ promise_test(async testCase => { assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); }, 'CookieListItem - cookieStore.set with positional name and value and ' + `sameSite set to ${sameSiteValue}`); -});
\ No newline at end of file +}); diff --git a/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html b/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html index f563bf7c68d..fcc99d0f75a 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html +++ b/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html @@ -4,6 +4,7 @@ <meta charset=utf-8> <title>Tests basic cookie setting functionality</title> <meta name=help href="https://tools.ietf.org/html/rfc6265#page-8"> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/cookies/http-state/name-tests.html b/tests/wpt/web-platform-tests/cookies/http-state/name-tests.html index adc550b9bb9..2f6e97aff89 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/name-tests.html +++ b/tests/wpt/web-platform-tests/cookies/http-state/name-tests.html @@ -4,6 +4,7 @@ <meta charset=utf-8> <title>Tests basic cookie setting functionality</title> <meta name=help href="https://tools.ietf.org/html/rfc6265#page-8"> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html new file mode 100644 index 00000000000..225efd23add --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Animation composite order</title> +<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-composite-order"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/testcommon.js"></script> +<style> +@keyframes margin50 { + from { + margin-left: 50px; + } + to { + margin-left: 50px; + } +} +@keyframes margin100 { + from { + margin-left: 100px; + } + to { + margin-left: 100px; + } +} +</style> +<div id="log"</div> +<script> +'use strict'; + +promise_test(async t => { + const div = addDiv(t); + div.style.animation = 'margin100 100s'; + assert_equals(getComputedStyle(div).marginLeft, '100px'); + div.style.animation = 'margin50 100s, margin100 100s'; + // The margin should be unaffected by margin50 since it is named earlier + // in the animation list. + assert_equals(getComputedStyle(div).marginLeft, '100px'); +}, "Animations are composited by their order in the animation-name property."); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-composition.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-composition.html new file mode 100644 index 00000000000..3f01473a29f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-composition.html @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>box-shadow composition</title> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#box-shadow"> +<meta name="test" content="box-shadow supports animation"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> +<style> +.target { + width: 40px; + height: 40px; + background-color: black; +} +.expected { + background-color: green; +} +</style> +<body> +<script> +test_composition({ + property: 'box-shadow', + replaceFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px 80px', +}, [ + {at: -0.3, expect: 'rgb(70, 70, 70 ) 7px 14px 21px 28px'}, + {at: 0, expect: 'rgb(100, 100, 100) 10px 20px 30px 40px'}, + {at: 0.5, expect: 'rgb(150, 150, 150) 15px 30px 45px 60px'}, + {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 1.5, expect: 'rgb(250, 250, 250) 25px 50px 75px 100px'}, +]); + +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px 80px', +}, [ + {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px'}, + {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px'}, +]); +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px inset', + addTo: 'rgb(200, 200, 200) 20px 40px 60px 80px inset', +}, [ + {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px inset'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px inset'}, + {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px inset'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px inset'}, + {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px inset'}, +]); +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px 80px', +}, [ + {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(70, 70, 70) 7px 14px 21px 28px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(100, 100, 100) 10px 20px 30px 40px'}, + {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(150, 150, 150) 15px 30px 45px 60px'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(250, 250, 250) 25px 50px 75px 100px'}, +]); +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset', + addTo: 'rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset', +}, [ + {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(70, 70, 70) 7px 14px 21px 28px, rgb(70, 70, 70) 7px 14px 21px 28px inset'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(100, 100, 100) 10px 20px 30px 40px, rgb(100, 100, 100) 10px 20px 30px 40px inset'}, + {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(150, 150, 150) 15px 30px 45px 60px, rgb(150, 150, 150) 15px 30px 45px 60px inset'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(200, 200, 200) 20px 40px 60px 80px, rgb(200, 200, 200) 20px 40px 60px 80px inset'}, + {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(250, 250, 250) 25px 50px 75px 100px, rgb(250, 250, 250) 25px 50px 75px 100px inset'}, +]); +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px', + replaceTo: 'rgb(200, 200, 200) 20px 40px 60px 80px', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) -4.7px -9.4px 0px -18.8px, rgb(26, 52, 78) 2.6px 5.2px 7.8px 10.4px, rgb(130, 130, 130) 13px 26px 39px 52px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(100, 100, 100) 10px 20px 30px 40px'}, + {at: 0.5, expect: 'rgb(105, 110, 115) 10.5px 21px 31.5px 42px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(100, 100, 100, 0.5) 5px 10px 15px 20px'}, + {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 1.5, expect: 'rgb(255, 255, 255) 29.5px 59px 88.5px 118px, rgba(0, 0, 0, 0) -1px -2px 0px -4px, rgba(0, 0, 0, 0) -5px -10px 0px -20px'}, +]); +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px', + replaceFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px 80px', +}, [ + {at: -0.3, expect: 'rgb(127, 124, 121) 12.7px 25.4px 38.1px 50.8px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px -2.4px, rgba(0, 0, 0, 0) -6px -12px 0px -24px'}, + {at: 0, expect: 'rgb(100, 100, 100) 10px 20px 30px 40px'}, + {at: 0.5, expect: 'rgb(55, 60, 65) 5.5px 11px 16.5px 22px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(200, 200, 200, 0.5) 10px 20px 30px 40px'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 1.5, expect: 'rgb(0, 0, 0) -3.5px -7px 0px -14px, rgb(30, 60, 90) 3px 6px 9px 12px, rgb(255, 255, 255) 30px 60px 90px 120px'}, +]); +test_composition({ + property: 'box-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px', + replaceTo: 'rgb(200, 200, 200) 20px 40px 60px 80px', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) -4.7px -9.4px 0px -18.8px, rgb(26, 52, 78) 2.6px 5.2px 7.8px 10.4px, rgb(52, 104, 156) 5.2px 10.4px 15.6px 20.8px, rgb(130, 130, 130) 13px 26px 39px 52px, rgb(255, 255, 255) 26px 52px 78px 104px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px 4px, rgb(20, 40, 60) 2px 4px 6px 8px, rgb(40, 80, 120) 4px 8px 12px 16px, rgb(100, 100, 100) 10px 20px 30px 40px, rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 0.5, expect: 'rgb(105, 110, 115) 10.5px 21px 31.5px 42px, rgba(20, 40, 60, 0.5) 1px 2px 3px 4px, rgba(40, 80, 120, 0.5) 2px 4px 6px 8px, rgba(100, 100, 100, 0.5) 5px 10px 15px 20px, rgba(200, 200, 200, 0.5) 10px 20px 30px 40px'}, + {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px 80px'}, + {at: 1.5, expect: 'rgb(255, 255, 255) 29.5px 59px 88.5px 118px, rgba(0, 0, 0, 0) -1px -2px 0px -4px, rgba(0, 0, 0, 0) -2px -4px 0px -8px, rgba(0, 0, 0, 0) -5px -10px 0px -20px, rgba(0, 0, 0, 0) -10px -20px 0px -40px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html new file mode 100644 index 00000000000..193b759abcb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html @@ -0,0 +1,30 @@ +<!doctype html> +<html class="dark"> +<head> + <title>CSS Color Adjustment Test: the initial color is affected by color-scheme</title> + <link rel="help" href="https://drafts.csswg.org/css-color-adjust/#color-scheme-processing"> + <link rel="stylesheet" href="support/assert-preferred-dark.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <style> + .dark { color-scheme: dark } + .light { color-scheme: light } + .initial { color: initial } + </style> +</head> +<body> + <div id="dark" class="dark initial"></div> + <div id="light" class="light initial"></div> +</body> +<script> + test(() => { + assert_equals(getComputedStyle(dark).color, getComputedStyle(document.documentElement).color); + assert_not_equals(getComputedStyle(light).color, getComputedStyle(document.documentElement).color); + }, "Check that color:initial resolves to the intial color for the dark color-scheme."); + + test(() => { + document.documentElement.className = "light"; + assert_equals(getComputedStyle(light).color, getComputedStyle(document.documentElement).color); + assert_not_equals(getComputedStyle(dark).color, getComputedStyle(document.documentElement).color); + }, "Check that color:initial resolves to the intial color for the light color-scheme."); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial-ref.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial-ref.html new file mode 100644 index 00000000000..6c39b446e9c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial-ref.html @@ -0,0 +1,4 @@ +<!doctype html> +<html style="color-scheme:dark"> +<title>CSS Test Reference</title> +This text should be rendered with canvastext for the dark color-scheme. diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial.html new file mode 100644 index 00000000000..ba8f10cf238 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-visited-link-initial.html @@ -0,0 +1,11 @@ +<!doctype html> +<title>CSS Color Adjustment Test: initial color on visited link affected by color-scheme</title> +<link rel="help" href="https://drafts.csswg.org/css-color-adjust/#color-scheme-processing"> +<link rel="stylesheet" href="support/assert-preferred-dark.css"> +<link rel="match" href="color-scheme-visited-link-initial-ref.html"> +<style> + :root { color-scheme: dark } + a { text-decoration: none } + a:visited { color: initial } +</style> +<a href="">This text should be rendered with canvastext for the dark color-scheme.</a> diff --git a/tests/wpt/web-platform-tests/css/css-color/color-initial-canvastext.html b/tests/wpt/web-platform-tests/css/css-color/color-initial-canvastext.html new file mode 100644 index 00000000000..97ea2b7b68f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/color-initial-canvastext.html @@ -0,0 +1,22 @@ +<!doctype html> +<title>CSS Color 4: Initial value of the color property</title> +<link rel="help" href="https://drafts.csswg.org/css-color/#the-color-property"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + #ref { color: canvastext } + #initial { color: initial } +</style> +<div id="ref"></div> +<div id="initial"></div> +<script> + const canvastext = getComputedStyle(ref).color; + + test(() => { + assert_equals(getComputedStyle(document.documentElement).color, canvastext); + }, "Check that the resolved value for the initial color on the root element matches canvastext."); + + test(() => { + assert_equals(getComputedStyle(initial).color, canvastext); + }, "Check that the resolved value of an explicit color:initial matches canvastext."); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-001-ref.html new file mode 100644 index 00000000000..e55fe0b9f96 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-001-ref.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: align-content/justify-content:baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + display: grid; + grid: auto / repeat(4, auto); +} +.c { + grid: repeat(4, auto) / auto; +} +div { + float: left; + border:2px solid; + padding:1px; + margin:1px; +} +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-self:baseline; justify-self:baseline; } +.lb { align-self:last baseline; justify-self:last baseline; } +.s { align-self:self-stretch; justify-self:self-stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span style="padding-block-start:8px;" class="fb">A<br>B</span><span class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s">X<br>Z</span></div> +<div class="grid hl"><span style="padding-block-start:8px;" class="fb pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:2px;" class="fb">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:4px; padding-block-end:36px;" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:15px;" class="fb pbs">A<br>B</span><span style="padding-block-start:18px;" class="fb">M<br>N</span><span style="padding-block-start:22px; padding-block-end:36px;" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span style="padding-block-end:2px;" class="lb">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid hl"><span style="padding-block-end:7px;" class="lb pbe">A<br>B</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb pbs">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:2px;" class="lb">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:7px;" class="lb pbe">A<br>B</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl">A<br>B</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; padding-block-end:36px;" class="fb s vl">X<br>Z</span></div> +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; padding-block-end:36px;" class="fb s vl">X<br>Z</span></div> +<div class="grid c vl"><span style="padding-block-start:8px;" class="fb hl">A<br>B</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s hl">X<br>Z</span></div> +<div class="grid c vl"><span style="padding-block-start:15px;" class="fb hl pbs">A<br>B</span><span style="padding-block-start:12px;" class="fb hl">M<br>N</span><span style="padding-block-start:28px; padding-block-end:24px;" class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl">A<br>B</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s hl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:8px;" class="lb vl">A<br>B</span><span style="padding-block-end:0;" class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vl pbe">A<br>B</span><span style="padding-block-end:2px;" class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl">A<br>B</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl pbs">A<br>B</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:2px;" class="lb hl">A<br>B</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:7px;" class="lb hl pbe">A<br>B</span><span style="padding-block-end:8px;" class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:8px;" class="fb vr">A<br>B</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s vr">X<br>Z</span></div> +<div class="grid c hl"><span style="padding-block-start:5px;" class="fb vr pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:8px;" class="fb vr">A<br>B</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px;" class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:15px;" class="fb vr pbs">A<br>B</span><span style="padding-block-start:7px;" class="fb vr">M<br>N</span><span style="padding-block-start:23px; padding-block-end:24px;" class="fb s vr">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:2px;" class="fb vl">A<br>B</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; padding-block-end:36px;" class="fb s vl">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:0;" class="fb vl pbe">A<br>B</span><span style="padding-block-start:1px;" class="fb vl">M<br>N</span><span style="padding-block-start:5px; padding-block-end:36px;" class="fb s vl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:2px;" class="lb vr">A<br>B</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vr pbe">A<br>B</span><span style="padding-block-end:5px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:2px;" class="lb vr">A<br>B</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:0px;" class="lb vr pbs">A<br>B</span><span style="padding-block-end:3px;" class="lb vr">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl">A<br>B</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl pbe">A<br>B</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-001.html new file mode 100644 index 00000000000..aa33f3c15b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-001.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: align-content:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-content-baseline-001-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: auto / repeat(4, auto); + border: 2px solid; + padding: 1px; + margin: 1px; +} +.c { + grid: repeat(4, auto) / auto; +} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="fb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="fb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="fb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="fb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="fb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="fb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="lb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid hl"><span class="lb pbe">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="lb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="lb pbs">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="lb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="lb pbe">A<br>B</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vl">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> +<div class="grid c hl"><span class="fb vl pbe">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> +<div class="grid c vl"><span class="fb hl">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> +<div class="grid c vl"><span class="fb hl pbs">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span class="fb hl">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span class="fb hl pbe">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="lb vl">A<br>B</span><span class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span class="lb vl pbe">A<br>B</span><span class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span class="lb hl">A<br>B</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span class="lb hl pbs">A<br>B</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span class="lb hl">A<br>B</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span class="lb hl pbe">A<br>B</span><span class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vr">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid c hl"><span class="fb vr pbe">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span class="fb vr">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span class="fb vr pbs">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid vr"><span class="fb vl">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> +<div class="grid vr"><span class="fb vl pbe">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="lb vr">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span class="lb vr pbe">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid vl"><span class="lb vr">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid vl"><span class="lb vr pbs">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid vr"><span class="lb vl">A<br>B</span><span class="lb vl">M<br>N</span></div> +<div class="grid vr"><span class="lb vl pbe">A<br>B</span><span class="lb vl">M<br>N</span></div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-002-ref.html new file mode 100644 index 00000000000..d32bbf29311 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-002-ref.html @@ -0,0 +1,109 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: align-content/justify-content:baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + display: grid; + grid: 100px / repeat(4, auto); +} +.c { + grid: repeat(4, auto) / 100px; +} +div { + float: left; + border:2px solid; + padding:1px; + margin:1px; +} +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-self:baseline; justify-self:baseline; } +.lb { align-self:last baseline; justify-self:last baseline; } +.s { align-self:self-stretch; justify-self:self-stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } +</style> +</head> +<body> + +<div class="grid hl"><span style="padding-block-start:8px;" class="fb">A<br>B</span><span class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s">X<br>Z</span></div> +<div class="grid hl"><span style="padding-block-start:8px;" class="fb pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:2px;" class="fb">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:4px; padding-block-end:74px;" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:15px;" class="fb pbs">A<br>B</span><span style="padding-block-start:18px;" class="fb">M<br>N</span><span style="padding-block-start:22px; padding-block-end:56px;" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span style="padding-block-end:2px;" class="lb">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid hl"><span style="padding-block-end:7px;" class="lb pbe">A<br>B</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb pbs">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:2px;" class="lb">A<br>B</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:7px;" class="lb pbe">A<br>B</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl">A<br>B</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; padding-block-end:74px;" class="fb s vl">X<br>Z</span></div> +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; padding-block-end:74px;" class="fb s vl">X<br>Z</span></div> +<div class="grid c vl"><span style="padding-block-start:8px;" class="fb hl">A<br>B</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s hl">X<br>Z</span></div> +<div class="grid c vl"><span style="padding-block-start:15px;" class="fb hl pbs">A<br>B</span><span style="padding-block-start:12px;" class="fb hl">M<br>N</span><span style="padding-block-start:28px; padding-block-end:50px;" class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl">A<br>B</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s hl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:8px;" class="lb vl">A<br>B</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vl pbe">A<br>B</span><span style="padding-block-end:2px;" class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl">A<br>B</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl pbs">A<br>B</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:2px;" class="lb hl">A<br>B</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:7px;" class="lb hl pbe">A<br>B</span><span style="padding-block-end:8px;" class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:8px;" class="fb vr">A<br>B</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s vr">X<br>Z</span></div> +<div class="grid c hl"><span style="padding-block-start:5px;" class="fb vr pbe">A<br>B</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:8px;" class="fb vr">A<br>B</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px;" class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span style="padding-block-start:15px;" class="fb vr pbs">A<br>B</span><span style="padding-block-start:7px;" class="fb vr">M<br>N</span><span style="padding-block-start:23px; padding-block-end:55px;" class="fb s vr">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:2px;" class="fb vl">A<br>B</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; padding-block-end:74px;" class="fb s vl">X<br>Z</span></div> +<div class="grid vr"><span style="padding-block-start:0;" class="fb vl pbe">A<br>B</span><span style="padding-block-start:1px;" class="fb vl">M<br>N</span><span style="padding-block-start:5px; padding-block-end:73px;" class="fb s vl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:2px;" class="lb vr">A<br>B</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vr pbe">A<br>B</span><span style="padding-block-end:5px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:2px;" class="lb vr">A<br>B</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:0px;" class="lb vr pbs">A<br>B</span><span style="padding-block-end:3px;" class="lb vr">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl">A<br>B</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl pbe">A<br>B</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-002.html new file mode 100644 index 00000000000..3d12f68cb0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-002.html @@ -0,0 +1,112 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: align-content:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-content-baseline-002-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: 100px / repeat(4, auto); + border: 2px solid; + padding: 1px; + margin: 1px; +} +.c { + grid: repeat(4, auto) / 100px; +} +.e { align-content:end; } +.c.e { justify-content:end; } + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="fb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="fb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="fb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="fb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="fb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="fb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid e hl"><span class="lb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid e hl"><span class="lb pbe">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid e vl"><span class="lb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid e vl"><span class="lb pbs">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid e vr"><span class="lb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid e vr"><span class="lb pbe">A<br>B</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vl">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> +<div class="grid c hl"><span class="fb vl pbe">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> +<div class="grid c vl"><span class="fb hl">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> +<div class="grid c vl"><span class="fb hl pbs">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span class="fb hl">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> +<div class="grid c vr"><span class="fb hl pbe">A<br>B</span><span class="fb hl">M<br>N</span><span class="fb s hl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid e c hl"><span class="lb vl">A<br>B</span><span class="lb vl">M<br>N</span></div> +<div class="grid e c hl"><span class="lb vl pbe">A<br>B</span><span class="lb vl">M<br>N</span></div> +<div class="grid e c vl"><span class="lb hl">A<br>B</span><span class="lb hl">M<br>N</span></div> +<div class="grid e c vl"><span class="lb hl pbs">A<br>B</span><span class="lb hl">M<br>N</span></div> +<div class="grid e c vr"><span class="lb hl">A<br>B</span><span class="lb hl">M<br>N</span></div> +<div class="grid e c vr"><span class="lb hl pbe">A<br>B</span><span class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vr">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid c hl"><span class="fb vr pbe">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span class="fb vr">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid vl"><span class="fb vr pbs">A<br>B</span><span class="fb vr">M<br>N</span><span class="fb s vr">X<br>Z</span></div> +<div class="grid vr"><span class="fb vl">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> +<div class="grid vr"><span class="fb vl pbe">A<br>B</span><span class="fb vl">M<br>N</span><span class="fb s vl">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid e c hl"><span class="lb vr">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid e c hl"><span class="lb vr pbe">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid e vl"><span class="lb vr">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid e vl"><span class="lb vr pbs">A<br>B</span><span class="lb vr">M<br>N</span></div> +<div class="grid e vr"><span class="lb vl">A<br>B</span><span class="lb vl">M<br>N</span></div> +<div class="grid e vr"><span class="lb vl pbe">A<br>B</span><span class="lb vl">M<br>N</span></div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-003-ref.html new file mode 100644 index 00000000000..5efb78b00f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-003-ref.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: align-content/justify-content:baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611724"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + display: grid; + grid: auto / repeat(4, auto); +} +.c { + grid: repeat(4, auto) / auto; +} +div { + float: left; + border:2px solid; + padding:1px; + margin:1px; +} +span { + background: content-box silver; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-self:baseline; justify-self:baseline; } +.lb { align-self:last baseline; justify-self:last baseline; } +.s { align-self:self-stretch; justify-self:self-stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span style="padding-block-start:8px;" class="fb">A</span><span class="fb">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s">X</span></div> +<div class="grid hl"><span style="padding-block-start:8px;" class="fb pbe">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s">X</span></div> +<div class="grid vl"><span style="padding-block-start:2px;" class="fb">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s">X</span></div> +<div class="grid vl"><span style="padding-block-start:15px;" class="fb">A</span><span style="padding-block-start:18px;" class="fb">M<br>N</span><span style="padding-block-start:22px; width:56px;" class="fb s">X</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s">X</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb pbe">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s">X</span></div> + +<br clear="all"> + +<div class="grid hl"><span style="padding-block-end:2px;" class="lb">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid hl"><span style="padding-block-end:7px;" class="lb pbe">A</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb pbs">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:2px;" class="lb">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:7px;" class="lb pbe">A</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl">A</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s vl">X</span></div> +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl pbe">A</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s vl">X</span></div> +<div class="grid c vl"><span style="padding-block-start:8px;" class="fb hl">A</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s hl">X</span></div> +<div class="grid c vl"><span style="padding-block-start:15px;" class="fb hl pbs">A</span><span style="padding-block-start:12px;" class="fb hl">M<br>N</span><span style="padding-block-start:28px; height:44px;" class="fb s hl">X</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl">A</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s hl">X</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl pbe">A</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s hl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:8px;" class="lb vl">A</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vl pbe">A</span><span style="padding-block-end:2px;" class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl">A</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl pbs">A</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:2px;" class="lb hl">A</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:7px;" class="lb hl pbe">A</span><span style="padding-block-end:8px;" class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:8px;" class="fb vr">A</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s vr">X</span></div> +<div class="grid c hl"><span style="padding-block-start:5px;" class="fb vr pbe">A</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s vr">X</span></div> +<div class="grid vl"><span style="padding-block-start:8px;" class="fb vr">A</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s vr">X</span></div> +<div class="grid vl"><span style="" class="fb vr pbs">A</span><span style="padding-block-start:7px;" class="fb vr">M<br>N</span><span style="padding-block-start:23px; width:44px;" class="fb s vr">X</span></div> +<div class="grid vr"><span style="padding-block-start:2px;" class="fb vl">A</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s vl">X</span></div> +<div class="grid vr"><span style="padding-block-start:0;" class="fb vl pbe">A</span><span style="padding-block-start:1px;" class="fb vl">M<br>N</span><span style="padding-block-start:5px; width:56px;" class="fb s vl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:2px;" class="lb vr">A</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vr pbe">A</span><span style="padding-block-end:5px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:2px;" class="lb vr">A</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:0px;" class="lb vr pbs">A</span><span style="padding-block-end:3px;" class="lb vr">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl">A</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl pbe">A</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-003.html new file mode 100644 index 00000000000..8845afe8641 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-003.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: align-content:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611724"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-content-baseline-003-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: auto / repeat(4, auto); + border: 2px solid; + padding: 1px; + margin: 1px; +} +.c { + grid: repeat(4, auto) / auto; +} + +span { + background: content-box silver; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="fb">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid hl"><span class="fb pbe">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vl"><span class="fb">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vl"><span class="fb pbs">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vr"><span class="fb">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vr"><span class="fb pbe">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="lb">A</span><span class="lb">M<br>N</span></div> +<div class="grid hl"><span class="lb pbe">A</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="lb">A</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="lb pbs">A</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="lb">A</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="lb pbe">A</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vl">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> +<div class="grid c hl"><span class="fb vl pbe">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> +<div class="grid c vl"><span class="fb hl">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> +<div class="grid c vl"><span class="fb hl pbs">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> +<div class="grid c vr"><span class="fb hl">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> +<div class="grid c vr"><span class="fb hl pbe">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="lb vl">A</span><span class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span class="lb vl pbe">A</span><span class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span class="lb hl">A</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span class="lb hl pbs">A</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span class="lb hl">A</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span class="lb hl pbe">A</span><span class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vr">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid c hl"><span class="fb vr pbe">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid vl"><span class="fb vr">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid vl"><span class="fb vr pbs">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid vr"><span class="fb vl">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> +<div class="grid vr"><span class="fb vl pbe">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="lb vr">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span class="lb vr pbe">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid vl"><span class="lb vr">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid vl"><span class="lb vr pbs">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid vr"><span class="lb vl">A</span><span class="lb vl">M<br>N</span></div> +<div class="grid vr"><span class="lb vl pbe">A</span><span class="lb vl">M<br>N</span></div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-004-ref.html new file mode 100644 index 00000000000..2394818c7db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-004-ref.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: align-content/justify-content:baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611724"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + display: grid; + grid: auto / repeat(4, auto); +} +.c { + grid: repeat(4, auto) / auto; +} +div { + float: left; + border:2px solid; + padding:1px; + margin:1px; +} +span { + background: silver; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-self:baseline; justify-self:baseline; } +.lb { align-self:last baseline; justify-self:last baseline; } +.s { align-self:self-stretch; justify-self:self-stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span style="padding-block-start:8px;" class="fb">A</span><span class="fb">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s">X</span></div> +<div class="grid hl"><span style="padding-block-start:8px;" class="fb pbe">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s">X</span></div> +<div class="grid vl"><span style="padding-block-start:2px;" class="fb">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s">X</span></div> +<div class="grid vl"><span style="padding-block-start:15px;" class="fb">A</span><span style="padding-block-start:18px;" class="fb">M<br>N</span><span style="padding-block-start:22px; width:56px;" class="fb s">X</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s">X</span></div> +<div class="grid vr"><span style="padding-block-start:8px;" class="fb pbe">A</span><span style="padding-block-start:0px;" class="fb">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s">X</span></div> + +<br clear="all"> + +<div class="grid hl"><span style="padding-block-end:2px;" class="lb">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid hl"><span style="padding-block-end:7px;" class="lb pbe">A</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:8px;" class="lb pbs">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:2px;" class="lb">A</span><span style="padding-block-end:0px;" class="lb">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:7px;" class="lb pbe">A</span><span style="padding-block-end:8px;" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl">A</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s vl">X</span></div> +<div class="grid c hl"><span style="padding-block-start:2px;" class="fb vl pbe">A</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s vl">X</span></div> +<div class="grid c vl"><span style="padding-block-start:8px;" class="fb hl">A</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s hl">X</span></div> +<div class="grid c vl"><span style="padding-block-start:15px;" class="fb hl pbs">A</span><span style="padding-block-start:12px;" class="fb hl">M<br>N</span><span style="padding-block-start:28px; height:44px;" class="fb s hl">X</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl">A</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s hl">X</span></div> +<div class="grid c vr"><span style="padding-block-start:8px;" class="fb hl pbe">A</span><span style="padding-block-start:0px;" class="fb hl">M<br>N</span><span style="padding-block-start:16px; height:44px;" class="fb s hl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:8px;" class="lb vl">A</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vl pbe">A</span><span style="padding-block-end:2px;" class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl">A</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span style="padding-block-end:2px;" class="lb hl pbs">A</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:2px;" class="lb hl">A</span><span style="padding-block-end:0px;" class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span style="padding-block-end:7px;" class="lb hl pbe">A</span><span style="padding-block-end:8px;" class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-start:8px;" class="fb vr">A</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s vr">X</span></div> +<div class="grid c hl"><span style="padding-block-start:5px;" class="fb vr pbe">A</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s vr">X</span></div> +<div class="grid vl"><span style="padding-block-start:8px;" class="fb vr">A</span><span style="padding-block-start:0px;" class="fb vr">M<br>N</span><span style="padding-block-start:16px; width:44px;" class="fb s vr">X</span></div> +<div class="grid vl"><span style="" class="fb vr pbs">A</span><span style="padding-block-start:7px;" class="fb vr">M<br>N</span><span style="padding-block-start:23px; width:44px;" class="fb s vr">X</span></div> +<div class="grid vr"><span style="padding-block-start:2px;" class="fb vl">A</span><span style="padding-block-start:0px;" class="fb vl">M<br>N</span><span style="padding-block-start:4px; width:56px;" class="fb s vl">X</span></div> +<div class="grid vr"><span style="padding-block-start:0;" class="fb vl pbe">A</span><span style="padding-block-start:1px;" class="fb vl">M<br>N</span><span style="padding-block-start:5px; width:56px;" class="fb s vl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span style="padding-block-end:2px;" class="lb vr">A</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span style="padding-block-end:7px;" class="lb vr pbe">A</span><span style="padding-block-end:5px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:2px;" class="lb vr">A</span><span style="padding-block-end:0px;" class="lb vr">M<br>N</span></div> +<div class="grid vl"><span style="padding-block-end:0px;" class="lb vr pbs">A</span><span style="padding-block-end:3px;" class="lb vr">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl">A</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> +<div class="grid vr"><span style="padding-block-end:8px;" class="lb vl pbe">A</span><span style="padding-block-end:0px;" class="lb vl">M<br>N</span></div> + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-004.html new file mode 100644 index 00000000000..81a046be91b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-content-baseline-004.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: align-content:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611724"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-content-baseline-004-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: auto / repeat(4, auto); + border: 2px solid; + padding: 1px; + margin: 1px; +} +.c { + grid: repeat(4, auto) / auto; +} + +span { + background: silver; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:20px; } +span:nth-child(2) { font-size:30px; } +span:nth-child(3) { font-size:10px; } +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="fb">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid hl"><span class="fb pbe">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vl"><span class="fb">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vl"><span class="fb pbs">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vr"><span class="fb">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> +<div class="grid vr"><span class="fb pbe">A</span><span class="fb">M<br>N</span><span class="fb s">X</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="lb">A</span><span class="lb">M<br>N</span></div> +<div class="grid hl"><span class="lb pbe">A</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="lb">A</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="lb pbs">A</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="lb">A</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="lb pbe">A</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vl">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> +<div class="grid c hl"><span class="fb vl pbe">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> +<div class="grid c vl"><span class="fb hl">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> +<div class="grid c vl"><span class="fb hl pbs">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> +<div class="grid c vr"><span class="fb hl">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> +<div class="grid c vr"><span class="fb hl pbe">A</span><span class="fb hl">M<br>N</span><span class="fb s hl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="lb vl">A</span><span class="lb vl">M<br>N</span></div> +<div class="grid c hl"><span class="lb vl pbe">A</span><span class="lb vl">M<br>N</span></div> +<div class="grid c vl"><span class="lb hl">A</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vl"><span class="lb hl pbs">A</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span class="lb hl">A</span><span class="lb hl">M<br>N</span></div> +<div class="grid c vr"><span class="lb hl pbe">A</span><span class="lb hl">M<br>N</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="fb vr">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid c hl"><span class="fb vr pbe">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid vl"><span class="fb vr">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid vl"><span class="fb vr pbs">A</span><span class="fb vr">M<br>N</span><span class="fb s vr">X</span></div> +<div class="grid vr"><span class="fb vl">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> +<div class="grid vr"><span class="fb vl pbe">A</span><span class="fb vl">M<br>N</span><span class="fb s vl">X</span></div> + +<br clear="all"> + +<div class="grid c hl"><span class="lb vr">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid c hl"><span class="lb vr pbe">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid vl"><span class="lb vr">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid vl"><span class="lb vr pbs">A</span><span class="lb vr">M<br>N</span></div> +<div class="grid vr"><span class="lb vl">A</span><span class="lb vl">M<br>N</span></div> +<div class="grid vr"><span class="lb vl pbe">A</span><span class="lb vl">M<br>N</span></div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-001-ref.html new file mode 100644 index 00000000000..6b89ef49d0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-001-ref.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: mixed align-content/self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: auto / repeat(10, auto); + border: 2px solid; + margin: 1px; +} +.c { + grid: repeat(4, auto) / auto; +} +.t2 { grid: auto / repeat(3, auto);} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-self:baseline; justify-self:self-start; } +.lb { align-self:last baseline; justify-self:self-end; } +.s { justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end;} + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px" class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:34px" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span style="padding-block-start:3px" class="fb">M<br>N</span><span style="padding-block-start:4px; padding-block-end:36px" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span style="padding-block-start:23px" class="fb">M<br>N</span><span style="padding-block-start:24px; padding-block-end:36px" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:24px" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:34px" class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span style="padding-block-start:3px" class="fb">M<br>N</span><span style="padding-block-end:8px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span style="padding-block-start:23px" class="fb">M<br>N</span><span style="padding-block-end:8px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span style="padding-block-end:12px" class="lb">R<br>S</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span style="padding-block-end:8px" class="lb">R<br>S</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + + +<div class="grid t2 hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span style="align-self:stretch" class="vr fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span style="align-self:stretch" class="vl fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="hr sfb">R<br>S</span><span class="hl fb">U<br>V</span><span style="align-self:stretch" class="hr fb s">X<br>Z</span><span class="hr sfb">K<br>L</span></div> +<br clear="all"> +<div class="grid t2 vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="hr lb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span style="align-self:stretch" class="hl fb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> + +<br clear="all"> + + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-001.html new file mode 100644 index 00000000000..f724b3b6c49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-001.html @@ -0,0 +1,112 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: mixed align-content/self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-mixed-baseline-001-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: auto / repeat(10, auto); + border: 2px solid; + margin: 1px; +} +.c { + grid: repeat(4, auto) / auto; +} +.t2 { grid: auto / repeat(3, auto);} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end;} + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="lb">R<br>S</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="lb">R<br>S</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + + +<div class="grid t2 hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span class="vr fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span class="vl fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="hr sfb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hr fb s">X<br>Z</span><span class="hr sfb">K<br>L</span></div> +<br clear="all"> +<div class="grid t2 vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span><span class="hr lb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl fb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> + +<br clear="all"> + + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-002-ref.html new file mode 100644 index 00000000000..fae8d2e9b85 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-002-ref.html @@ -0,0 +1,114 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: mixed align-content/self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: 100px / repeat(10, auto); + border: 2px solid; + margin: 1px; + align-content: start; + justify-content: end; +} +.c { + grid: repeat(4, auto) / 100px; + align-content: end; + justify-content: start; +} +.t2 { grid: 100px / repeat(3, auto);} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { place-self:first baseline self-start; } +.lb { place-self:last baseline self-end; } +.s { justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end;} + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span style="padding-block-start:3px" class="fb">M<br>N</span><span style="padding-block-start:4px; padding-block-end:74px" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span style="padding-block-start:23px" class="fb">M<br>N</span><span style="padding-block-start:24px; padding-block-end:54px" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span style="padding-block-start:3px" class="fb">M<br>N</span><span style="padding-block-end:8px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span style="padding-block-start:23px" class="fb">M<br>N</span><span style="padding-block-end:8px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span style="padding-block-end:12px" class="lb">R<br>S</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span style="padding-block-end:8px" class="lb">R<br>S</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + + +<div class="grid t2 hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span style="align-self:stretch" class="vr fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span style="align-self:stretch" class="vl fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="hr sfb">R<br>S</span><span class="hl fb">U<br>V</span><span style="align-self:stretch" class="hr fb s">X<br>Z</span><span class="hr sfb">K<br>L</span></div> +<br clear="all"> +<div class="grid t2 vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span style="padding-block-end:0px" class="hr lb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span style="align-self:stretch" class="hl fb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> + +<br clear="all"> + + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-002.html new file mode 100644 index 00000000000..d14a8cae7a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-002.html @@ -0,0 +1,114 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: mixed align-content/self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-mixed-baseline-002-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: 100px / repeat(10, auto); + border: 2px solid; + margin: 1px; + place-content: start end; +} +.c { + grid: repeat(4, auto) / 100px; + place-content: end start; +} +.t2 { grid: 100px / repeat(3, auto);} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; place-self:self-start; } +.lb { align-content:last baseline; place-self:self-end; } +.s { place-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end;} + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="lb">R<br>S</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="lb">R<br>S</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + + +<div class="grid t2 hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span class="vr fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span class="vl fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="hr sfb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hr fb s">X<br>Z</span><span class="hr sfb">K<br>L</span></div> +<br clear="all"> +<div class="grid t2 vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span><span class="hr lb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl fb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> + +<br clear="all"> + + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-003-ref.html new file mode 100644 index 00000000000..18104148160 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-003-ref.html @@ -0,0 +1,114 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: mixed align-content/self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: 100px / repeat(10, auto); + border: 2px solid; + margin: 1px; + align-content: end; + justify-content: start; +} +.c { + grid: repeat(4, auto) / 100px; + align-content: start; + justify-content: end; +} +.t2 { grid: 100px / repeat(3, auto);} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-self:baseline; justify-self:self-start; } +.lb { align-self:last baseline; justify-self:self-end; } +.s { justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end;} + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span style="padding-block-start:3px" class="fb">M<br>N</span><span style="padding-block-start:4px; padding-block-end:74px" class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span style="padding-block-start:23px" class="fb">M<br>N</span><span style="padding-block-start:24px; padding-block-end:54px" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-start:16px; padding-block-end:62px" class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span style="padding-block-start:3px" class="fb">M<br>N</span><span style="padding-block-end:8px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span style="padding-block-start:23px" class="fb">M<br>N</span><span style="padding-block-end:8px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span style="padding-block-start:12px" class="fb">M<br>N</span><span style="padding-block-end:2px" class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span style="padding-block-end:12px" class="lb">R<br>S</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span style="padding-block-end:8px" class="lb">R<br>S</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + + +<div class="grid t2 hl"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span style="align-self:stretch" class="vr fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 hl"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span style="align-self:stretch" class="vl fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 vl"><span class="slb">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="hr sfb">R<br>S</span><span class="hl fb">U<br>V</span><span style="align-self:stretch" class="hr fb s">X<br>Z</span><span class="hr sfb">K<br>L</span></div> +<br clear="all"> +<div class="grid t2 vl"><span class="slb pbs">A<br>B</span><span style="padding-block-end:12px" class="lb">M<br>N</span><span class="hr lb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb">A<br>B</span><span style="padding-block-end:3px" class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb pbe">A<br>B</span><span style="padding-block-end:13px" class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span style="align-self:stretch" class="hl fb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> + +<br clear="all"> + + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-003.html new file mode 100644 index 00000000000..0a78d59e982 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-003.html @@ -0,0 +1,116 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: mixed align-content/self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-mixed-baseline-003-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: 100px / repeat(10, auto); + border: 2px solid; + margin: 1px; + align-content: end; + justify-content: start; +} +.c { + grid: repeat(4, auto) / 100px; + align-content: start; + justify-content: end; +} +.t2 { grid: 100px / repeat(3, auto);} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end;} + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid hl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="sfb pbs">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="sfb pbe">A<br>B</span><span class="fb">M<br>N</span><span class="lb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + +<div class="grid hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="lb">R<br>S</span></div> +<div class="grid vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="lb">R<br>S</span></div> +<div class="grid vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> +<div class="grid vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="fb">X<br>Z</span><span class="slb">R<br>S</span></div> + +<br clear="all"> + + +<div class="grid t2 hl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span class="vr fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 hl"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="vl sfb">R<br>S</span><span class="vl fb">U<br>V</span><span class="vl fb s">X<br>Z</span><span class="vr sfb">K<br>L</span></div> +<div class="grid t2 vl"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="hr sfb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hr fb s">X<br>Z</span><span class="hr sfb">K<br>L</span></div> +<br clear="all"> +<div class="grid t2 vl"><span class="slb pbs">A<br>B</span><span class="lb">M<br>N</span><span class="hr lb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb">A<br>B</span><span class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl sfb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> +<div class="grid t2 vr"><span class="slb pbe">A<br>B</span><span class="lb">M<br>N</span><span class="hl fb">R<br>S</span><span class="hl fb">U<br>V</span><span class="hl fb s">X<br>Z</span><span class="hl sfb s">X<br>Z</span><span class="hl slb">K<br>L</span></div> + +<br clear="all"> + + + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-004-ref.html new file mode 100644 index 00000000000..d167a5f1542 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-004-ref.html @@ -0,0 +1,98 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: mixed align-content/self:baseline/last baseline in fragmentated grid</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.columns { + position:relative; + columns: 5; + -ms-columns: 5; + -webkit-columns: 5; + columns: 5; + column-fill: auto; + -ms-column-fill: auto; + -webkit-column-fill: auto; + column-fill: auto; + border: 2px dashed; + margin-bottom: 5px; + height: 120px; +} + +.grid { + display: grid; + grid: 100px / repeat(3, auto); + grid-auto-rows: 100px; + border: 2px solid; + margin: 1px; +} +.g1 { + border-bottom-width: 0; + grid-template-rows: 100px 0 0; +} +.g2 { + border-top-width: 0; + grid-template-rows: 0 100px 100px; +} + +.h { + visibility: hidden; + height: 0; +} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="columns"> +<div class="grid hl g1"> +<span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span> +<span class="sfb h">A<br>B</span><span class="fb h">M<br>N</span><span class="fb h">X<br>Z</span> +<span class="sfb h">A<br>B</span><span class="fb h">M<br>N</span><span class="fb s h">X<br>Z</span> +</div> +<div class="grid hl g2"> +<span class="sfb h ">A<br>B</span><span class="fb h">M<br>N</span><span class="fb s h">X<br>Z</span> +<span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb">X<br>Z</span> +<span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span> +</div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-004.html new file mode 100644 index 00000000000..6202845f6f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-mixed-baseline-004.html @@ -0,0 +1,82 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: mixed align-content/self:baseline/last baseline in fragmentated grid</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1256429"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-content"> + <link rel="match" href="grid-item-mixed-baseline-004-ref.html"> + <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> + <style type="text/css"> +html,body { + color:black; background-color:white; font:20px/1 Ahem; padding:0; margin:0; +} + +.columns { + position:relative; + columns: 5; + -ms-columns: 5; + -webkit-columns: 5; + columns: 5; + column-fill: auto; + -ms-column-fill: auto; + -webkit-column-fill: auto; + column-fill: auto; + border: 2px dashed; + margin-bottom: 5px; + height: 120px; +} + +.grid { + display: grid; + grid: 100px / repeat(3, auto); + grid-auto-rows: 100px; + border: 2px solid; + margin: 1px; +} + +span { + background: lime; + display: inline-block; + border: 1px solid black; +} + +span:nth-child(1) { font-size:30px; } +span:nth-child(2) { font-size:15px; } +span:nth-child(3) { font-size:10px; } +span:nth-child(4) { font-size:20px; } + +.pbs { padding-block-start: 15px; margin-block-start: 5px; } +.pbe { padding-block-end: 7px; margin-block-end: 3px; } + +.fb { align-content:baseline; align-self:self-start; justify-self:self-start; } +.lb { align-content:last baseline; align-self:self-end; justify-self:self-end; } +.s { align-self:stretch; justify-self:stretch; } + +.sfb { align-self:baseline; } +.slb { align-self:last baseline; align-content:self-end; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="columns"> +<div class="grid hl"> +<span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span> +<span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb">X<br>Z</span> +<span class="sfb">A<br>B</span><span class="fb">M<br>N</span><span class="fb s">X<br>Z</span> +</div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-self-baseline-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-self-baseline-001-ref.html new file mode 100644 index 00000000000..6eadf9a02a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-self-baseline-001-ref.html @@ -0,0 +1,92 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>Reference: align-self/justify-self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1221525"> + <style type="text/css"> +html,body { + color:black; background-color:white; font-size:16px; padding:0; margin:0; +} + +.grid { + display: grid; + grid: auto / repeat(4, auto); + align-items: start; + justify-items: start; +} +.c { + grid: repeat(4, auto) / auto; +} +div { + float: left; + border:2px solid; + padding:1px; + margin:1px; +} +span { + background: lime; + display: inline-block; + border: 1px solid black; + box-sizing: border-box; +} +span:nth-child(1) { font-size:12px; } +span:nth-child(2) { font-size:16px; } +span:nth-child(3) { font-size:24px; } +span:nth-child(4) { font-size:32px; } +.pbe { padding-block-end:20px; } +.pbs { padding-block-start:20px; } + +.fb { align-self:baseline; } +.lb { align-self:last baseline; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div><span class="fb hl">A</span><span class="fb hl">A</span><span class="fb hl">A</span><span class="fb hl">A</span></div> +<div><span class="fb hl pbe">A</span><span class="fb hl">A</span><span class="fb hl">A</span><span class="fb hl">A</span></div> +<div class="vl"><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="vl"><span class="fb pbs">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="vr"><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="vr"><span class="fb pbe">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> + +<br clear="all"> + +<div><span class="lb hl">A</span><span class="lb hl">A</span><span class="lb hl">A</span><span class="lb hl">A</span></div> +<div><span class="lb hl pbe">A</span><span class="lb hl">A</span><span class="lb hl">A</span><span class="lb hl">A</span></div> +<div class="vl"><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> +<div class="vl"><span class="lb pbs">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> +<div class="vr"><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> +<div class="vr"><span class="lb pbe">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> + +<br clear="all"> + +<div class="grid vl"><span class="fb vl">A</span><span class="fb vl">A</span><span class="fb vl">A</span><span class="fb vl">A</span></div> +<div class="grid vl"><span class="fb vl pbe">A</span><span class="fb vl">A</span><span class="fb vl">A</span><span class="fb vl">A</span></div> +<div class="grid"><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="grid"><span class="fb pbs">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="grid"><span class="fb" style="order:99">A</span><span class="fb" style="order:98">A</span><span class="fb" style="order:97">A</span><span class="fb" style="order:96">A</span></div> +<div class="grid"><span class="fb pbe" style="order:99;">A</span><span class="fb" style="order:98">A</span><span class="fb" style="order:97">A</span><span class="fb" style="order:96">A</span></div> + +<br clear="all"> + +<div><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span></div> +<div><span class="lb hl pbe">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span></div> +<div class="vl"><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> +<div class="vl"><span class="lb pbs">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> +<div class="vr"><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> +<div class="vr"><span class="lb pbe">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-self-baseline-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-self-baseline-001.html new file mode 100644 index 00000000000..ccc50c76497 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-self-baseline-001.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <meta charset="utf-8"> + <title>CSS Grid Test: align-self/justify-self:baseline/last baseline</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1221525"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-self"> + <link rel="match" href="grid-item-self-baseline-001-ref.html"> + <style type="text/css"> +html,body { + color:black; background-color:white; font-size:16px; padding:0; margin:0; +} + +.grid { + float: left; + display: grid; + grid: auto / repeat(4, auto); + place-items: start; + border: 2px solid; + padding: 1px; + margin: 1px; +} +.c { + grid: repeat(4, auto) / auto; +} + +span { + background: lime; + display: inline-block; + border: 1px solid black; + box-sizing: border-box; +} +span:nth-child(1) { font-size:12px; } +span:nth-child(2) { font-size:16px; } +span:nth-child(3) { font-size:24px; } +span:nth-child(4) { font-size:32px; } +.pbe { padding-block-end:20px; } +.pbs { padding-block-start:20px; } + +.fb { align-self:baseline; } +.lb { align-self:last baseline; } + +.jfb { justify-self:baseline; } +.jlb { justify-self:last baseline; } + +.hl { writing-mode: horizontal-tb; direction:ltr; } +.hr { writing-mode: horizontal-tb; direction:rtl; } +.vl { writing-mode: vertical-lr; text-orientation: sideways; } +.vr { writing-mode: vertical-rl; text-orientation: sideways; } +.vlr { writing-mode: vertical-lr; direction:rtl; text-orientation: sideways; } +.vrl { writing-mode: vertical-rl; direction:ltr; text-orientation: sideways; } + +</style> +</head> +<body> + +<div class="grid"><span class="fb hl">A</span><span class="fb hl">A</span><span class="fb hl">A</span><span class="fb hl">A</span></div> +<div class="grid"><span class="fb hl pbe">A</span><span class="fb hl">A</span><span class="fb hl">A</span><span class="fb hl">A</span></div> +<div class="grid vl"><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="grid vl"><span class="fb pbs">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="grid vr"><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> +<div class="grid vr"><span class="fb pbe">A</span><span class="fb">A</span><span class="fb">A</span><span class="fb">A</span></div> + +<br clear="all"> + +<div class="grid"><span class="lb hl">A</span><span class="lb hl">A</span><span class="lb hl">A</span><span class="lb hl">A</span></div> +<div class="grid"><span class="lb hl pbe">A</span><span class="lb hl">A</span><span class="lb hl">A</span><span class="lb hl">A</span></div> +<div class="grid vl"><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> +<div class="grid vl"><span class="lb pbs">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> +<div class="grid vr"><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> +<div class="grid vr"><span class="lb pbe">A</span><span class="lb">A</span><span class="lb">A</span><span class="lb">A</span></div> + +<br clear="all"> + +<div class="grid c"><span class="jfb vl">A</span><span class="jfb vl">A</span><span class="jfb vl">A</span><span class="jfb vl">A</span></div> +<div class="grid c"><span class="jfb vl pbe">A</span><span class="jfb vl">A</span><span class="jfb vl">A</span><span class="jfb vl">A</span></div> +<div class="grid c vl"><span class="jfb hl">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span></div> +<div class="grid c vl"><span class="jfb hl pbs">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span></div> +<div class="grid c vr"><span class="jfb hl">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span></div> +<div class="grid c vr"><span class="jfb hl pbe">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span><span class="jfb hl">A</span></div> + +<br clear="all"> + +<div class="grid"><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span></div> +<div class="grid"><span class="lb hl pbe">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span><span class="lb hl">A<br>A</span></div> +<div class="grid vl"><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> +<div class="grid vl"><span class="lb pbs">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> +<div class="grid vr"><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> +<div class="grid vr"><span class="lb pbe">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span><span class="lb">A<br>A</span></div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html new file mode 100644 index 00000000000..2de0bb866f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Switch from an empty to a non-empty clip-path url()</title> +<link rel="help" href="http://www.w3.org/TR/css-masking-1/#clipping-paths"> +<link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-clip-path"> +<link rel="match" href="reference/green-100x100.html"> +<script src="/common/reftest-wait.js"></script> +<svg> + <clipPath id="empty"/> + <clipPath id="rect"> + <rect width="100" height="100"/> + </clipPath> + <rect width="100" height="100" fill="red"/> + <rect width="100" height="100" fill="green" id="target" clip-path="url(#empty)"/> +</svg> +<script> + requestAnimationFrame(() => { + requestAnimationFrame(() => { + document.getElementById('target').setAttribute('clip-path', 'url(#rect)'); + takeScreenshot(); + }); + }); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html new file mode 100644 index 00000000000..4a6266aabd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Switch from one clip-path url() to another with the same bounds</title> +<link rel="help" href="http://www.w3.org/TR/css-masking-1/#clipping-paths"> +<link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-clip-path"> +<link rel="match" href="reference/green-100x100.html"> +<script src="/common/reftest-wait.js"></script> +<svg> + <clipPath id="circle"> + <circle cx="50" cy="50" r="50"/> + </clipPath> + <clipPath id="rect"> + <rect width="100" height="100"/> + </clipPath> + <rect width="100" height="100" fill="red"/> + <rect width="100" height="100" fill="green" id="target" clip-path="url(#circle)"/> +</svg> +<script> + requestAnimationFrame(() => { + requestAnimationFrame(() => { + document.getElementById('target').setAttribute('clip-path', 'url(#rect)'); + takeScreenshot(); + }); + }); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/green-100x100.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/green-100x100.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/green-100x100.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html b/tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html new file mode 100644 index 00000000000..dc297ec9fac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>text-shadow composition</title> +<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property"> +<meta name="assert" content="text-shadow supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.target { + width: 40px; + height: 40px; + background-color: black; +} +.expected { + background-color: green; +} +</style> + +<body> +<script> +test_composition({ + property: 'text-shadow', + replaceFrom: 'rgb(100, 100, 100) 10px 20px 30px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px', +}, [ + {at: -0.3, expect: 'rgb(70, 70, 70 ) 7px 14px 21px'}, + {at: 0, expect: 'rgb(100, 100, 100) 10px 20px 30px'}, + {at: 0.5, expect: 'rgb(150, 150, 150) 15px 30px 45px'}, + {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px'}, + {at: 1.5, expect: 'rgb(250, 250, 250) 25px 50px 75px'}, +]); + +test_composition({ + property: 'text-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px', +}, [ + {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(70, 70, 70) 7px 14px 21px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(100, 100, 100) 10px 20px 30px'}, + {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(150, 150, 150) 15px 30px 45px'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(200, 200, 200) 20px 40px 60px'}, + {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(250, 250, 250) 25px 50px 75px'}, +]); + +test_composition({ + property: 'text-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px', +}, [ + {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(70, 70, 70) 7px 14px 21px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px'}, + {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(150, 150, 150) 15px 30px 45px'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px'}, + {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(250, 250, 250) 25px 50px 75px'}, +]); + +test_composition({ + property: 'text-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px', + replaceTo: 'rgb(200, 200, 200) 20px 40px 60px', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(130, 130, 130) 13px 26px 39px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px'}, + {at: 0.5, expect: 'rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(100, 100, 100, 0.5) 5px 10px 15px'}, + {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px'}, + {at: 1.5, expect: 'rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -5px -10px 0px'}, +]); + +test_composition({ + property: 'text-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px', + replaceFrom: 'rgb(100, 100, 100) 10px 20px 30px', + addTo: 'rgb(200, 200, 200) 20px 40px 60px', +}, [ + {at: -0.3, expect: 'rgb(127, 124, 121) 12.7px 25.4px 38.1px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px, rgba(0, 0, 0, 0) -6px -12px 0px'}, + {at: 0, expect: 'rgb(100, 100, 100) 10px 20px 30px'}, + {at: 0.5, expect: 'rgb(55, 60, 65) 5.5px 11px 16.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(200, 200, 200, 0.5) 10px 20px 30px'}, + {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px'}, + {at: 1.5, expect: 'rgb(0, 0, 0) -3.5px -7px 0px, rgb(30, 60, 90) 3px 6px 9px, rgb(255, 255, 255) 30px 60px 90px'}, +]); + +test_composition({ + property: 'text-shadow', + underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px', + addFrom: 'rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px', + replaceTo: 'rgb(200, 200, 200) 20px 40px 60px', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(52, 104, 156) 5.2px 10.4px 15.6px, rgb(130, 130, 130) 13px 26px 39px, rgb(255, 255, 255) 26px 52px 78px'}, + {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px, rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px'}, + {at: 0.5, expect: 'rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(40, 80, 120, 0.5) 2px 4px 6px, rgba(100, 100, 100, 0.5) 5px 10px 15px, rgba(200, 200, 200, 0.5) 10px 20px 30px'}, + {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px'}, + {at: 1.5, expect: 'rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -2px -4px 0px, rgba(0, 0, 0, 0) -5px -10px 0px, rgba(0, 0, 0, 0) -10px -20px 0px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-values/ch-pseudo-recalc-on-font-load.html b/tests/wpt/web-platform-tests/css/css-values/ch-pseudo-recalc-on-font-load.html index 6a60bdfa64d..d4c9a59782d 100644 --- a/tests/wpt/web-platform-tests/css/css-values/ch-pseudo-recalc-on-font-load.html +++ b/tests/wpt/web-platform-tests/css/css-values/ch-pseudo-recalc-on-font-load.html @@ -41,10 +41,10 @@ <script> function parseFontSizeInPx(element, pseudoElement) { - const value = CSSNumericValue.parse(getComputedStyle(element, pseudoElement).fontSize); - if (!value || !(value instanceof CSSUnitValue) || value.unit !== 'px') - throw 'Cannot parse width in pixels'; - return value.value; + const value = getComputedStyle(element, pseudoElement).fontSize; + if (!value.endsWith('px')) + return NaN; + return parseFloat(value); } const testCases = ['before', 'after', 'first-letter', 'first-line', 'marker']; diff --git a/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html b/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html index 625521b8102..befa7fbfa5e 100644 --- a/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html +++ b/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html @@ -28,10 +28,10 @@ <script> function parseWidthInPx(element) { - const value = CSSNumericValue.parse(getComputedStyle(element).width); - if (!value || !(value instanceof CSSUnitValue) || value.unit !== 'px') - throw 'Cannot parse width in pixels'; - return value.value; + const value = getComputedStyle(element).width; + if (!value.endsWith('px')) + return NaN; + return parseFloat(value); } const testCases = document.querySelectorAll('.test'); diff --git a/tests/wpt/web-platform-tests/css/css-values/round-function.html b/tests/wpt/web-platform-tests/css/css-values/round-function.html new file mode 100644 index 00000000000..e63976c788e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/round-function.html @@ -0,0 +1,92 @@ +<!doctype html> +<title>round() function</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +</style> + +<meta name=author content="Tab Atkins-Bittner"> +<link rel=help href="https://drafts.csswg.org/css-values-4/#round-func"> + +<div></div> +<script> +const testEl = document.querySelector("div"); +function testRound(testString, expectedString, {base="0px", msg}={}) { + test(()=>{ + testEl.style.width = base; + testEl.style.width = testString; + const usedValue = getComputedStyle(testEl).width; + assert_not_equals(usedValue, base); + testEl.style.width = base; + testEl.style.width = expectedString; + const expectedValue = getComputedStyle(testEl).width; + assert_not_equals(expectedValue, base) + assert_equal(usedValue, expectedValue); + }, msg || `${testString} should round to ${expectedString}`); +} + +// No-op round should be same as nearest +testRound("round(23px, 10px)", "20px"); +testRound("round(18px, 10px)", "20px"); +testRound("round(15px, 10px)", "20px"); +testRound("round(13px, 10px)", "10px"); +testRound("round(-13px, 10px)", "-10px"); +testRound("round(-18px, 10px)", "-20px"); + +// Test nearest +testRound("round(nearest, 23px, 10px)", "20px"); +testRound("round(nearest, 18px, 10px)", "20px"); +testRound("round(nearest, 15px, 10px)", "20px"); +testRound("round(nearest, 13px, 10px)", "10px"); +testRound("round(nearest, -13px, 10px)", "-10px"); +testRound("round(nearest, -18px, 10px)", "-20px"); + +// Test down +testRound("round(down, 23px, 10px)", "20px"); +testRound("round(down, 18px, 10px)", "10px"); +testRound("round(down, 15px, 10px)", "10px"); +testRound("round(down, 13px, 10px)", "10px"); +testRound("round(down, -13px, 10px)", "-20px"); +testRound("round(down, -18px, 10px)", "-20px"); + +// Test up +testRound("round(up, 23px, 10px)", "30px"); +testRound("round(up, 18px, 10px)", "20px"); +testRound("round(up, 15px, 10px)", "20px"); +testRound("round(up, 13px, 10px)", "20px"); +testRound("round(up, -13px, 10px)", "-10px"); +testRound("round(up, -18px, 10px)", "-10px"); + +// Test to-zero +testRound("round(to-zero, 23px, 10px)", "20px"); +testRound("round(to-zero, 18px, 10px)", "10px"); +testRound("round(to-zero, 15px, 10px)", "10px"); +testRound("round(to-zero, 13px, 10px)", "10px"); +testRound("round(to-zero, -13px, 10px)", "-10px"); +testRound("round(to-zero, -18px, 10px)", "-10px"); + +// Test a negative step +testRound("round(23px, -10px)", "20px"); +testRound("round(18px, -10px)", "20px"); +testRound("round(15px, -10px)", "20px"); +testRound("round(13px, -10px)", "10px"); +testRound("round(-13px, -10px)", "-10px"); +testRound("round(-18px, -10px)", "-20px"); + +// Extreme cases: + +// 0 step is NaN +testRound("round(5px, 0px)", "calc(NaN)"); +// both infinite is NaN +testRound("round(1px/0, 1px/0)", "calc(NaN)"); +// infinite value with finite step is the same infinity +testRound("round(1px/0, 5px)", "calc(infinity * 1px)"); +testRound("round(1px/0, -5px)", "calc(infinity * 1px)"); +testRound("round(-1px/0, 5px)", "calc(-infinity * 1px)"); +testRound("round(-1px/0, -5px)", "calc(-infinity * 1px)"); +// finite value with infinite step is same-sign 0 +testRound("calc(1/round(5px, 1px/0))", "calc(infinity * 1px)"); +testRound("calc(1/round(5px, -1px/0))", "calc(infinity * 1px)"); +testRound("calc(1/round(-5px, 1px/0))", "calc(-infinity * 1px)"); +testRound("calc(1/round(-5px, -1px/0))", "calc(-infinity * 1px)"); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/custom-elements/pseudo-class-defined.html b/tests/wpt/web-platform-tests/custom-elements/pseudo-class-defined.html index 24cb5fe4cd3..ed12830d5a9 100644 --- a/tests/wpt/web-platform-tests/custom-elements/pseudo-class-defined.html +++ b/tests/wpt/web-platform-tests/custom-elements/pseudo-class-defined.html @@ -16,6 +16,7 @@ const testList = [ const neither = 'rgb(255, 0, 0)'; const defined = 'rgb(255, 165, 0)'; const not_defined = 'rgb(0, 0, 255)'; +const iframe = document.getElementById("iframe"); iframe.srcdoc = `<style> * { color:${neither}; } :defined { color:${defined}; } diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/visual.md b/tests/wpt/web-platform-tests/docs/writing-tests/visual.md index 464b80fd819..de87d650247 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/visual.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/visual.md @@ -21,3 +21,7 @@ must give a clear pass condition in their rendering). Similarly, they should consider the [rendering test guidelines](rendering), especially those about color, to ensure those running the test don't incorrectly judge its result. + +The screenshot for comparison is taken at the same point as when screenshots +for [reftest comparisons](reftests) are taken, including potentially waiting +for any `class="reftest-wait"` to be removed from the root element. diff --git a/tests/wpt/web-platform-tests/domparsing/idlharness.window.js b/tests/wpt/web-platform-tests/domparsing/idlharness.window.js index 870c165b215..f5f32b3bb58 100644 --- a/tests/wpt/web-platform-tests/domparsing/idlharness.window.js +++ b/tests/wpt/web-platform-tests/domparsing/idlharness.window.js @@ -10,7 +10,6 @@ idl_test( ['dom'], idlArray => { idlArray.add_objects({ - DOMParser: ['new DOMParser()'], Element: ['document.createElement("div")'], Range: ['new Range()'], XMLSerializer: ['new XMLSerializer()'], diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-26-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-26-ref.html new file mode 100644 index 00000000000..af6bb10a8d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-26-ref.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Forced colors mode - svg defaults reference. + Tests that the default colors for svg elements are correct in high contrast. +</title> +<style> + svg, text, path { + forced-color-adjust: none; + } +</style> +<body> + <svg height="600" width="600"> + <text x="0" y="15" fill="WindowText"> + This text and the triangle below should have a WindowText fill in forced colors mode. + </text> + <path fill="WindowText" d="M150 0 L75 200 L225 200 Z" /> + </svg> +</body> diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-26.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-26.html new file mode 100644 index 00000000000..a3165fc9398 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-26.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Forced colors mode - svg defaults. + Tests that the default colors for svg elements are correct in high contrast. +</title> +<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties"> +<link rel=match href="forced-colors-mode-26-ref.html"> +<body> + <svg height="600" width="600"> + <text x="0" y="15" fill="currentcolor"> + This text and the triangle below should have a WindowText fill in forced colors mode. + </text> + <path d="M150 0 L75 200 L225 200 Z" /> + </svg> +</body> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html index d6521bd9dc4..6589ad923c1 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html @@ -22,4 +22,4 @@ run_coop_test_iframe("same-origin", value[0], value[1], value[2], value[3], value[4]); }); -</script>
\ No newline at end of file +</script> diff --git a/tests/wpt/web-platform-tests/html/dom/idlharness.https.html b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html index 42d521272dd..05b1f69ebb9 100644 --- a/tests/wpt/web-platform-tests/html/dom/idlharness.https.html +++ b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html @@ -197,6 +197,7 @@ idl_test( BeforeUnloadEvent: [], ApplicationCache: ['window.applicationCache'], WindowModal: [], + DOMParser: ['new DOMParser()'], Navigator: ['window.navigator'], External: ['window.external'], DataTransfer: [], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html index 223d54cef8d..844493abe95 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html @@ -8,6 +8,10 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/validator.js"></script> <div id="log"></div> +<form> + <input id="messagetest" type="checkbox" required="" disabled=""> +</form> + <script> var testElements = [ { @@ -170,4 +174,8 @@ ]; validator.run_test(testElements, "valueMissing"); + + test(() => { + assert_equals(document.getElementById("messagetest").validationMessage, ''); + }, 'validationMessage should return empty string when willValidate is false and valueMissing is true'); </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-2.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-2.html index f0c9471a704..4c715de250e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-2.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-2.html @@ -25,6 +25,8 @@ <script> let frame1 = document.getElementById('frame1'); let frame2 = document.getElementById('frame2'); +let form1 = document.getElementById('form1'); +let submitbutton = document.getElementById('submitbutton'); async_test(t => { window.addEventListener('load', () => { diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-3.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-3.html index 1bad23260d0..cdb50d226a8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-3.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-3.html @@ -25,6 +25,8 @@ <script> let frame1 = document.getElementById('frame1'); let frame2 = document.getElementById('frame2'); +let form1 = document.getElementById('form1'); +let submitbutton = document.getElementById('submitbutton'); async_test(t => { window.addEventListener('load', () => { diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit.html index 1102e304174..005f393bfd4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit.html @@ -25,6 +25,8 @@ <script> let frame1 = document.getElementById('frame1'); let frame2 = document.getElementById('frame2'); +let form1 = document.getElementById('form1'); +let submitbutton = document.getElementById('submitbutton'); async_test(t => { window.addEventListener('load', () => { diff --git a/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl b/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl index bcdbaa64623..2e1ea02c641 100644 --- a/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl +++ b/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl @@ -4,20 +4,6 @@ // Source: DOM Parsing and Serialization (https://w3c.github.io/DOM-Parsing/) [Exposed=Window] -interface DOMParser { - constructor(); - [NewObject] Document parseFromString(DOMString str, SupportedType type); -}; - -enum SupportedType { - "text/html", - "text/xml", - "application/xml", - "application/xhtml+xml", - "image/svg+xml" -}; - -[Exposed=Window] interface XMLSerializer { constructor(); DOMString serializeToString(Node root); diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl index 374ce8342b0..7d03a617f10 100644 --- a/tests/wpt/web-platform-tests/interfaces/html.idl +++ b/tests/wpt/web-platform-tests/interfaces/html.idl @@ -1982,6 +1982,21 @@ Window includes WindowOrWorkerGlobalScope; WorkerGlobalScope includes WindowOrWorkerGlobalScope; [Exposed=Window] +interface DOMParser { + constructor(); + + [NewObject] Document parseFromString(DOMString string, DOMParserSupportedType type); +}; + +enum DOMParserSupportedType { + "text/html", + "text/xml", + "application/xml", + "application/xhtml+xml", + "image/svg+xml" +}; + +[Exposed=Window] interface Navigator { // objects implementing this interface also implement the interfaces given below }; diff --git a/tests/wpt/web-platform-tests/interfaces/media-source.idl b/tests/wpt/web-platform-tests/interfaces/media-source.idl index 1d3c02d847e..f718db1f29c 100644 --- a/tests/wpt/web-platform-tests/interfaces/media-source.idl +++ b/tests/wpt/web-platform-tests/interfaces/media-source.idl @@ -16,19 +16,19 @@ enum EndOfStreamError { [Constructor] interface MediaSource : EventTarget { - readonly attribute SourceBufferList sourceBuffers; - readonly attribute SourceBufferList activeSourceBuffers; - readonly attribute ReadyState readyState; - attribute unrestricted double duration; - attribute EventHandler onsourceopen; - attribute EventHandler onsourceended; - attribute EventHandler onsourceclose; - SourceBuffer addSourceBuffer(DOMString type); - void removeSourceBuffer(SourceBuffer sourceBuffer); - void endOfStream(optional EndOfStreamError error); - void setLiveSeekableRange(double start, double end); - void clearLiveSeekableRange(); - static boolean isTypeSupported(DOMString type); + readonly attribute SourceBufferList sourceBuffers; + readonly attribute SourceBufferList activeSourceBuffers; + readonly attribute ReadyState readyState; + attribute unrestricted double duration; + attribute EventHandler onsourceopen; + attribute EventHandler onsourceended; + attribute EventHandler onsourceclose; + SourceBuffer addSourceBuffer (DOMString type); + void removeSourceBuffer (SourceBuffer sourceBuffer); + void endOfStream (optional EndOfStreamError error); + void setLiveSeekableRange (double start, double end); + void clearLiveSeekableRange (); + static boolean isTypeSupported (DOMString type); }; enum AppendMode { @@ -37,45 +37,45 @@ enum AppendMode { }; interface SourceBuffer : EventTarget { - attribute AppendMode mode; - readonly attribute boolean updating; - readonly attribute TimeRanges buffered; - attribute double timestampOffset; - readonly attribute AudioTrackList audioTracks; - readonly attribute VideoTrackList videoTracks; - readonly attribute TextTrackList textTracks; - attribute double appendWindowStart; - attribute unrestricted double appendWindowEnd; - attribute EventHandler onupdatestart; - attribute EventHandler onupdate; - attribute EventHandler onupdateend; - attribute EventHandler onerror; - attribute EventHandler onabort; - void appendBuffer(BufferSource data); - void abort(); - void remove(double start, unrestricted double end); + attribute AppendMode mode; + readonly attribute boolean updating; + readonly attribute TimeRanges buffered; + attribute double timestampOffset; + readonly attribute AudioTrackList audioTracks; + readonly attribute VideoTrackList videoTracks; + readonly attribute TextTrackList textTracks; + attribute double appendWindowStart; + attribute unrestricted double appendWindowEnd; + attribute EventHandler onupdatestart; + attribute EventHandler onupdate; + attribute EventHandler onupdateend; + attribute EventHandler onerror; + attribute EventHandler onabort; + void appendBuffer (BufferSource data); + void abort (); + void remove (double start, unrestricted double end); }; interface SourceBufferList : EventTarget { - readonly attribute unsigned long length; - attribute EventHandler onaddsourcebuffer; - attribute EventHandler onremovesourcebuffer; + readonly attribute unsigned long length; + attribute EventHandler onaddsourcebuffer; + attribute EventHandler onremovesourcebuffer; getter SourceBuffer (unsigned long index); }; [Exposed=Window] partial interface URL { - static DOMString createObjectURL(MediaSource mediaSource); + static DOMString createObjectURL (MediaSource mediaSource); }; partial interface AudioTrack { - readonly attribute SourceBuffer? sourceBuffer; + readonly attribute SourceBuffer? sourceBuffer; }; partial interface VideoTrack { - readonly attribute SourceBuffer? sourceBuffer; + readonly attribute SourceBuffer? sourceBuffer; }; partial interface TextTrack { - readonly attribute SourceBuffer? sourceBuffer; + readonly attribute SourceBuffer? sourceBuffer; }; diff --git a/tests/wpt/web-platform-tests/interfaces/visual-viewport.idl b/tests/wpt/web-platform-tests/interfaces/visual-viewport.idl new file mode 100644 index 00000000000..8e9316bf854 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/visual-viewport.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into reffy-reports +// (https://github.com/tidoust/reffy-reports) +// Source: Visual Viewport API (https://wicg.github.io/visual-viewport/) + +partial interface Window { + [SameObject, Replaceable] readonly attribute VisualViewport visualViewport; +}; + +interface VisualViewport : EventTarget { + readonly attribute double offsetLeft; + readonly attribute double offsetTop; + + readonly attribute double pageLeft; + readonly attribute double pageTop; + + readonly attribute double width; + readonly attribute double height; + + readonly attribute double scale; + + attribute EventHandler onresize; + attribute EventHandler onscroll; +}; diff --git a/tests/wpt/web-platform-tests/web-locks/web-locks.idl b/tests/wpt/web-platform-tests/interfaces/web-locks.idl index 14bc3a22cc3..83905d64fec 100644 --- a/tests/wpt/web-platform-tests/web-locks/web-locks.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-locks.idl @@ -1,3 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into reffy-reports +// (https://github.com/tidoust/reffy-reports) +// Source: Web Locks API (https://wicg.github.io/web-locks/) + [SecureContext] interface mixin NavigatorLocks { readonly attribute LockManager locks; diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl index 56c2856b19a..8dceeb5768b 100644 --- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl +++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl @@ -142,8 +142,7 @@ enum AuthenticatorTransport { "usb", "nfc", "ble", - "internal", - "lightning" + "internal" }; typedef long COSEAlgorithmIdentifier; diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-svc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-svc.idl new file mode 100644 index 00000000000..2691a87b30d --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/webrtc-svc.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into reffy-reports +// (https://github.com/tidoust/reffy-reports) +// Source: Scalable Video Coding (SVC) Extension for WebRTC (https://w3c.github.io/webrtc-svc/) + +partial dictionary RTCRtpEncodingParameters { + DOMString scalabilityMode; +}; + +partial dictionary RTCRtpCodecCapability { + sequence<DOMString> scalabilityModes; +}; diff --git a/tests/wpt/web-platform-tests/portals/portals-activate-empty-browsing-context.html b/tests/wpt/web-platform-tests/portals/portals-activate-empty-browsing-context.html new file mode 100644 index 00000000000..50439f63317 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/portals-activate-empty-browsing-context.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<script> +promise_test(async t => { + let portal = document.createElement('portal'); + document.body.appendChild(portal); + t.add_cleanup(() => { document.body.removeChild(portal); }); + + await promise_rejects(t, 'InvalidStateError', portal.activate()); +}, "A portal that has never been navigated cannot be activated"); + +promise_test(async t => { + let portal = document.createElement('portal'); + document.body.appendChild(portal); + t.add_cleanup(() => { document.body.removeChild(portal); }); + + // We use a status of 204 (No Content) as that couldn't possibly mature. + portal.src = "resources/204-no-content.asis"; + await promise_rejects(t, 'InvalidStateError', portal.activate()); +}, "A portal that has not completed an initial navigation cannot be activated"); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/portals/predecessor-fires-unload.html b/tests/wpt/web-platform-tests/portals/predecessor-fires-unload.html index 6512195eaf6..381221222b5 100644 --- a/tests/wpt/web-platform-tests/portals/predecessor-fires-unload.html +++ b/tests/wpt/web-platform-tests/portals/predecessor-fires-unload.html @@ -17,6 +17,7 @@ promise_test(async () => { const portal = w.document.createElement('portal'); portal.src = new URL('resources/simple-portal.html', location.href); w.document.body.appendChild(portal); + await nextEvent(portal, 'load'); const pagehideFired = nextEvent(w, 'pagehide'); const unloadFired = nextEvent(w, 'unload'); await portal.activate(); diff --git a/tests/wpt/web-platform-tests/portals/resources/204-no-content.asis b/tests/wpt/web-platform-tests/portals/resources/204-no-content.asis new file mode 100644 index 00000000000..58e46abbc9e --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/204-no-content.asis @@ -0,0 +1 @@ +HTTP/1.1 204 No Content diff --git a/tests/wpt/web-platform-tests/portals/resources/predecessor-fires-unload-watch-unload.html b/tests/wpt/web-platform-tests/portals/resources/predecessor-fires-unload-watch-unload.html index ada5a64967e..f58da48ca1c 100644 --- a/tests/wpt/web-platform-tests/portals/resources/predecessor-fires-unload-watch-unload.html +++ b/tests/wpt/web-platform-tests/portals/resources/predecessor-fires-unload-watch-unload.html @@ -5,10 +5,11 @@ function nextEvent(target, type) { return new Promise((resolve, reject) => target.addEventListener(type, e => resolve(e), {once: true})); } -onload = function() { +onload = async function() { const portal = document.createElement('portal'); portal.src = new URL('simple-portal.html', location.href); document.body.appendChild(portal); + await nextEvent(portal, 'load'); let firedEvents = []; for (let type of ['pagehide', 'unload']) { @@ -19,6 +20,6 @@ onload = function() { } portal.activate(); -} +}; </script> </body> diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py index 641e0daa895..62790181d51 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -64,6 +64,8 @@ def get_timeout_multiplier(test_type, run_info_data, **kwargs): # https://bugzilla.mozilla.org/show_bug.cgi?id=1538725 elif run_info_data["os"] == "win" and run_info_data["processor"] == "aarch64": return 4 + elif run_info_data.get("ccov"): + return 2 return 1 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py index 3301c75b210..dea184d6809 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py @@ -9,10 +9,11 @@ import subprocess import tarfile import tempfile import time -from cStringIO import StringIO as CStringIO import requests +from six.moves import cStringIO as StringIO + from .base import Browser, ExecutorBrowser, require_arg from .base import get_timeout_multiplier # noqa: F401 from ..executors import executor_kwargs as base_executor_kwargs @@ -124,7 +125,7 @@ def env_options(): def get_tar(url, dest): resp = requests.get(url, stream=True) resp.raise_for_status() - with tarfile.open(fileobj=CStringIO(resp.raw.read())) as f: + with tarfile.open(fileobj=StringIO(resp.raw.read())) as f: f.extractall(path=dest) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py index 8f8e120e66d..4816c3df06e 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py @@ -332,6 +332,8 @@ class ServoCrashtestExecutor(ProcessTestExecutor): self.test = test success, data = ServoTimedRunner(self.logger, self.do_crashtest, self.protocol, test_url, timeout, self.extra_timeout).run() + # Ensure that no processes hang around if they timeout. + self.proc.kill() if success: return self.convert_result(test, data) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py index 06a5641d50f..56e8ddac376 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py @@ -1,9 +1,10 @@ import sys -from os.path import join, dirname import mock import pytest +from os.path import join, dirname + sys.path.insert(0, join(dirname(__file__), "..", "..", "..")) sauce = pytest.importorskip("wptrunner.browsers.sauce") @@ -95,7 +96,7 @@ def test_sauceconnect_cleanup(): sleep.assert_called() - +@pytest.mark.xfail(sys.version_info >= (3,), reason="fails on Py3") def test_sauceconnect_failure_never_ready(): with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\ mock.patch.object(sauce.subprocess, "Popen") as Popen,\ diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..ecadd521ae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..7f76e44de4e --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..a3b80337ff8 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..d8bf1448b44 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..a721e88cba7 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..c6cbbcb191d --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..34ddb296009 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..27fb1e0b2a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..27f2c421f1f --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..8206c81a700 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..5d989c95f74 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..8f1918d6414 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..8297f563e04 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..f03b2423f29 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..b04875c41fa --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..c95bab5c0a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..028b57f4b74 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..231253e2387 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "iframe-blank" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..25162898dec --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..b8f9b73d6ac --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..85cc77451a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..a02cee7af40 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..92b0327192f --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..2f210b44a29 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..b7b4b161f14 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..9a651679d1d --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..5c6a5cdefad --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..f6aa8f9530e --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..6f212bd7fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..197b4e7facc --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..9cdf951d1b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..ed497ab2b2a --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..d79da74edd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..325b1cddd43 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..dbf2f339d41 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..00c1ab098bf --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [ + { + "policyDeliveries": [], + "sourceContextType": "srcdoc" + } + ], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..fd6f20457a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..4fefeb213df --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..72528b29cc0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/cross-https.downgrade.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..b962fced782 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..5636ea3f51b --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..66694b3d06e --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data/same-https.downgrade.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..cad99b410cb --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..c99829fa311 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..9d07a9923e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module/same-https.downgrade.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..e4fe253ba54 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..17920b35ba7 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..5fd7087950d --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..47b5bc1570d --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..1550a3c59eb --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..c738bc62b18 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..1da71a2d8bc --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..24808604f0b --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..cf3c2e8b2a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/unset/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: No upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="No upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-https origin and downgrade redirection from https context."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "blocked", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..6602343a2f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.downgrade.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..d0e647c3ded --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-http-downgrade.no-redirect.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html new file mode 100644 index 00000000000..07f7b720964 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/cross-https.downgrade.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "cross-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..9df358ca888 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.downgrade.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..58cd0a71720 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html new file mode 100644 index 00000000000..c8bdac0fa2c --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data/same-https.downgrade.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-import-data", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html new file mode 100644 index 00000000000..9d0ef1888ba --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.downgrade.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html new file mode 100644 index 00000000000..f1d4f2697d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-http-downgrade.no-redirect.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-http-downgrade", + "redirection": "no-redirect", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-https.downgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-https.downgrade.https.html new file mode 100644 index 00000000000..46c93a3215d --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module/same-https.downgrade.https.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! Generated by `common/security-features/tools/generate.py --spec upgrade-insecure-requests/` --> +<html> + <head> + <title>Upgrade-Insecure-Requests: With upgrade-insecure-request</title> + <meta charset='utf-8'> + <meta name="description" content="With upgrade-insecure-request"> + <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> + <link rel="help" href="https://w3c.github.io/webappsec-upgrade-insecure-requests/"> + <meta name="assert" content="Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-https origin and downgrade redirection from https context."> + <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/security-features/resources/common.sub.js"></script> + <script src="../../../../generic/test-case.sub.js"></script> + </head> + <body> + <script> + TestCase( + { + "expectation": "allowed", + "origin": "same-https", + "redirection": "downgrade", + "source_context_list": [], + "source_scheme": "https", + "subresource": "sharedworker-module", + "subresource_policy_deliveries": [] + }, + document.querySelector("meta[name=assert]").content, + new SanityChecker() + ).start(); + </script> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js index 822afa11397..0adba4938d4 100644 --- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js @@ -1 +1 @@ -var SPEC_JSON = {"selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "test_description_template": "Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "test_page_title_template": "Upgrade-Insecure-Requests: %(title)s", "specification": [{"name": "No upgrade-insecure-request", "title": "No upgrade-insecure-request", "description": "No upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "test_expansion": [{"name": "Without upgrade-insecure-request, all requests are blocked ...", "expansion": "default", "source_scheme": "https", "source_context_list": "*", "delivery_type": "meta", "delivery_value": null, "redirection": "*", "subresource": "*", "origin": "*", "expectation": "blocked"}, {"name": "... except for the secure requests listed here", "expansion": "override", "source_scheme": "https", "source_context_list": "*", "delivery_type": "meta", "delivery_value": null, "redirection": "no-redirect", "subresource": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "expectation": "allowed"}]}, {"name": "With upgrade-insecure-request", "title": "With upgrade-insecure-request", "description": "With upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "test_expansion": [{"name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.", "expansion": "default", "source_scheme": "https", "source_context_list": "*", "delivery_type": "*", "delivery_value": "upgrade", "redirection": "*", "subresource": "*", "origin": "*", "expectation": "allowed"}]}], "delivery_key": "upgradeInsecureRequests", "excluded_tests": [{"name": "Omit secure requests", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "no-redirect", "subresource": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "expectation": "allowed"}, {"name": "For inheriting tests skip http-rp because we already have <meta> tests", "expansion": "*", "source_scheme": "*", "source_context_list": ["srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "delivery_type": "http-rp", "delivery_value": "*", "redirection": "*", "subresource": "*", "origin": "*", "expectation": "*"}, {"name": "Workers are same-origin only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"], "origin": ["cross-https", "cross-http-downgrade", "cross-wss", "cross-ws-downgrade"], "expectation": "*"}, {"name": "Websockets are ws/wss-only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "*", "subresource": "websocket", "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade"], "expectation": "*"}, {"name": "Websockets is no-redirect only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": ["downgrade"], "subresource": "websocket", "origin": "*", "expectation": "*"}, {"name": "ws/wss are websocket-only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "*", "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "origin": ["same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "expectation": "*"}], "source_context_schema": {"supported_delivery_type": {"top": ["http-rp", "meta"], "iframe": ["http-rp", "meta"], "iframe-blank": ["meta"], "srcdoc": ["meta"], "worker-classic": ["http-rp"], "worker-module": ["http-rp"], "worker-classic-data": [], "worker-module-data": []}, "supported_subresource": {"top": "*", "iframe": "*", "iframe-blank": "*", "srcdoc": "*", "worker-classic": ["xhr", "fetch", "websocket"], "worker-module": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "worker-module-data": ["xhr", "fetch", "websocket"]}}, "subresource_schema": {"supported_delivery_type": {"xhr": [], "worker-classic": [], "worker-module": [], "worker-import-data": [], "sharedworker-classic": [], "worklet-animation": [], "worklet-audio": [], "worklet-layout": [], "worklet-paint": [], "worklet-animation-import-data": [], "worklet-audio-import-data": [], "worklet-layout-import-data": [], "worklet-paint-import-data": [], "fetch": [], "websocket": [], "img-tag": [], "iframe-tag": []}}, "source_context_list_schema": {"top": {"description": "CSP set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}], "subresourcePolicyDeliveries": []}, "srcdoc-inherit": {"description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}], "subresourcePolicyDeliveries": []}, "iframe-blank-inherit": {"description": "blank iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "iframe-blank"}], "subresourcePolicyDeliveries": []}, "worker-classic-data": {"description": "CSP set by the top-level Document is inherited to dedicated workers", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}], "subresourcePolicyDeliveries": []}}, "test_expansion_schema": {"expansion": ["default", "override"], "source_scheme": ["https"], "delivery_type": ["http-rp", "meta"], "delivery_value": [null, "upgrade"], "source_context_list": ["top", "srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "redirection": ["no-redirect", "downgrade"], "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade", "same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "websocket", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "expectation": ["allowed", "blocked"]}}; +var SPEC_JSON = {"selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "test_description_template": "Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "test_page_title_template": "Upgrade-Insecure-Requests: %(title)s", "specification": [{"name": "No upgrade-insecure-request", "title": "No upgrade-insecure-request", "description": "No upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "test_expansion": [{"name": "Without upgrade-insecure-request, all requests are blocked ...", "expansion": "default", "source_scheme": "https", "source_context_list": "*", "delivery_type": "meta", "delivery_value": null, "redirection": "*", "subresource": "*", "origin": "*", "expectation": "blocked"}, {"name": "... except for the secure requests listed here", "expansion": "override", "source_scheme": "https", "source_context_list": "*", "delivery_type": "meta", "delivery_value": null, "redirection": "no-redirect", "subresource": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "expectation": "allowed"}]}, {"name": "With upgrade-insecure-request", "title": "With upgrade-insecure-request", "description": "With upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "test_expansion": [{"name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.", "expansion": "default", "source_scheme": "https", "source_context_list": "*", "delivery_type": "*", "delivery_value": "upgrade", "redirection": "*", "subresource": "*", "origin": "*", "expectation": "allowed"}]}], "delivery_key": "upgradeInsecureRequests", "excluded_tests": [{"name": "Omit secure requests", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "no-redirect", "subresource": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "expectation": "allowed"}, {"name": "For inheriting tests skip http-rp because we already have <meta> tests", "expansion": "*", "source_scheme": "*", "source_context_list": ["srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "delivery_type": "http-rp", "delivery_value": "*", "redirection": "*", "subresource": "*", "origin": "*", "expectation": "*"}, {"name": "Workers are same-origin only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic", "sharedworker-module"], "origin": ["cross-https", "cross-http-downgrade", "cross-wss", "cross-ws-downgrade"], "expectation": "*"}, {"name": "Websockets are ws/wss-only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "*", "subresource": "websocket", "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade"], "expectation": "*"}, {"name": "Websockets is no-redirect only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": ["downgrade"], "subresource": "websocket", "origin": "*", "expectation": "*"}, {"name": "ws/wss are websocket-only", "expansion": "*", "source_scheme": "*", "source_context_list": "*", "delivery_type": "*", "delivery_value": "*", "redirection": "*", "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "sharedworker-module", "sharedworker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "origin": ["same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "expectation": "*"}], "source_context_schema": {"supported_delivery_type": {"top": ["http-rp", "meta"], "iframe": ["http-rp", "meta"], "iframe-blank": ["meta"], "srcdoc": ["meta"], "worker-classic": ["http-rp"], "worker-module": ["http-rp"], "worker-classic-data": [], "worker-module-data": []}, "supported_subresource": {"top": "*", "iframe": "*", "iframe-blank": "*", "srcdoc": "*", "worker-classic": ["xhr", "fetch", "websocket"], "worker-module": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "worker-module-data": ["xhr", "fetch", "websocket"]}}, "subresource_schema": {"supported_delivery_type": {"xhr": [], "worker-classic": [], "worker-module": [], "worker-import-data": [], "sharedworker-classic": [], "sharedworker-module": [], "sharedworker-import-data": [], "worklet-animation": [], "worklet-audio": [], "worklet-layout": [], "worklet-paint": [], "worklet-animation-import-data": [], "worklet-audio-import-data": [], "worklet-layout-import-data": [], "worklet-paint-import-data": [], "fetch": [], "websocket": [], "img-tag": [], "iframe-tag": []}}, "source_context_list_schema": {"top": {"description": "CSP set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}], "subresourcePolicyDeliveries": []}, "srcdoc-inherit": {"description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}], "subresourcePolicyDeliveries": []}, "iframe-blank-inherit": {"description": "blank iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "iframe-blank"}], "subresourcePolicyDeliveries": []}, "worker-classic-data": {"description": "CSP set by the top-level Document is inherited to dedicated workers", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}], "subresourcePolicyDeliveries": []}}, "test_expansion_schema": {"expansion": ["default", "override"], "source_scheme": ["https"], "delivery_type": ["http-rp", "meta"], "delivery_value": [null, "upgrade"], "source_context_list": ["top", "srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "redirection": ["no-redirect", "downgrade"], "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade", "same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "websocket", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "sharedworker-module", "sharedworker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "expectation": ["allowed", "blocked"]}}; diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json index dcf63008f63..70417038bcc 100644 --- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json @@ -108,7 +108,8 @@ "subresource": [ "worker-classic", "worker-module", - "sharedworker-classic" + "sharedworker-classic", + "sharedworker-module" ], "origin": [ "cross-https", @@ -166,6 +167,8 @@ "worker-module", "worker-import-data", "sharedworker-classic", + "sharedworker-module", + "sharedworker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", @@ -243,6 +246,8 @@ "worker-module": [], "worker-import-data": [], "sharedworker-classic": [], + "sharedworker-module": [], + "sharedworker-import-data": [], "worklet-animation": [], "worklet-audio": [], "worklet-layout": [], @@ -363,6 +368,8 @@ "worker-module", "worker-import-data", "sharedworker-classic", + "sharedworker-module", + "sharedworker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", diff --git a/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js b/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js new file mode 100644 index 00000000000..f0b5aeb173a --- /dev/null +++ b/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js @@ -0,0 +1,15 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +idl_test( + ['visual-viewport'], + ['html', 'dom'], + idl_array => { + idl_array.add_objects({ + VisualViewport: ['self.visualViewport'], + Window: ['self'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/web-locks/idlharness.tentative.https.any.js b/tests/wpt/web-platform-tests/web-locks/idlharness.tentative.https.any.js index 168f57328b8..1ad570370e5 100644 --- a/tests/wpt/web-platform-tests/web-locks/idlharness.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/web-locks/idlharness.tentative.https.any.js @@ -4,31 +4,25 @@ 'use strict'; -promise_test(async t => { - const srcs = ['./web-locks.idl', '/interfaces/html.idl']; - const [weblocks, html] = await Promise.all( - srcs.map(i => fetch(i).then(r => r.text()))); +idl_test( + ['web-locks'], + ['html'], + async idl_array => { + idl_array.add_objects({ + LockManager: ['navigator.locks'], + Lock: ['lock'], + }); - const idl_array = new IdlArray(); - idl_array.add_idls(weblocks); - idl_array.add_dependency_idls(html); + if (self.Window) { + idl_array.add_objects({ Navigator: ['navigator'] }); + } else { + idl_array.add_objects({ WorkerNavigator: ['navigator'] }); + } - try { - await navigator.locks.request('name', l => { self.lock = l; }); - } catch (e) { - // Surfaced in idlharness.js's test_object below. + try { + await navigator.locks.request('name', l => { self.lock = l; }); + } catch (e) { + // Surfaced in idlharness.js's test_object below. + } } - - idl_array.add_objects({ - LockManager: ['navigator.locks'], - Lock: ['lock'], - }); - - if (self.Window) { - idl_array.add_objects({ Navigator: ['navigator'] }); - } else { - idl_array.add_objects({ WorkerNavigator: ['navigator'] }); - } - - idl_array.test(); -}); +); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html index 28674686615..de1cec6c9c2 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html @@ -142,6 +142,107 @@ .then(() => task.done()); }); + audit.define( + { + label: '3-channel input, explicit', + description: '3->2 explicit downmix producing 2-channel output' + }, + (task, should) => { + downMixTest( + { + channelCountMode: 'explicit', + numberOfInputs: 3, + prefix: '3 chan downmix explicit' + }, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: '4-channel input, explicit', + description: '4->2 explicit downmix producing 2-channel output' + }, + (task, should) => { + downMixTest( + { + channelCountMode: 'explicit', + numberOfInputs: 4, + prefix: '4 chan downmix explicit' + }, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: '5.1-channel input, explicit', + description: '5.1->2 explicit downmix producing 2-channel output' + }, + (task, should) => { + downMixTest( + { + channelCountMode: 'explicit', + numberOfInputs: 6, + prefix: '5.1 chan downmix explicit' + }, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: 'mono-upmix-explicit', + description: '1->2 upmix, count mode explicit' + }, + (task, should) => { + upMixTest(should, {channelCountMode: 'explicit'}) + .then(buffer => { + let length = buffer.length; + let input = buffer.getChannelData(0); + let out0 = buffer.getChannelData(1); + let out1 = buffer.getChannelData(2); + + // The convolver is basically a one-sample delay. Verify that + // that each channel is delayed by one sample. + should(out0.slice(1), '1->2 explicit upmix: channel 0') + .beCloseToArray( + input.slice(0, length - 1), + {absoluteThreshold: 3.577e-7}); + should(out1.slice(1), '1->2 explicit upmix: channel 1') + .beCloseToArray( + input.slice(0, length - 1), + {absoluteThreshold: 3.577e-7}); + }) + .then(() => task.done()); + }); + + audit.define( + { + label: 'mono-upmix-clamped-max', + description: '1->2 upmix, count mode clamped-max' + }, + (task, should) => { + upMixTest(should, {channelCountMode: 'clamped-max'}) + .then(buffer => { + let length = buffer.length; + let input = buffer.getChannelData(0); + let out0 = buffer.getChannelData(1); + let out1 = buffer.getChannelData(2); + + // The convolver is basically a one-sample delay. With a mono + // input, the count set to 2, and a mode of 'clamped-max', the + // output should be mono + should(out0.slice(1), '1->2 clamped-max upmix: channel 0') + .beCloseToArray( + input.slice(0, length - 1), + {absoluteThreshold: 3.577e-7}); + should(out1, '1->2 clamped-max upmix: channel 1') + .beConstantValueOf(0); + }) + .then(() => task.done()); + }); + function downMixTest(options, should) { // Create an 4-channel offline context. The first two channels are for // the stereo output of the convolver and the next two channels are for @@ -166,8 +267,11 @@ } // Convolver under test. - let conv = new ConvolverNode( - context, {disableNormalization: true, buffer: response}); + let conv = new ConvolverNode(context, { + disableNormalization: true, + buffer: response, + channelCountMode: options.channelCountMode + }); srcMerger.connect(conv); // Splitter to get individual channels of the convolver output so we can @@ -226,6 +330,57 @@ }); } + function upMixTest(should, options) { + // Offline context with 3 channels: 0 = source + // 1 = convolver output, left, 2 = convolver output, right. Context + // destination must be discrete so that channels don't get mixed in + // unexpected ways. + let context = new OfflineAudioContext(3, renderFrames, sampleRate); + context.destination.channelInterpretation = 'discrete'; + + let merger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.maxChannelCount}); + merger.connect(context.destination); + + let src = new OscillatorNode(context); + + // Mono response for convolver. Just a simple 1-frame delay. + let response = + new AudioBuffer({length: 2, sampleRate: context.sampleRate}); + response.getChannelData(0)[1] = 1; + + // Set mode to explicit and count to 2 so we manually force the + // convolver to produce stereo output. Without this, it would be + // mono input with mono response, which produces a mono output. + let conv; + + should( + () => {conv = new ConvolverNode(context, { + buffer: response, + disableNormalization: true, + channelCount: 2, + channelCountMode: options.channelCountMode + })}, + `new ConvolverNode({channelCountMode: '${ + options.channelCountMode}'})`) + .notThrow(); + + // Split output of convolver into individual channels. + let convSplit = new ChannelSplitterNode(context, {numberOfOutputs: 2}); + + src.connect(conv); + conv.connect(convSplit); + + // Connect signals to destination in the desired way. + src.connect(merger, 0, 0); + convSplit.connect(merger, 0, 1); + convSplit.connect(merger, 1, 2); + + src.start(); + + return context.startRendering(); + } + audit.run(); </script> </body> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html index b30ef1f17c4..6da72afb270 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html @@ -102,6 +102,65 @@ .then(() => task.done()); }); + audit.define( + { + label: '2-channel input, explicit mode', + description: 'produces 2-channel output' + }, + (task, should) => { + stereoResponseExplicitTest( + { + numberOfInputes: 2, + prefix: '2-in explicit mode', + absoluteThresholds: [0, 0] + }, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: '3-channel input explicit mode', + description: '3->2 downmix producing 2-channel output' + }, + (task, should) => { + stereoResponseExplicitTest( + { + numberOfInputs: 3, + prefix: '3-in explicit', + absoluteThresholds: [0, 0] + }, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: '4-channel input explicit mode', + description: '4->2 downmix producing 2-channel output' + }, + (task, should) => { + stereoResponseExplicitTest( + { + numberOfInputs: 4, + prefix: '4-in explicit', + absoluteThresholds: [3.5763e-7, 2.9803e-7] + }, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: '5.1-channel input explicit mode', + description: '5.1->2 downmix producing 2-channel output' + }, + (task, should) => { + stereoResponseTest({numberOfInputs: 6, prefix: '5.1-in explicit', absoluteThresholds: + [0, 0]}, should) + .then(() => task.done()); + }); + function stereoResponseTest(options, should) { // Create an 4-channel offline context. The first two channels are for // the stereo output of the convolver and the next two channels are for @@ -198,6 +257,103 @@ }); } + function stereoResponseExplicitTest(options, should) { + // Create an 4-channel offline context. The first two channels are for + // the stereo output of the convolver and the next two channels are for + // the reference stereo signal. + let context = new OfflineAudioContext(4, renderFrames, sampleRate); + context.destination.channelInterpretation = 'discrete'; + + // Create oscillators for use as the input. The type and frequency is + // arbitrary except that oscillators must be different. + let src = new Array(options.numberOfInputs); + for (let k = 0; k < src.length; ++k) { + src[k] = new OscillatorNode( + context, {type: 'square', frequency: 440 + 220 * k}); + } + + // Merger to combine the oscillators into one output stream. + let srcMerger = + new ChannelMergerNode(context, {numberOfInputs: src.length}); + + for (let k = 0; k < src.length; ++k) { + src[k].connect(srcMerger, 0, k); + } + + // Convolver under test. + let conv = new ConvolverNode(context, { + channelCount: 1, + channelCountMode: 'explicit', + disableNormalization: true, + buffer: response + }); + srcMerger.connect(conv); + + // Splitter to get individual channels of the convolver output so we can + // feed them (eventually) to the context in the right set of channels. + let splitter = new ChannelSplitterNode(context, {numberOfOutputs: 2}); + conv.connect(splitter); + + // Reference graph consists of a delays node to simulate the response of + // the convolver. (The convolver response is designed this way.) + let delay = new Array(2); + for (let k = 0; k < delay.length; ++k) { + delay[k] = new DelayNode(context, { + delayTime: (k + 1) / context.sampleRate, + channelCount: 1, + channelCountMode: 'explicit' + }); + } + + // Gain node to mix the sources in the same way as the convolver. + let gainMixer = new GainNode( + context, {channelCount: 1, channelCountMode: 'explicit'}); + srcMerger.connect(gainMixer); + + // Connect each channel to the delay nodes + for (let k = 0; k < delay.length; ++k) { + gainMixer.connect(delay[k]); + } + + // Final merger to bring back the individual channels from the convolver + // and the reference in the right order for the destination. + let finalMerger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.channelCount}); + + // First two channels are for the convolver output, and the next two are + // for the reference. + splitter.connect(finalMerger, 0, 0); + splitter.connect(finalMerger, 1, 1); + delay[0].connect(finalMerger, 0, 2); + delay[1].connect(finalMerger, 0, 3); + + finalMerger.connect(context.destination); + + // Start the sources at last. + for (let k = 0; k < src.length; ++k) { + src[k].start(); + } + + return context.startRendering().then(audioBuffer => { + // Extract the various channels out + let actual0 = audioBuffer.getChannelData(0); + let actual1 = audioBuffer.getChannelData(1); + let expected0 = audioBuffer.getChannelData(2); + let expected1 = audioBuffer.getChannelData(3); + + // Verify that each output channel of the convolver matches + // the delayed signal from the reference + should(actual0, options.prefix + ': Channel 0') + .beCloseToArray( + expected0, + {absoluteThreshold: options.absoluteThresholds[0]}); + should(actual1, options.prefix + ': Channel 1') + .beCloseToArray( + expected1, + {absoluteThreshold: options.absoluteThresholds[1]}); + }); + } + audit.run(); </script> </body> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html index 2e8a1c7876b..490d2c37843 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html @@ -142,6 +142,47 @@ .then(() => task.done()); }); + audit.define( + { + label: 'count 1, 2-channel in', + description: '2->1 downmix because channel count is 1' + }, + (task, should) => { + channelCount1ExplicitTest( + {numberOfInputs: 1, prefix: 'Convolver count 1, stereo in'}, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: 'count 1, 4-channel in', + description: '4->1 downmix because channel count is 1' + }, + (task, should) => { + channelCount1ExplicitTest( + {numberOfInputs: 4, prefix: 'Convolver count 1, 4-channel in'}, + should) + .then(() => task.done()); + }); + + audit.define( + { + label: 'count 1, 5.1-channel in', + description: '5.1->1 downmix because channel count is 1' + }, + (task, should) => { + channelCount1ExplicitTest( + { + numberOfInputs: 6, + prefix: 'Convolver count 1, 5.1 channel in' + }, + should) + .then(() => task.done()); + }); + + audit.run(); + function fourChannelResponseTest(options, should) { // Create an 4-channel offline context. The first two channels are for // the stereo output of the convolver and the next two channels are for @@ -255,7 +296,200 @@ }); } - audit.run(); + function fourChannelResponseExplicitTest(options, should) { + // Create an 4-channel offline context. The first two channels are for + // the stereo output of the convolver and the next two channels are for + // the reference stereo signal. + let context = new OfflineAudioContext(4, renderFrames, sampleRate); + context.destination.channelInterpretation = 'discrete'; + + // Create oscillators for use as the input. The type and frequency is + // arbitrary except that oscillators must be different. + let src = new Array(options.numberOfInputs); + for (let k = 0; k < src.length; ++k) { + src[k] = new OscillatorNode( + context, {type: 'square', frequency: 440 + 220 * k}); + } + + // Merger to combine the oscillators into one output stream. + let srcMerger = + new ChannelMergerNode(context, {numberOfInputs: src.length}); + + for (let k = 0; k < src.length; ++k) { + src[k].connect(srcMerger, 0, k); + } + + // Convolver under test. + let conv = new ConvolverNode( + context, {disableNormalization: true, buffer: response}); + srcMerger.connect(conv); + + // Splitter to get individual channels of the convolver output so we can + // feed them (eventually) to the context in the right set of channels. + let splitter = new ChannelSplitterNode(context, {numberOfOutputs: 2}); + conv.connect(splitter); + + // Reference graph consists of a delays node to simulate the response of + // the convolver. (The convolver response is designed this way.) + let delay = new Array(4); + for (let k = 0; k < delay.length; ++k) { + delay[k] = new DelayNode(context, { + delayTime: (k + 1) / context.sampleRate, + channelCount: 1, + channelCountMode: 'explicit' + }); + } + + // Gain node to mix the sources to stereo in the desired way. (Could be + // done in the delay node, but let's keep the mixing separated from the + // functionality.) + let gainMixer = new GainNode( + context, {channelCount: 2, channelCountMode: 'explicit'}); + srcMerger.connect(gainMixer); + + // Splitter to extract the channels of the reference signal. + let refSplitter = + new ChannelSplitterNode(context, {numberOfOutputs: 2}); + gainMixer.connect(refSplitter); + + // Connect the left channel to the first two nodes and the right channel + // to the second two as required for "true" stereo matrix response. + for (let k = 0; k < 2; ++k) { + refSplitter.connect(delay[k], 0, 0); + refSplitter.connect(delay[k + 2], 1, 0); + } + + // Gain nodes to sum the responses to stereo + let gain = new Array(2); + for (let k = 0; k < gain.length; ++k) { + gain[k] = new GainNode(context, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete' + }); + } + + delay[0].connect(gain[0]); + delay[2].connect(gain[0]); + delay[1].connect(gain[1]); + delay[3].connect(gain[1]); + + // Final merger to bring back the individual channels from the convolver + // and the reference in the right order for the destination. + let finalMerger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.channelCount}); + + // First two channels are for the convolver output, and the next two are + // for the reference. + splitter.connect(finalMerger, 0, 0); + splitter.connect(finalMerger, 1, 1); + gain[0].connect(finalMerger, 0, 2); + gain[1].connect(finalMerger, 0, 3); + + finalMerger.connect(context.destination); + + // Start the sources at last. + for (let k = 0; k < src.length; ++k) { + src[k].start(); + } + + return context.startRendering().then(audioBuffer => { + // Extract the various channels out + let actual0 = audioBuffer.getChannelData(0); + let actual1 = audioBuffer.getChannelData(1); + let expected0 = audioBuffer.getChannelData(2); + let expected1 = audioBuffer.getChannelData(3); + + // Verify that each output channel of the convolver matches + // the delayed signal from the reference + should(actual0, options.prefix + ': Channel 0') + .beEqualToArray(expected0); + should(actual1, options.prefix + ': Channel 1') + .beEqualToArray(expected1); + }); + } + + function channelCount1ExplicitTest(options, should) { + // Create an 4-channel offline context. The first two channels are + // for the stereo output of the convolver and the next two channels + // are for the reference stereo signal. + let context = new OfflineAudioContext(4, renderFrames, sampleRate); + context.destination.channelInterpretation = 'discrete'; + // Final merger to bring back the individual channels from the + // convolver and the reference in the right order for the + // destination. + let finalMerger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.channelCount}); + finalMerger.connect(context.destination); + + // Create source using oscillators + let src = new Array(options.numberOfInputs); + for (let k = 0; k < src.length; ++k) { + src[k] = new OscillatorNode( + context, {type: 'square', frequency: 440 + 220 * k}); + } + + // Merger to combine the oscillators into one output stream. + let srcMerger = + new ChannelMergerNode(context, {numberOfInputs: src.length}); + for (let k = 0; k < src.length; ++k) { + src[k].connect(srcMerger, 0, k); + } + + // Convolver under test + let conv = new ConvolverNode(context, { + channelCount: 1, + channelCountMode: 'explicit', + disableNormalization: true, + buffer: response + }); + srcMerger.connect(conv); + + // Splitter to extract the channels of the test signal. + let splitter = new ChannelSplitterNode(context, {numberOfOutputs: 2}); + conv.connect(splitter); + + // Reference convolver, with a gain node to do the desired mixing. The + // gain node should do the same thing that the convolver under test + // should do. + let gain = new GainNode( + context, {channelCount: 1, channelCountMode: 'explicit'}); + let convRef = new ConvolverNode( + context, {disableNormalization: true, buffer: response}); + + srcMerger.connect(gain).connect(convRef); + + // Splitter to extract the channels of the reference signal. + let refSplitter = + new ChannelSplitterNode(context, {numberOfOutputs: 2}); + + convRef.connect(refSplitter); + + // Merge all the channels into one + splitter.connect(finalMerger, 0, 0); + splitter.connect(finalMerger, 1, 1); + refSplitter.connect(finalMerger, 0, 2); + refSplitter.connect(finalMerger, 1, 3); + + // Start sources and render! + for (let k = 0; k < src.length; ++k) { + src[k].start(); + } + + return context.startRendering().then(buffer => { + // The output from the test convolver should be identical to + // the reference result. + let testOut0 = buffer.getChannelData(0); + let testOut1 = buffer.getChannelData(1); + let refOut0 = buffer.getChannelData(2); + let refOut1 = buffer.getChannelData(3); + + should(testOut0, `${options.prefix}: output 0`) + .beEqualToArray(refOut0); + should(testOut1, `${options.prefix}: output 1`) + .beEqualToArray(refOut1); + }) + } </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html index 97684b21312..28a0fc1c3c7 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html @@ -45,18 +45,63 @@ }); audit.define('test AudioNodeOptions', (task, should) => { - testAudioNodeOptions(should, context, 'ConvolverNode', { - channelCount: { - value: 2, - isFixed: true, - exceptionType: 'NotSupportedError' - }, - channelCountMode: { - value: 'clamped-max', - isFixed: true, - exceptionType: 'NotSupportedError' - }, + // Can't use testAudioNodeOptions because the constraints for this node + // are not supported there. + let node; + + // An array of tests. + [{ + // Test that we can set the channel count to 1 or 2 and that other + // channel counts throw an error. + attribute: 'channelCount', + tests: [ + {value: 1}, {value: 2}, {value: 0, error: 'NotSupportedError'}, + {value: 3, error: 'NotSupportedError'}, + {value: 99, error: 'NotSupportedError'} + ] + }, + { + // Test channelCountMode. A mode of "max" is illegal, but others are + // ok. But also throw an error of unknown values. + attribute: 'channelCountMode', + tests: [ + {value: 'clamped-max'}, {value: 'explicit'}, + {value: 'max', error: 'NotSupportedError'}, + {value: 'foobar', error: TypeError} + ] + }, + { + // Test channelInterpretation can be set for valid values and an + // error is thrown for others. + attribute: 'channelInterpretation', + tests: [ + {value: 'speakers'}, {value: 'discrete'}, + {value: 'foobar', error: TypeError} + ] + }].forEach(entry => { + entry.tests.forEach(testItem => { + let options = {}; + options[entry.attribute] = testItem.value; + + const testFunction = () => { + node = new ConvolverNode(context, options); + }; + const testDescription = + `new ConvolverNode(c, ${JSON.stringify(options)})`; + + if (testItem.error) { + testItem.error === TypeError + ? should(testFunction, testDescription).throw(TypeError) + : should(testFunction, testDescription) + .throw(DOMException, 'NotSupportedError'); + } else { + should(testFunction, testDescription).notThrow(); + should(node[entry.attribute], `node.${entry.attribute}`) + .beEqualTo(options[entry.attribute]); + } + }); }); + task.done(); }); diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/sync.py b/tests/wpt/web-platform-tests/webdriver/tests/support/sync.py index 30de3b3cc75..3fc77131c76 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/sync.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/sync.py @@ -65,9 +65,8 @@ class Poll(object): message if the `until` condition times out. :param ignored_exceptions: Ignore specific types of exceptions - whilst waiting for the condition. Any exceptions not - whitelisted will be allowed to propagate, terminating the - wait. + whilst waiting for the condition. Any exceptions not in this list + will be allowed to propagate, terminating the wait. :param clock: Allows overriding the use of the runtime's default time library. See `sync.SystemClock` for diff --git a/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html b/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html index 40e9f30d170..bb4d52adce5 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html @@ -15,6 +15,9 @@ // makeIceTransport // makeGatherAndStartTwoIceTransports +const ICE_UFRAG = 'u'.repeat(4); +const ICE_PWD = 'p'.repeat(22); + test(() => { const iceTransport = new RTCIceTransport(); }, 'RTCIceTransport constructor does not throw'); @@ -126,8 +129,8 @@ promise_test(async t => { ' servers'); const dummyRemoteParameters = { - usernameFragment: 'dummyUsernameFragment', - password: 'dummyPassword', + usernameFragment: ICE_UFRAG, + password: ICE_PWD, }; test(() => { @@ -142,12 +145,48 @@ test(() => { const iceTransport = new RTCIceTransport(); assert_throws_js(TypeError, () => iceTransport.start({})); assert_throws_js(TypeError, - () => iceTransport.start({ usernameFragment: 'dummy' })); + () => iceTransport.start({ usernameFragment: ICE_UFRAG })); assert_throws_js(TypeError, - () => iceTransport.start({ password: 'dummy' })); + () => iceTransport.start({ password: ICE_PWD })); assert_equals(iceTransport.getRemoteParameters(), null); }, 'start() throws if usernameFragment or password not set'); +test(() => { + const TEST_CASES = [ + {usernameFragment: '2sh', description: 'less than 4 characters long'}, + { + usernameFragment: 'x'.repeat(257), + description: 'greater than 256 characters long', + }, + {usernameFragment: '123\n', description: 'illegal character'}, + ]; + for (const {usernameFragment, description} of TEST_CASES) { + const iceTransport = new RTCIceTransport(); + assert_throws_dom( + 'SyntaxError', + () => iceTransport.start({ usernameFragment, password: ICE_PWD }), + `illegal usernameFragment (${description}) should throw a SyntaxError`); + } +}, 'start() throws if usernameFragment does not conform to syntax'); + +test(() => { + const TEST_CASES = [ + {password: 'x'.repeat(21), description: 'less than 22 characters long'}, + { + password: 'x'.repeat(257), + description: 'greater than 256 characters long', + }, + {password: ('x'.repeat(21) + '\n'), description: 'illegal character'}, + ]; + for (const {password, description} of TEST_CASES) { + const iceTransport = new RTCIceTransport(); + assert_throws_dom( + 'SyntaxError', + () => iceTransport.start({ usernameFragment: ICE_UFRAG, password }), + `illegal password (${description}) should throw a SyntaxError`); + } +}, 'start() throws if password does not conform to syntax'); + const assert_ice_parameters_equals = (a, b) => { assert_equals(a.usernameFragment, b.usernameFragment, 'usernameFragments are equal'); @@ -224,13 +263,13 @@ test(t => { test(t => { const iceTransport = makeIceTransport(t); iceTransport.start({ - usernameFragment: 'user', - password: 'pass', + usernameFragment: '1'.repeat(4), + password: '1'.repeat(22), }); iceTransport.addRemoteCandidate(candidate1); const changedRemoteParameters = { - usernameFragment: 'user2', - password: 'pass', + usernameFragment: '2'.repeat(4), + password: '2'.repeat(22), }; iceTransport.start(changedRemoteParameters); assert_equals(iceTransport.state, 'new'); |