mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Initial Steps OffScreenCanvas API
This commit is contained in:
parent
7400219adf
commit
0f17273276
1437 changed files with 6115 additions and 34 deletions
|
@ -407,6 +407,8 @@ pub mod nodeiterator;
|
||||||
pub mod nodelist;
|
pub mod nodelist;
|
||||||
pub mod offlineaudiocompletionevent;
|
pub mod offlineaudiocompletionevent;
|
||||||
pub mod offlineaudiocontext;
|
pub mod offlineaudiocontext;
|
||||||
|
pub mod offscreencanvas;
|
||||||
|
pub mod offscreencanvasrenderingcontext2d;
|
||||||
pub mod oscillatornode;
|
pub mod oscillatornode;
|
||||||
pub mod pagetransitionevent;
|
pub mod pagetransitionevent;
|
||||||
pub mod paintrenderingcontext2d;
|
pub mod paintrenderingcontext2d;
|
||||||
|
|
146
components/script/dom/offscreencanvas.rs
Normal file
146
components/script/dom/offscreencanvas.rs
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
/* 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 http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use crate::dom::bindings::cell::DomRefCell;
|
||||||
|
use crate::dom::bindings::codegen::Bindings::OffscreenCanvasBinding::{
|
||||||
|
OffscreenCanvasMethods, OffscreenRenderingContext, Wrap as OffscreenCanvasWrap,
|
||||||
|
};
|
||||||
|
use crate::dom::bindings::error::Fallible;
|
||||||
|
use crate::dom::bindings::reflector::reflect_dom_object;
|
||||||
|
use crate::dom::bindings::reflector::DomObject;
|
||||||
|
use crate::dom::bindings::root::{Dom, DomRoot};
|
||||||
|
use crate::dom::bindings::str::DOMString;
|
||||||
|
use crate::dom::eventtarget::EventTarget;
|
||||||
|
use crate::dom::globalscope::GlobalScope;
|
||||||
|
use crate::dom::htmlcanvaselement::HTMLCanvasElement;
|
||||||
|
use crate::dom::offscreencanvasrenderingcontext2d::OffscreenCanvasRenderingContext2D;
|
||||||
|
use dom_struct::dom_struct;
|
||||||
|
use euclid::Size2D;
|
||||||
|
use js::jsapi::JSContext;
|
||||||
|
use js::rust::HandleValue;
|
||||||
|
use ref_filter_map;
|
||||||
|
use std::cell::Cell;
|
||||||
|
use std::cell::Ref;
|
||||||
|
|
||||||
|
#[must_root]
|
||||||
|
#[derive(Clone, JSTraceable, MallocSizeOf)]
|
||||||
|
pub enum OffscreenCanvasContext {
|
||||||
|
OffscreenContext2d(Dom<OffscreenCanvasRenderingContext2D>),
|
||||||
|
//WebGL(Dom<WebGLRenderingContext>),
|
||||||
|
//WebGL2(Dom<WebGL2RenderingContext>),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[dom_struct]
|
||||||
|
pub struct OffscreenCanvas {
|
||||||
|
eventtarget: EventTarget,
|
||||||
|
height: Cell<u64>,
|
||||||
|
width: Cell<u64>,
|
||||||
|
context: DomRefCell<Option<OffscreenCanvasContext>>,
|
||||||
|
placeholder: Option<Dom<HTMLCanvasElement>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OffscreenCanvas {
|
||||||
|
pub fn new_inherited(
|
||||||
|
height: u64,
|
||||||
|
width: u64,
|
||||||
|
placeholder: Option<&HTMLCanvasElement>,
|
||||||
|
) -> OffscreenCanvas {
|
||||||
|
OffscreenCanvas {
|
||||||
|
eventtarget: EventTarget::new_inherited(),
|
||||||
|
height: Cell::new(height),
|
||||||
|
width: Cell::new(width),
|
||||||
|
context: DomRefCell::new(None),
|
||||||
|
placeholder: placeholder.map(Dom::from_ref),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new(
|
||||||
|
global: &GlobalScope,
|
||||||
|
height: u64,
|
||||||
|
width: u64,
|
||||||
|
placeholder: Option<&HTMLCanvasElement>,
|
||||||
|
) -> DomRoot<OffscreenCanvas> {
|
||||||
|
reflect_dom_object(
|
||||||
|
Box::new(OffscreenCanvas::new_inherited(height, width, placeholder)),
|
||||||
|
global,
|
||||||
|
OffscreenCanvasWrap,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Constructor(
|
||||||
|
global: &GlobalScope,
|
||||||
|
height: u64,
|
||||||
|
width: u64,
|
||||||
|
) -> Fallible<DomRoot<OffscreenCanvas>> {
|
||||||
|
let offscreencanvas = OffscreenCanvas::new(global, height, width, None);
|
||||||
|
Ok(offscreencanvas)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_size(&self) -> Size2D<u64> {
|
||||||
|
Size2D::new(self.Width(), self.Height())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn context(&self) -> Option<Ref<OffscreenCanvasContext>> {
|
||||||
|
ref_filter_map::ref_filter_map(self.context.borrow(), |ctx| ctx.as_ref())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unsafe_code)]
|
||||||
|
fn get_or_init_2d_context(&self) -> Option<DomRoot<OffscreenCanvasRenderingContext2D>> {
|
||||||
|
if let Some(ctx) = self.context() {
|
||||||
|
return match *ctx {
|
||||||
|
OffscreenCanvasContext::OffscreenContext2d(ref ctx) => Some(DomRoot::from_ref(ctx)),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let size = self.get_size();
|
||||||
|
let context = OffscreenCanvasRenderingContext2D::new(&self.global(), self, size);
|
||||||
|
*self.context.borrow_mut() = Some(OffscreenCanvasContext::OffscreenContext2d(
|
||||||
|
Dom::from_ref(&*context),
|
||||||
|
));
|
||||||
|
Some(context)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OffscreenCanvasMethods for OffscreenCanvas {
|
||||||
|
// https://html.spec.whatwg.org/multipage/#dom-offscreencanvas-getcontext
|
||||||
|
#[allow(unsafe_code)]
|
||||||
|
unsafe fn GetContext(
|
||||||
|
&self,
|
||||||
|
_cx: *mut JSContext,
|
||||||
|
id: DOMString,
|
||||||
|
_options: HandleValue,
|
||||||
|
) -> Option<OffscreenRenderingContext> {
|
||||||
|
match &*id {
|
||||||
|
"2d" => self
|
||||||
|
.get_or_init_2d_context()
|
||||||
|
.map(OffscreenRenderingContext::OffscreenCanvasRenderingContext2D),
|
||||||
|
/*"webgl" | "experimental-webgl" => self
|
||||||
|
.get_or_init_webgl_context(cx, options)
|
||||||
|
.map(OffscreenRenderingContext::WebGLRenderingContext),
|
||||||
|
"webgl2" | "experimental-webgl2" => self
|
||||||
|
.get_or_init_webgl2_context(cx, options)
|
||||||
|
.map(OffscreenRenderingContext::WebGL2RenderingContext),*/
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/#dom-offscreencanvas-width
|
||||||
|
fn Width(&self) -> u64 {
|
||||||
|
return self.width.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/#dom-offscreencanvas-width
|
||||||
|
fn SetWidth(&self, value: u64) {
|
||||||
|
self.width.set(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/#dom-offscreencanvas-height
|
||||||
|
fn Height(&self) -> u64 {
|
||||||
|
return self.height.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/#dom-offscreencanvas-height
|
||||||
|
fn SetHeight(&self, value: u64) {
|
||||||
|
self.height.set(value);
|
||||||
|
}
|
||||||
|
}
|
55
components/script/dom/offscreencanvasrenderingcontext2d.rs
Normal file
55
components/script/dom/offscreencanvasrenderingcontext2d.rs
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
/* 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 http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use crate::dom::bindings::codegen::Bindings::OffscreenCanvasRenderingContext2DBinding;
|
||||||
|
use crate::dom::bindings::codegen::Bindings::OffscreenCanvasRenderingContext2DBinding::OffscreenCanvasRenderingContext2DMethods;
|
||||||
|
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
|
||||||
|
use crate::dom::bindings::root::{Dom, DomRoot};
|
||||||
|
use crate::dom::globalscope::GlobalScope;
|
||||||
|
use crate::dom::offscreencanvas::OffscreenCanvas;
|
||||||
|
use dom_struct::dom_struct;
|
||||||
|
use euclid::Size2D;
|
||||||
|
|
||||||
|
#[dom_struct]
|
||||||
|
pub struct OffscreenCanvasRenderingContext2D {
|
||||||
|
reflector_: Reflector,
|
||||||
|
canvas: Option<Dom<OffscreenCanvas>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OffscreenCanvasRenderingContext2D {
|
||||||
|
pub fn new_inherited(
|
||||||
|
_global: &GlobalScope,
|
||||||
|
canvas: Option<&OffscreenCanvas>,
|
||||||
|
_size: Size2D<u64>,
|
||||||
|
) -> OffscreenCanvasRenderingContext2D {
|
||||||
|
OffscreenCanvasRenderingContext2D {
|
||||||
|
reflector_: Reflector::new(),
|
||||||
|
canvas: canvas.map(Dom::from_ref),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new(
|
||||||
|
_global: &GlobalScope,
|
||||||
|
canvas: &OffscreenCanvas,
|
||||||
|
_size: Size2D<u64>,
|
||||||
|
) -> DomRoot<OffscreenCanvasRenderingContext2D> {
|
||||||
|
let boxed = Box::new(OffscreenCanvasRenderingContext2D::new_inherited(
|
||||||
|
_global,
|
||||||
|
Some(canvas),
|
||||||
|
_size,
|
||||||
|
));
|
||||||
|
reflect_dom_object(
|
||||||
|
boxed,
|
||||||
|
_global,
|
||||||
|
OffscreenCanvasRenderingContext2DBinding::Wrap,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OffscreenCanvasRenderingContext2DMethods for OffscreenCanvasRenderingContext2D {
|
||||||
|
// https://html.spec.whatwg.org/multipage/offscreencontext2d-canvas
|
||||||
|
fn Canvas(&self) -> DomRoot<OffscreenCanvas> {
|
||||||
|
DomRoot::from_ref(self.canvas.as_ref().expect("No canvas."))
|
||||||
|
}
|
||||||
|
}
|
25
components/script/dom/webidls/OffscreenCanvas.webidl
Normal file
25
components/script/dom/webidls/OffscreenCanvas.webidl
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/* 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 http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/#the-offscreencanvas-interface
|
||||||
|
typedef (OffscreenCanvasRenderingContext2D or WebGLRenderingContext or WebGL2RenderingContext)
|
||||||
|
OffscreenRenderingContext;
|
||||||
|
|
||||||
|
dictionary ImageEncodeOptions {
|
||||||
|
DOMString type = "image/png";
|
||||||
|
unrestricted double quality = 1.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
//enum OffscreenRenderingContextId { "2d", "webgl", "webgl2" };
|
||||||
|
|
||||||
|
[Constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height),
|
||||||
|
Exposed=(Window,Worker)/*, Transferable*/, Pref="dom.offscreen_canvas.enabled"]
|
||||||
|
interface OffscreenCanvas : EventTarget {
|
||||||
|
attribute /*[EnforceRange]*/ unsigned long long width;
|
||||||
|
attribute /*[EnforceRange]*/ unsigned long long height;
|
||||||
|
|
||||||
|
OffscreenRenderingContext? getContext(DOMString contextId, optional any options = null);
|
||||||
|
//ImageBitmap transferToImageBitmap();
|
||||||
|
//Promise<Blob> convertToBlob(optional ImageEncodeOptions options);
|
||||||
|
};
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* 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 http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/#the-offscreen-2d-rendering-context
|
||||||
|
[Exposed=(Window,Worker), Pref="dom.offscreen_canvas.enabled"]
|
||||||
|
interface OffscreenCanvasRenderingContext2D {
|
||||||
|
//void commit();
|
||||||
|
readonly attribute OffscreenCanvas canvas;
|
||||||
|
};
|
||||||
|
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasState;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasTransform;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasCompositing;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasShadowStyles;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasFilters;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasRect;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasDrawPath;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasText;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasDrawImage;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasImageData;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles;
|
||||||
|
//OffscreenCanvasRenderingContext2D includes CanvasPath;
|
|
@ -9,6 +9,7 @@
|
||||||
"dom.microdata.testing.enabled": true,
|
"dom.microdata.testing.enabled": true,
|
||||||
"dom.mouseevent.which.enabled": false,
|
"dom.mouseevent.which.enabled": false,
|
||||||
"dom.mutation_observer.enabled": true,
|
"dom.mutation_observer.enabled": true,
|
||||||
|
"dom.offscreen_canvas.enabled": false,
|
||||||
"dom.permissions.enabled": false,
|
"dom.permissions.enabled": false,
|
||||||
"dom.permissions.testing.allowed_in_nonsecure_contexts": false,
|
"dom.permissions.testing.allowed_in_nonsecure_contexts": false,
|
||||||
"dom.serviceworker.timeout_seconds": 60,
|
"dom.serviceworker.timeout_seconds": 60,
|
||||||
|
|
|
@ -97,6 +97,8 @@ skip: true
|
||||||
skip: false
|
skip: false
|
||||||
[navigation-timing]
|
[navigation-timing]
|
||||||
skip: false
|
skip: false
|
||||||
|
[offscreen-canvas]
|
||||||
|
skip: false
|
||||||
[old-tests]
|
[old-tests]
|
||||||
skip: true
|
skip: true
|
||||||
[submission]
|
[submission]
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[floats-in-table-caption-001.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +1,2 @@
|
||||||
[abspos-float-with-inline-container.html]
|
[abspos-float-with-inline-container.html]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
2
tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini
Normal file
2
tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[white-space-002.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[line-height-204.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mix-blend-mode-paragraph.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[background-repeat-round-roundup.xht]
|
||||||
|
expected: FAIL
|
|
@ -182,9 +182,6 @@
|
||||||
[Matching font-style: 'oblique 20deg' should prefer 'oblique 40deg 50deg' over 'oblique 10deg']
|
[Matching font-style: 'oblique 20deg' should prefer 'oblique 40deg 50deg' over 'oblique 10deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-style: 'oblique 20deg' should prefer 'oblique 10deg' over 'italic']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
|
[Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -248,9 +245,6 @@
|
||||||
[Matching font-style: 'oblique 21deg' should prefer 'oblique 21deg' over 'oblique 30deg 60deg']
|
[Matching font-style: 'oblique 21deg' should prefer 'oblique 21deg' over 'oblique 30deg 60deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-style: 'oblique 21deg' should prefer 'oblique 40deg 50deg' over 'oblique 20deg']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-style: 'oblique -10deg' should prefer 'oblique -5deg' over 'oblique -1deg 0deg']
|
[Matching font-style: 'oblique -10deg' should prefer 'oblique -5deg' over 'oblique -1deg 0deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
[Test @font-face matching for weight 470]
|
[Test @font-face matching for weight 470]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Test @font-face matching for weight 500]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Test @font-face matching for weight 600]
|
[Test @font-face matching for weight 600]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[line-break-normal-018.xht]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[line-break-strict-018.xht]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[text-transform-full-size-kana-001.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[text-transform-full-size-kana-002.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[text-transform-full-size-kana-003.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[text-transform-full-size-kana-004.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[trailing-ideographic-space-004.html]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[word-break-keep-all-006.html]
|
||||||
|
expected: FAIL
|
|
@ -74,3 +74,6 @@
|
||||||
[opacity end]
|
[opacity end]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width end]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[parser-sets-attributes-and-children.html]
|
[parser-sets-attributes-and-children.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
|
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
|
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
|
@ -4,34 +4,49 @@
|
||||||
|
|
||||||
[transfer-errors]
|
[transfer-errors]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should make the ArrayBuffer detached, so it cannot be transferred again]
|
[Serialize should make the ArrayBuffer detached, so it cannot be transferred again]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should throw before a detached ArrayBuffer is found]
|
[Serialize should throw before a detached ArrayBuffer is found]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot transfer ArrayBuffer detached while the message was serialized]
|
[Cannot transfer ArrayBuffer detached while the message was serialized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot transfer the same MessagePort twice]
|
[Cannot transfer the same MessagePort twice]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should make the MessagePort detached, so it cannot be transferred again]
|
[Serialize should make the MessagePort detached, so it cannot be transferred again]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should throw before a detached MessagePort is found]
|
[Serialize should throw before a detached MessagePort is found]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot transfer MessagePort detached while the message was serialized]
|
[Cannot transfer MessagePort detached while the message was serialized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot transfer the same ImageBitmap twice]
|
[Cannot transfer the same ImageBitmap twice]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should make the ImageBitmap detached, so it cannot be transferred again]
|
[Serialize should make the ImageBitmap detached, so it cannot be transferred again]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should throw before a detached ImageBitmap is found]
|
[Serialize should throw before a detached ImageBitmap is found]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot transfer ImageBitmap detached while the message was serialized]
|
[Cannot transfer ImageBitmap detached while the message was serialized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
[Cannot transfer the same OffscreenCanvas twice]
|
|
||||||
expected: FAIL
|
|
||||||
[Serialize should make the OffscreenCanvas detached, so it cannot be transferred again]
|
[Serialize should make the OffscreenCanvas detached, so it cannot be transferred again]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Serialize should throw before a detached OffscreenCanvas is found]
|
[Serialize should throw before a detached OffscreenCanvas is found]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Cannot transfer the same OffscreenCanvas twice]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot transfer OffscreenCanvas detached while the message was serialized]
|
[Cannot transfer OffscreenCanvas detached while the message was serialized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
2
tests/wpt/metadata/offscreen-canvas/__dir__.ini
Normal file
2
tests/wpt/metadata/offscreen-canvas/__dir__.ini
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
prefs: ["dom.offscreen_canvas.enabled:true"]
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.copy.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.copy.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-atop.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-atop.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-in.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-in.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-out.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-out.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-over.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.destination-over.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.lighter.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.lighter.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-atop.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-atop.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-in.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-in.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-out.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-out.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-over.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.source-over.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.xor.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.clip.xor.worker.html]
|
||||||
|
[fill() does not affect pixels outside the clip region.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.canvas.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.canvas]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.canvas.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.canvascopy.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.canvascopy]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.canvascopy.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.canvaspattern.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.canvaspattern]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.canvaspattern.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.default.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.default]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.default.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.fill.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.fill]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.fill.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.image.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.image]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.image.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.imagepattern.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.imagepattern]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.imagepattern.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.invalid.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.invalid.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.range.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.globalAlpha.range]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.globalAlpha.range.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.copy.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.copy]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.copy.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-atop.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.destination-atop]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-atop.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-in.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.destination-in]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-in.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-out.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.destination-out]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-out.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-over.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.destination-over]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.destination-over.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.lighter.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.lighter]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.lighter.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-atop.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.source-atop]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-atop.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-in.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.source-in]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-in.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-out.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.source-out]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-out.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-over.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.source-over]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.source-over.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.xor.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.image.xor]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.image.xor.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.casesensitive.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.operation.casesensitive]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.casesensitive.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.darker.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.operation.darker]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.darker.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.default.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.operation.default]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.default.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.highlight.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.operation.highlight]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.highlight.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.composite.operation.nullsuffix.html]
|
||||||
|
[OffscreenCanvas test: 2d.composite.operation.nullsuffix]
|
||||||
|
expected: FAIL
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue