mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00: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 offlineaudiocompletionevent;
|
||||
pub mod offlineaudiocontext;
|
||||
pub mod offscreencanvas;
|
||||
pub mod offscreencanvasrenderingcontext2d;
|
||||
pub mod oscillatornode;
|
||||
pub mod pagetransitionevent;
|
||||
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.mouseevent.which.enabled": false,
|
||||
"dom.mutation_observer.enabled": true,
|
||||
"dom.offscreen_canvas.enabled": false,
|
||||
"dom.permissions.enabled": false,
|
||||
"dom.permissions.testing.allowed_in_nonsecure_contexts": false,
|
||||
"dom.serviceworker.timeout_seconds": 60,
|
||||
|
|
|
@ -97,6 +97,8 @@ skip: true
|
|||
skip: false
|
||||
[navigation-timing]
|
||||
skip: false
|
||||
[offscreen-canvas]
|
||||
skip: false
|
||||
[old-tests]
|
||||
skip: true
|
||||
[submission]
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[floats-in-table-caption-001.html]
|
||||
expected: FAIL
|
|
@ -1,2 +1,2 @@
|
|||
[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']
|
||||
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']
|
||||
expected: FAIL
|
||||
|
||||
|
@ -248,9 +245,6 @@
|
|||
[Matching font-style: 'oblique 21deg' should prefer 'oblique 21deg' over 'oblique 30deg 60deg']
|
||||
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']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
[Test @font-face matching for weight 470]
|
||||
expected: FAIL
|
||||
|
||||
[Test @font-face matching for weight 500]
|
||||
expected: FAIL
|
||||
|
||||
[Test @font-face matching for weight 600]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width end]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[parser-sets-attributes-and-children.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -4,34 +4,49 @@
|
|||
|
||||
[transfer-errors]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should make the ArrayBuffer detached, so it cannot be transferred again]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should throw before a detached ArrayBuffer is found]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer ArrayBuffer detached while the message was serialized]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer the same MessagePort twice]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should make the MessagePort detached, so it cannot be transferred again]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should throw before a detached MessagePort is found]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer MessagePort detached while the message was serialized]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer the same ImageBitmap twice]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should make the ImageBitmap detached, so it cannot be transferred again]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should throw before a detached ImageBitmap is found]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer ImageBitmap detached while the message was serialized]
|
||||
expected: FAIL
|
||||
[Cannot transfer the same OffscreenCanvas twice]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should make the OffscreenCanvas detached, so it cannot be transferred again]
|
||||
expected: FAIL
|
||||
|
||||
[Serialize should throw before a detached OffscreenCanvas is found]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer the same OffscreenCanvas twice]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot transfer OffscreenCanvas detached while the message was serialized]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[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]
|
||||
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