diff --git a/.gitignore b/.gitignore index 9dde417c9c999..35b7815ab7e38 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ Servo.app .config.mk.last /glfw +capture_webrender/ # Editors diff --git a/.travis.yml b/.travis.yml index 56f688adaa313..0f19ada7e32ad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ matrix: script: - ./mach test-tidy --no-progress --all - ./mach test-tidy --no-progress --self-test + - python ./etc/memory_reports_over_time.py --test - bash etc/ci/check_no_panic.sh - bash etc/ci/manifest_changed.sh cache: false diff --git a/Cargo.lock b/Cargo.lock index 24dcf44e6bc74..3b9407c176d09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -96,7 +96,7 @@ name = "backtrace" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -107,10 +107,10 @@ dependencies = [ [[package]] name = "backtrace-sys" -version = "0.1.11" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -130,7 +130,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bincode" -version = "0.9.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -180,18 +180,18 @@ dependencies = [ "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "bluetooth_traits 0.0.1", "device 0.0.1 (git+https://github.com/servo/devices)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "servo_config 0.0.1", "servo_rand 0.0.1", - "tinyfiledialogs 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyfiledialogs 3.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bluetooth_traits" version = "0.0.1" dependencies = [ - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "servo_config 0.0.1", @@ -252,8 +252,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.3.0" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "canvas" @@ -266,7 +270,7 @@ dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "offscreen_gl_context 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -281,7 +285,7 @@ version = "0.0.1" dependencies = [ "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "malloc_size_of_derive 0.0.1", @@ -305,9 +309,6 @@ dependencies = [ name = "cc" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "cexpr" @@ -417,7 +418,7 @@ dependencies = [ "gfx_traits 0.0.1", "gleam 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -451,7 +452,7 @@ dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "layout_traits 0.0.1", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -655,7 +656,7 @@ name = "debugger" version = "0.0.1" dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "ws 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -700,7 +701,7 @@ dependencies = [ "devtools_traits 0.0.1", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", @@ -715,7 +716,7 @@ dependencies = [ "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "malloc_size_of_derive 0.0.1", "msg 0.0.1", @@ -883,7 +884,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -898,7 +899,7 @@ source = "git+https://github.com/servo/fontsan#29e879c870348c4b3fd51086e42dbb636 dependencies = [ "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -923,6 +924,20 @@ dependencies = [ "servo-freetype-sys 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "futf" version = "0.1.3" @@ -947,14 +962,9 @@ source = "git+https://github.com/servo/gaol#227ff0bae1eb1b44a273c6c5610debfe2149 dependencies = [ "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "gcc" -version = "0.3.47" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "gdi32-sys" version = "0.2.0" @@ -976,7 +986,7 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "nsstring 0.1.0", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.19.0", "servo_arc 0.1.1", "smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1006,7 +1016,7 @@ dependencies = [ "freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "harfbuzz-sys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1134,7 +1144,7 @@ name = "hashglobe" version = "0.1.0" dependencies = [ "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1286,7 +1296,7 @@ dependencies = [ [[package]] name = "iovec" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1295,17 +1305,17 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1389,14 +1399,14 @@ dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", "html5ever 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "msg 0.0.1", "net_traits 0.0.1", "ordered-float 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "profile_traits 0.0.1", "range 0.0.1", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1431,7 +1441,7 @@ dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", "html5ever 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "layout 0.0.1", "layout_traits 0.0.1", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1441,7 +1451,7 @@ dependencies = [ "metrics 0.0.1", "msg 0.0.1", "net_traits 0.0.1", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "profile_traits 0.0.1", "range 0.0.1", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1466,7 +1476,7 @@ name = "layout_traits" version = "0.0.1" dependencies = [ "gfx 0.0.1", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "metrics 0.0.1", "msg 0.0.1", "net_traits 0.0.1", @@ -1488,7 +1498,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazycell" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1544,7 +1554,7 @@ dependencies = [ "gaol 0.0.1 (git+https://github.com/servo/gaol)", "gfx 0.0.1", "gleam 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "layout_thread 0.0.1", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -1620,7 +1630,7 @@ dependencies = [ "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashglobe 0.1.0", - "mozjs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mozjs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.19.0", "servo_arc 0.1.1", "smallbitvec 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1696,7 +1706,7 @@ name = "metrics" version = "0.0.1" dependencies = [ "gfx_traits 0.0.1", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "malloc_size_of_derive 0.0.1", @@ -1714,7 +1724,7 @@ version = "0.0.1" dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "metrics 0.0.1", "msg 0.0.1", "net_traits 0.0.1", @@ -1745,21 +1755,23 @@ dependencies = [ [[package]] name = "miniz-sys" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio" -version = "0.6.9" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1786,7 +1798,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "mozangle" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1795,7 +1807,7 @@ dependencies = [ [[package]] name = "mozjs" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1856,7 +1868,7 @@ dependencies = [ "hyper-openssl 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "immeta 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1868,15 +1880,15 @@ dependencies = [ "profile_traits 0.0.1", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "servo-websocket 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "servo-websocket 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "servo_config 0.0.1", "servo_url 0.0.1", "threadpool 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "tinyfiledialogs 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyfiledialogs 3.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_api 0.57.0 (git+https://github.com/servo/webrender)", ] @@ -1900,7 +1912,7 @@ dependencies = [ "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", @@ -1911,7 +1923,7 @@ dependencies = [ "servo_config 0.0.1", "servo_url 0.0.1", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_api 0.57.0 (git+https://github.com/servo/webrender)", ] @@ -2111,23 +2123,22 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.4.8" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot_core" -version = "0.2.7" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2163,7 +2174,7 @@ version = "0.7.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2226,7 +2237,7 @@ version = "0.0.1" dependencies = [ "heartbeats-simple 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "influent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "jemalloc-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2243,7 +2254,7 @@ dependencies = [ name = "profile_tests" version = "0.0.1" dependencies = [ - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "profile 0.0.1", "profile_traits 0.0.1", "servo_allocator 0.0.1", @@ -2255,7 +2266,7 @@ version = "0.0.1" dependencies = [ "energy-monitor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "energymon 0.3.0 (git+https://github.com/energymon/energymon-rust.git)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "servo_config 0.0.1", @@ -2278,10 +2289,22 @@ dependencies = [ [[package]] name = "rand" -version = "0.3.15" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2312,7 +2335,7 @@ dependencies = [ "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2355,6 +2378,14 @@ name = "regex-syntax" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ron" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rust-webvr" version = "0.9.10" @@ -2450,7 +2481,7 @@ dependencies = [ "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "jstraceable_derive 0.0.1", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2461,13 +2492,13 @@ dependencies = [ "mime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mozangle 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mozjs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mozangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mozjs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "offscreen_gl_context 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2493,11 +2524,11 @@ dependencies = [ "style_traits 0.0.1", "swapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "tinyfiledialogs 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyfiledialogs 3.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "utf-8 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_api 0.57.0 (git+https://github.com/servo/webrender)", "webvr_traits 0.0.1", "xml5ever 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2514,7 +2545,7 @@ dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "html5ever 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", @@ -2567,7 +2598,7 @@ dependencies = [ "gfx_traits 0.0.1", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "malloc_size_of_derive 0.0.1", @@ -2677,10 +2708,12 @@ dependencies = [ "servo_url 0.0.1", "sig 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "style_traits 0.0.1", - "tinyfiledialogs 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyfiledialogs 3.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_api 0.57.0 (git+https://github.com/servo/webrender)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winit 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winres 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "x11 2.17.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2742,16 +2775,15 @@ dependencies = [ [[package]] name = "servo-websocket" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2809,6 +2841,7 @@ dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "malloc_size_of_derive 0.0.1", + "style_traits 0.0.1", "webrender_api 0.57.0 (git+https://github.com/servo/webrender)", ] @@ -2818,7 +2851,8 @@ version = "0.0.1" dependencies = [ "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2840,7 +2874,7 @@ dependencies = [ "servo_rand 0.0.1", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2969,7 +3003,7 @@ dependencies = [ "num_cpus 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "ordered-float 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3012,7 +3046,7 @@ dependencies = [ "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.19.0", "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3111,7 +3145,7 @@ dependencies = [ name = "task_info" version = "0.0.1" dependencies = [ - "gcc 0.3.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3121,7 +3155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3195,10 +3229,10 @@ dependencies = [ [[package]] name = "tinyfiledialogs" -version = "3.0.4" +version = "3.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3340,10 +3374,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "uuid" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3458,7 +3493,7 @@ dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -3468,17 +3503,18 @@ dependencies = [ "servo_config 0.0.1", "servo_url 0.0.1", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "webdriver 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "webrender" version = "0.57.0" -source = "git+https://github.com/servo/webrender#159ae52ef56ef4ba545f175769c9011ef194386f" +source = "git+https://github.com/servo/webrender#9c994b0cca8c1abc24fdf487df950954bebb62a7" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3489,31 +3525,36 @@ dependencies = [ "freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "plane-split 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ron 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "thread_profiler 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_api 0.57.0 (git+https://github.com/servo/webrender)", + "ws 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "webrender_api" version = "0.57.0" -source = "git+https://github.com/servo/webrender#159ae52ef56ef4ba545f175769c9011ef194386f" +source = "git+https://github.com/servo/webrender#9c994b0cca8c1abc24fdf487df950954bebb62a7" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "dwrote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3525,7 +3566,7 @@ version = "0.0.1" dependencies = [ "canvas_traits 0.0.1", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rust-webvr 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3538,7 +3579,7 @@ dependencies = [ name = "webvr_traits" version = "0.0.1" dependencies = [ - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rust-webvr-api 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3602,16 +3643,25 @@ dependencies = [ "x11-dl 2.17.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "winres" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ws" -version = "0.6.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3707,10 +3757,10 @@ dependencies = [ "checksum audio-video-metadata 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "71536082079f5ba92c274fba7c2dcd4e2f9d5c13ce6d7f8fe9acbbb258916d18" "checksum azure 0.28.0 (git+https://github.com/servo/rust-azure)" = "" "checksum backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72f9b4182546f4b04ebc4ab7f84948953a118bd6021a1b6a6c909e3e94f6be76" -"checksum backtrace-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "3a0d842ea781ce92be2bf78a9b38883948542749640b8378b3b2f03d1fd9f1ff" +"checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" "checksum binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88ceb0d16c4fd0e42876e298d7d3ce3780dd9ebdcbe4199816a32c77e08597ff" -"checksum bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9a6301db0b49fb63551bc15b5ae348147101cdf323242b93ec7546d5002ff1af" +"checksum bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bda13183df33055cbb84b847becce220d392df502ebe7a4a78d7021771ed94d0" "checksum bindgen 0.33.2 (registry+https://github.com/rust-lang/crates.io-index)" = "603ed8d8392ace9581e834e26bd09799bf1e989a79bd1aedbb893e72962bdc6e" "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" "checksum bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5cde24d1b2e2216a726368b2363a273739c91f4e3eb4e0dd12d672d396ad989" @@ -3723,7 +3773,7 @@ dependencies = [ "checksum brotli 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fe87b40996b84fdc56e57c165d93079f4b50cb806598118e692ddfaa3d3c57c0" "checksum brotli-decompressor 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "313f4b6cc0b365d6b88eda5aa40175ee34ac6efa9a79e0b3b8202eca90247ba8" "checksum byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "652805b7e73fada9d85e9a6682a4abd490cb52d96aeecc12e33a0de34dfd0d23" -"checksum bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c129aff112dcc562970abb69e2508b40850dd24c274761bb50fb8a0067ba6c27" +"checksum bytes 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1b7db437d718977f6dc9b2e3fd6fc343c02ac6b899b73fdd2179163447bd9ce9" "checksum caseless 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3261638034d9db4f94a666ebb16494846341ae5a8456c05c1616d66980cf39a" "checksum cc 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9be26b24e988625409b19736d130f0c7d224f01d06454b5f81d8d23d6c1a618f" "checksum cexpr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393a5f0088efbe41f9d1fcd062f24e83c278608420e62109feb2c8abee07de7d" @@ -3779,10 +3829,11 @@ dependencies = [ "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" "checksum freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "398b8a11884898184d55aca9806f002b3cf68f0e860e0cbb4586f834ee39b0e7" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futf 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "51f93f3de6ba1794dcd5810b3546d004600a59a98266487c8407bc4b24e398f3" "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" "checksum gaol 0.0.1 (git+https://github.com/servo/gaol)" = "" -"checksum gcc 0.3.47 (registry+https://github.com/rust-lang/crates.io-index)" = "5773372df827453bc38d4fd8efe425c7f28b1f54468816183fc8716cfb90bd30" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" "checksum getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9047cfbd08a437050b363d35ef160452c5fe8ea5187ae0a624708c91581d685" "checksum gif 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8a80d6fe9e52f637df9afd4779449a7be17c39cc9c35b01589bb833f956ba596" @@ -3808,8 +3859,8 @@ dependencies = [ "checksum inflate 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "10ec05638adf7c5c788bc0cfa608cd479a13572beda20feb4898fe1d85d2c64b" "checksum influent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a22b311b83431be3ab9af96ca9ea41554bb4a8551ea871ae44c3ce0c57e55f2c" "checksum io-surface 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "623ace1e5f7de3512ec45302572a72349fdadcbef650c3dfc5d8244209be7653" -"checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be" -"checksum ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c10ed089b1921b01ef342c736a37ee0788eeb9a5f373bb2df1ba88d01125064f" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db9daf099728ac5390c73f54e6e3708f0c514d2b51f24373830f568702eadfca" "checksum itertools 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b07332223953b5051bceb67e8c4700aa65291535568e1f12408c43c4a42c0394" "checksum itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb2f404fbc66fd9aac13e998248505e7ecb2ad8e44ab6388684c5fb11c6c251c" "checksum jemalloc-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "479294d130502fada93c7a957e8d059b632b03d6204aca37af557dee947f30a9" @@ -3820,7 +3871,7 @@ dependencies = [ "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" -"checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b" +"checksum lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a6f08839bc70ef4a3fe1d566d5350f519c5912ea86be0df1740a7d247c7fc0ef" "checksum leak 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bd100e01f1154f2908dfa7d02219aeab25d0b9c7fa955164192e3245255a0c73" "checksum leaky-cow 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40a8225d44241fd324a8af2806ba635fc7c8a7e9a7de4d5cf3ef54e71f5926fc" "checksum libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)" = "f54263ad99207254cf58b5f701ecb432c717445ea2ee8af387334bdd1a03fdff" @@ -3839,12 +3890,12 @@ dependencies = [ "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum mime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9d69889cdc6336ed56b174514ce876c4c3dc564cc23dd872e7bca589bb2a36c8" "checksum mime_guess 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76da6df85047af8c0edfa53f48eb1073012ce1cc95c8fedc0a374f659a89dd65" -"checksum miniz-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "28eaee17666671fa872e567547e8428e83308ebe5808cdf6a0e28397dbe2c726" -"checksum mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9e965267d4d58496fc4f740e9861118367f13570cadf66316ed2c3f2f14d87c7" +"checksum miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4" +"checksum mio 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "75f72a93f046f1517e3cfddc0a096eb756a2ba727d36edc8227dee769a50a9b0" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9de3eca27871df31c33b807f834b94ef7d000956f57aa25c5aed9c5f0aae8f6f" -"checksum mozangle 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4d916e4f2d39a00eeeb082ceb7c63c741e7c9d4f7915945f9225ae5e3b284092" -"checksum mozjs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "79645a302ffcef7ca2673ff4db4d4273b87671dd0de4d53da889b664dd555e74" +"checksum mozangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1f0583e6792917f498bb3a7440f777a59353102063445ab7f5e9d1dc4ed593aa" +"checksum mozjs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "53720714c395cbc3b8f31411ca855a97c51618c76fa5584654a0e3e2ecfc16cc" "checksum mozjs_sys 0.50.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e61a792a125b1364c5ec50255ed8343ce02dc56098f8868dd209d472c8de006a" "checksum mp3-metadata 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ab5f1d2693586420208d1200ce5a51cd44726f055b635176188137aff42c7de" "checksum mp4parse 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f821e3799bc0fd16d9b861fb02fa7ee1b5fba29f45ad591dade105c48ca9a1a0" @@ -3870,8 +3921,8 @@ dependencies = [ "checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" "checksum ovr-mobile-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a69b517feac6fc640f0679625defa0998bbcb32871a6901e63063c2abf9c4cbe" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" -"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" -"checksum parking_lot_core 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6c677d78851950b3aec390e681a411f78cc250cba277d4f578758a377f727970" +"checksum parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd9d732f2de194336fb02fe11f9eed13d9e76f13f4315b4d88a14ca411750cd" +"checksum parking_lot_core 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "538ef00b7317875071d5e00f603f24d16f0b474c1a5fc0ccb8b454ca72eafa79" "checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" "checksum percent-encoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356" "checksum phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "cb325642290f28ee14d8c6201159949a872f220c62af6e110a56ea914fbe42fc" @@ -3886,7 +3937,8 @@ dependencies = [ "checksum procedural-masquerade 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c93cdc1fb30af9ddf3debc4afbdb0f35126cbd99daa229dd76cdd5349b41d989" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eca14c727ad12702eb4b6bfb5a232287dcf8385cb8ca83a3eeaf6519c44c408" -"checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" +"checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" +"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" "checksum rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "485541959c8ecc49865526fe6c4de9653dd6e60d829d6edf0be228167b60372d" "checksum rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d24ad214285a7729b174ed6d3bcfcb80177807f959d95fafd5bfc5c4f201ac8" "checksum redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "29dbdfd4b9df8ab31dec47c6087b7b13cbf4a776f335e4de8efba8288dda075b" @@ -3895,6 +3947,7 @@ dependencies = [ "checksum ref_slice 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "825740057197b7d43025e7faf6477eaabc03434e153233da02d1f44602f71527" "checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" "checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" +"checksum ron 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "da06feaa07f69125ab9ddc769b11de29090122170b402547f64b86fe16ebc399" "checksum rust-webvr 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "9629ce5b5c3cda05259d225e639851daf39c55c170358d3056205dd205deaab2" "checksum rust-webvr-api 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "712e22ba3c03a7075b40842ae91029a0ab96a81f95e97c0cf623800ec0cbac07" "checksum rustc-demangle 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3058a43ada2c2d0b92b3ae38007a2d0fa5e9db971be260e0171408a4ff471c95" @@ -3915,7 +3968,7 @@ dependencies = [ "checksum servo-fontconfig-sys 4.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "38b494f03009ee81914b0e7d387ad7c145cafcd69747c2ec89b0e17bb94f303a" "checksum servo-freetype-sys 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9232032c2e85118c0282c6562c84cab12316e655491ba0a5d1905b2320060d1b" "checksum servo-skia 0.30000013.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3fb707c7dc3d8a053b8c9d48ed9eb7f2a0c0751616dfbe3598f526948408bc33" -"checksum servo-websocket 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efde78dfcf2178d5a11e1e2268e0d8df0627dfe2724546db8585d6678e1af150" +"checksum servo-websocket 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6bac1e2295e72f0525147d993c626761811acf0441dac1cee8707f12dc7f3363" "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" "checksum shared_library 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb04126b6fcfd2710fb5b6d18f4207b6c535f2850a7e1a43bcd526d44f30a79a" "checksum sig 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c6649e43c1a1e68d29ed56d0dc3b5b6cf3b901da77cf107c4066b9e3da036df5" @@ -3944,7 +3997,7 @@ dependencies = [ "checksum thread_profiler 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5920e77802b177479ab5795767fa48e68f61b2f516c2ac0041e2978dd8efe483" "checksum threadpool 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "59f6d3eff89920113dac9db44dde461d71d01e88a5b57b258a0466c32b5d7fe1" "checksum time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "ffd7ccbf969a892bf83f1e441126968a07a3941c24ff522a26af9f9f4585d1a3" -"checksum tinyfiledialogs 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d92a5f7395a9e2895a2361c3121d4a0be0f8dac3be7d91841a5c1c5291b1c6dc" +"checksum tinyfiledialogs 3.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d79833ca2c493c726ea6a7b651ba0ff8a790add5156cd11bf3743f346005c0c8" "checksum token_store 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a686838375fc11103b9c1529c6508320b7bd5e2401cd62831ca51b3e82e61849" "checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" @@ -3965,7 +4018,7 @@ dependencies = [ "checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" "checksum utf-8 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6f923c601c7ac48ef1d66f7d5b5b2d9a7ba9c51333ab75a3ddf8d0309185a56" "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" -"checksum uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5d0f5103675a280a926ec2f9b7bcc2ef49367df54e8c570c3311fec919f9a8b" +"checksum uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4670e1e935f7edd193a413f802e2ee52274aed62a09ccaab1656515c9c53a66" "checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b" "checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" @@ -3986,7 +4039,8 @@ dependencies = [ "checksum winapi-i686-pc-windows-gnu 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ec6667f60c23eca65c561e63a13d81b44234c2e38a6b6c959025ee907ec614cc" "checksum winapi-x86_64-pc-windows-gnu 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98f12c52b2630cd05d2c3ffd8e008f7f48252c042b4871c72aed9dc733b96668" "checksum winit 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "396f0350e661940359e3c8c7d58ff847f67997943e2c80ecac374c5aa8287f63" -"checksum ws 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "04614a58714f3fd4a8b1da4bcae9f031c532d35988c3d39627619248113f8be8" +"checksum winres 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "27d9192d6356d7efe8405dec6c5506b67543cf64b6049968f39f4c4623b4f25d" +"checksum ws 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "89c48c53bf9dee34411a08993c10b879c36e105d609b46e25673befe3a5c1320" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum x11 2.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e5c4ac579b5d324dc4add02312b5d0e3e0218521e2d5779d526ac39ee4bb171" "checksum x11-clipboard 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2e7374c7699210cca7084ca61d57e09640fc744d1391808cb9ae2fe4ca9bd1df" diff --git a/components/bluetooth/Cargo.toml b/components/bluetooth/Cargo.toml index 3fd11443d8c1a..53784d13e9c4f 100644 --- a/components/bluetooth/Cargo.toml +++ b/components/bluetooth/Cargo.toml @@ -13,10 +13,10 @@ path = "lib.rs" bitflags = "1.0" bluetooth_traits = {path = "../bluetooth_traits"} device = {git = "https://github.com/servo/devices", features = ["bluetooth-test"]} -ipc-channel = "0.9" +ipc-channel = "0.10" servo_config = {path = "../config"} servo_rand = {path = "../rand"} -uuid = {version = "0.5", features = ["v4"]} +uuid = {version = "0.6", features = ["v4"]} [target.'cfg(target_os = "linux")'.dependencies] tinyfiledialogs = "3.0" diff --git a/components/bluetooth_traits/Cargo.toml b/components/bluetooth_traits/Cargo.toml index cb4009644cc36..52b01c33c6736 100644 --- a/components/bluetooth_traits/Cargo.toml +++ b/components/bluetooth_traits/Cargo.toml @@ -10,7 +10,7 @@ name = "bluetooth_traits" path = "lib.rs" [dependencies] -ipc-channel = "0.9" +ipc-channel = "0.10" regex = "0.2" serde = "1.0" servo_config = {path = "../config"} diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index 0c30044010a86..604fb4e16aa98 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -17,7 +17,7 @@ cssparser = "0.23.0" euclid = "0.17" fnv = "1.0" gleam = "0.4" -ipc-channel = "0.9" +ipc-channel = "0.10" log = "0.3.5" num-traits = "0.1.32" offscreen_gl_context = { version = "0.15", features = ["serde", "osmesa"] } diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs index 8e7e267866eb5..9b2b47739e3c3 100644 --- a/components/canvas/canvas_paint_thread.rs +++ b/components/canvas/canvas_paint_thread.rs @@ -63,6 +63,7 @@ pub struct CanvasPaintThread<'a> { old_image_key: Option, /// An old webrender image key that can be deleted when the current epoch ends. very_old_image_key: Option, + canvas_id: CanvasId, } #[derive(Clone)] @@ -98,7 +99,8 @@ impl<'a> CanvasPaintState<'a> { impl<'a> CanvasPaintThread<'a> { fn new(size: Size2D, webrender_api_sender: webrender_api::RenderApiSender, - antialias: AntialiasMode) -> CanvasPaintThread<'a> { + antialias: AntialiasMode, + canvas_id: CanvasId) -> CanvasPaintThread<'a> { let draw_target = CanvasPaintThread::create(size); let path_builder = draw_target.create_path_builder(); let webrender_api = webrender_api_sender.create_api(); @@ -111,6 +113,7 @@ impl<'a> CanvasPaintThread<'a> { image_key: None, old_image_key: None, very_old_image_key: None, + canvas_id: canvas_id, } } @@ -118,7 +121,8 @@ impl<'a> CanvasPaintThread<'a> { /// communicate with it. pub fn start(size: Size2D, webrender_api_sender: webrender_api::RenderApiSender, - antialias: bool) + antialias: bool, + canvas_id: CanvasId) -> IpcSender { let (sender, receiver) = ipc::channel::().unwrap(); let antialias = if antialias { @@ -127,11 +131,12 @@ impl<'a> CanvasPaintThread<'a> { AntialiasMode::None }; thread::Builder::new().name("CanvasThread".to_owned()).spawn(move || { - let mut painter = CanvasPaintThread::new(size, webrender_api_sender, antialias); + let mut painter = CanvasPaintThread::new(size, webrender_api_sender, antialias, canvas_id); loop { let msg = receiver.recv(); match msg.unwrap() { - CanvasMsg::Canvas2d(message) => { + CanvasMsg::Canvas2d(message, canvas_id) => { + assert!(canvas_id == painter.canvas_id); match message { Canvas2dMsg::FillText(text, x, y, max_width) => painter.fill_text(text, x, y, max_width), Canvas2dMsg::FillRect(ref rect) => painter.fill_rect(rect), @@ -153,10 +158,10 @@ impl<'a> CanvasPaintThread<'a> { painter.draw_image_self(image_size, dest_rect, source_rect, smoothing_enabled) } Canvas2dMsg::DrawImageInOther( - renderer, image_size, dest_rect, source_rect, smoothing, sender + renderer, other_canvas_id, image_size, dest_rect, source_rect, smoothing, sender ) => { painter.draw_image_in_other( - renderer, image_size, dest_rect, source_rect, smoothing, sender) + renderer, other_canvas_id, image_size, dest_rect, source_rect, smoothing, sender) } Canvas2dMsg::MoveTo(ref point) => painter.move_to(point), Canvas2dMsg::LineTo(ref point) => painter.line_to(point), @@ -197,22 +202,29 @@ impl<'a> CanvasPaintThread<'a> { Canvas2dMsg::SetShadowColor(ref color) => painter.set_shadow_color(color.to_azure_style()), } }, - CanvasMsg::Close => break, - CanvasMsg::Recreate(size) => painter.recreate(size), - CanvasMsg::FromScript(message) => { + CanvasMsg::Close(canvas_id) =>{ + assert!(canvas_id == painter.canvas_id); + break; + }, + CanvasMsg::Recreate(size,canvas_id) =>{ + assert!(canvas_id == painter.canvas_id); + painter.recreate(size); + }, + CanvasMsg::FromScript(message,canvas_id) => { + assert!(canvas_id == painter.canvas_id); match message { FromScriptMsg::SendPixels(chan) => { painter.send_pixels(chan) } } - } + }, CanvasMsg::FromLayout(message) => { match message { FromLayoutMsg::SendData(chan) => { painter.send_data(chan) } } - } + }, } } }).expect("Thread spawning failed"); @@ -392,6 +404,7 @@ impl<'a> CanvasPaintThread<'a> { fn draw_image_in_other(&self, renderer: IpcSender, + other_canvas_id: CanvasId, image_size: Size2D, dest_rect: Rect, source_rect: Rect, @@ -402,7 +415,7 @@ impl<'a> CanvasPaintThread<'a> { byte_swap(&mut image_data); let msg = CanvasMsg::Canvas2d(Canvas2dMsg::DrawImage( - image_data, source_rect.size, dest_rect, source_rect, smoothing_enabled)); + image_data, source_rect.size, dest_rect, source_rect, smoothing_enabled),other_canvas_id); renderer.send(msg).unwrap(); // We acknowledge to the caller here that the data was sent to the // other canvas so that if JS immediately afterwards try to get the diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index bfb6c7ab5cbda..e27d85c439503 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -1066,21 +1066,8 @@ impl WebGLImpl { fn get_tex_parameter(gl: &gl::Gl, target: u32, pname: u32, - chan: WebGLSender> ) { - let result = match pname { - gl::TEXTURE_MAG_FILTER | - gl::TEXTURE_MIN_FILTER | - gl::TEXTURE_WRAP_S | - gl::TEXTURE_WRAP_T => { - let parameter = gl.get_tex_parameter_iv(target, pname); - if parameter == 0 { - Ok(WebGLParameter::Invalid) - } else { - Ok(WebGLParameter::Int(parameter)) - } - } - _ => Err(WebGLError::InvalidEnum) - }; + chan: WebGLSender ) { + let result = gl.get_tex_parameter_iv(target, pname); chan.send(result).unwrap(); } @@ -1117,25 +1104,16 @@ impl WebGLImpl { fn vertex_attrib_offset(gl: &gl::Gl, index: u32, pname: u32, - chan: WebGLSender>) { - let result = match pname { - gl::VERTEX_ATTRIB_ARRAY_POINTER => Ok(gl.get_vertex_attrib_pointer_v(index, pname)), - _ => Err(WebGLError::InvalidEnum), - }; - + chan: WebGLSender) { + let result = gl.get_vertex_attrib_pointer_v(index, pname); chan.send(result).unwrap(); } fn buffer_parameter(gl: &gl::Gl, target: u32, param_id: u32, - chan: WebGLSender>) { - let result = match param_id { - gl::BUFFER_SIZE | - gl::BUFFER_USAGE => - Ok(WebGLParameter::Int(gl.get_buffer_parameter_iv(target, param_id))), - _ => Err(WebGLError::InvalidEnum), - }; + chan: WebGLSender) { + let result = gl.get_buffer_parameter_iv(target, param_id); chan.send(result).unwrap(); } @@ -1178,21 +1156,8 @@ impl WebGLImpl { fn shader_precision_format(gl: &gl::Gl, shader_type: u32, precision_type: u32, - chan: WebGLSender>) { - let result = match precision_type { - gl::LOW_FLOAT | - gl::MEDIUM_FLOAT | - gl::HIGH_FLOAT | - gl::LOW_INT | - gl::MEDIUM_INT | - gl::HIGH_INT => { - Ok(gl.get_shader_precision_format(shader_type, precision_type)) - }, - _=> { - Err(WebGLError::InvalidEnum) - } - }; - + chan: WebGLSender<(i32, i32, i32)>) { + let result = gl.get_shader_precision_format(shader_type, precision_type); chan.send(result).unwrap(); } diff --git a/components/canvas_traits/Cargo.toml b/components/canvas_traits/Cargo.toml index 5780f340b5e01..103b51841a093 100644 --- a/components/canvas_traits/Cargo.toml +++ b/components/canvas_traits/Cargo.toml @@ -12,7 +12,7 @@ path = "lib.rs" [dependencies] cssparser = "0.23.0" euclid = "0.17" -ipc-channel = "0.9" +ipc-channel = "0.10" lazy_static = "1" malloc_size_of = { path = "../malloc_size_of" } malloc_size_of_derive = { path = "../malloc_size_of_derive" } diff --git a/components/canvas_traits/canvas.rs b/components/canvas_traits/canvas.rs index 8600de36ebe41..825ff65ecc182 100644 --- a/components/canvas_traits/canvas.rs +++ b/components/canvas_traits/canvas.rs @@ -15,13 +15,16 @@ pub enum FillRule { Evenodd, } +#[derive(Clone, Deserialize, PartialEq, Serialize)] +pub struct CanvasId(pub u64); + #[derive(Clone, Deserialize, Serialize)] pub enum CanvasMsg { - Canvas2d(Canvas2dMsg), + Canvas2d(Canvas2dMsg, CanvasId), FromLayout(FromLayoutMsg), - FromScript(FromScriptMsg), - Recreate(Size2D), - Close, + FromScript(FromScriptMsg, CanvasId), + Recreate(Size2D, CanvasId), + Close(CanvasId), } #[derive(Clone, Deserialize, Serialize)] @@ -36,7 +39,7 @@ pub enum Canvas2dMsg { DrawImage(Vec, Size2D, Rect, Rect, bool), DrawImageSelf(Size2D, Rect, Rect, bool), DrawImageInOther( - IpcSender, Size2D, Rect, Rect, bool, IpcSender<()>), + IpcSender, CanvasId, Size2D, Rect, Rect, bool, IpcSender<()>), BeginPath, BezierCurveTo(Point2D, Point2D, Point2D), ClearRect(Rect), diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index 70aeb40ab0698..826003d2d922e 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -204,19 +204,19 @@ pub enum WebGLCommand { EnableVertexAttribArray(u32), FramebufferRenderbuffer(u32, u32, u32, Option), FramebufferTexture2D(u32, u32, u32, Option, i32), - GetBufferParameter(u32, u32, WebGLSender>), + GetBufferParameter(u32, u32, WebGLSender), GetExtensions(WebGLSender), GetParameter(u32, WebGLSender>), - GetTexParameter(u32, u32, WebGLSender>), + GetTexParameter(u32, u32, WebGLSender), GetProgramParameter(WebGLProgramId, u32, WebGLSender>), GetShaderParameter(WebGLShaderId, u32, WebGLSender>), - GetShaderPrecisionFormat(u32, u32, WebGLSender>), + GetShaderPrecisionFormat(u32, u32, WebGLSender<(i32, i32, i32)>), GetActiveAttrib(WebGLProgramId, u32, WebGLSender>), GetActiveUniform(WebGLProgramId, u32, WebGLSender>), GetAttribLocation(WebGLProgramId, String, WebGLSender>), GetUniformLocation(WebGLProgramId, String, WebGLSender>), GetVertexAttrib(u32, u32, WebGLSender>), - GetVertexAttribOffset(u32, u32, WebGLSender>), + GetVertexAttribOffset(u32, u32, WebGLSender), GetShaderInfoLog(WebGLShaderId, WebGLSender), GetProgramInfoLog(WebGLProgramId, WebGLSender), PolygonOffset(f32, f32), diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index 88cd1c479770c..72851fbb867d0 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -14,7 +14,7 @@ euclid = "0.17" gfx_traits = {path = "../gfx_traits"} gleam = "0.4" image = "0.18" -ipc-channel = "0.9" +ipc-channel = "0.10" libc = "0.2" log = "0.3.5" msg = {path = "../msg"} @@ -27,5 +27,5 @@ servo_geometry = {path = "../geometry"} servo_url = {path = "../url"} style_traits = {path = "../style_traits"} time = "0.1.17" -webrender = {git = "https://github.com/servo/webrender"} +webrender = {git = "https://github.com/servo/webrender", features = ["capture"]} webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 027151af9b4a1..2b409b7ae3d4b 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -21,8 +21,9 @@ use script_traits::{MouseButton, MouseEventType, ScrollState, TouchEventType, To use script_traits::{UntrustedNodeAddress, WindowSizeData, WindowSizeType}; use script_traits::CompositorEvent::{MouseMoveEvent, MouseButtonEvent, TouchEvent}; use servo_config::opts; -use servo_geometry::DeviceIndependentPixel; +use servo_geometry::{DeviceIndependentPixel, DeviceUintLength}; use std::collections::HashMap; +use std::env; use std::fs::File; use std::rc::Rc; use std::sync::mpsc::Sender; @@ -30,10 +31,10 @@ use std::time::{Duration, Instant}; use style_traits::{CSSPixel, DevicePixel, PinchZoomFactor}; use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; -use time::{precise_time_ns, precise_time_s}; +use time::{now, precise_time_ns, precise_time_s}; use touch::{TouchHandler, TouchAction}; use webrender; -use webrender_api::{self, DeviceUintRect, DeviceUintSize, HitTestFlags, HitTestResult}; +use webrender_api::{self, DeviceIntPoint, DevicePoint, DeviceUintRect, DeviceUintSize, HitTestFlags, HitTestResult}; use webrender_api::{LayoutVector2D, ScrollEventPhase, ScrollLocation}; use windowing::{self, MouseWindowEvent, WebRenderDebugOption, WindowMethods}; @@ -201,7 +202,7 @@ struct ScrollZoomEvent { /// Scroll by this offset, or to Start or End scroll_location: ScrollLocation, /// Apply changes to the frame at this location - cursor: TypedPoint2D, + cursor: DeviceIntPoint, /// The scroll event phase. phase: ScrollEventPhase, /// The number of OS events that have been coalesced together into this one event. @@ -274,15 +275,15 @@ impl RenderTargetInfo { } } -fn initialize_png(gl: &gl::Gl, width: usize, height: usize) -> RenderTargetInfo { +fn initialize_png(gl: &gl::Gl, width: DeviceUintLength, height: DeviceUintLength) -> RenderTargetInfo { let framebuffer_ids = gl.gen_framebuffers(1); gl.bind_framebuffer(gl::FRAMEBUFFER, framebuffer_ids[0]); let texture_ids = gl.gen_textures(1); gl.bind_texture(gl::TEXTURE_2D, texture_ids[0]); - gl.tex_image_2d(gl::TEXTURE_2D, 0, gl::RGB as gl::GLint, width as gl::GLsizei, - height as gl::GLsizei, 0, gl::RGB, gl::UNSIGNED_BYTE, None); + gl.tex_image_2d(gl::TEXTURE_2D, 0, gl::RGB as gl::GLint, width.get() as gl::GLsizei, + height.get() as gl::GLsizei, 0, gl::RGB, gl::UNSIGNED_BYTE, None); gl.tex_parameter_i(gl::TEXTURE_2D, gl::TEXTURE_MAG_FILTER, gl::NEAREST as gl::GLint); gl.tex_parameter_i(gl::TEXTURE_2D, gl::TEXTURE_MIN_FILTER, gl::NEAREST as gl::GLint); @@ -296,8 +297,8 @@ fn initialize_png(gl: &gl::Gl, width: usize, height: usize) -> RenderTargetInfo gl.bind_renderbuffer(gl::RENDERBUFFER, depth_rb); gl.renderbuffer_storage(gl::RENDERBUFFER, gl::DEPTH_COMPONENT24, - width as gl::GLsizei, - height as gl::GLsizei); + width.get() as gl::GLsizei, + height.get() as gl::GLsizei); gl.framebuffer_renderbuffer(gl::FRAMEBUFFER, gl::DEPTH_ATTACHMENT, gl::RENDERBUFFER, @@ -646,9 +647,11 @@ impl IOCompositor { device_pixel_ratio: dppx, initial_viewport: initial_viewport, }; + let top_level_browsing_context_id = self.root_pipeline.as_ref().map(|pipeline| { pipeline.top_level_browsing_context_id }); + let msg = ConstellationMsg::WindowSize(top_level_browsing_context_id, data, size_type); if let Err(e) = self.constellation_chan.send(msg) { @@ -727,7 +730,7 @@ impl IOCompositor { } } - fn hit_test_at_point(&self, point: TypedPoint2D) -> HitTestResult { + fn hit_test_at_point(&self, point: DevicePoint) -> HitTestResult { let dppx = self.page_zoom * self.hidpi_factor(); let scaled_point = (point / dppx).to_untyped(); @@ -741,7 +744,7 @@ impl IOCompositor { } - pub fn on_mouse_window_move_event_class(&mut self, cursor: TypedPoint2D) { + pub fn on_mouse_window_move_event_class(&mut self, cursor: DevicePoint) { if opts::get().convert_mouse_to_touch { self.on_touch_move(TouchId(0), cursor); return @@ -750,7 +753,7 @@ impl IOCompositor { self.dispatch_mouse_window_move_event_class(cursor); } - fn dispatch_mouse_window_move_event_class(&mut self, cursor: TypedPoint2D) { + fn dispatch_mouse_window_move_event_class(&mut self, cursor: DevicePoint) { let root_pipeline_id = match self.get_root_pipeline_id() { Some(root_pipeline_id) => root_pipeline_id, None => return, @@ -782,7 +785,7 @@ impl IOCompositor { &self, event_type: TouchEventType, identifier: TouchId, - point: TypedPoint2D) + point: DevicePoint) { let results = self.hit_test_at_point(point); if let Some(item) = results.items.first() { @@ -803,7 +806,7 @@ impl IOCompositor { pub fn on_touch_event(&mut self, event_type: TouchEventType, identifier: TouchId, - location: TypedPoint2D) { + location: DevicePoint) { match event_type { TouchEventType::Down => self.on_touch_down(identifier, location), TouchEventType::Move => self.on_touch_move(identifier, location), @@ -812,12 +815,12 @@ impl IOCompositor { } } - fn on_touch_down(&mut self, identifier: TouchId, point: TypedPoint2D) { + fn on_touch_down(&mut self, identifier: TouchId, point: DevicePoint) { self.touch_handler.on_touch_down(identifier, point); self.send_touch_event(TouchEventType::Down, identifier, point); } - fn on_touch_move(&mut self, identifier: TouchId, point: TypedPoint2D) { + fn on_touch_move(&mut self, identifier: TouchId, point: DevicePoint) { match self.touch_handler.on_touch_move(identifier, point) { TouchAction::Scroll(delta) => { match point.cast() { @@ -848,7 +851,7 @@ impl IOCompositor { } } - fn on_touch_up(&mut self, identifier: TouchId, point: TypedPoint2D) { + fn on_touch_up(&mut self, identifier: TouchId, point: DevicePoint) { self.send_touch_event(TouchEventType::Up, identifier, point); if let TouchAction::Click = self.touch_handler.on_touch_up(identifier, point) { @@ -856,14 +859,14 @@ impl IOCompositor { } } - fn on_touch_cancel(&mut self, identifier: TouchId, point: TypedPoint2D) { + fn on_touch_cancel(&mut self, identifier: TouchId, point: DevicePoint) { // Send the event to script. self.touch_handler.on_touch_cancel(identifier, point); self.send_touch_event(TouchEventType::Cancel, identifier, point); } /// - fn simulate_mouse_click(&mut self, p: TypedPoint2D) { + fn simulate_mouse_click(&mut self, p: DevicePoint) { let button = MouseButton::Left; self.dispatch_mouse_window_move_event_class(p); self.dispatch_mouse_window_event_class(MouseWindowEvent::MouseDown(button, p)); @@ -873,7 +876,7 @@ impl IOCompositor { pub fn on_scroll_event(&mut self, delta: ScrollLocation, - cursor: TypedPoint2D, + cursor: DeviceIntPoint, phase: TouchEventType) { match phase { TouchEventType::Move => self.on_scroll_window_event(delta, cursor), @@ -888,7 +891,7 @@ impl IOCompositor { fn on_scroll_window_event(&mut self, scroll_location: ScrollLocation, - cursor: TypedPoint2D) { + cursor: DeviceIntPoint) { let event_phase = match (self.scroll_in_progress, self.in_scroll_transaction) { (false, None) => ScrollEventPhase::Start, (false, Some(last_scroll)) if last_scroll.elapsed() > Duration::from_millis(80) => @@ -907,7 +910,7 @@ impl IOCompositor { fn on_scroll_start_window_event(&mut self, scroll_location: ScrollLocation, - cursor: TypedPoint2D) { + cursor: DeviceIntPoint) { self.scroll_in_progress = true; self.pending_scroll_zoom_events.push(ScrollZoomEvent { magnification: 1.0, @@ -920,7 +923,7 @@ impl IOCompositor { fn on_scroll_end_window_event(&mut self, scroll_location: ScrollLocation, - cursor: TypedPoint2D) { + cursor: DeviceIntPoint) { self.scroll_in_progress = false; self.pending_scroll_zoom_events.push(ScrollZoomEvent { magnification: 1.0, @@ -1253,8 +1256,7 @@ impl IOCompositor { fn composite_specific_target(&mut self, target: CompositeTarget) -> Result, UnableToComposite> { - let (width, height) = - (self.frame_size.width as usize, self.frame_size.height as usize); + let (width, height) = (self.frame_size.width_typed(), self.frame_size.height_typed()); if !self.window.prepare_for_composite(width, height) { return Err(UnableToComposite::WindowUnprepared) } @@ -1374,9 +1376,11 @@ impl IOCompositor { fn draw_img(&self, render_target_info: RenderTargetInfo, - width: usize, - height: usize) + width: DeviceUintLength, + height: DeviceUintLength) -> RgbImage { + let width = width.get() as usize; + let height = height.get() as usize; // For some reason, OSMesa fails to render on the 3rd // attempt in headless mode, under some conditions. // I think this can only be some kind of synchronization @@ -1530,6 +1534,17 @@ impl IOCompositor { txn.generate_frame(); self.webrender_api.send_transaction(self.webrender_document, txn); } + + pub fn capture_webrender(&mut self) { + match env::current_dir() { + Ok(current_dir) => { + let capture_id = now().to_timespec().sec.to_string(); + let capture_path = current_dir.join("capture_webrender").join(capture_id); + self.webrender_api.save_capture(capture_path, webrender_api::CaptureBits::all()); + }, + Err(err) => println!("could not locate path to save captures: {:?}", err) + } + } } /// Why we performed a composite. This is used for debugging. diff --git a/components/compositing/compositor_thread.rs b/components/compositing/compositor_thread.rs index 2695970e32046..d93c2c4a2bd92 100644 --- a/components/compositing/compositor_thread.rs +++ b/components/compositing/compositor_thread.rs @@ -6,7 +6,6 @@ use SendableFrameTree; use compositor::CompositingReason; -use euclid::{Point2D, Size2D}; use gfx_traits::Epoch; use ipc_channel::ipc::IpcSender; use msg::constellation_msg::{Key, KeyModifiers, KeyState, PipelineId, TopLevelBrowsingContextId}; @@ -20,7 +19,7 @@ use std::sync::mpsc::{Receiver, Sender}; use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; use webrender; -use webrender_api; +use webrender_api::{self, DeviceIntPoint, DeviceUintSize}; /// Used to wake up the event loop, provided by the servo port/embedder. @@ -119,15 +118,16 @@ pub enum EmbedderMsg { /// Alerts the embedder that the current page has changed its title. ChangePageTitle(TopLevelBrowsingContextId, Option), /// Move the window to a point - MoveTo(TopLevelBrowsingContextId, Point2D), + MoveTo(TopLevelBrowsingContextId, DeviceIntPoint), /// Resize the window to size - ResizeTo(TopLevelBrowsingContextId, Size2D), + ResizeTo(TopLevelBrowsingContextId, DeviceUintSize), /// Get Window Informations size and position - GetClientWindow(TopLevelBrowsingContextId, IpcSender<(Size2D, Point2D)>), + GetClientWindow(TopLevelBrowsingContextId, + IpcSender<(DeviceUintSize, DeviceIntPoint)>), /// Get screen size (pixel) - GetScreenSize(TopLevelBrowsingContextId, IpcSender<(Size2D)>), + GetScreenSize(TopLevelBrowsingContextId, IpcSender<(DeviceUintSize)>), /// Get screen available size (pixel) - GetScreenAvailSize(TopLevelBrowsingContextId, IpcSender<(Size2D)>), + GetScreenAvailSize(TopLevelBrowsingContextId, IpcSender<(DeviceUintSize)>), /// Wether or not to follow a link AllowNavigation(TopLevelBrowsingContextId, ServoUrl, IpcSender), /// Sends an unconsumed key event back to the embedder. diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index 473e85fcb07ac..a1fb50d462637 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -5,26 +5,25 @@ //! Abstract windowing methods. The concrete implementations of these can be found in `platform/`. use compositor_thread::EventLoopWaker; -use euclid::{Point2D, Size2D}; -use euclid::{TypedScale, TypedPoint2D, TypedSize2D}; +use euclid::TypedScale; use gleam::gl; use ipc_channel::ipc::IpcSender; use msg::constellation_msg::{Key, KeyModifiers, KeyState, TopLevelBrowsingContextId, TraversalDirection}; use net_traits::net_error_list::NetError; use script_traits::{LoadData, MouseButton, TouchEventType, TouchId}; -use servo_geometry::DeviceIndependentPixel; +use servo_geometry::{DeviceIndependentPixel, DeviceUintLength}; use servo_url::ServoUrl; use std::fmt::{Debug, Error, Formatter}; use std::rc::Rc; use style_traits::DevicePixel; use style_traits::cursor::CursorKind; -use webrender_api::{DeviceUintSize, DeviceUintRect, ScrollLocation}; +use webrender_api::{DeviceIntPoint, DevicePoint, DeviceUintSize, DeviceUintRect, ScrollLocation}; #[derive(Clone)] pub enum MouseWindowEvent { - Click(MouseButton, TypedPoint2D), - MouseDown(MouseButton, TypedPoint2D), - MouseUp(MouseButton, TypedPoint2D), + Click(MouseButton, DevicePoint), + MouseDown(MouseButton, DevicePoint), + MouseUp(MouseButton, DevicePoint), } /// Various debug and profiling flags that WebRender supports. @@ -55,12 +54,12 @@ pub enum WindowEvent { /// Sent when a mouse hit test is to be performed. MouseWindowEventClass(MouseWindowEvent), /// Sent when a mouse move. - MouseWindowMoveEventClass(TypedPoint2D), + MouseWindowMoveEventClass(DevicePoint), /// Touch event: type, identifier, point - Touch(TouchEventType, TouchId, TypedPoint2D), + Touch(TouchEventType, TouchId, DevicePoint), /// Sent when the user scrolls. The first point is the delta and the second point is the /// origin. - Scroll(ScrollLocation, TypedPoint2D, TouchEventType), + Scroll(ScrollLocation, DeviceIntPoint, TouchEventType), /// Sent when the user zooms. Zoom(f32), /// Simulated "pinch zoom" gesture for non-touch platforms (e.g. ctrl-scrollwheel). @@ -84,6 +83,8 @@ pub enum WindowEvent { SelectBrowser(TopLevelBrowsingContextId), /// Toggles a debug flag in WebRender ToggleWebRenderDebug(WebRenderDebugOption), + /// Capture current WebRender + CaptureWebRender, } impl Debug for WindowEvent { @@ -108,6 +109,7 @@ impl Debug for WindowEvent { WindowEvent::CloseBrowser(..) => write!(f, "CloseBrowser"), WindowEvent::SelectBrowser(..) => write!(f, "SelectBrowser"), WindowEvent::ToggleWebRenderDebug(..) => write!(f, "ToggleWebRenderDebug"), + WindowEvent::CaptureWebRender => write!(f, "CaptureWebRender"), } } } @@ -123,21 +125,19 @@ pub trait WindowMethods { fn framebuffer_size(&self) -> DeviceUintSize; /// Returns the position and size of the window within the rendering area. fn window_rect(&self) -> DeviceUintRect; - /// Returns the size of the window in density-independent "px" units. - fn size(&self) -> TypedSize2D; /// Presents the window to the screen (perhaps by page flipping). fn present(&self); /// Return the size of the window with head and borders and position of the window values - fn client_window(&self, ctx: TopLevelBrowsingContextId) -> (Size2D, Point2D); - /// Return the size of the screen (pixel) - fn screen_size(&self, ctx: TopLevelBrowsingContextId) -> Size2D; - /// Return the available size of the screen (pixel) - fn screen_avail_size(&self, ctx: TopLevelBrowsingContextId) -> Size2D; + fn client_window(&self, ctx: TopLevelBrowsingContextId) -> (DeviceUintSize, DeviceIntPoint); + /// Return the size of the screen. + fn screen_size(&self, ctx: TopLevelBrowsingContextId) -> DeviceUintSize; + /// Return the available size of the screen. + fn screen_avail_size(&self, ctx: TopLevelBrowsingContextId) -> DeviceUintSize; /// Set the size inside of borders and head - fn set_inner_size(&self, ctx: TopLevelBrowsingContextId, size: Size2D); + fn set_inner_size(&self, ctx: TopLevelBrowsingContextId, size: DeviceUintSize); /// Set the window position - fn set_position(&self, ctx: TopLevelBrowsingContextId, point: Point2D); + fn set_position(&self, ctx: TopLevelBrowsingContextId, point: DeviceIntPoint); /// Set fullscreen state fn set_fullscreen_state(&self, ctx: TopLevelBrowsingContextId, state: bool); @@ -167,7 +167,7 @@ pub trait WindowMethods { /// Requests that the window system prepare a composite. Typically this will involve making /// some type of platform-specific graphics context current. Returns true if the composite may /// proceed and false if it should not. - fn prepare_for_composite(&self, width: usize, height: usize) -> bool; + fn prepare_for_composite(&self, width: DeviceUintLength, height: DeviceUintLength) -> bool; /// Sets the cursor to be used in the window. fn set_cursor(&self, cursor: CursorKind); diff --git a/components/config/opts.rs b/components/config/opts.rs index fbca63417ae6c..c9b70b5a131f2 100644 --- a/components/config/opts.rs +++ b/components/config/opts.rs @@ -911,6 +911,9 @@ lazy_static! { } pub fn set_defaults(opts: Opts) { + // Set the static to the new default value. + MULTIPROCESS.store(opts.multiprocess, Ordering::SeqCst); + unsafe { assert!(DEFAULT_OPTIONS.is_null()); assert_ne!(DEFAULT_OPTIONS, INVALID_OPTIONS); diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml index e821fabdc2d3b..e7e82ea8e0714 100644 --- a/components/constellation/Cargo.toml +++ b/components/constellation/Cargo.toml @@ -22,7 +22,7 @@ euclid = "0.17" gfx = {path = "../gfx"} gfx_traits = {path = "../gfx_traits"} hyper = "0.10" -ipc-channel = "0.9" +ipc-channel = "0.10" itertools = "0.7" layout_traits = {path = "../layout_traits"} log = "0.3.5" diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index cdc850495b1ef..fd131141495b9 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -95,6 +95,7 @@ use browsingcontext::{BrowsingContext, SessionHistoryChange, SessionHistoryEntry use browsingcontext::{FullyActiveBrowsingContextsIterator, AllBrowsingContextsIterator}; use canvas::canvas_paint_thread::CanvasPaintThread; use canvas::webgl_thread::WebGLThreads; +use canvas_traits::canvas::CanvasId; use canvas_traits::canvas::CanvasMsg; use clipboard::{ClipboardContext, ClipboardProvider}; use compositing::SendableFrameTree; @@ -329,6 +330,9 @@ pub struct Constellation { /// A channel through which messages can be sent to the webvr thread. webvr_chan: Option>, + + /// An Id for the next canvas to use. + canvas_id: CanvasId, } /// State needed to construct a constellation. @@ -622,6 +626,7 @@ impl Constellation }), webgl_threads: state.webgl_threads, webvr_chan: state.webvr_chan, + canvas_id: CanvasId(0), }; constellation.run(); @@ -2200,11 +2205,13 @@ impl Constellation fn handle_create_canvas_paint_thread_msg( &mut self, size: &Size2D, - response_sender: IpcSender>) { + response_sender: IpcSender<(IpcSender, CanvasId)>) { + self.canvas_id.0 += 1; + let canvas_id = self.canvas_id.clone(); let webrender_api = self.webrender_api_sender.clone(); let sender = CanvasPaintThread::start(*size, webrender_api, - opts::get().enable_canvas_antialiasing); - if let Err(e) = response_sender.send(sender) { + opts::get().enable_canvas_antialiasing,canvas_id); + if let Err(e) = response_sender.send((sender,canvas_id)) { warn!("Create canvas paint thread response failed ({})", e); } } diff --git a/components/debugger/Cargo.toml b/components/debugger/Cargo.toml index d098148528ceb..a5f2f4b4eabc2 100644 --- a/components/debugger/Cargo.toml +++ b/components/debugger/Cargo.toml @@ -12,4 +12,4 @@ crate_type = ["rlib"] [dependencies] log = "0.3.5" -ws = "0.6" +ws = "0.7.3" diff --git a/components/devtools/Cargo.toml b/components/devtools/Cargo.toml index 91a05ef3181e7..c32d26e05ab02 100644 --- a/components/devtools/Cargo.toml +++ b/components/devtools/Cargo.toml @@ -13,7 +13,7 @@ path = "lib.rs" devtools_traits = {path = "../devtools_traits"} hyper = "0.10" hyper_serde = "0.8" -ipc-channel = "0.9" +ipc-channel = "0.10" log = "0.3.5" msg = {path = "../msg"} serde = "1.0" diff --git a/components/devtools_traits/Cargo.toml b/components/devtools_traits/Cargo.toml index ebd6bee4967e3..49c7f7ac332a0 100644 --- a/components/devtools_traits/Cargo.toml +++ b/components/devtools_traits/Cargo.toml @@ -13,7 +13,7 @@ path = "lib.rs" bitflags = "1.0" hyper = "0.10" hyper_serde = "0.8" -ipc-channel = "0.9" +ipc-channel = "0.10" malloc_size_of = { path = "../malloc_size_of" } malloc_size_of_derive = { path = "../malloc_size_of_derive" } msg = {path = "../msg"} diff --git a/components/geometry/Cargo.toml b/components/geometry/Cargo.toml index 8ca688bd64cf3..d37b8b9e64d4c 100644 --- a/components/geometry/Cargo.toml +++ b/components/geometry/Cargo.toml @@ -14,4 +14,5 @@ app_units = "0.6" euclid = "0.17" malloc_size_of = { path = "../malloc_size_of" } malloc_size_of_derive = { path = "../malloc_size_of_derive" } +style_traits = { path = "../style_traits" } webrender_api = { git = "https://github.com/servo/webrender" } diff --git a/components/geometry/lib.rs b/components/geometry/lib.rs index c22c9d160556c..c4bb9721bf656 100644 --- a/components/geometry/lib.rs +++ b/components/geometry/lib.rs @@ -5,16 +5,20 @@ extern crate app_units; extern crate euclid; extern crate malloc_size_of; +extern crate style_traits; #[macro_use] extern crate malloc_size_of_derive; extern crate webrender_api; use app_units::{Au, MAX_AU, MIN_AU}; -use euclid::{Point2D, Rect, Size2D}; +use euclid::{Length, Point2D, Rect, Size2D}; use std::f32; +use style_traits::DevicePixel; use webrender_api::{LayoutPoint, LayoutRect, LayoutSize}; // Units for use with euclid::length and euclid::scale_factor. +pub type DeviceUintLength = Length; + /// A normalized "pixel" at the default resolution for the display. /// /// Like the CSS "px" unit, the exact physical size of this unit may vary between devices, but it diff --git a/components/gfx/Cargo.toml b/components/gfx/Cargo.toml index 91e4741936470..d99fa2100d94d 100644 --- a/components/gfx/Cargo.toml +++ b/components/gfx/Cargo.toml @@ -23,7 +23,7 @@ fnv = "1.0" fontsan = {git = "https://github.com/servo/fontsan"} gfx_traits = {path = "../gfx_traits"} harfbuzz-sys = "0.1" -ipc-channel = "0.9" +ipc-channel = "0.10" lazy_static = "1" libc = "0.2" log = "0.3.5" diff --git a/components/gfx/display_list/mod.rs b/components/gfx/display_list/mod.rs index 23efeaf944568..aa081c1e28041 100644 --- a/components/gfx/display_list/mod.rs +++ b/components/gfx/display_list/mod.rs @@ -28,8 +28,8 @@ use std::fmt; use webrender_api::{BorderRadius, BorderWidths, BoxShadowClipMode, ClipMode, ColorF}; use webrender_api::{ComplexClipRegion, ExtendMode, ExternalScrollId, FilterOp, FontInstanceKey}; use webrender_api::{GlyphInstance, GradientStop, ImageBorder, ImageKey, ImageRendering}; -use webrender_api::{LayoutPoint, LayoutRect, LayoutSize, LayoutTransform, LayoutVector2D, LineStyle}; -use webrender_api::{LocalClip, MixBlendMode, NormalBorder, ScrollPolicy, ScrollSensitivity}; +use webrender_api::{LayoutPoint, LayoutRect, LayoutSize, LayoutTransform, LayoutVector2D}; +use webrender_api::{LineStyle, MixBlendMode, NormalBorder, ScrollPolicy, ScrollSensitivity}; use webrender_api::{StickyOffsetBounds, TransformStyle}; pub use style::dom::OpaqueNode; @@ -375,8 +375,8 @@ pub struct BaseDisplayItem { /// Metadata attached to this display item. pub metadata: DisplayItemMetadata, - /// The local clip for this item. - pub local_clip: LocalClip, + /// The clip rectangle to use for this item. + pub clip_rect: LayoutRect, /// The section of the display list that this item belongs to. pub section: DisplayListSection, @@ -392,7 +392,7 @@ impl BaseDisplayItem { #[inline(always)] pub fn new(bounds: LayoutRect, metadata: DisplayItemMetadata, - local_clip: LocalClip, + clip_rect: LayoutRect, section: DisplayListSection, stacking_context_id: StackingContextId, clipping_and_scrolling: ClippingAndScrolling) @@ -400,7 +400,7 @@ impl BaseDisplayItem { BaseDisplayItem { bounds, metadata, - local_clip, + clip_rect, section, stacking_context_id, clipping_and_scrolling, @@ -416,7 +416,7 @@ impl BaseDisplayItem { pointing: None, }, // Create a rectangle of maximal size. - local_clip: LocalClip::from(LayoutRect::max_rect()), + clip_rect: LayoutRect::max_rect(), section: DisplayListSection::Content, stacking_context_id: StackingContextId::root(), clipping_and_scrolling: ClippingAndScrolling::simple(ClipScrollNodeIndex(0)), @@ -958,7 +958,7 @@ impl fmt::Debug for DisplayItem { DisplayItem::DefineClipScrollNode(_) => "".to_owned(), }, self.bounds(), - self.base().local_clip + self.base().clip_rect ) } } diff --git a/components/hashglobe/Cargo.toml b/components/hashglobe/Cargo.toml index 6deb04a753118..4bde6d19f99bf 100644 --- a/components/hashglobe/Cargo.toml +++ b/components/hashglobe/Cargo.toml @@ -13,4 +13,4 @@ readme = "README.md" libc = "0.2" [dev-dependencies] -rand = "0.3" +rand = "0.4" diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index 9f8685324e35d..e1d210be001f2 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -21,14 +21,14 @@ fnv = "1.0" gfx = {path = "../gfx"} gfx_traits = {path = "../gfx_traits"} html5ever = "0.22" -ipc-channel = "0.9" +ipc-channel = "0.10" libc = "0.2" log = "0.3.5" malloc_size_of = { path = "../malloc_size_of" } msg = {path = "../msg"} net_traits = {path = "../net_traits"} ordered-float = "0.4" -parking_lot = "0.4" +parking_lot = "0.5" profile_traits = {path = "../profile_traits"} range = {path = "../range"} rayon = "1" diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 32a5ae19d3aae..0378313980dbc 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -12,7 +12,7 @@ use app_units::{Au, AU_PER_PX}; use block::BlockFlow; -use canvas_traits::canvas::{CanvasMsg, FromLayoutMsg}; +use canvas_traits::canvas::{CanvasMsg, CanvasId, FromLayoutMsg}; use context::LayoutContext; use display_list::ToLayout; use display_list::background::{build_border_radius, build_image_border_details}; @@ -75,8 +75,8 @@ use style_traits::cursor::CursorKind; use table_cell::CollapsedBordersForCell; use webrender_api::{self, BorderRadius, BorderSide, BoxShadowClipMode, ColorF, ExternalScrollId}; use webrender_api::{FilterOp, GlyphInstance, ImageRendering, LayoutRect, LayoutSize}; -use webrender_api::{LayoutTransform, LayoutVector2D, LineStyle, LocalClip, NormalBorder}; -use webrender_api::{ScrollPolicy, ScrollSensitivity, StickyOffsetBounds}; +use webrender_api::{LayoutTransform, LayoutVector2D, LineStyle, NormalBorder, ScrollPolicy}; +use webrender_api::{ScrollSensitivity, StickyOffsetBounds}; fn establishes_containing_block_for_absolute( flags: StackingContextCollectionFlags, @@ -384,7 +384,7 @@ impl<'a> DisplayListBuildState<'a> { fn create_base_display_item( &self, bounds: &Rect, - clip: LocalClip, + clip_rect: &Rect, node: OpaqueNode, cursor: Option, section: DisplayListSection, @@ -404,7 +404,7 @@ impl<'a> DisplayListBuildState<'a> { // Store cursor id in display list. pointing: cursor.map(|x| x as u16), }, - clip, + clip_rect.to_layout(), section, self.current_stacking_context_id, clipping_and_scrolling, @@ -856,7 +856,7 @@ impl FragmentDisplayListBuilding for Fragment { let base = state.create_base_display_item( &bounds, - LocalClip::Rect(bounds.to_layout()), + &bounds, self.node, style.get_cursor(CursorKind::Default), display_list_section, @@ -973,7 +973,7 @@ impl FragmentDisplayListBuilding for Fragment { // Create the image display item. let base = state.create_base_display_item( &placement.bounds, - LocalClip::Rect(placement.css_clip.to_layout()), + &placement.css_clip, self.node, style.get_cursor(CursorKind::Default), display_list_section, @@ -1071,7 +1071,7 @@ impl FragmentDisplayListBuilding for Fragment { let base = state.create_base_display_item( &placement.bounds, - LocalClip::Rect(placement.css_clip.to_layout()), + &placement.css_clip, self.node, style.get_cursor(CursorKind::Default), display_list_section, @@ -1132,7 +1132,7 @@ impl FragmentDisplayListBuilding for Fragment { let base = state.create_base_display_item( &bounds, - LocalClip::from(clip.to_layout()), + clip, self.node, style.get_cursor(CursorKind::Default), display_list_section, @@ -1221,7 +1221,7 @@ impl FragmentDisplayListBuilding for Fragment { // Append the border to the display list. let base = state.create_base_display_item( &bounds, - LocalClip::from(clip.to_layout()), + clip, self.node, style.get_cursor(CursorKind::Default), display_list_section, @@ -1344,7 +1344,7 @@ impl FragmentDisplayListBuilding for Fragment { .to_layout(); let base = state.create_base_display_item( &bounds, - LocalClip::from(clip.to_layout()), + clip, self.node, style.get_cursor(CursorKind::Default), DisplayListSection::Outlines, @@ -1371,7 +1371,7 @@ impl FragmentDisplayListBuilding for Fragment { // Compute the text fragment bounds and draw a border surrounding them. let base = state.create_base_display_item( stacking_relative_border_box, - LocalClip::from(clip.to_layout()), + clip, self.node, style.get_cursor(CursorKind::Default), DisplayListSection::Content, @@ -1397,7 +1397,7 @@ impl FragmentDisplayListBuilding for Fragment { let base = state.create_base_display_item( &baseline, - LocalClip::from(clip.to_layout()), + clip, self.node, style.get_cursor(CursorKind::Default), DisplayListSection::Content, @@ -1418,7 +1418,7 @@ impl FragmentDisplayListBuilding for Fragment { // This prints a debug border around the border of this fragment. let base = state.create_base_display_item( stacking_relative_border_box, - LocalClip::from(clip.to_layout()), + clip, self.node, self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, @@ -1455,7 +1455,7 @@ impl FragmentDisplayListBuilding for Fragment { let background_color = style.resolve_color(style.get_background().background_color); let base = state.create_base_display_item( stacking_relative_border_box, - LocalClip::from(clip.to_layout()), + clip, self.node, self.style.get_cursor(CursorKind::Default), display_list_section, @@ -1499,7 +1499,7 @@ impl FragmentDisplayListBuilding for Fragment { let base = state.create_base_display_item( &insertion_point_bounds, - LocalClip::from(clip.to_layout()), + clip, self.node, self.style.get_cursor(cursor), display_list_section, @@ -1661,20 +1661,23 @@ impl FragmentDisplayListBuilding for Fragment { self.stacking_relative_content_box(stacking_relative_border_box); let create_base_display_item = |state: &mut DisplayListBuildState| { - let layout_rect = stacking_relative_border_box.to_layout(); - // Adjust the clipping region as necessary to account for `border-radius`. - let radii = - build_border_radius_for_inner_rect(&stacking_relative_border_box, &self.style); + let radii = build_border_radius_for_inner_rect( + &stacking_relative_border_box, + &self.style + ); if !radii.is_zero() { - let clip_id = state.add_late_clip_node(layout_rect, radii); + let clip_id = state.add_late_clip_node( + stacking_relative_border_box.to_layout(), + radii + ); state.current_clipping_and_scrolling = ClippingAndScrolling::simple(clip_id); } state.create_base_display_item( &stacking_relative_content_box, - LocalClip::Rect(layout_rect), + &stacking_relative_border_box, self.node, self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, @@ -1925,7 +1928,7 @@ impl FragmentDisplayListBuilding for Fragment { // Base item for all text/shadows let base = state.create_base_display_item( &stacking_relative_content_box, - LocalClip::from(clip.to_layout()), + clip, self.node, self.style().get_cursor(cursor), DisplayListSection::Content, @@ -2046,7 +2049,7 @@ impl FragmentDisplayListBuilding for Fragment { stacking_relative_box.to_physical(self.style.writing_mode, container_size); let base = state.create_base_display_item( &stacking_relative_box, - LocalClip::from(clip.to_layout()), + clip, self.node, self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, @@ -2920,7 +2923,7 @@ impl BaseFlowDisplayListBuilding for BaseFlow { color.a = 1.0; let base = state.create_base_display_item( &stacking_context_relative_bounds.inflate(Au::from_px(2), Au::from_px(2)), - LocalClip::from(self.clip.to_layout()), + &self.clip, node, None, DisplayListSection::Content, diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index f657a628e453e..7d0a66e934612 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -63,7 +63,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { }; webrender_api::LayoutPrimitiveInfo { rect: self.base().bounds, - local_clip: self.base().local_clip, + clip_rect: self.base().clip_rect, // TODO(gw): Make use of the WR backface visibility functionality. is_backface_visible: true, tag, diff --git a/components/layout_thread/Cargo.toml b/components/layout_thread/Cargo.toml index 1c43b48e409d6..f7cffec344e6a 100644 --- a/components/layout_thread/Cargo.toml +++ b/components/layout_thread/Cargo.toml @@ -20,7 +20,7 @@ fnv = "1.0" gfx = {path = "../gfx"} gfx_traits = {path = "../gfx_traits"} html5ever = "0.22" -ipc-channel = "0.9" +ipc-channel = "0.10" layout = {path = "../layout"} layout_traits = {path = "../layout_traits"} lazy_static = "1" @@ -30,7 +30,7 @@ malloc_size_of = { path = "../malloc_size_of" } metrics = {path = "../metrics"} msg = {path = "../msg"} net_traits = {path = "../net_traits"} -parking_lot = "0.4" +parking_lot = "0.5" profile_traits = {path = "../profile_traits"} range = {path = "../range"} rayon = "1" diff --git a/components/layout_traits/Cargo.toml b/components/layout_traits/Cargo.toml index 872125c0d1b38..38c53836bd922 100644 --- a/components/layout_traits/Cargo.toml +++ b/components/layout_traits/Cargo.toml @@ -11,7 +11,7 @@ path = "lib.rs" [dependencies] gfx = {path = "../gfx"} -ipc-channel = "0.9" +ipc-channel = "0.10" metrics = {path = "../metrics"} msg = {path = "../msg"} net_traits = {path = "../net_traits"} diff --git a/components/malloc_size_of/Cargo.toml b/components/malloc_size_of/Cargo.toml index ced9b0eb9981e..b9cb45d41263a 100644 --- a/components/malloc_size_of/Cargo.toml +++ b/components/malloc_size_of/Cargo.toml @@ -16,7 +16,7 @@ app_units = "0.6" cssparser = "0.23.0" euclid = "0.17" hashglobe = { path = "../hashglobe" } -mozjs = { version = "0.2", features = ["promises"], optional = true } +mozjs = { version = "0.3", features = ["promises"], optional = true } selectors = { path = "../selectors" } servo_arc = { path = "../servo_arc" } smallbitvec = "1.0.3" diff --git a/components/malloc_size_of/lib.rs b/components/malloc_size_of/lib.rs index 1b35114417981..9ed45a772e46c 100644 --- a/components/malloc_size_of/lib.rs +++ b/components/malloc_size_of/lib.rs @@ -758,8 +758,6 @@ malloc_size_of_is_0!(webrender_api::ImageRendering); #[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::LineStyle); #[cfg(feature = "webrender_api")] -malloc_size_of_is_0!(webrender_api::LocalClip); -#[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::MixBlendMode); #[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::NormalBorder); diff --git a/components/metrics/Cargo.toml b/components/metrics/Cargo.toml index af18636672121..5acdf4a0f323e 100644 --- a/components/metrics/Cargo.toml +++ b/components/metrics/Cargo.toml @@ -11,7 +11,7 @@ path = "lib.rs" [dependencies] gfx_traits = {path = "../gfx_traits"} -ipc-channel = "0.9" +ipc-channel = "0.10" log = "0.3.5" malloc_size_of = { path = "../malloc_size_of" } malloc_size_of_derive = { path = "../malloc_size_of_derive" } diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml index 27807663744bc..b24ad31fa52cd 100644 --- a/components/net/Cargo.toml +++ b/components/net/Cargo.toml @@ -21,7 +21,7 @@ hyper = "0.10" hyper_serde = "0.8" hyper-openssl = "0.2.2" immeta = "0.3.6" -ipc-channel = "0.9" +ipc-channel = "0.10" lazy_static = "1" log = "0.3.5" matches = "0.1" @@ -35,12 +35,12 @@ serde = "1.0" serde_json = "1.0" servo_config = {path = "../config"} servo_url = {path = "../url"} -servo-websocket = "0.20" +servo-websocket = { version = "0.21", default-features = false, features = ["sync"] } threadpool = "1.0" time = "0.1.17" unicase = "1.4.0" url = "1.2" -uuid = {version = "0.5", features = ["v4"]} +uuid = {version = "0.6", features = ["v4"]} webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} [target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies] diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs index d369300ecd2eb..77140631e7a5b 100644 --- a/components/net/websocket_loader.rs +++ b/components/net/websocket_loader.rs @@ -26,11 +26,12 @@ use std::sync::{Arc, Mutex}; use std::sync::atomic::{AtomicBool, Ordering}; use std::thread; use url::Position; -use websocket::{Message, Receiver as WSReceiver, Sender as WSSender}; +use websocket::Message; use websocket::header::{Origin, WebSocketAccept, WebSocketKey, WebSocketProtocol, WebSocketVersion}; -use websocket::message::Type as MessageType; -use websocket::receiver::Receiver; -use websocket::sender::Sender; +use websocket::message::OwnedMessage; +use websocket::receiver::{Reader as WsReader, Receiver as WsReceiver}; +use websocket::sender::{Sender as WsSender, Writer as WsWriter}; +use websocket::ws::dataframe::DataFrame; pub fn init( req_init: RequestInit, @@ -60,7 +61,7 @@ pub fn init( let ws_sender_incoming = ws_sender.clone(); thread::spawn(move || { for message in receiver.incoming_messages() { - let message: Message = match message { + let message = match message { Ok(m) => m, Err(e) => { debug!("Error receiving incoming WebSocket message: {:?}", e); @@ -68,21 +69,25 @@ pub fn init( break; } }; - let message = match message.opcode { - MessageType::Text => MessageData::Text(String::from_utf8_lossy(&message.payload).into_owned()), - MessageType::Binary => MessageData::Binary(message.payload.into_owned()), - MessageType::Ping => { - let pong = Message::pong(message.payload); + let message = match message { + OwnedMessage::Text(_) => { + MessageData::Text(String::from_utf8_lossy(&message.take_payload()).into_owned()) + }, + OwnedMessage::Binary(_) => MessageData::Binary(message.take_payload()), + OwnedMessage::Ping(_) => { + let pong = Message::pong(message.take_payload()); ws_sender_incoming.lock().unwrap().send_message(&pong).unwrap(); continue; }, - MessageType::Pong => continue, - MessageType::Close => { + OwnedMessage::Pong(_) => continue, + OwnedMessage::Close(ref msg) => { if !initiated_close_incoming.fetch_or(true, Ordering::SeqCst) { ws_sender_incoming.lock().unwrap().send_message(&message).unwrap(); } - let code = message.cd_status_code; - let reason = String::from_utf8_lossy(&message.payload).into_owned(); + let (code, reason) = match *msg { + None => (None, "".into()), + Some(ref data) => (Some(data.status_code), data.reason.clone()) + }; let _ = resource_event_sender.send(WebSocketNetworkEvent::Close(code, reason)); break; }, @@ -148,7 +153,7 @@ fn obtain_a_websocket_connection(url: &ServoUrl) -> Result fn establish_a_websocket_connection( req_init: RequestInit, http_state: &HttpState -) -> Result<(Option, Sender, Receiver), NetworkError> +) -> Result<(Option, WsWriter, WsReader), NetworkError> { let protocols = match req_init.mode { RequestMode::WebSocket { protocols } => protocols.clone(), @@ -255,9 +260,19 @@ fn establish_a_websocket_connection( None }; - let sender = Sender::new(response.writer, true); - let receiver = Receiver::new(response.reader, false); - Ok((protocol_in_use, sender, receiver)) + let sender = WsSender::new(true); + let writer = WsWriter { + stream: response.writer, + sender + }; + + let receiver = WsReceiver::new(false); + let reader = WsReader { + stream: response.reader, + receiver, + }; + + Ok((protocol_in_use, writer, reader)) } struct Response { diff --git a/components/net_traits/Cargo.toml b/components/net_traits/Cargo.toml index 6dc3271058abe..1cdda589835a4 100644 --- a/components/net_traits/Cargo.toml +++ b/components/net_traits/Cargo.toml @@ -16,7 +16,7 @@ cookie = "0.10" hyper = "0.10" hyper_serde = "0.8" image = "0.18" -ipc-channel = "0.9" +ipc-channel = "0.10" lazy_static = "1" log = "0.3.5" malloc_size_of = { path = "../malloc_size_of" } @@ -27,5 +27,5 @@ serde = "1.0" servo_config = {path = "../config"} servo_url = {path = "../url"} url = "1.2" -uuid = {version = "0.5", features = ["v4", "serde"]} +uuid = {version = "0.6", features = ["v4", "serde"]} webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} diff --git a/components/profile/Cargo.toml b/components/profile/Cargo.toml index 6923b0540cf98..5ef8edbc8f7ce 100644 --- a/components/profile/Cargo.toml +++ b/components/profile/Cargo.toml @@ -15,7 +15,7 @@ unstable = ["jemalloc-sys"] [dependencies] profile_traits = {path = "../profile_traits"} influent = "0.4" -ipc-channel = "0.9" +ipc-channel = "0.10" heartbeats-simple = "0.4" log = "0.3.5" serde = "1.0" diff --git a/components/profile_traits/Cargo.toml b/components/profile_traits/Cargo.toml index 1f66808656728..2a36c9d820815 100644 --- a/components/profile_traits/Cargo.toml +++ b/components/profile_traits/Cargo.toml @@ -15,7 +15,7 @@ energy-profiling = ["energymon", "energy-monitor"] [dependencies] energy-monitor = {version = "0.2.0", optional = true} energymon = {git = "https://github.com/energymon/energymon-rust.git", optional = true} -ipc-channel = "0.9" +ipc-channel = "0.10" log = "0.3.5" serde = "1.0" servo_config = {path = "../config"} diff --git a/components/rand/Cargo.toml b/components/rand/Cargo.toml index 23b448f8b2898..26657373172a8 100644 --- a/components/rand/Cargo.toml +++ b/components/rand/Cargo.toml @@ -12,4 +12,5 @@ path = "lib.rs" [dependencies] lazy_static = "1" log = "0.3" -rand = "0.3" +rand = "0.4" +uuid = "0.6.2" diff --git a/components/rand/lib.rs b/components/rand/lib.rs index c1018c3deaaf8..5a10bf9e3c1e7 100644 --- a/components/rand/lib.rs +++ b/components/rand/lib.rs @@ -17,6 +17,7 @@ extern crate lazy_static; #[macro_use] extern crate log; extern crate rand; +extern crate uuid; pub use rand::{Rand, Rng, SeedableRng}; #[cfg(target_pointer_width = "64")] @@ -30,6 +31,7 @@ use std::mem; use std::rc::Rc; use std::sync::Mutex; use std::u64; +use uuid::Uuid; // Slightly annoying having to cast between sizes. @@ -156,3 +158,11 @@ impl Rng for ServoThreadRng { pub fn random() -> T { thread_rng().gen() } + +// TODO(eijebong): Replace calls to this by random once `uuid::Uuid` implements `rand::Rand` again. +#[inline] +pub fn random_uuid() -> Uuid { + let mut bytes = [0; 16]; + thread_rng().fill_bytes(&mut bytes); + Uuid::from_random_bytes(bytes) +} diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index cf16a2f8a8023..4730eeeb18a00 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -51,7 +51,7 @@ html5ever = "0.22" hyper = "0.10" hyper_serde = "0.8" image = "0.18" -ipc-channel = "0.9" +ipc-channel = "0.10" jstraceable_derive = {path = "../jstraceable_derive"} lazy_static = "1" libc = "0.2" @@ -62,12 +62,12 @@ metrics = {path = "../metrics"} mitochondria = "1.1.2" mime = "0.2.1" mime_guess = "1.8.0" -mozjs = { version = "0.2", features = ["promises"]} +mozjs = { version = "0.3", features = ["promises"]} msg = {path = "../msg"} net_traits = {path = "../net_traits"} num-traits = "0.1.32" offscreen_gl_context = { version = "0.15", features = ["serde"] } -parking_lot = "0.4" +parking_lot = "0.5" phf = "0.7.18" profile_traits = {path = "../profile_traits"} ref_filter_map = "1.0.1" @@ -93,7 +93,7 @@ time = "0.1.12" unicode-segmentation = "1.1.0" url = "1.6" utf-8 = "0.7" -uuid = {version = "0.5", features = ["v4"]} +uuid = {version = "0.6", features = ["v4"]} xml5ever = {version = "0.12"} webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} webvr_traits = {path = "../webvr_traits"} diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 1207b050797b2..24054de8e9556 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -1084,13 +1084,7 @@ def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type, assert isMember != "Union" if isMember == "Dictionary" or isAutoRooted: - # TODO: Need to properly root dictionaries - # https://github.com/servo/servo/issues/6381 - if isMember == "Dictionary": - declType = CGGeneric("Heap") - # AutoRooter can trace properly inner raw GC thing pointers - else: - declType = CGGeneric("JSVal") + templateBody = "${val}.get()" if defaultValue is None: default = None @@ -1100,7 +1094,17 @@ def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type, default = "UndefinedValue()" else: raise TypeError("Can't handle non-null, non-undefined default value here") - return handleOptional("${val}.get()", declType, default) + + if isMember == "Dictionary": + templateBody = "RootedTraceableBox::from_box(Heap::boxed(%s))" % templateBody + if default is not None: + default = "RootedTraceableBox::from_box(Heap::boxed(%s))" % default + declType = CGGeneric("RootedTraceableBox>") + # AutoRooter can trace properly inner raw GC thing pointers + else: + declType = CGGeneric("JSVal") + + return handleOptional(templateBody, declType, default) declType = CGGeneric("HandleValue") @@ -1121,13 +1125,10 @@ def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type, templateBody = "${val}.get().to_object()" default = "ptr::null_mut()" - # TODO: Do we need to do the same for dictionaries? - if isMember == "Union": + if isMember in ("Dictionary", "Union"): templateBody = "RootedTraceableBox::from_box(Heap::boxed(%s))" % templateBody default = "RootedTraceableBox::new(Heap::default())" declType = CGGeneric("RootedTraceableBox>") - elif isMember == "Dictionary": - declType = CGGeneric("Heap<*mut JSObject>") else: # TODO: Need to root somehow # https://github.com/servo/servo/issues/6382 @@ -6168,8 +6169,6 @@ def memberInit(memberInfo, isInitial): conversion = self.getMemberConversion(memberInfo, member.type) if isInitial: return CGGeneric("%s: %s,\n" % (name, conversion.define())) - if member.type.isAny() or member.type.isObject(): - return CGGeneric("dictionary.%s.set(%s);\n" % (name, conversion.define())) return CGGeneric("dictionary.%s = %s;\n" % (name, conversion.define())) def varInsert(varName, dictionaryName): diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index e40a1d7092bbe..3824ed331833a 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -48,7 +48,7 @@ use js::error::throw_type_error; use js::glue::{GetProxyPrivate, IsWrapper}; use js::glue::{RUST_JSID_IS_INT, RUST_JSID_TO_INT}; use js::glue::{RUST_JSID_IS_STRING, RUST_JSID_TO_STRING, UnwrapObject}; -use js::jsapi::{HandleId, HandleObject, HandleValue, JSContext, JSObject, JSString}; +use js::jsapi::{HandleId, HandleObject, HandleValue, Heap, JSContext, JSObject, JSString}; use js::jsapi::{JS_GetLatin1StringCharsAndLength, JS_GetProperty, JS_GetReservedSlot}; use js::jsapi::{JS_GetTwoByteStringCharsAndLength, JS_IsArrayObject, JS_IsExceptionPending}; use js::jsapi::{JS_NewStringCopyN, JS_StringHasLatin1Chars, MutableHandleValue}; @@ -125,6 +125,25 @@ impl ToJSValConvertible for RootedTraceable } } +impl FromJSValConvertible for RootedTraceableBox> + where + T: FromJSValConvertible + js::rust::GCMethods + Copy, + Heap: JSTraceable + Default +{ + type Config = T::Config; + + unsafe fn from_jsval(cx: *mut JSContext, + value: HandleValue, + config: Self::Config) + -> Result, ()> { + T::from_jsval(cx, value, config).map(|result| match result { + ConversionResult::Success(inner) => + ConversionResult::Success(RootedTraceableBox::from_box(Heap::boxed(inner))), + ConversionResult::Failure(msg) => ConversionResult::Failure(msg), + }) + } +} + /// Convert `id` to a `DOMString`. Returns `None` if `id` is not a string or /// integer. /// diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 15fbe7175cb2b..60331f6608e61 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -11,7 +11,7 @@ use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyOrValu use dom::bindings::error::Fallible; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot}; -use dom::bindings::trace::JSTraceable; +use dom::bindings::trace::{JSTraceable, RootedTraceableBox}; use dom::globalscope::GlobalScope; use dom_struct::dom_struct; use js::conversions::ToJSValConvertible; @@ -131,10 +131,10 @@ fn key_and_value_return(cx: *mut JSContext, value: HandleValue) -> Fallible<()> { let mut dict = unsafe { IterableKeyAndValueResult::empty(cx) }; dict.done = false; - let values = vec![Heap::default(), Heap::default()]; - values[0].set(key.get()); - values[1].set(value.get()); - dict.value = Some(values); + dict.value = Some(vec![key, value] + .into_iter() + .map(|handle| RootedTraceableBox::from_box(Heap::boxed(handle.get()))) + .collect()); rooted!(in(cx) let mut dict_value = UndefinedValue()); unsafe { dict.to_jsval(cx, dict_value.handle_mut()); diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index 32d923c7bc355..beb7ed69df3ab 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -5,7 +5,7 @@ use dom::bindings::cell::DomRefCell; use dom::bindings::codegen::Bindings::BlobBinding; use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; -use dom::bindings::codegen::UnionTypes::BlobOrString; +use dom::bindings::codegen::UnionTypes::ArrayBufferOrArrayBufferViewOrBlobOrString; use dom::bindings::error::{Error, Fallible}; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot}; @@ -43,7 +43,7 @@ pub enum BlobImpl { /// relative positions of current slicing range, /// IMPORTANT: The depth of tree is only two, i.e. the parent Blob must be /// either File-based or Memory-based - Sliced(Dom, RelativePos), + Sliced(Dom, RelativePos) } impl BlobImpl { @@ -117,7 +117,7 @@ impl Blob { // https://w3c.github.io/FileAPI/#constructorBlob pub fn Constructor(global: &GlobalScope, - blobParts: Option>, + blobParts: Option>, blobPropertyBag: &BlobBinding::BlobPropertyBag) -> Fallible> { // TODO: accept other blobParts types - ArrayBuffer or ArrayBufferView @@ -329,18 +329,26 @@ fn read_file(global: &GlobalScope, id: Uuid) -> Result, ()> { /// Extract bytes from BlobParts, used by Blob and File constructor /// -pub fn blob_parts_to_bytes(blobparts: Vec) -> Result, ()> { +#[allow(unsafe_code)] +pub fn blob_parts_to_bytes(mut blobparts: Vec) -> Result, ()> { let mut ret = vec![]; - - for blobpart in &blobparts { + for blobpart in &mut blobparts { match blobpart { - &BlobOrString::String(ref s) => { + &mut ArrayBufferOrArrayBufferViewOrBlobOrString::String(ref s) => { ret.extend(s.as_bytes()); }, - &BlobOrString::Blob(ref b) => { + &mut ArrayBufferOrArrayBufferViewOrBlobOrString::Blob(ref b) => { let bytes = b.get_bytes().unwrap_or(vec![]); ret.extend(bytes); }, + &mut ArrayBufferOrArrayBufferViewOrBlobOrString::ArrayBuffer(ref mut a) => unsafe { + let bytes = a.as_slice(); + ret.extend(bytes); + }, + &mut ArrayBufferOrArrayBufferViewOrBlobOrString::ArrayBufferView(ref mut a) => unsafe { + let bytes = a.as_slice(); + ret.extend(bytes); + } } } diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 1e2278e81caf4..85745ca3b675b 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -2,7 +2,7 @@ * 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 canvas_traits::canvas::{Canvas2dMsg, CanvasMsg}; +use canvas_traits::canvas::{Canvas2dMsg, CanvasMsg, CanvasId}; use canvas_traits::canvas::{CompositionOrBlending, FillOrStrokeStyle, FillRule}; use canvas_traits::canvas::{LineCapStyle, LineJoinStyle, LinearGradientStyle}; use canvas_traits::canvas::{RadialGradientStyle, RepetitionStyle, byte_swap_and_premultiply}; @@ -77,6 +77,7 @@ pub struct CanvasRenderingContext2D { state: DomRefCell, saved_states: DomRefCell>, origin_clean: Cell, + canvas_id: CanvasId, } #[must_root] @@ -132,7 +133,7 @@ impl CanvasRenderingContext2D { let script_to_constellation_chan = global.script_to_constellation_chan(); debug!("Asking constellation to create new canvas thread."); script_to_constellation_chan.send(ScriptMsg::CreateCanvasPaintThread(size, sender)).unwrap(); - let ipc_renderer = receiver.recv().unwrap(); + let (ipc_renderer,canvas_id) = receiver.recv().unwrap(); debug!("Done."); CanvasRenderingContext2D { reflector_: Reflector::new(), @@ -144,6 +145,7 @@ impl CanvasRenderingContext2D { state: DomRefCell::new(CanvasContextState::new()), saved_states: DomRefCell::new(Vec::new()), origin_clean: Cell::new(true), + canvas_id: canvas_id, } } @@ -164,7 +166,7 @@ impl CanvasRenderingContext2D { pub fn set_bitmap_dimensions(&self, size: Size2D) { self.reset_to_initial_state(); self.ipc_renderer - .send(CanvasMsg::Recreate(size)) + .send(CanvasMsg::Recreate(size,self.canvas_id)) .unwrap(); } @@ -182,7 +184,7 @@ impl CanvasRenderingContext2D { fn update_transform(&self) { self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetTransform(self.state.borrow().transform))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetTransform(self.state.borrow().transform),self.canvas_id)) .unwrap() } @@ -363,7 +365,7 @@ impl CanvasRenderingContext2D { if self.canvas.as_ref().map_or(false, |c| &**c == canvas) { let msg = CanvasMsg::Canvas2d(Canvas2dMsg::DrawImageSelf( - image_size, dest_rect, source_rect, smoothing_enabled)); + image_size, dest_rect, source_rect, smoothing_enabled),self.canvas_id); self.ipc_renderer.send(msg).unwrap(); } else { let context = match canvas.get_or_init_2d_context() { @@ -374,11 +376,13 @@ impl CanvasRenderingContext2D { let (sender, receiver) = ipc::channel().unwrap(); let msg = CanvasMsg::Canvas2d(Canvas2dMsg::DrawImageInOther( self.ipc_renderer.clone(), + self.canvas_id, image_size, dest_rect, source_rect, smoothing_enabled, - sender)); + sender), + context.canvas_id); let renderer = context.get_ipc_renderer(); renderer.send(msg).unwrap(); @@ -457,7 +461,7 @@ impl CanvasRenderingContext2D { image_size, dest_rect, source_rect, - smoothing_enabled))) + smoothing_enabled),self.canvas_id)) .unwrap(); self.mark_as_dirty(); Ok(()) @@ -601,7 +605,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-save fn Save(&self) { self.saved_states.borrow_mut().push(self.state.borrow().clone()); - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SaveContext)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SaveContext),self.canvas_id).unwrap(); } #[allow(unrooted_must_root)] @@ -610,7 +614,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let mut saved_states = self.saved_states.borrow_mut(); if let Some(state) = saved_states.pop() { self.state.borrow_mut().clone_from(&state); - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::RestoreContext)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::RestoreContext),self.canvas_id).unwrap(); } } @@ -696,7 +700,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().global_alpha = alpha; self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetGlobalAlpha(alpha as f32))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetGlobalAlpha(alpha as f32),self.canvas_id)) .unwrap() } @@ -714,7 +718,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { if let Ok(op) = CompositionOrBlending::from_str(&op_str) { self.state.borrow_mut().global_composition = op; self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetGlobalComposition(op))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetGlobalComposition(op),self.canvas_id)) .unwrap() } } @@ -722,7 +726,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-fillrect fn FillRect(&self, x: f64, y: f64, width: f64, height: f64) { if let Some(rect) = self.create_drawable_rect(x, y, width, height) { - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::FillRect(rect))).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::FillRect(rect),self.canvas_id)).unwrap(); self.mark_as_dirty(); } } @@ -731,7 +735,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { fn ClearRect(&self, x: f64, y: f64, width: f64, height: f64) { if let Some(rect) = self.create_drawable_rect(x, y, width, height) { self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::ClearRect(rect))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::ClearRect(rect),self.canvas_id)) .unwrap(); self.mark_as_dirty(); } @@ -741,7 +745,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { fn StrokeRect(&self, x: f64, y: f64, width: f64, height: f64) { if let Some(rect) = self.create_drawable_rect(x, y, width, height) { self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::StrokeRect(rect))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::StrokeRect(rect),self.canvas_id)) .unwrap(); self.mark_as_dirty(); } @@ -749,31 +753,31 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-beginpath fn BeginPath(&self) { - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::BeginPath)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::BeginPath,self.canvas_id)).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-closepath fn ClosePath(&self) { - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::ClosePath)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::ClosePath,self.canvas_id)).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-fill fn Fill(&self, _: CanvasFillRule) { // TODO: Process fill rule - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Fill)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Fill,self.canvas_id)).unwrap(); self.mark_as_dirty(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-stroke fn Stroke(&self) { - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Stroke)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Stroke,self.canvas_id)).unwrap(); self.mark_as_dirty(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-clip fn Clip(&self, _: CanvasFillRule) { // TODO: Process fill rule - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Clip)).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Clip,self.canvas_id)).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-ispointinpath @@ -784,7 +788,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { }; let (sender, receiver) = ipc::channel::().unwrap(); self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::IsPointInPath(x, y, fill_rule, sender))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::IsPointInPath(x, y, fill_rule, sender),self.canvas_id)) .unwrap(); receiver.recv().unwrap() } @@ -792,7 +796,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-filltext fn FillText(&self, text: DOMString, x: f64, y: f64, max_width: Option) { let parsed_text: String = text.into(); - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::FillText(parsed_text, x, y, max_width))).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::FillText(parsed_text, x, y, max_width),self.canvas_id)).unwrap(); self.mark_as_dirty(); } @@ -858,7 +862,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { return; } - let msg = CanvasMsg::Canvas2d(Canvas2dMsg::MoveTo(Point2D::new(x as f32, y as f32))); + let msg = CanvasMsg::Canvas2d(Canvas2dMsg::MoveTo(Point2D::new(x as f32, y as f32),self.canvas_id)); self.ipc_renderer.send(msg).unwrap(); } @@ -868,7 +872,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { return; } - let msg = CanvasMsg::Canvas2d(Canvas2dMsg::LineTo(Point2D::new(x as f32, y as f32))); + let msg = CanvasMsg::Canvas2d(Canvas2dMsg::LineTo(Point2D::new(x as f32, y as f32),self.canvas_id)); self.ipc_renderer.send(msg).unwrap(); } @@ -877,7 +881,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { if [x, y, width, height].iter().all(|val| val.is_finite()) { let rect = Rect::new(Point2D::new(x as f32, y as f32), Size2D::new(width as f32, height as f32)); - let msg = CanvasMsg::Canvas2d(Canvas2dMsg::Rect(rect)); + let msg = CanvasMsg::Canvas2d(Canvas2dMsg::Rect(rect),self.canvas_id); self.ipc_renderer.send(msg).unwrap(); } } @@ -891,7 +895,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let msg = CanvasMsg::Canvas2d(Canvas2dMsg::QuadraticCurveTo(Point2D::new(cpx as f32, cpy as f32), Point2D::new(x as f32, - y as f32))); + y as f32)), + self.canvas_id); self.ipc_renderer.send(msg).unwrap(); } @@ -906,7 +911,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { cp1y as f32), Point2D::new(cp2x as f32, cp2y as f32), - Point2D::new(x as f32, y as f32))); + Point2D::new(x as f32, y as f32)), + self.canvas_id); self.ipc_renderer.send(msg).unwrap(); } @@ -924,7 +930,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { r as f32, start as f32, end as f32, - ccw)); + ccw), + self.canvas_id); self.ipc_renderer.send(msg).unwrap(); Ok(()) @@ -941,7 +948,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let msg = CanvasMsg::Canvas2d(Canvas2dMsg::ArcTo(Point2D::new(cp1x as f32, cp1y as f32), Point2D::new(cp2x as f32, cp2y as f32), - r as f32)); + r as f32), + self.canvas_id); self.ipc_renderer.send(msg).unwrap(); Ok(()) } @@ -961,7 +969,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { rotation as f32, start as f32, end as f32, - ccw)); + ccw), + self.canvas_id); self.ipc_renderer.send(msg).unwrap(); Ok(()) } @@ -1002,7 +1011,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().stroke_style = CanvasFillOrStrokeStyle::Color(rgba); self.ipc_renderer .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetStrokeStyle( - FillOrStrokeStyle::Color(rgba)))) + FillOrStrokeStyle::Color(rgba)),self.canvas_id)) .unwrap(); } }, @@ -1010,14 +1019,14 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().stroke_style = CanvasFillOrStrokeStyle::Gradient(Dom::from_ref(&*gradient)); let msg = CanvasMsg::Canvas2d( - Canvas2dMsg::SetStrokeStyle(gradient.to_fill_or_stroke_style())); + Canvas2dMsg::SetStrokeStyle(gradient.to_fill_or_stroke_style()),self.canvas_id); self.ipc_renderer.send(msg).unwrap(); }, StringOrCanvasGradientOrCanvasPattern::CanvasPattern(pattern) => { self.state.borrow_mut().stroke_style = CanvasFillOrStrokeStyle::Pattern(Dom::from_ref(&*pattern)); let msg = CanvasMsg::Canvas2d( - Canvas2dMsg::SetStrokeStyle(pattern.to_fill_or_stroke_style())); + Canvas2dMsg::SetStrokeStyle(pattern.to_fill_or_stroke_style()),self.canvas_id); self.ipc_renderer.send(msg).unwrap(); if !pattern.origin_is_clean() { self.set_origin_unclean(); @@ -1051,7 +1060,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().fill_style = CanvasFillOrStrokeStyle::Color(rgba); self.ipc_renderer .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetFillStyle( - FillOrStrokeStyle::Color(rgba)))) + FillOrStrokeStyle::Color(rgba)),self.canvas_id)) .unwrap() } } @@ -1059,14 +1068,14 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().fill_style = CanvasFillOrStrokeStyle::Gradient(Dom::from_ref(&*gradient)); let msg = CanvasMsg::Canvas2d( - Canvas2dMsg::SetFillStyle(gradient.to_fill_or_stroke_style())); + Canvas2dMsg::SetFillStyle(gradient.to_fill_or_stroke_style()),self.canvas_id); self.ipc_renderer.send(msg).unwrap(); } StringOrCanvasGradientOrCanvasPattern::CanvasPattern(pattern) => { self.state.borrow_mut().fill_style = CanvasFillOrStrokeStyle::Pattern(Dom::from_ref(&*pattern)); let msg = CanvasMsg::Canvas2d( - Canvas2dMsg::SetFillStyle(pattern.to_fill_or_stroke_style())); + Canvas2dMsg::SetFillStyle(pattern.to_fill_or_stroke_style()),self.canvas_id); self.ipc_renderer.send(msg).unwrap(); if !pattern.origin_is_clean() { self.set_origin_unclean(); @@ -1132,7 +1141,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let canvas_size = self.canvas.as_ref().map(|c| c.get_size()).unwrap_or(Size2D::zero()); let canvas_size = Size2D::new(canvas_size.width as f64, canvas_size.height as f64); self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::GetImageData(dest_rect, canvas_size, sender))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::GetImageData(dest_rect, canvas_size, sender),self.canvas_id)) .unwrap(); let mut data = receiver.recv().unwrap(); @@ -1176,7 +1185,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let msg = CanvasMsg::Canvas2d(Canvas2dMsg::PutImageData(data, offset, image_data_size, - dirty_rect)); + dirty_rect), + self.canvas_id); self.ipc_renderer.send(msg).unwrap(); self.mark_as_dirty(); } @@ -1280,7 +1290,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().line_width = width; self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineWidth(width as f32))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineWidth(width as f32),self.canvas_id)) .unwrap() } @@ -1301,7 +1311,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { CanvasLineCap::Square => LineCapStyle::Square, }; self.state.borrow_mut().line_cap = line_cap; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineCap(line_cap))).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineCap(line_cap),self.canvas_id)).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linejoin @@ -1321,7 +1331,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { CanvasLineJoin::Miter => LineJoinStyle::Miter, }; self.state.borrow_mut().line_join = line_join; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineJoin(line_join))).unwrap(); + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineJoin(line_join),self.canvas_id)).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-miterlimit @@ -1338,7 +1348,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { self.state.borrow_mut().miter_limit = limit; self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetMiterLimit(limit as f32))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetMiterLimit(limit as f32),self.canvas_id)) .unwrap() } @@ -1353,7 +1363,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { return; } self.state.borrow_mut().shadow_offset_x = value; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetX(value))).unwrap() + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetX(value),self.canvas_id)).unwrap() } // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsety @@ -1367,7 +1377,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { return; } self.state.borrow_mut().shadow_offset_y = value; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetY(value))).unwrap() + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetY(value)),self.canvas_id).unwrap() } // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowblur @@ -1381,7 +1391,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { return; } self.state.borrow_mut().shadow_blur = value; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowBlur(value))).unwrap() + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowBlur(value),self.canvas_id)).unwrap() } // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowcolor @@ -1396,7 +1406,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { if let Ok(color) = parse_color(&value) { self.state.borrow_mut().shadow_color = color; self.ipc_renderer - .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowColor(color))) + .send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowColor(color),self.canvas_id)) .unwrap() } } @@ -1404,7 +1414,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { impl Drop for CanvasRenderingContext2D { fn drop(&mut self) { - if let Err(err) = self.ipc_renderer.send(CanvasMsg::Close) { + if let Err(err) = self.ipc_renderer.send(CanvasMsg::Close(self.canvas_id)) { warn!("Could not close canvas: {}", err) } } diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 49bc45b27c1f8..6895a71fddbb6 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -132,7 +132,7 @@ use style::invalidation::element::restyle_hints::RestyleHint; use style::media_queries::{Device, MediaList, MediaType}; use style::selector_parser::{RestyleDamage, Snapshot}; use style::shared_lock::{SharedRwLock as StyleSharedRwLock, SharedRwLockReadGuard}; -use style::str::{HTML_SPACE_CHARACTERS, split_html_space_chars, str_join}; +use style::str::{split_html_space_chars, str_join}; use style::stylesheet_set::DocumentStylesheetSet; use style::stylesheets::{Stylesheet, StylesheetContents, Origin, OriginSet}; use task_source::TaskSource; @@ -3675,7 +3675,7 @@ impl DocumentMethods for Document { } // https://html.spec.whatwg.org/multipage/#dom-document-open - fn Open(&self, type_: DOMString, replace: DOMString) -> Fallible> { + fn Open(&self, _type: Option, replace: DOMString) -> Fallible> { if !self.is_html_document() { // Step 1. return Err(Error::InvalidState); @@ -3709,9 +3709,7 @@ impl DocumentMethods for Document { // Step 6. // TODO: ignore-opens-during-unload counter check. - // Step 7: first argument already bound to `type_`. - - // Step 8. + // Step 7, 8. // TODO: check session history's state. let replace = replace.eq_ignore_ascii_case("replace"); @@ -3740,11 +3738,11 @@ impl DocumentMethods for Document { // Step 15. Node::replace_all(None, self.upcast::()); - // Steps 16-18. + // Steps 16, 17. // Let's not? // TODO: https://github.com/whatwg/html/issues/1698 - // Step 19. + // Step 18. self.implementation.set(None); self.images.set(None); self.embeds.set(None); @@ -3760,65 +3758,59 @@ impl DocumentMethods for Document { self.target_element.set(None); *self.last_click_info.borrow_mut() = None; + // Step 19. + // TODO: Set the active document of document's browsing context to document with window. + // Step 20. - self.set_encoding(UTF_8); + // TODO: Replace document's singleton objects with new instances of those objects, created in window's Realm. // Step 21. - // TODO: reload override buffer. + self.set_encoding(UTF_8); // Step 22. + // TODO: reload override buffer. + + // Step 23. // TODO: salvageable flag. let url = entry_responsible_document.url(); - // Step 23. + // Step 24. self.set_url(url.clone()); - // Step 24. + // Step 25. // TODO: mute iframe load. - // Step 27. - let type_ = if type_.eq_ignore_ascii_case("replace") { - "text/html" - } else if let Some(position) = type_.find(';') { - &type_[0..position] - } else { - &*type_ - }; - let type_ = type_.trim_matches(HTML_SPACE_CHARACTERS); - - // Step 25. + // Step 26. let resource_threads = self.window.upcast::().resource_threads().clone(); *self.loader.borrow_mut() = DocumentLoader::new_with_threads(resource_threads, Some(url.clone())); - ServoParser::parse_html_script_input(self, url, type_); + ServoParser::parse_html_script_input(self, url, "text/html"); - // Step 26. + // Step 27. self.ready_state.set(DocumentReadyState::Interactive); - // Step 28 is handled when creating the parser in step 25. + // Step 28. + // TODO: remove history traversal tasks. // Step 29. // TODO: truncate session history. // Step 30. - // TODO: remove history traversal tasks. - - // Step 31. // TODO: remove earlier entries. if !replace { - // Step 32. + // Step 31. // TODO: add history entry. } - // Step 33. + // Step 32. // TODO: clear fired unload flag. - // Step 34 is handled when creating the parser in step 25. + // Step 33 is handled when creating the parser in step 26. - // Step 35. + // Step 34. Ok(DomRoot::from_ref(self)) } @@ -3851,7 +3843,7 @@ impl DocumentMethods for Document { return Ok(()); } // Step 5. - self.Open("text/html".into(), "".into())?; + self.Open(None, "".into())?; self.get_current_parser().unwrap() } }; diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs index e80c92cf83b28..942fbb1a05531 100644 --- a/components/script/dom/file.rs +++ b/components/script/dom/file.rs @@ -4,7 +4,7 @@ use dom::bindings::codegen::Bindings::FileBinding; use dom::bindings::codegen::Bindings::FileBinding::FileMethods; -use dom::bindings::codegen::UnionTypes::BlobOrString; +use dom::bindings::codegen::UnionTypes::ArrayBufferOrArrayBufferViewOrBlobOrString; use dom::bindings::error::{Error, Fallible}; use dom::bindings::inheritance::Castable; use dom::bindings::reflector::reflect_dom_object; @@ -60,7 +60,7 @@ impl File { // https://w3c.github.io/FileAPI/#file-constructor pub fn Constructor(global: &GlobalScope, - fileBits: Vec, + fileBits: Vec, filename: DOMString, filePropertyBag: &FileBinding::FilePropertyBag) -> Fallible> { diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs index 20485618c18ec..ef5eb1906d52f 100644 --- a/components/script/dom/promise.rs +++ b/components/script/dom/promise.rs @@ -19,13 +19,13 @@ use dom::globalscope::GlobalScope; use dom::promisenativehandler::PromiseNativeHandler; use dom_struct::dom_struct; use js::conversions::ToJSValConvertible; -use js::jsapi::{CallOriginalPromiseResolve, CallOriginalPromiseReject}; -use js::jsapi::{JSAutoCompartment, CallArgs, JS_GetFunctionObject, JS_NewFunction}; -use js::jsapi::{JSContext, HandleValue, HandleObject, IsPromiseObject, GetFunctionNativeReserved}; -use js::jsapi::{JS_ClearPendingException, JSObject, AddRawValueRoot, RemoveRawValueRoot, PromiseState}; -use js::jsapi::{MutableHandleObject, NewPromiseObject, ResolvePromise, RejectPromise, GetPromiseState}; -use js::jsapi::{SetFunctionNativeReserved, NewFunctionWithReserved, AddPromiseReactions}; -use js::jsapi::Heap; +use js::jsapi::{AddPromiseReactions, AddRawValueRoot, CallArgs, CallOriginalPromiseReject}; +use js::jsapi::{CallOriginalPromiseResolve, GetFunctionNativeReserved, GetPromiseState}; +use js::jsapi::{HandleObject, HandleValue, Heap, IsPromiseObject, JS_ClearPendingException}; +use js::jsapi::{JSAutoCompartment, JSContext, JSObject, JS_GetContext, JS_GetFunctionObject}; +use js::jsapi::{JS_GetObjectRuntime, JS_NewFunction, MutableHandleObject}; +use js::jsapi::{NewFunctionWithReserved, NewPromiseObject, PromiseState, RejectPromise}; +use js::jsapi::{RemoveRawValueRoot, ResolvePromise, SetFunctionNativeReserved}; use js::jsval::{JSVal, UndefinedValue, ObjectValue, Int32Value}; use std::ptr; use std::rc::Rc; @@ -61,8 +61,13 @@ impl PromiseHelper for Rc { impl Drop for Promise { #[allow(unsafe_code)] fn drop(&mut self) { - let cx = self.global().get_cx(); unsafe { + let object = self.permanent_js_root.get().to_object(); + assert!(!object.is_null()); + let runtime = JS_GetObjectRuntime(object); + assert!(!runtime.is_null()); + let cx = JS_GetContext(runtime); + assert!(!cx.is_null()); RemoveRawValueRoot(cx, self.permanent_js_root.get_unsafe()); } } diff --git a/components/script/dom/screen.rs b/components/script/dom/screen.rs index 3cd5403499451..e83cffd93a4fb 100644 --- a/components/script/dom/screen.rs +++ b/components/script/dom/screen.rs @@ -11,9 +11,11 @@ use dom::bindings::root::{Dom, DomRoot}; use dom::globalscope::GlobalScope; use dom::window::Window; use dom_struct::dom_struct; -use euclid::Size2D; +use euclid::TypedSize2D; use ipc_channel::ipc; use script_traits::ScriptMsg; +use style_traits::CSSPixel; +use webrender_api::DeviceUintSize; #[dom_struct] pub struct Screen { @@ -35,18 +37,22 @@ impl Screen { ScreenBinding::Wrap) } - fn screen_size(&self) -> Size2D { - let (send, recv) = ipc::channel::<(Size2D)>().unwrap(); + fn screen_size(&self) -> TypedSize2D { + let (send, recv) = ipc::channel::().unwrap(); self.window.upcast::() .script_to_constellation_chan().send(ScriptMsg::GetScreenSize(send)).unwrap(); - recv.recv().unwrap_or(Size2D::zero()) + let dpr = self.window.device_pixel_ratio(); + let screen = recv.recv().unwrap_or(TypedSize2D::zero()); + (screen.to_f32() / dpr).to_u32() } - fn screen_avail_size(&self) -> Size2D { - let (send, recv) = ipc::channel::<(Size2D)>().unwrap(); + fn screen_avail_size(&self) -> TypedSize2D { + let (send, recv) = ipc::channel::().unwrap(); self.window.upcast::() .script_to_constellation_chan().send(ScriptMsg::GetScreenAvailSize(send)).unwrap(); - recv.recv().unwrap_or(Size2D::zero()) + let dpr = self.window.device_pixel_ratio(); + let screen = recv.recv().unwrap_or(TypedSize2D::zero()); + (screen.to_f32() / dpr).to_u32() } } diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 80159a300681b..a5bb29a7e7611 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -348,12 +348,12 @@ impl TestBindingMethods for TestBinding { fn ReceiveNullableSequence(&self) -> Option> { Some(vec![1]) } fn ReceiveTestDictionaryWithSuccessOnKeyword(&self) -> RootedTraceableBox { RootedTraceableBox::new(TestDictionary { - anyValue: Heap::default(), + anyValue: RootedTraceableBox::new(Heap::default()), booleanValue: None, byteValue: None, dict: RootedTraceableBox::new(TestDictionaryDefaults { UnrestrictedDoubleValue: 0.0, - anyValue: Heap::default(), + anyValue: RootedTraceableBox::new(Heap::default()), booleanValue: false, bytestringValue: ByteString::new(vec![]), byteValue: 0, @@ -369,7 +369,7 @@ impl TestBindingMethods for TestBinding { nullableFloatValue: None, nullableLongLongValue: None, nullableLongValue: None, - nullableObjectValue: Heap::default(), + nullableObjectValue: RootedTraceableBox::new(Heap::default()), nullableOctetValue: None, nullableShortValue: None, nullableStringValue: None, diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 0145d84ffd8f0..64990da150431 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1246,17 +1246,21 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { #[allow(unsafe_code)] // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5 unsafe fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal { + let parameter_matches = match parameter { + constants::BUFFER_SIZE | + constants::BUFFER_USAGE => true, + _ => false, + }; + + if !parameter_matches { + self.webgl_error(InvalidEnum); + return NullValue(); + } + let (sender, receiver) = webgl_channel().unwrap(); self.send_command(WebGLCommand::GetBufferParameter(target, parameter, sender)); - match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { - WebGLParameter::Int(val) => Int32Value(val), - WebGLParameter::Bool(_) => panic!("Buffer parameter should not be bool"), - WebGLParameter::Float(_) => panic!("Buffer parameter should not be float"), - WebGLParameter::FloatArray(_) => panic!("Buffer parameter should not be float array"), - WebGLParameter::String(_) => panic!("Buffer parameter should not be string"), - WebGLParameter::Invalid => NullValue(), - } + Int32Value(receiver.recv().unwrap()) } #[allow(unsafe_code)] @@ -1342,31 +1346,39 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { #[allow(unsafe_code)] // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8 unsafe fn GetTexParameter(&self, _cx: *mut JSContext, target: u32, pname: u32) -> JSVal { - let texture = match target { + let target_matches = match target { constants::TEXTURE_2D | - constants::TEXTURE_CUBE_MAP => self.bound_texture(target), + constants::TEXTURE_CUBE_MAP => true, + _ => false, + }; + + let pname_matches = match pname { + constants::TEXTURE_MAG_FILTER | + constants::TEXTURE_MIN_FILTER | + constants::TEXTURE_WRAP_S | + constants::TEXTURE_WRAP_T => true, + _ => false, + }; + + if !target_matches || !pname_matches { + self.webgl_error(InvalidEnum); + return NullValue(); + } + + if self.bound_texture(target).is_none() { + self.webgl_error(InvalidOperation); + return NullValue(); + } + + let (sender, receiver) = webgl_channel().unwrap(); + self.send_command(WebGLCommand::GetTexParameter(target, pname, sender)); + + match receiver.recv().unwrap() { + value if value != 0 => Int32Value(value), _ => { self.webgl_error(InvalidEnum); - return NullValue(); - } - }; - if texture.is_some() { - let (sender, receiver) = webgl_channel().unwrap(); - self.send_command(WebGLCommand::GetTexParameter(target, pname, sender)); - match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { - WebGLParameter::Int(val) => Int32Value(val), - WebGLParameter::Bool(_) => panic!("Texture parameter should not be bool"), - WebGLParameter::Float(_) => panic!("Texture parameter should not be float"), - WebGLParameter::FloatArray(_) => panic!("Texture parameter should not be float array"), - WebGLParameter::String(_) => panic!("Texture parameter should not be string"), - WebGLParameter::Invalid => { - self.webgl_error(InvalidEnum); - NullValue() - } + NullValue() } - } else { - self.webgl_error(InvalidOperation); - NullValue() } } @@ -2345,24 +2357,31 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 - fn GetShaderPrecisionFormat(&self, - shader_type: u32, - precision_type: u32) - -> Option> { + fn GetShaderPrecisionFormat( + &self, + shader_type: u32, + precision_type: u32 + ) -> Option> { + match precision_type { + constants::LOW_FLOAT | + constants::MEDIUM_FLOAT | + constants::HIGH_FLOAT | + constants::LOW_INT | + constants::MEDIUM_INT | + constants::HIGH_INT => (), + _ => { + self.webgl_error(InvalidEnum); + return None; + }, + } + let (sender, receiver) = webgl_channel().unwrap(); self.send_command(WebGLCommand::GetShaderPrecisionFormat(shader_type, precision_type, sender)); - match receiver.recv().unwrap() { - Ok((range_min, range_max, precision)) => { - Some(WebGLShaderPrecisionFormat::new(self.global().as_window(), range_min, range_max, precision)) - }, - Err(error) => { - self.webgl_error(error); - None - } - } + let (range_min, range_max, precision) = receiver.recv().unwrap(); + Some(WebGLShaderPrecisionFormat::new(self.global().as_window(), range_min, range_max, precision)) } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 @@ -2413,10 +2432,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 fn GetVertexAttribOffset(&self, index: u32, pname: u32) -> i64 { + if pname != constants::VERTEX_ATTRIB_ARRAY_POINTER { + self.webgl_error(InvalidEnum); + return 0; + } let (sender, receiver) = webgl_channel().unwrap(); self.send_command(WebGLCommand::GetVertexAttribOffset(index, pname, sender)); - handle_potential_webgl_error!(self, receiver.recv().unwrap(), 0) as i64 + receiver.recv().unwrap() as i64 } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 diff --git a/components/script/dom/webidls/Blob.webidl b/components/script/dom/webidls/Blob.webidl index 18a009d39a9e1..0e96a894c35ad 100644 --- a/components/script/dom/webidls/Blob.webidl +++ b/components/script/dom/webidls/Blob.webidl @@ -22,4 +22,4 @@ dictionary BlobPropertyBag { DOMString type = ""; }; -typedef (/*ArrayBuffer or ArrayBufferView or */Blob or DOMString) BlobPart; +typedef (ArrayBuffer or ArrayBufferView or Blob or DOMString) BlobPart; diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl index 40df23b734c19..fbb4787ab89d6 100644 --- a/components/script/dom/webidls/Document.webidl +++ b/components/script/dom/webidls/Document.webidl @@ -118,7 +118,7 @@ partial /*sealed*/ interface Document { // dynamic markup insertion [CEReactions, Throws] - Document open(optional DOMString type = "text/html", optional DOMString replace = ""); + Document open(optional DOMString type, optional DOMString replace = ""); // WindowProxy open(DOMString url, DOMString name, DOMString features, optional boolean replace = false); [CEReactions, Throws] void close(); diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index f6177e90fcf09..37f65f774b2eb 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -48,7 +48,7 @@ use dom::windowproxy::WindowProxy; use dom::worklet::Worklet; use dom::workletglobalscope::WorkletGlobalScopeType; use dom_struct::dom_struct; -use euclid::{Point2D, Vector2D, Rect, Size2D}; +use euclid::{Point2D, Vector2D, Rect, Size2D, TypedPoint2D, TypedScale, TypedSize2D}; use fetch; use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::router::ROUTER; @@ -102,7 +102,7 @@ use style::properties::{ComputedValues, PropertyId}; use style::selector_parser::PseudoElement; use style::str::HTML_SPACE_CHARACTERS; use style::stylesheets::CssRuleType; -use style_traits::ParsingMode; +use style_traits::{CSSPixel, DevicePixel, ParsingMode}; use task::TaskCanceller; use task_source::dom_manipulation::DOMManipulationTaskSource; use task_source::file_reading::FileReadingTaskSource; @@ -116,7 +116,7 @@ use timers::{IsInterval, TimerCallback}; use tinyfiledialogs::{self, MessageBoxIcon}; use url::Position; use webdriver_handlers::jsval_to_webdriver; -use webrender_api::{ExternalScrollId, DocumentId}; +use webrender_api::{ExternalScrollId, DeviceIntPoint, DeviceUintSize, DocumentId}; use webvr_traits::WebVRMsg; /// Current state of the window object @@ -930,11 +930,12 @@ impl WindowMethods for Window { } // https://drafts.csswg.org/cssom-view/#dom-window-resizeto - fn ResizeTo(&self, x: i32, y: i32) { + fn ResizeTo(&self, width: i32, height: i32) { // Step 1 //TODO determine if this operation is allowed - let size = Size2D::new(x.to_u32().unwrap_or(1), y.to_u32().unwrap_or(1)); - self.send_to_constellation(ScriptMsg::ResizeTo(size)); + let dpr = self.device_pixel_ratio(); + let size = TypedSize2D::new(width, height).to_f32() * dpr; + self.send_to_constellation(ScriptMsg::ResizeTo(size.to_u32())); } // https://drafts.csswg.org/cssom-view/#dom-window-resizeby @@ -948,8 +949,9 @@ impl WindowMethods for Window { fn MoveTo(&self, x: i32, y: i32) { // Step 1 //TODO determine if this operation is allowed - let point = Point2D::new(x, y); - self.send_to_constellation(ScriptMsg::MoveTo(point)); + let dpr = self.device_pixel_ratio(); + let point = TypedPoint2D::new(x, y).to_f32() * dpr; + self.send_to_constellation(ScriptMsg::MoveTo(point.to_i32())); } // https://drafts.csswg.org/cssom-view/#dom-window-moveby @@ -985,8 +987,7 @@ impl WindowMethods for Window { // https://drafts.csswg.org/cssom-view/#dom-window-devicepixelratio fn DevicePixelRatio(&self) -> Finite { - let dpr = self.window_size.get().map_or(1.0f32, |data| data.device_pixel_ratio.get()); - Finite::wrap(dpr as f64) + Finite::wrap(self.device_pixel_ratio().get() as f64) } // https://html.spec.whatwg.org/multipage/#dom-window-status @@ -1174,10 +1175,16 @@ impl Window { self.current_viewport.set(new_viewport) } - pub fn client_window(&self) -> (Size2D, Point2D) { - let (send, recv) = ipc::channel::<(Size2D, Point2D)>().unwrap(); + pub fn device_pixel_ratio(&self) -> TypedScale { + self.window_size.get().map_or(TypedScale::new(1.0), |data| data.device_pixel_ratio) + } + + fn client_window(&self) -> (TypedSize2D, TypedPoint2D) { + let (send, recv) = ipc::channel::<(DeviceUintSize, DeviceIntPoint)>().unwrap(); self.send_to_constellation(ScriptMsg::GetClientWindow(send)); - recv.recv().unwrap_or((Size2D::zero(), Point2D::zero())) + let (size, point) = recv.recv().unwrap_or((TypedSize2D::zero(), TypedPoint2D::zero())); + let dpr = self.device_pixel_ratio(); + ((size.to_f32() / dpr).to_u32(), (point.to_f32() / dpr).to_i32()) } /// Advances the layout animation clock by `delta` milliseconds, and then diff --git a/components/script/dom/worklet.rs b/components/script/dom/worklet.rs index 55b99fe919bdf..95f639aedaa6a 100644 --- a/components/script/dom/worklet.rs +++ b/components/script/dom/worklet.rs @@ -154,7 +154,7 @@ malloc_size_of_is_0!(WorkletId); impl WorkletId { fn new() -> WorkletId { - WorkletId(servo_rand::random()) + WorkletId(servo_rand::random_uuid()) } } diff --git a/components/script_layout_interface/Cargo.toml b/components/script_layout_interface/Cargo.toml index caddb62a1de0d..51afedae058e4 100644 --- a/components/script_layout_interface/Cargo.toml +++ b/components/script_layout_interface/Cargo.toml @@ -17,7 +17,7 @@ cssparser = "0.23.0" euclid = "0.17" gfx_traits = {path = "../gfx_traits"} html5ever = "0.22" -ipc-channel = "0.9" +ipc-channel = "0.10" libc = "0.2" log = "0.3.5" malloc_size_of = { path = "../malloc_size_of" } diff --git a/components/script_traits/Cargo.toml b/components/script_traits/Cargo.toml index 82a359440926a..2d3c47c14b756 100644 --- a/components/script_traits/Cargo.toml +++ b/components/script_traits/Cargo.toml @@ -18,7 +18,7 @@ euclid = "0.17" gfx_traits = {path = "../gfx_traits"} hyper = "0.10" hyper_serde = "0.8" -ipc-channel = "0.9" +ipc-channel = "0.10" libc = "0.2" malloc_size_of = { path = "../malloc_size_of" } malloc_size_of_derive = { path = "../malloc_size_of_derive" } diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index 46f5ed6c90ce5..c65ad10be4b13 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -41,7 +41,7 @@ pub mod webdriver_msg; use bluetooth_traits::BluetoothRequest; use canvas_traits::webgl::WebGLPipeline; use devtools_traits::{DevtoolScriptControlMsg, ScriptToDevtoolsControlMsg, WorkerId}; -use euclid::{Size2D, Length, Point2D, Vector2D, Rect, TypedScale, TypedSize2D}; +use euclid::{Length, Point2D, Vector2D, Rect, TypedSize2D, TypedScale}; use gfx_traits::Epoch; use hyper::header::Headers; use hyper::method::Method; @@ -69,7 +69,7 @@ use style_traits::CSSPixel; use style_traits::SpeculativePainter; use style_traits::cursor::CursorKind; use webdriver_msg::{LoadStatus, WebDriverScriptCommand}; -use webrender_api::{ExternalScrollId, DevicePixel, DocumentId, ImageKey}; +use webrender_api::{ExternalScrollId, DevicePixel, DeviceUintSize, DocumentId, ImageKey}; use webvr_traits::{WebVREvent, WebVRMsg}; pub use script_msg::{LayoutMsg, ScriptMsg, EventResult, LogEntry}; @@ -650,7 +650,7 @@ pub enum WebDriverCommandMsg { /// Act as if keys were pressed in the browsing context with the given ID. SendKeys(BrowsingContextId, Vec<(Key, KeyModifiers, KeyState)>), /// Set the window size. - SetWindowSize(TopLevelBrowsingContextId, Size2D, IpcSender), + SetWindowSize(TopLevelBrowsingContextId, DeviceUintSize, IpcSender), /// Take a screenshot of the window. TakeScreenshot(TopLevelBrowsingContextId, IpcSender>), } diff --git a/components/script_traits/script_msg.rs b/components/script_traits/script_msg.rs index 524a87d039af8..153adbd98fe8f 100644 --- a/components/script_traits/script_msg.rs +++ b/components/script_traits/script_msg.rs @@ -13,7 +13,7 @@ use WorkerGlobalScopeInit; use WorkerScriptLoadOrigin; use canvas_traits::canvas::CanvasMsg; use devtools_traits::{ScriptToDevtoolsControlMsg, WorkerId}; -use euclid::{Point2D, Size2D, TypedSize2D}; +use euclid::{Size2D, TypedSize2D}; use gfx_traits::Epoch; use ipc_channel::ipc::{IpcReceiver, IpcSender}; use msg::constellation_msg::{BrowsingContextId, PipelineId, TraversalDirection}; @@ -26,6 +26,7 @@ use servo_url::ServoUrl; use style_traits::CSSPixel; use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; +use webrender_api::{DeviceIntPoint, DeviceUintSize}; /// Messages from the layout to the constellation. #[derive(Deserialize, Serialize)] @@ -136,11 +137,11 @@ pub enum ScriptMsg { /// Send a key event SendKeyEvent(Option, Key, KeyState, KeyModifiers), /// Get Window Informations size and position - GetClientWindow(IpcSender<(Size2D, Point2D)>), + GetClientWindow(IpcSender<(DeviceUintSize, DeviceIntPoint)>), /// Move the window to a point - MoveTo(Point2D), + MoveTo(DeviceIntPoint), /// Resize the window to size - ResizeTo(Size2D), + ResizeTo(DeviceUintSize), /// Script has handled a touch event, and either prevented or allowed default actions. TouchEventProcessed(EventResult), /// A log entry, with the top-level browsing context id and thread name @@ -155,9 +156,9 @@ pub enum ScriptMsg { /// Enter or exit fullscreen SetFullscreenState(bool), /// Get the screen size (pixel) - GetScreenSize(IpcSender<(Size2D)>), + GetScreenSize(IpcSender<(DeviceUintSize)>), /// Get the available screen size (pixel) - GetScreenAvailSize(IpcSender<(Size2D)>), + GetScreenAvailSize(IpcSender<(DeviceUintSize)>), /// Requests that the compositor shut down. Exit, } diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index a7860f5ef13f5..65c32af94e8a9 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -17,6 +17,7 @@ webdriver = ["webdriver_server"] energy-profiling = ["profile_traits/energy-profiling"] debugmozjs = ["script/debugmozjs"] googlevr = ["webvr/googlevr"] +webrender_debugger = ["webrender/debugger"] oculusvr = ["webvr/oculusvr"] unstable = [ "euclid/unstable", @@ -40,7 +41,7 @@ env_logger = "0.4" euclid = "0.17" gfx = {path = "../gfx"} gleam = "0.4" -ipc-channel = "0.9" +ipc-channel = "0.10" layout_thread = {path = "../layout_thread"} log = "0.3" msg = {path = "../msg"} diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 45b6af50c89e4..bc1a7f6a8f154 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -81,6 +81,7 @@ use constellation::{FromCompositorLogger, FromScriptLogger}; #[cfg(all(not(target_os = "windows"), not(target_os = "ios")))] use constellation::content_process_sandbox_profile; use env_logger::Logger as EnvLogger; +use euclid::Length; #[cfg(all(not(target_os = "windows"), not(target_os = "ios")))] use gaol::sandbox::{ChildSandbox, ChildSandboxMethods}; use gfx::font_cache_thread::FontCacheThread; @@ -133,7 +134,7 @@ impl Servo where Window: WindowMethods + 'static { let opts = opts::get(); // Make sure the gl context is made current. - window.prepare_for_composite(0, 0); + window.prepare_for_composite(Length::new(0), Length::new(0)); // Get both endpoints of a special channel for communication between // the client window and the compositor. This channel is unique because @@ -333,6 +334,10 @@ impl Servo where Window: WindowMethods + 'static { self.compositor.toggle_webrender_debug(option); } + WindowEvent::CaptureWebRender => { + self.compositor.capture_webrender(); + } + WindowEvent::NewBrowser(url, response_chan) => { let msg = ConstellationMsg::NewBrowser(url, response_chan); if let Err(e) = self.constellation_chan.send(msg) { diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index e631cd1332d4a..d3a1d04f4d277 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -52,7 +52,7 @@ num-integer = "0.1.32" num-traits = "0.1.32" ordered-float = "0.4" owning_ref = "0.3.3" -parking_lot = "0.4" +parking_lot = "0.5" precomputed-hash = "0.1.1" rayon = "1" selectors = { path = "../selectors" } diff --git a/components/style/counter_style/mod.rs b/components/style/counter_style/mod.rs index e727e004ebdad..475a2186b0451 100644 --- a/components/style/counter_style/mod.rs +++ b/components/style/counter_style/mod.rs @@ -22,6 +22,7 @@ use str::CssStringWriter; use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError}; use style_traits::{StyleParseErrorKind, ToCss}; use values::CustomIdent; +use values::specified::Integer; /// Parse a counter style name reference. /// @@ -450,21 +451,19 @@ pub struct Ranges(pub Vec>); #[derive(Clone, Copy, Debug, ToCss)] pub enum CounterBound { /// An integer bound. - /// - /// FIXME(https://github.com/servo/servo/issues/20197) - Integer(i32), + Integer(Integer), /// The infinite bound. Infinite, } impl Parse for Ranges { - fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>) -> Result> { + fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result> { if input.try(|input| input.expect_ident_matching("auto")).is_ok() { Ok(Ranges(Vec::new())) } else { input.parse_comma_separated(|input| { - let opt_start = parse_bound(input)?; - let opt_end = parse_bound(input)?; + let opt_start = parse_bound(context, input)?; + let opt_end = parse_bound(context, input)?; if let (CounterBound::Integer(start), CounterBound::Integer(end)) = (opt_start, opt_end) { if start > end { return Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)) @@ -477,18 +476,13 @@ impl Parse for Ranges { } fn parse_bound<'i, 't>( - input: &mut Parser<'i, 't>, + context: &ParserContext, input: &mut Parser<'i, 't>, ) -> Result> { - let location = input.current_source_location(); - match *input.next()? { - Token::Number { int_value: Some(v), .. } => { - Ok(CounterBound::Integer(v)) - } - Token::Ident(ref ident) if ident.eq_ignore_ascii_case("infinite") => { - Ok(CounterBound::Infinite) - } - ref t => Err(location.new_unexpected_token_error(t.clone())), + if let Ok(integer) = input.try(|input| Integer::parse(context, input)) { + return Ok(CounterBound::Integer(integer)); } + input.expect_ident_matching("infinite")?; + Ok(CounterBound::Infinite) } impl ToCss for Ranges { diff --git a/components/style/gecko/conversions.rs b/components/style/gecko/conversions.rs index b4171abb2a882..43a4b8dc91aa0 100644 --- a/components/style/gecko/conversions.rs +++ b/components/style/gecko/conversions.rs @@ -413,7 +413,7 @@ impl nsStyleImage { nsStyleImageType::eStyleImageType_Element => { use gecko_string_cache::Atom; let atom = Gecko_GetImageElement(self); - Some(GenericImage::Element(Atom::from(atom))) + Some(GenericImage::Element(Atom::from_raw(atom))) }, _ => panic!("Unexpected image type") } diff --git a/components/style/gecko/generated/structs.rs b/components/style/gecko/generated/structs.rs index 5374f420c7dcd..38155578238cc 100644 --- a/components/style/gecko/generated/structs.rs +++ b/components/style/gecko/generated/structs.rs @@ -12244,6 +12244,10 @@ pub mod root { #[link_name = "\u{1}_ZN7mozilla10StylePrefs28sMozDocumentEnabledInContentE"] pub static mut StylePrefs_sMozDocumentEnabledInContent: bool; } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs28sMozDocumentURLPrefixHackEnabledE"] + pub static mut StylePrefs_sMozDocumentURLPrefixHackEnabled: bool; + } extern "C" { #[link_name = "\u{1}_ZN7mozilla10StylePrefs32sGridTemplateSubgridValueEnabledE"] pub static mut StylePrefs_sGridTemplateSubgridValueEnabled: bool; diff --git a/components/style/gecko/media_queries.rs b/components/style/gecko/media_queries.rs index d96d4d687550f..481ad3c29c782 100644 --- a/components/style/gecko/media_queries.rs +++ b/components/style/gecko/media_queries.rs @@ -176,7 +176,7 @@ impl Device { context.mMedium }; - MediaType(CustomIdent(Atom::from(medium_to_use))) + MediaType(CustomIdent(unsafe { Atom::from_raw(medium_to_use) })) } /// Returns the current viewport size in app units. @@ -262,7 +262,7 @@ impl ToCss for Expression { } // NB: CssStringWriter not needed, feature names are under control. - write!(dest, "{}", Atom::from(unsafe { *self.feature.mName }))?; + write!(dest, "{}", unsafe { Atom::from_static(*self.feature.mName) })?; if let Some(ref val) = self.value { dest.write_str(": ")?; @@ -394,9 +394,9 @@ impl MediaExpressionValue { } nsMediaFeature_ValueType::eIdent => { debug_assert_eq!(css_value.mUnit, nsCSSUnit::eCSSUnit_AtomIdent); - Some(MediaExpressionValue::Ident(Atom::from(unsafe { - *css_value.mValue.mAtom.as_ref() - }))) + Some(MediaExpressionValue::Ident(unsafe { + Atom::from_raw(*css_value.mValue.mAtom.as_ref()) + })) } nsMediaFeature_ValueType::eIntRatio => { let array = unsafe { css_value.array_unchecked() }; diff --git a/components/style/gecko/rules.rs b/components/style/gecko/rules.rs index 90d061cd7385f..bca5196b1107f 100644 --- a/components/style/gecko/rules.rs +++ b/components/style/gecko/rules.rs @@ -326,7 +326,7 @@ impl ToNsCssValue for counter_style::Ranges { nscssvalue.set_pair_list(self.0.into_iter().map(|range| { fn set_bound(bound: CounterBound, nscssvalue: &mut nsCSSValue) { if let CounterBound::Integer(finite) = bound { - nscssvalue.set_integer(finite) + nscssvalue.set_integer(finite.value()) } else { nscssvalue.set_enum(structs::NS_STYLE_COUNTER_RANGE_INFINITE as i32) } diff --git a/components/style/gecko/values.rs b/components/style/gecko/values.rs index 322fcdf2d1bdc..abc28c8f5ec46 100644 --- a/components/style/gecko/values.rs +++ b/components/style/gecko/values.rs @@ -507,7 +507,7 @@ impl CounterStyleOrNone { let name = unsafe { bindings::Gecko_CounterStyle_GetName(gecko_value) }; if !name.is_null() { - let name = Atom::from(name); + let name = unsafe { Atom::from_raw(name) }; if name == atom!("none") { Either::First(CounterStyleOrNone::None) } else { diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index db3188bd0bf49..ace7686721709 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -171,6 +171,7 @@ impl<'lr> TShadowRoot for GeckoShadowRoot<'lr> { let author_styles = AuthorStyles::::from_ffi(author_styles); + debug_assert!(!author_styles.stylesheets.dirty()); debug_assert!( author_styles.quirks_mode == self.as_node().owner_doc().quirks_mode() || author_styles.stylesheets.is_empty() diff --git a/components/style/gecko_string_cache/mod.rs b/components/style/gecko_string_cache/mod.rs index 3499b13e31015..e3e9a9c691e1f 100644 --- a/components/style/gecko_string_cache/mod.rs +++ b/components/style/gecko_string_cache/mod.rs @@ -99,7 +99,9 @@ impl WeakAtom { /// Clone this atom, bumping the refcount if the atom is not static. #[inline] pub fn clone(&self) -> Atom { - Atom::from(self.as_ptr()) + unsafe { + Atom::from_raw(self.as_ptr()) + } } /// Get the atom hash. @@ -267,15 +269,25 @@ impl Atom { /// /// Right now it's only used by the atom macro, and ideally it should keep /// that way, now we have sugar for is_static, creating atoms using - /// Atom::from should involve almost no overhead. + /// Atom::from_raw should involve almost no overhead. #[inline] - unsafe fn from_static(ptr: *mut nsStaticAtom) -> Self { + pub unsafe fn from_static(ptr: *mut nsStaticAtom) -> Self { let atom = Atom(ptr as *mut WeakAtom); debug_assert!(atom.is_static(), "Called from_static for a non-static atom!"); atom } + /// Creates an atom from an atom pointer. + #[inline(always)] + pub unsafe fn from_raw(ptr: *mut nsAtom) -> Self { + let atom = Atom(ptr as *mut WeakAtom); + if !atom.is_static() { + Gecko_AddRefAtom(ptr); + } + atom + } + /// Creates an atom from a dynamic atom pointer that has already had AddRef /// called on it. #[inline] @@ -308,7 +320,9 @@ impl Hash for WeakAtom { impl Clone for Atom { #[inline(always)] fn clone(&self) -> Atom { - Atom::from(self.as_ptr()) + unsafe { + Atom::from_raw(self.as_ptr()) + } } } @@ -388,28 +402,4 @@ impl From for Atom { } } -impl From<*mut nsAtom> for Atom { - #[inline] - fn from(ptr: *mut nsAtom) -> Atom { - assert!(!ptr.is_null()); - unsafe { - let ret = Atom(WeakAtom::new(ptr)); - if !ret.is_static() { - Gecko_AddRefAtom(ptr); - } - ret - } - } -} - -impl From<*mut nsStaticAtom> for Atom { - #[inline] - fn from(ptr: *mut nsStaticAtom) -> Atom { - assert!(!ptr.is_null()); - unsafe { - Atom::from_static(ptr) - } - } -} - malloc_size_of_is_0!(Atom); diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 5ec5e6d414f8f..ac13b04690b9b 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -131,7 +131,7 @@ impl ComputedValues { return None; } - let atom = Atom::from(atom); + let atom = unsafe { Atom::from_raw(atom) }; PseudoElement::from_atom(&atom) } @@ -3248,12 +3248,15 @@ fn static_assert() { use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_no_properties; use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_variable; use gecko_bindings::structs::nsCSSPropertyID::eCSSProperty_UNKNOWN; + use Atom; let property = self.gecko.mTransitions[index].mProperty; if property == eCSSProperty_UNKNOWN || property == eCSSPropertyExtra_variable { let atom = self.gecko.mTransitions[index].mUnknownProperty.mRawPtr; debug_assert!(!atom.is_null()); - TransitionProperty::Unsupported(CustomIdent(atom.into())) + TransitionProperty::Unsupported(CustomIdent(unsafe{ + Atom::from_raw(atom) + })) } else if property == eCSSPropertyExtra_no_properties { // Actually, we don't expect TransitionProperty::Unsupported also represents "none", // but if the caller wants to convert it, it is fine. Please use it carefully. @@ -3343,13 +3346,13 @@ fn static_assert() { pub fn animation_name_at(&self, index: usize) -> longhands::animation_name::computed_value::SingleComputedValue { use properties::longhands::animation_name::single_value::SpecifiedValue as AnimationName; + use Atom; let atom = self.gecko.mAnimations[index].mName.mRawPtr; if atom == atom!("").as_ptr() { - AnimationName(None) - } else { - AnimationName(Some(KeyframesName::from_atom(atom.into()))) + return AnimationName(None) } + AnimationName(Some(KeyframesName::from_atom(unsafe { Atom::from_raw(atom) }))) } pub fn copy_animation_name_from(&mut self, other: &Self) { self.gecko.mAnimationNameCount = other.gecko.mAnimationNameCount; @@ -3549,16 +3552,19 @@ fn static_assert() { use properties::longhands::will_change::computed_value::T; use gecko_bindings::structs::nsAtom; use values::CustomIdent; + use Atom; if self.gecko.mWillChange.len() == 0 { - T::Auto - } else { - let custom_idents: Vec = self.gecko.mWillChange.iter().map(|gecko_atom| { - CustomIdent((gecko_atom.mRawPtr as *mut nsAtom).into()) - }).collect(); - - T::AnimateableFeatures(custom_idents.into_boxed_slice()) + return T::Auto } + + let custom_idents: Vec = self.gecko.mWillChange.iter().map(|gecko_atom| { + unsafe { + CustomIdent(Atom::from_raw(gecko_atom.mRawPtr as *mut nsAtom)) + } + }).collect(); + + T::AnimateableFeatures(custom_idents.into_boxed_slice()) } <% impl_shape_source("shape_outside", "mShapeOutside") %> diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 283e8dd1fec9a..99922dacf61a4 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -1645,6 +1645,12 @@ impl PropertyId { } } + /// Returns true if the property is a shorthand or shorthand alias. + #[inline] + pub fn is_shorthand(&self) -> bool { + self.as_shorthand().is_ok() + } + /// Given this property id, get it either as a shorthand or as a /// `PropertyDeclarationId`. pub fn as_shorthand(&self) -> Result { diff --git a/components/style/stylesheet_set.rs b/components/style/stylesheet_set.rs index fbff5501882f1..ab8114f422d4a 100644 --- a/components/style/stylesheet_set.rs +++ b/components/style/stylesheet_set.rs @@ -263,7 +263,7 @@ where Self { entries: vec![], data_validity: DataValidity::Valid, - dirty: true, + dirty: false, } } } diff --git a/components/style/stylesheets/document_rule.rs b/components/style/stylesheets/document_rule.rs index 3edfbbb636258..ad2c9d8621949 100644 --- a/components/style/stylesheets/document_rule.rs +++ b/components/style/stylesheets/document_rule.rs @@ -6,7 +6,7 @@ //! initially in CSS Conditional Rules Module Level 3, @document has been postponed to the level 4. //! We implement the prefixed `@-moz-document`. -use cssparser::{Parser, Token, SourceLocation}; +use cssparser::{Parser, SourceLocation}; #[cfg(feature = "gecko")] use malloc_size_of::{MallocSizeOfOps, MallocUnconditionalShallowSizeOf}; use media_queries::Device; @@ -103,13 +103,8 @@ macro_rules! parse_quoted_or_unquoted_string { $input.parse_nested_block(|input| { let start = input.position(); input.parse_entirely(|input| { - let location = input.current_source_location(); - match *input.next()? { - Token::QuotedString(ref value) => { - Ok($url_matching_function(value.as_ref().to_owned())) - }, - ref t => Err(location.new_unexpected_token_error(t.clone())), - } + let string = input.expect_string()?; + Ok($url_matching_function(string.as_ref().to_owned())) }).or_else(|_: ParseError| { while let Ok(_) = input.next() {} Ok($url_matching_function(input.slice_from(start).to_string())) @@ -120,21 +115,26 @@ macro_rules! parse_quoted_or_unquoted_string { impl UrlMatchingFunction { /// Parse a URL matching function for a`@document` rule's condition. - pub fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result> { + pub fn parse<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't>, + ) -> Result> { if input.try(|input| input.expect_function_matching("url-prefix")).is_ok() { - parse_quoted_or_unquoted_string!(input, UrlMatchingFunction::UrlPrefix) - } else if input.try(|input| input.expect_function_matching("domain")).is_ok() { - parse_quoted_or_unquoted_string!(input, UrlMatchingFunction::Domain) - } else if input.try(|input| input.expect_function_matching("regexp")).is_ok() { - input.parse_nested_block(|input| { + return parse_quoted_or_unquoted_string!(input, UrlMatchingFunction::UrlPrefix) + } + + if input.try(|input| input.expect_function_matching("domain")).is_ok() { + return parse_quoted_or_unquoted_string!(input, UrlMatchingFunction::Domain) + } + + if input.try(|input| input.expect_function_matching("regexp")).is_ok() { + return input.parse_nested_block(|input| { Ok(UrlMatchingFunction::Regexp(input.expect_string()?.as_ref().to_owned())) - }) - } else if let Ok(url) = input.try(|input| CssUrl::parse(context, input)) { - Ok(UrlMatchingFunction::Url(url)) - } else { - Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)) + }); } + + let url = CssUrl::parse(context, input)?; + Ok(UrlMatchingFunction::Url(url)) } #[cfg(feature = "gecko")] @@ -182,16 +182,63 @@ pub struct DocumentCondition(#[css(iterable)] Vec); impl DocumentCondition { /// Parse a document condition. - pub fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result> { - input.parse_comma_separated(|input| UrlMatchingFunction::parse(context, input)) - .map(DocumentCondition) + pub fn parse<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't>, + ) -> Result> { + let conditions = input.parse_comma_separated(|input| { + UrlMatchingFunction::parse(context, input) + })?; + + let condition = DocumentCondition(conditions); + if !condition.allowed_in(context) { + return Err(input.new_custom_error( + StyleParseErrorKind::UnsupportedAtRule("-moz-document".into()) + )) + } + Ok(condition) } /// Evaluate a document condition. pub fn evaluate(&self, device: &Device) -> bool { - self.0.iter().any(|ref url_matching_function| + self.0.iter().any(|url_matching_function| { url_matching_function.evaluate(device) - ) + }) + } + + #[cfg(feature = "servo")] + fn allowed_in(&self, _: &ParserContext) -> bool { + false + } + + #[cfg(feature = "gecko")] + fn allowed_in(&self, context: &ParserContext) -> bool { + use gecko_bindings::structs; + use stylesheets::Origin; + + if context.stylesheet_origin != Origin::Author { + return true; + } + + if unsafe { structs::StylePrefs_sMozDocumentEnabledInContent } { + return true; + } + + if !unsafe { structs::StylePrefs_sMozDocumentURLPrefixHackEnabled } { + return false; + } + + // Allow a single url-prefix() for compatibility. + // + // See bug 1446470 and dependencies. + if self.0.len() != 1 { + return false; + } + + // NOTE(emilio): This technically allows url-prefix("") too, but... + match self.0[0] { + UrlMatchingFunction::UrlPrefix(ref prefix) => prefix.is_empty(), + _ => false + } } } diff --git a/components/style/stylesheets/rule_parser.rs b/components/style/stylesheets/rule_parser.rs index 5bc3fb8f05011..714a07308821d 100644 --- a/components/style/stylesheets/rule_parser.rs +++ b/components/style/stylesheets/rule_parser.rs @@ -422,19 +422,6 @@ impl<'a, 'b, 'i, R: ParseErrorReporter> AtRuleParser<'i> for NestedRuleParser<'a )) } - #[cfg(feature = "gecko")] - { - use gecko_bindings::structs; - - if self.stylesheet_origin == Origin::Author && - unsafe { !structs::StylePrefs_sMozDocumentEnabledInContent } - { - return Err(input.new_custom_error( - StyleParseErrorKind::UnsupportedAtRule(name.clone()) - )) - } - } - let cond = DocumentCondition::parse(self.context, input)?; Ok(AtRuleType::WithBlock(AtRuleBlockPrelude::Document(cond, location))) }, diff --git a/components/style/stylist.rs b/components/style/stylist.rs index b5cb97b67190e..4666869af0427 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -1636,7 +1636,7 @@ impl ExtraStyleData { guard: &SharedRwLockReadGuard, rule: &Arc>, ) { - let name = rule.read_with(guard).mName.mRawPtr.into(); + let name = unsafe { Atom::from_raw(rule.read_with(guard).mName.mRawPtr) }; self.counter_styles.insert(name, rule.clone()); } diff --git a/components/url/Cargo.toml b/components/url/Cargo.toml index 67c9dd3ef8955..cbd96488918b4 100644 --- a/components/url/Cargo.toml +++ b/components/url/Cargo.toml @@ -16,4 +16,4 @@ serde = {version = "1.0"} servo_rand = {path = "../rand"} url = "1.2" url_serde = {version = "0.2"} -uuid = {version = "0.5.0", features = ["v4", "serde"]} +uuid = {version = "0.6.0", features = ["v4", "serde"]} diff --git a/components/url/origin.rs b/components/url/origin.rs index a9f851f8d5f41..14a1cb921e66f 100644 --- a/components/url/origin.rs +++ b/components/url/origin.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use servo_rand; -use servo_rand::Rng; use std::cell::RefCell; use std::rc::Rc; use url::{Host, Origin}; @@ -43,7 +42,7 @@ impl ImmutableOrigin { /// Creates a new opaque origin that is only equal to itself. pub fn new_opaque() -> ImmutableOrigin { - ImmutableOrigin::Opaque(OpaqueOrigin(servo_rand::thread_rng().gen())) + ImmutableOrigin::Opaque(OpaqueOrigin(servo_rand::random_uuid())) } pub fn scheme(&self) -> Option<&str> { diff --git a/components/webdriver_server/Cargo.toml b/components/webdriver_server/Cargo.toml index d6f571d601fed..dbca178d48d59 100644 --- a/components/webdriver_server/Cargo.toml +++ b/components/webdriver_server/Cargo.toml @@ -15,7 +15,7 @@ cookie = "0.10" euclid = "0.17" hyper = "0.10" image = "0.18" -ipc-channel = "0.9" +ipc-channel = "0.10" log = "0.3.5" msg = {path = "../msg"} net_traits = {path = "../net_traits"} @@ -25,5 +25,5 @@ script_traits = {path = "../script_traits"} servo_config = {path = "../config"} servo_url = {path = "../url"} url = "1.2" -uuid = {version = "0.5", features = ["v4"]} +uuid = {version = "0.6", features = ["v4"]} webdriver = "0.33" diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 0a77762994e29..f660690a96c69 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -27,7 +27,7 @@ extern crate webdriver; mod keys; -use euclid::Size2D; +use euclid::TypedSize2D; use hyper::method::Method::{self, Post}; use image::{DynamicImage, ImageFormat, RgbImage}; use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; @@ -418,7 +418,7 @@ impl Handler { Nullable::Value(v) => v, Nullable::Null => 0, }; - let size = Size2D::new(width as u32, height as u32); + let size = TypedSize2D::new(width as u32, height as u32); let top_level_browsing_context_id = self.session()?.top_level_browsing_context_id; let cmd_msg = WebDriverCommandMsg::SetWindowSize(top_level_browsing_context_id, size, sender.clone()); diff --git a/components/webvr/Cargo.toml b/components/webvr/Cargo.toml index 7a9e25c204516..c220d2dde5d9e 100644 --- a/components/webvr/Cargo.toml +++ b/components/webvr/Cargo.toml @@ -16,7 +16,7 @@ oculusvr = ['rust-webvr/oculusvr'] [dependencies] canvas_traits = {path = "../canvas_traits"} euclid = "0.17" -ipc-channel = "0.9" +ipc-channel = "0.10" log = "0.3" msg = {path = "../msg"} rust-webvr = {version = "0.9", features = ["openvr"]} diff --git a/components/webvr_traits/Cargo.toml b/components/webvr_traits/Cargo.toml index 2582d2a3e4b58..19a2879db3898 100644 --- a/components/webvr_traits/Cargo.toml +++ b/components/webvr_traits/Cargo.toml @@ -10,7 +10,7 @@ name = "webvr_traits" path = "lib.rs" [dependencies] -ipc-channel = "0.9" +ipc-channel = "0.10" msg = {path = "../msg"} rust-webvr-api = {version = "0.9", features = ["serde-serialization"]} serde = "1.0" diff --git a/etc/ci/buildbot_steps.yml b/etc/ci/buildbot_steps.yml index a08fb2ad5b9bf..12ba8a4b8762b 100644 --- a/etc/ci/buildbot_steps.yml +++ b/etc/ci/buildbot_steps.yml @@ -45,6 +45,7 @@ mac-dev-unit: - ./mach clean-cargo-cache --keep 3 --force - env PKG_CONFIG_PATH=/usr/local/opt/zlib/lib/pkgconfig ./mach build --dev - env PKG_CONFIG_PATH=/usr/local/opt/zlib/lib/pkgconfig ./mach test-unit + - python ./etc/memory_reports_over_time.py --test - ./mach package --dev - ./mach build-geckolib - bash ./etc/ci/lockfile_changed.sh @@ -109,6 +110,7 @@ linux-dev: - ./mach test-tidy --no-progress --self-test - ./mach build --dev - ./mach test-unit + - python ./etc/memory_reports_over_time.py --test - ./mach package --dev - ./mach build --dev --no-default-features --features default-except-unstable - ./mach build-geckolib diff --git a/etc/ci/manifest_changed.sh b/etc/ci/manifest_changed.sh index 1da26c66bca1c..19accbfb3a2d8 100755 --- a/etc/ci/manifest_changed.sh +++ b/etc/ci/manifest_changed.sh @@ -8,20 +8,4 @@ set -o errexit set -o nounset set -o pipefail -echo "About to update manifest." - -# We shouldn't need any binary at all to update the manifests. -# Adding "SKIP_TESTS" to skip tests, it doesn't really skip the tests. -# It will run "run_wpt" with "'test_list': ['SKIP_TESTS']", -# and then pass it into wptrunner, which won't be able to find any tests named -# "SKIP_TESTS", and thus won't run any. -# Adding "--binary=" to skip looking for a compiled servo binary. -./mach test-wpt --manifest-update --binary= SKIP_TESTS - -echo "Updated manifest; about to check if any changes were made to it." -echo "If a diff is present, please run './mach update-manifest' \ -and commit the change." - -diff="$(git diff -- tests/*/MANIFEST.json)" -echo "${diff}" -[[ -z "${diff}" ]] +./mach update-manifest --check-clean diff --git a/etc/ci/update-wpt-checkout b/etc/ci/update-wpt-checkout index c6495e51c40af..8da094bf5ab1b 100755 --- a/etc/ci/update-wpt-checkout +++ b/etc/ci/update-wpt-checkout @@ -41,7 +41,7 @@ function unsafe_pull_from_upstream() { fi # Update the manifest to include the new changes. - ./mach update-manifest --release || return 3 + ./mach update-manifest || return 3 # Amend the existing commit with the new changes from updating the manifest. git commit -a --amend --no-edit || return 4 diff --git a/etc/memory_reports_over_time.py b/etc/memory_reports_over_time.py index 44a969d2d574d..af3a052165a70 100644 --- a/etc/memory_reports_over_time.py +++ b/etc/memory_reports_over_time.py @@ -28,7 +28,8 @@ def extract_memory_reports(lines): elif line == 'End memory reports\n': in_report = False elif in_report: - report_lines[-1].append(line.strip()) + if line.startswith('|'): + report_lines[-1].append(line.strip()) return (report_lines, times) @@ -72,6 +73,17 @@ def transform_report_for_test(report): return transformed +def test_extract_memory_reports(): + input = ["Begin memory reports", + "|", + " 154.56 MiB -- explicit\n", + "| 107.88 MiB -- system-heap-unclassified\n", + "End memory reports\n"] + expected = ([['|', '| 107.88 MiB -- system-heap-unclassified']], ['reports']) + assert(extract_memory_reports(input) == expected) + return 0 + + def test(): input = '''| | 23.89 MiB -- explicit @@ -105,6 +117,7 @@ def test(): assert(sorted(transformed.keys()) == sorted(expected.keys())) for k, v in transformed.items(): assert(v == expected[k]) + test_extract_memory_reports() return 0 diff --git a/ports/geckolib/Cargo.toml b/ports/geckolib/Cargo.toml index 135882583c5bb..0af92e74dc1cd 100644 --- a/ports/geckolib/Cargo.toml +++ b/ports/geckolib/Cargo.toml @@ -22,7 +22,7 @@ libc = "0.2" log = {version = "0.3.5", features = ["release_max_level_info"]} malloc_size_of = {path = "../../components/malloc_size_of"} nsstring = {path = "../../support/gecko/nsstring"} -parking_lot = "0.4" +parking_lot = "0.5" selectors = {path = "../../components/selectors"} servo_arc = {path = "../../components/servo_arc"} smallvec = "0.6" diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 8e0ee71738bae..c0231be9ca81a 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -933,6 +933,23 @@ pub extern "C" fn Servo_ComputedValues_ExtractAnimationValue( } } +#[no_mangle] +pub unsafe extern "C" fn Servo_Property_IsShorthand( + prop_name: *const nsACString, + found: *mut bool +) -> bool { + let prop_id = PropertyId::parse(prop_name.as_ref().unwrap().as_str_unchecked()); + let prop_id = match prop_id { + Ok(ref p) if p.enabled_for_all_content() => p, + _ => { + *found = false; + return false; + } + }; + *found = true; + prop_id.is_shorthand() +} + #[no_mangle] pub extern "C" fn Servo_Property_IsAnimatable(property: nsCSSPropertyID) -> bool { use style::properties::animated_properties; @@ -2020,9 +2037,9 @@ pub extern "C" fn Servo_KeyframesRule_GetName(rule: RawServoKeyframesRuleBorrowe } #[no_mangle] -pub extern "C" fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed, name: *mut nsAtom) { +pub unsafe extern "C" fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed, name: *mut nsAtom) { write_locked_arc(rule, |rule: &mut KeyframesRule| { - rule.name = KeyframesName::Ident(CustomIdent(unsafe { Atom::from_addrefed(name) })); + rule.name = KeyframesName::Ident(CustomIdent(Atom::from_addrefed(name))); }) } @@ -2167,7 +2184,7 @@ pub extern "C" fn Servo_FontFeatureValuesRule_GetValueText( } #[no_mangle] -pub extern "C" fn Servo_ComputedValues_GetForAnonymousBox( +pub unsafe extern "C" fn Servo_ComputedValues_GetForAnonymousBox( parent_style_or_null: ServoStyleContextBorrowedOrNull, pseudo_tag: *mut nsAtom, raw_data: RawServoStyleSetBorrowed, @@ -2176,7 +2193,7 @@ pub extern "C" fn Servo_ComputedValues_GetForAnonymousBox( let guard = global_style_data.shared_lock.read(); let guards = StylesheetGuards::same(&guard); let data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut(); - let atom = Atom::from(pseudo_tag); + let atom = Atom::from_raw(pseudo_tag); let pseudo = PseudoElement::from_anon_box_atom(&atom) .expect("Not an anon box pseudo?"); @@ -2478,7 +2495,7 @@ fn get_pseudo_style( } #[no_mangle] -pub extern "C" fn Servo_ComputedValues_Inherit( +pub unsafe extern "C" fn Servo_ComputedValues_Inherit( raw_data: RawServoStyleSetBorrowed, pseudo_tag: *mut nsAtom, parent_style_context: ServoStyleContextBorrowedOrNull, @@ -2487,7 +2504,7 @@ pub extern "C" fn Servo_ComputedValues_Inherit( let data = PerDocumentStyleData::from_ffi(raw_data).borrow(); let for_text = target == structs::InheritTarget::Text; - let atom = Atom::from(pseudo_tag); + let atom = Atom::from_raw(pseudo_tag); let pseudo = PseudoElement::from_anon_box_atom(&atom) .expect("Not an anon-box? Gah!"); @@ -3210,7 +3227,7 @@ pub extern "C" fn Servo_DeclarationBlock_PropertyIsSet( } #[no_mangle] -pub extern "C" fn Servo_DeclarationBlock_SetIdentStringValue( +pub unsafe extern "C" fn Servo_DeclarationBlock_SetIdentStringValue( declarations: RawServoDeclarationBlockBorrowed, property: nsCSSPropertyID, value: *mut nsAtom, @@ -3220,7 +3237,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetIdentStringValue( let long = get_longhand_from_id!(property); let prop = match_wrap_declared! { long, - XLang => Lang(Atom::from(value)), + XLang => Lang(Atom::from_raw(value)), }; write_locked_arc(declarations, |decls: &mut PropertyDeclarationBlock| { decls.push(prop, Importance::Normal, DeclarationSource::CssOm); @@ -4138,7 +4155,7 @@ fn fill_in_missing_keyframe_values( } #[no_mangle] -pub extern "C" fn Servo_StyleSet_GetKeyframesForName( +pub unsafe extern "C" fn Servo_StyleSet_GetKeyframesForName( raw_data: RawServoStyleSetBorrowed, name: *mut nsAtom, inherited_timing_function: nsTimingFunctionBorrowed, @@ -4148,7 +4165,7 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName( "keyframes should be initially empty"); let data = PerDocumentStyleData::from_ffi(raw_data).borrow(); - let name = Atom::from(name); + let name = Atom::from_raw(name); let animation = match data.stylist.get_animation(&name) { Some(animation) => animation, @@ -4183,11 +4200,11 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName( // Look for an existing keyframe with the same offset and timing // function or else add a new keyframe at the beginning of the keyframe // array. - let keyframe = unsafe { - Gecko_GetOrCreateKeyframeAtStart(keyframes, - step.start_percentage.0 as f32, - &timing_function) - }; + let keyframe = Gecko_GetOrCreateKeyframeAtStart( + keyframes, + step.start_percentage.0 as f32, + &timing_function, + ); match step.value { KeyframesStepValue::ComputedValues => { @@ -4197,12 +4214,10 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName( // animation should be set to the underlying computed value for // that keyframe. for property in animation.properties_changed.iter() { - unsafe { - Gecko_AppendPropertyValuePair( - &mut (*keyframe).mPropertyValues, - property.to_nscsspropertyid(), - ); - } + Gecko_AppendPropertyValuePair( + &mut (*keyframe).mPropertyValues, + property.to_nscsspropertyid(), + ); } if current_offset == 0.0 { has_complete_initial_keyframe = true; @@ -4249,23 +4264,19 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName( continue; } - let pair = unsafe { - Gecko_AppendPropertyValuePair( - &mut (*keyframe).mPropertyValues, - id.to_nscsspropertyid(), - ) - }; + let pair = Gecko_AppendPropertyValuePair( + &mut (*keyframe).mPropertyValues, + id.to_nscsspropertyid(), + ); - unsafe { - (*pair).mServoDeclarationBlock.set_arc_leaky( - Arc::new(global_style_data.shared_lock.wrap( - PropertyDeclarationBlock::with_one( - declaration.clone(), - Importance::Normal, - ) - )) - ); - } + (*pair).mServoDeclarationBlock.set_arc_leaky( + Arc::new(global_style_data.shared_lock.wrap( + PropertyDeclarationBlock::with_one( + declaration.clone(), + Importance::Normal, + ) + )) + ); if current_offset == 0.0 { properties_set_at_start.insert(id); @@ -4276,19 +4287,14 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName( } if custom_properties.any_normal() { - let pair = unsafe { - Gecko_AppendPropertyValuePair( - &mut (*keyframe).mPropertyValues, - nsCSSPropertyID::eCSSPropertyExtra_variable, - ) - }; - - unsafe { - (*pair).mServoDeclarationBlock.set_arc_leaky(Arc::new( - global_style_data.shared_lock.wrap(custom_properties) - )); - } + let pair = Gecko_AppendPropertyValuePair( + &mut (*keyframe).mPropertyValues, + nsCSSPropertyID::eCSSPropertyExtra_variable, + ); + (*pair).mServoDeclarationBlock.set_arc_leaky(Arc::new( + global_style_data.shared_lock.wrap(custom_properties) + )); } }, } @@ -4498,7 +4504,7 @@ pub extern "C" fn Servo_StyleSet_HasDocumentStateDependency( } #[no_mangle] -pub extern "C" fn Servo_GetCustomPropertyValue( +pub unsafe extern "C" fn Servo_GetCustomPropertyValue( computed_values: ServoStyleContextBorrowed, name: *const nsAString, value: *mut nsAString, @@ -4508,13 +4514,13 @@ pub extern "C" fn Servo_GetCustomPropertyValue( None => return false, }; - let name = unsafe { Atom::from(&*name) }; + let name = Atom::from(&*name); let computed_value = match custom_properties.get(&name) { Some(v) => v, None => return false, }; - computed_value.to_css(&mut CssWriter::new(unsafe { value.as_mut().unwrap() })).unwrap(); + computed_value.to_css(&mut CssWriter::new(&mut *value)).unwrap(); true } diff --git a/ports/servo/Cargo.toml b/ports/servo/Cargo.toml index f08f59b7afe26..e156fabe37b2f 100644 --- a/ports/servo/Cargo.toml +++ b/ports/servo/Cargo.toml @@ -13,6 +13,15 @@ path = "main.rs" test = false bench = false +[target.'cfg(windows)'.build-dependencies] +winres = "0.1" + +[package.metadata.winres] +FileDescription = "Servo" +LegalCopyright = "© The Servo Project Developers" +OriginalFilename = "servo.exe" +ProductName = "Servo" + [features] default = ["unstable", "default-except-unstable"] default-except-unstable = ["webdriver", "max_log_level"] @@ -42,6 +51,7 @@ servo_url = {path = "../../components/url"} style_traits = {path = "../../components/style_traits"} tinyfiledialogs = "3.0" webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} +winit = "0.11.2" [target.'cfg(not(target_os = "android"))'.dependencies] sig = "0.1" diff --git a/ports/servo/build.rs b/ports/servo/build.rs index 860617cdaf267..63558909169b0 100644 --- a/ports/servo/build.rs +++ b/ports/servo/build.rs @@ -2,6 +2,9 @@ * 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/. */ +#[cfg(windows)] +extern crate winres; + use std::env; use std::path::Path; use std::process; @@ -13,6 +16,14 @@ fn main() { if target.contains("android") { android_main() } + + #[cfg(windows)] + { + let mut res = winres::WindowsResource::new(); + res.set_icon("../../resources/Servo.ico"); + res.set_manifest_file("platform/windows/servo.exe.manifest"); + res.compile().unwrap(); + } } fn android_main() { diff --git a/ports/servo/glutin_app/window.rs b/ports/servo/glutin_app/window.rs index faf1b3e3b0299..b6ef3e2e3b7a5 100644 --- a/ports/servo/glutin_app/window.rs +++ b/ports/servo/glutin_app/window.rs @@ -7,15 +7,12 @@ use compositing::compositor_thread::EventLoopWaker; use compositing::windowing::{AnimationState, MouseWindowEvent, WindowEvent}; use compositing::windowing::{WebRenderDebugOption, WindowMethods}; -use euclid::{Point2D, Size2D, TypedPoint2D, TypedVector2D, TypedScale, TypedSize2D}; +use euclid::{Length, TypedPoint2D, TypedVector2D, TypedScale, TypedSize2D}; #[cfg(target_os = "windows")] use gdi32; use gleam::gl; use glutin; -use glutin::{Api, ElementState, Event, GlContext, GlRequest, MouseButton, MouseScrollDelta, VirtualKeyCode}; -use glutin::TouchPhase; -#[cfg(target_os = "macos")] -use glutin::os::macos::{ActivationPolicy, WindowBuilderExt}; +use glutin::{Api, GlContext, GlRequest}; use msg::constellation_msg::{self, Key, TopLevelBrowsingContextId as BrowserId}; use msg::constellation_msg::{KeyModifiers, KeyState, TraversalDirection}; use net_traits::net_error_list::NetError; @@ -43,9 +40,14 @@ use style_traits::cursor::CursorKind; use tinyfiledialogs; #[cfg(target_os = "windows")] use user32; -use webrender_api::{DeviceUintRect, DeviceUintSize, ScrollLocation}; +use webrender_api::{DeviceIntPoint, DeviceUintRect, DeviceUintSize, ScrollLocation}; #[cfg(target_os = "windows")] use winapi; +use winit; +use winit::{ElementState, Event, MouseButton, MouseScrollDelta, TouchPhase, VirtualKeyCode}; +#[cfg(target_os = "macos")] +use winit::os::macos::{ActivationPolicy, WindowBuilderExt}; + bitflags! { struct GlutinKeyModifiers: u8 { @@ -78,7 +80,7 @@ const LINE_HEIGHT: f32 = 38.0; const MULTISAMPLES: u16 = 16; #[cfg(target_os = "macos")] -fn builder_with_platform_options(mut builder: glutin::WindowBuilder) -> glutin::WindowBuilder { +fn builder_with_platform_options(mut builder: winit::WindowBuilder) -> winit::WindowBuilder { if opts::get().headless || opts::get().output_file.is_some() { // Prevent the window from showing in Dock.app, stealing focus, // or appearing at all when running in headless mode or generating an @@ -89,7 +91,7 @@ fn builder_with_platform_options(mut builder: glutin::WindowBuilder) -> glutin:: } #[cfg(not(target_os = "macos"))] -fn builder_with_platform_options(builder: glutin::WindowBuilder) -> glutin::WindowBuilder { +fn builder_with_platform_options(builder: winit::WindowBuilder) -> winit::WindowBuilder { builder } @@ -168,25 +170,25 @@ impl HeadlessContext { } enum WindowKind { - Window(glutin::GlWindow, RefCell), + Window(glutin::GlWindow, RefCell), Headless(HeadlessContext), } /// The type of a window. pub struct Window { kind: WindowKind, - screen_size: Size2D, + screen_size: TypedSize2D, inner_size: Cell>, - mouse_down_button: Cell>, - mouse_down_point: Cell>, + mouse_down_button: Cell>, + mouse_down_point: Cell>, event_queue: RefCell>, /// id of the top level browsing context. It is unique as tabs /// are not supported yet. None until created. browser_id: Cell>, - mouse_pos: Cell>, + mouse_pos: Cell>, key_modifiers: Cell, current_url: RefCell>, @@ -220,9 +222,7 @@ impl Window { pub fn new(is_foreground: bool, window_size: TypedSize2D) -> Rc { - let win_size: TypedSize2D = - (window_size.to_f32() * window_creation_scale_factor()) - .to_usize().cast().expect("Window size should fit in u32"); + let win_size: DeviceUintSize = (window_size.to_f32() * window_creation_scale_factor()).to_u32(); let width = win_size.to_untyped().width; let height = win_size.to_untyped().height; @@ -235,12 +235,12 @@ impl Window { let screen_size; let inner_size; let window_kind = if opts::get().headless { - screen_size = Size2D::new(width, height); + screen_size = TypedSize2D::new(width, height); inner_size = TypedSize2D::new(width, height); WindowKind::Headless(HeadlessContext::new(width, height)) } else { - let events_loop = glutin::EventsLoop::new(); - let mut window_builder = glutin::WindowBuilder::new() + let events_loop = winit::EventsLoop::new(); + let mut window_builder = winit::WindowBuilder::new() .with_title("Servo".to_string()) .with_decorations(!opts::get().no_native_titlebar) .with_transparency(opts::get().no_native_titlebar) @@ -266,7 +266,7 @@ impl Window { } let (screen_width, screen_height) = events_loop.get_primary_monitor().get_dimensions(); - screen_size = Size2D::new(screen_width, screen_height); + screen_size = TypedSize2D::new(screen_width, screen_height); // TODO(ajeffrey): can this fail? let (width, height) = glutin_window.get_inner_size().expect("Failed to get window inner size."); inner_size = TypedSize2D::new(width, height); @@ -314,11 +314,11 @@ impl Window { kind: window_kind, event_queue: RefCell::new(vec!()), mouse_down_button: Cell::new(None), - mouse_down_point: Cell::new(Point2D::new(0, 0)), + mouse_down_point: Cell::new(TypedPoint2D::new(0, 0)), browser_id: Cell::new(None), - mouse_pos: Cell::new(Point2D::new(0, 0)), + mouse_pos: Cell::new(TypedPoint2D::new(0, 0)), key_modifiers: Cell::new(GlutinKeyModifiers::empty()), current_url: RefCell::new(None), @@ -401,42 +401,41 @@ impl Window { } } - fn handle_window_event(&self, event: glutin::Event) { + fn handle_window_event(&self, event: winit::Event) { match event { Event::WindowEvent { - event: glutin::WindowEvent::ReceivedCharacter(ch), + event: winit::WindowEvent::ReceivedCharacter(ch), .. } => self.handle_received_character(ch), Event::WindowEvent { - event: glutin::WindowEvent::KeyboardInput { - input: glutin::KeyboardInput { + event: winit::WindowEvent::KeyboardInput { + input: winit::KeyboardInput { state, virtual_keycode: Some(virtual_keycode), .. }, .. }, .. } => self.handle_keyboard_input(state, virtual_keycode), Event::WindowEvent { - event: glutin::WindowEvent::MouseInput { + event: winit::WindowEvent::MouseInput { state, button, .. }, .. } => { if button == MouseButton::Left || button == MouseButton::Right { - let mouse_pos = self.mouse_pos.get(); - self.handle_mouse(button, state, mouse_pos.x, mouse_pos.y); + self.handle_mouse(button, state, self.mouse_pos.get()); } }, Event::WindowEvent { - event: glutin::WindowEvent::CursorMoved { + event: winit::WindowEvent::CursorMoved { position: (x, y), .. }, .. } => { - self.mouse_pos.set(Point2D::new(x as i32, y as i32)); + self.mouse_pos.set(TypedPoint2D::new(x as i32, y as i32)); self.event_queue.borrow_mut().push( WindowEvent::MouseWindowMoveEventClass(TypedPoint2D::new(x as f32, y as f32))); } Event::WindowEvent { - event: glutin::WindowEvent::MouseWheel { delta, phase, .. }, + event: winit::WindowEvent::MouseWheel { delta, phase, .. }, .. } => { let (dx, dy) = match delta { @@ -448,7 +447,7 @@ impl Window { self.scroll_window(scroll_location, phase); }, Event::WindowEvent { - event: glutin::WindowEvent::Touch(touch), + event: winit::WindowEvent::Touch(touch), .. } => { use script_traits::TouchId; @@ -459,17 +458,17 @@ impl Window { self.event_queue.borrow_mut().push(WindowEvent::Touch(phase, id, point)); } Event::WindowEvent { - event: glutin::WindowEvent::Refresh, + event: winit::WindowEvent::Refresh, .. } => self.event_queue.borrow_mut().push(WindowEvent::Refresh), Event::WindowEvent { - event: glutin::WindowEvent::Closed, + event: winit::WindowEvent::Closed, .. } => { self.event_queue.borrow_mut().push(WindowEvent::Quit); } Event::WindowEvent { - event: glutin::WindowEvent::Resized(width, height), + event: winit::WindowEvent::Resized(width, height), .. } => { // width and height are DevicePixel. @@ -479,7 +478,7 @@ impl Window { } // window.set_inner_size() takes DeviceIndependentPixel. let new_size = TypedSize2D::new(width as f32, height as f32); - let new_size = (new_size / self.hidpi_factor()).cast().expect("Window size should fit in u32"); + let new_size = (new_size / self.hidpi_factor()).to_u32(); if self.inner_size.get() != new_size { self.inner_size.set(new_size); self.event_queue.borrow_mut().push(WindowEvent::Resize); @@ -516,37 +515,34 @@ impl Window { } } - let mouse_pos = self.mouse_pos.get(); - let event = WindowEvent::Scroll(scroll_location, - TypedPoint2D::new(mouse_pos.x as i32, mouse_pos.y as i32), - phase); + let event = WindowEvent::Scroll(scroll_location, self.mouse_pos.get(), phase); self.event_queue.borrow_mut().push(event); } /// Helper function to handle a click - fn handle_mouse(&self, button: glutin::MouseButton, action: glutin::ElementState, x: i32, y: i32) { + fn handle_mouse(&self, button: winit::MouseButton, + action: winit::ElementState, + coords: TypedPoint2D) { use script_traits::MouseButton; - // FIXME(tkuehn): max pixel dist should be based on pixel density - let max_pixel_dist = 10f64; + let max_pixel_dist = 10.0 * self.hidpi_factor().get(); let event = match action { ElementState::Pressed => { - self.mouse_down_point.set(Point2D::new(x, y)); + self.mouse_down_point.set(coords); self.mouse_down_button.set(Some(button)); - MouseWindowEvent::MouseDown(MouseButton::Left, TypedPoint2D::new(x as f32, y as f32)) + MouseWindowEvent::MouseDown(MouseButton::Left, coords.to_f32()) } ElementState::Released => { - let mouse_up_event = MouseWindowEvent::MouseUp(MouseButton::Left, - TypedPoint2D::new(x as f32, y as f32)); + let mouse_up_event = MouseWindowEvent::MouseUp(MouseButton::Left, coords.to_f32()); match self.mouse_down_button.get() { None => mouse_up_event, Some(but) if button == but => { - let pixel_dist = self.mouse_down_point.get() - Point2D::new(x, y); + let pixel_dist = self.mouse_down_point.get() - coords; let pixel_dist = ((pixel_dist.x * pixel_dist.x + - pixel_dist.y * pixel_dist.y) as f64).sqrt(); + pixel_dist.y * pixel_dist.y) as f32).sqrt(); if pixel_dist < max_pixel_dist { self.event_queue.borrow_mut().push(WindowEvent::MouseWindowEventClass(mouse_up_event)); - MouseWindowEvent::Click(MouseButton::Left, TypedPoint2D::new(x as f32, y as f32)) + MouseWindowEvent::Click(MouseButton::Left, coords.to_f32()) } else { mouse_up_event } @@ -587,9 +583,9 @@ impl Window { } } if stop || self.is_animating() { - glutin::ControlFlow::Break + winit::ControlFlow::Break } else { - glutin::ControlFlow::Continue + winit::ControlFlow::Continue } }); } @@ -715,7 +711,7 @@ impl Window { } } - fn glutin_key_to_script_key(key: glutin::VirtualKeyCode) -> Result { + fn glutin_key_to_script_key(key: winit::VirtualKeyCode) -> Result { // TODO(negge): add more key mappings match key { VirtualKeyCode::A => Ok(Key::A), @@ -869,7 +865,7 @@ impl WindowMethods for Window { } fn framebuffer_size(&self) -> DeviceUintSize { - (self.inner_size.get().to_f32() * self.hidpi_factor()).to_usize().cast().expect("Window size should fit in u32") + (self.inner_size.get().to_f32() * self.hidpi_factor()).to_u32() } fn window_rect(&self) -> DeviceUintRect { @@ -878,34 +874,32 @@ impl WindowMethods for Window { DeviceUintRect::new(origin, size) } - fn size(&self) -> TypedSize2D { - self.inner_size.get().to_f32() - } - - fn client_window(&self, _: BrowserId) -> (Size2D, Point2D) { - match self.kind { + fn client_window(&self, _: BrowserId) -> (DeviceUintSize, DeviceIntPoint) { + let (size, point) = match self.kind { WindowKind::Window(ref window, ..) => { // TODO(ajeffrey): can this fail? let (width, height) = window.get_outer_size().expect("Failed to get window outer size."); - let size = Size2D::new(width, height); + let size = TypedSize2D::new(width as f32, height as f32); // TODO(ajeffrey): can this fail? let (x, y) = window.get_position().expect("Failed to get window position."); - let origin = Point2D::new(x as i32, y as i32); + let origin = TypedPoint2D::new(x as f32, y as f32); (size, origin) } WindowKind::Headless(ref context) => { - let size = TypedSize2D::new(context.width, context.height); - (size, Point2D::zero()) + let size = TypedSize2D::new(context.width as f32, context.height as f32); + let origin = TypedPoint2D::zero(); + (size, origin) } - } - + }; + let dpr = self.hidpi_factor(); + ((size * dpr).to_u32(), (point * dpr).to_i32()) } - fn screen_size(&self, _: BrowserId) -> Size2D { - self.screen_size + fn screen_size(&self, _: BrowserId) -> DeviceUintSize { + (self.screen_size.to_f32() * self.hidpi_factor()).to_u32() } - fn screen_avail_size(&self, browser_id: BrowserId) -> Size2D { + fn screen_avail_size(&self, browser_id: BrowserId) -> DeviceUintSize { // FIXME: Glutin doesn't have API for available size. Fallback to screen size self.screen_size(browser_id) } @@ -914,19 +908,21 @@ impl WindowMethods for Window { self.animation_state.set(state); } - fn set_inner_size(&self, _: BrowserId, size: Size2D) { + fn set_inner_size(&self, _: BrowserId, size: DeviceUintSize) { match self.kind { WindowKind::Window(ref window, ..) => { + let size = size.to_f32() / self.hidpi_factor(); window.set_inner_size(size.width as u32, size.height as u32) } WindowKind::Headless(..) => {} } } - fn set_position(&self, _: BrowserId, point: Point2D) { + fn set_position(&self, _: BrowserId, point: DeviceIntPoint) { match self.kind { WindowKind::Window(ref window, ..) => { - window.set_position(point.x, point.y) + let point = point.to_f32() / self.hidpi_factor(); + window.set_position(point.x as i32, point.y as i32) } WindowKind::Headless(..) => {} } @@ -957,7 +953,7 @@ impl WindowMethods for Window { fn create_event_loop_waker(&self) -> Box { struct GlutinEventLoopWaker { - proxy: Option>, + proxy: Option>, } impl GlutinEventLoopWaker { fn new(window: &Window) -> GlutinEventLoopWaker { @@ -1061,7 +1057,7 @@ impl WindowMethods for Window { fn set_cursor(&self, cursor: CursorKind) { match self.kind { WindowKind::Window(ref window, ..) => { - use glutin::MouseCursor; + use winit::MouseCursor; let glutin_cursor = match cursor { CursorKind::Auto => MouseCursor::Default, @@ -1110,7 +1106,7 @@ impl WindowMethods for Window { fn set_favicon(&self, _: BrowserId, _: ServoUrl) { } - fn prepare_for_composite(&self, _width: usize, _height: usize) -> bool { + fn prepare_for_composite(&self, _width: Length, _height: Length) -> bool { true } @@ -1228,6 +1224,9 @@ impl WindowMethods for Window { self.event_queue.borrow_mut().push(WindowEvent::Quit); } } + (_, Some('3'), _) => if mods ^ KeyModifiers::CONTROL == KeyModifiers::SHIFT { + self.event_queue.borrow_mut().push(WindowEvent::CaptureWebRender); + } (KeyModifiers::CONTROL, None, Key::F10) => { let event = WindowEvent::ToggleWebRenderDebug(WebRenderDebugOption::RenderTargetDebug); self.event_queue.borrow_mut().push(event); @@ -1272,7 +1271,7 @@ fn glutin_phase_to_touch_event_type(phase: TouchPhase) -> TouchEventType { } fn is_printable(key_code: VirtualKeyCode) -> bool { - use glutin::VirtualKeyCode::*; + use winit::VirtualKeyCode::*; match key_code { Escape | F1 | diff --git a/ports/servo/main.rs b/ports/servo/main.rs index 774a418d757f5..3c025675877de 100644 --- a/ports/servo/main.rs +++ b/ports/servo/main.rs @@ -42,6 +42,7 @@ extern crate sig; extern crate style_traits; extern crate tinyfiledialogs; extern crate webrender_api; +extern crate winit; #[cfg(target_os = "windows")] extern crate winapi; #[cfg(target_os = "windows")] extern crate user32; diff --git a/components/servo/servo.exe.manifest b/ports/servo/platform/windows/servo.exe.manifest similarity index 96% rename from components/servo/servo.exe.manifest rename to ports/servo/platform/windows/servo.exe.manifest index 198d8d5170912..23b2abe1b7278 100644 --- a/components/servo/servo.exe.manifest +++ b/ports/servo/platform/windows/servo.exe.manifest @@ -17,8 +17,7 @@ - true + true - diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 967e8c355093f..f1ed3f885fa9c 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -354,9 +354,6 @@ def build(self, target=None, release=False, dev=False, jobs=None, if status == 0: if sys.platform == "win32": servo_exe_dir = path.join(base_path, "debug" if dev else "release") - # On windows, copy in our manifest - shutil.copy(path.join(self.get_top_dir(), "components", "servo", "servo.exe.manifest"), - servo_exe_dir) msvc_x64 = "64" if "x86_64" in (target or host_triple()) else "" # on msvc builds, use editbin to change the subsystem to windows, but only diff --git a/python/servo/command_base.py b/python/servo/command_base.py index c6111d72bba9d..a200fa05f2432 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -402,8 +402,7 @@ def get_nightly_binary_path(self, nightly_date): # Will alow us to fetch the relevant builds from the nightly repository os_prefix = "linux" if is_windows(): - print("The nightly flag is not supported on windows yet.") - sys.exit(1) + os_prefix = "windows-msvc" if is_macosx(): print("The nightly flag is not supported on mac yet.") sys.exit(1) @@ -428,10 +427,13 @@ def get_nightly_binary_path(self, nightly_date): sys.exit(1) nightly_target_directory = path.join(self.context.topdir, "target") + # ':' is not an authorized character for a file name on Windows + # make sure the OS specific separator is used + target_file_path = file_to_download.replace(':', '-').split('/') + destination_file = os.path.join( + nightly_target_directory, os.path.join(*target_file_path)) # Once extracted, the nightly folder name is the tar name without the extension # (eg /foo/bar/baz.tar.gz extracts to /foo/bar/baz) - destination_file = path.join( - nightly_target_directory, file_to_download) destination_folder = os.path.splitext(destination_file)[0] nightlies_folder = path.join( nightly_target_directory, 'nightly', os_prefix) @@ -457,11 +459,20 @@ def get_nightly_binary_path(self, nightly_date): print("The nightly file {} has already been extracted.".format( destination_folder)) else: - print("Extracting to {}...".format(destination_folder)) - with tarfile.open(os.path.join(nightlies_folder, destination_file), "r") as tar: - tar.extractall(destination_folder) - - return path.join(destination_folder, "servo", "servo") + print("Extracting to {} ...".format(destination_folder)) + if is_windows(): + command = 'msiexec /a {} /qn TARGETDIR={}'.format( + os.path.join(nightlies_folder, destination_file), destination_folder) + if subprocess.call(command, stdout=PIPE, stderr=PIPE) != 0: + print("Could not extract the nightly executable from the msi package.") + sys.exit(1) + else: + with tarfile.open(os.path.join(nightlies_folder, destination_file), "r") as tar: + tar.extractall(destination_folder) + bin_folder = path.join(destination_folder, "servo") + if is_windows(): + bin_folder = path.join(destination_folder, "PFiles", "Mozilla research", "Servo Tech Demo") + return path.join(bin_folder, "servo{}".format(BIN_SUFFIX)) def build_env(self, hosts_file_path=None, target=None, is_build=False, geckolib=False, test_unit=False): """Return an extended environment dictionary.""" diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py index 2a2f2f74d8c1a..8fb97e9eb704f 100644 --- a/python/servo/package_commands.py +++ b/python/servo/package_commands.py @@ -317,7 +317,6 @@ def package(self, release=False, dev=False, android=None, debug=False, debugger= dir_to_resources = path.join(dir_to_temp_servo, 'resources') shutil.copytree(path.join(dir_to_root, 'resources'), dir_to_resources) shutil.copy(binary_path, dir_to_temp_servo) - shutil.copy("{}.manifest".format(binary_path), dir_to_temp_servo) copy_windows_dependencies(target_dir, dir_to_temp_servo) change_prefs(dir_to_resources, "windows") diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 8ed67964bab56..cac5531d8f4ac 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -77,6 +77,19 @@ def create_parser_wpt(): return parser +def create_parser_manifest_update(): + import manifestupdate + return manifestupdate.create_parser() + + +def run_update(topdir, check_clean=False, rebuild=False, **kwargs): + import manifestupdate + from wptrunner import wptlogging + logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) + wpt_dir = os.path.abspath(os.path.join(topdir, 'tests', 'wpt')) + manifestupdate.update(logger, wpt_dir, check_clean, rebuild) + + @CommandProvider class MachCommands(CommandBase): DEFAULT_RENDER_MODE = "cpu" @@ -429,11 +442,9 @@ def wptrunner(self, run_file, **kwargs): @Command('update-manifest', description='Run test-wpt --manifest-update SKIP_TESTS to regenerate MANIFEST.json', category='testing', - parser=create_parser_wpt) + parser=create_parser_manifest_update) def update_manifest(self, **kwargs): - kwargs['test_list'].append(str('SKIP_TESTS')) - kwargs['manifest_update'] = True - return self.test_wpt(**kwargs) + return run_update(self.context.topdir, **kwargs) @Command('update-wpt', description='Update the web platform tests', diff --git a/servo-tidy.toml b/servo-tidy.toml index ad2f4460b8eef..0bb2b9117fd70 100644 --- a/servo-tidy.toml +++ b/servo-tidy.toml @@ -29,6 +29,7 @@ rand = [ "tempfile", "uuid", "ws", + "rand", ] num = [ "chrono", @@ -44,6 +45,7 @@ packages = [ "quote", "unicode-xid", "log", + "rand" ] # Files that are ignored for all tidy and lint checks. files = [ diff --git a/support/rust-task_info/Cargo.toml b/support/rust-task_info/Cargo.toml index b65a569a21aed..ea6852ffb3ec0 100644 --- a/support/rust-task_info/Cargo.toml +++ b/support/rust-task_info/Cargo.toml @@ -8,4 +8,4 @@ license = "MPL-2.0" build = "build.rs" [build-dependencies] -gcc = "0.3.4" +cc = "1.0" diff --git a/support/rust-task_info/build.rs b/support/rust-task_info/build.rs index b7461713a0970..e20f2723a80d0 100644 --- a/support/rust-task_info/build.rs +++ b/support/rust-task_info/build.rs @@ -2,10 +2,10 @@ * 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/. */ -extern crate gcc; +extern crate cc; fn main() { - let mut cfg = gcc::Config::new(); - cfg.file("src/task_info.c"); - cfg.compile("libtask_info.a"); + cc::Build::new() + .file("src/task_info.c") + .compile("libtask_info.a"); } diff --git a/support/windows/Servo.wxs.mako b/support/windows/Servo.wxs.mako index a2a62ccb581d4..69cd69a4a1b17 100644 --- a/support/windows/Servo.wxs.mako +++ b/support/windows/Servo.wxs.mako @@ -36,8 +36,7 @@ Directory="ProgramMenuDir" Name="Servo Tech Demo" WorkingDirectory="INSTALLDIR" - Icon="Servo.ico" - IconIndex="0" + Icon="servo.exe" Advertise="yes"/> ${include_dependencies()} @@ -70,7 +69,7 @@ - + <%! diff --git a/tests/html/pair_iterable_perf.html b/tests/html/pair_iterable_perf.html new file mode 100644 index 0000000000000..f4fefc6ba689d --- /dev/null +++ b/tests/html/pair_iterable_perf.html @@ -0,0 +1,44 @@ + + +Value and pair iterable bindings + diff --git a/tests/unit/metrics/Cargo.toml b/tests/unit/metrics/Cargo.toml index f6ed97887a2fc..7ab518b8bea99 100644 --- a/tests/unit/metrics/Cargo.toml +++ b/tests/unit/metrics/Cargo.toml @@ -12,7 +12,7 @@ doctest = false [dependencies] gfx = {path = "../../../components/gfx"} gfx_traits = {path = "../../../components/gfx_traits"} -ipc-channel = "0.9" +ipc-channel = "0.10" metrics = {path = "../../../components/metrics"} msg = {path = "../../../components/msg"} net_traits = {path = "../../../components/net_traits"} diff --git a/tests/unit/profile/Cargo.toml b/tests/unit/profile/Cargo.toml index 026593d80fa79..dbb565d2b7821 100644 --- a/tests/unit/profile/Cargo.toml +++ b/tests/unit/profile/Cargo.toml @@ -10,7 +10,7 @@ path = "lib.rs" doctest = false [dependencies] -ipc-channel = "0.9" +ipc-channel = "0.10" profile = {path = "../../../components/profile"} profile_traits = {path = "../../../components/profile_traits"} diff --git a/tests/unit/style/Cargo.toml b/tests/unit/style/Cargo.toml index 8b5d5cca98dea..23778c73f9315 100644 --- a/tests/unit/style/Cargo.toml +++ b/tests/unit/style/Cargo.toml @@ -15,7 +15,7 @@ app_units = "0.6" cssparser = "0.23.0" euclid = "0.17" html5ever = "0.22" -parking_lot = "0.4" +parking_lot = "0.5" rayon = "1" serde_json = "1.0" selectors = {path = "../../../components/selectors"} diff --git a/tests/wpt/manifestupdate.py b/tests/wpt/manifestupdate.py new file mode 100644 index 0000000000000..f2e5887b78c0d --- /dev/null +++ b/tests/wpt/manifestupdate.py @@ -0,0 +1,157 @@ +# 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/. + +import argparse +import imp +import os +import sys +from collections import defaultdict + +from mozlog.structured import commandline +from wptrunner.wptcommandline import get_test_paths, set_from_config + +manifest = None + + +def do_delayed_imports(wpt_dir): + global manifest + sys.path.insert(0, os.path.join(wpt_dir, "tools", "manifest")) + import manifest # noqa + + +def create_parser(): + p = argparse.ArgumentParser() + p.add_argument("--check-clean", action="store_true", + help="Check that updating the manifest doesn't lead to any changes") + p.add_argument("--rebuild", action="store_true", + help="Rebuild the manifest from scratch") + commandline.add_logging_group(p) + + return p + + +def update(logger, wpt_dir, check_clean=True, rebuild=False): + localpaths = imp.load_source("localpaths", # noqa + os.path.join(wpt_dir, "web-platform-tests", "tools", "localpaths.py")) + kwargs = {"config": os.path.join(wpt_dir, "config.ini"), + "manifest_path": os.path.join(wpt_dir, "metadata"), + "tests_root": None, + "metadata_root": None} + + set_from_config(kwargs) + config = kwargs["config"] + test_paths = get_test_paths(config) + + do_delayed_imports(wpt_dir) + + if check_clean: + return _check_clean(logger, test_paths) + + return _update(logger, test_paths, rebuild) + + +def _update(logger, test_paths, rebuild): + for url_base, paths in test_paths.iteritems(): + manifest_path = os.path.join(paths["metadata_path"], "MANIFEST.json") + if rebuild: + m = manifest.manifest.Manifest(url_base) + else: + m = manifest.manifest.load(paths["tests_path"], manifest_path) + manifest.update.update(paths["tests_path"], m, working_copy=True) + manifest.manifest.write(m, manifest_path) + return 0 + + +def _check_clean(logger, test_paths): + manifests_by_path = {} + rv = 0 + for url_base, paths in test_paths.iteritems(): + tests_path = paths["tests_path"] + manifest_path = os.path.join(paths["metadata_path"], "MANIFEST.json") + old_manifest = manifest.manifest.load(tests_path, manifest_path) + new_manifest = manifest.manifest.Manifest.from_json(tests_path, + old_manifest.to_json()) + manifest.update.update(tests_path, new_manifest, working_copy=True) + manifests_by_path[manifest_path] = (old_manifest, new_manifest) + + for manifest_path, (old_manifest, new_manifest) in manifests_by_path.iteritems(): + if not diff_manifests(logger, manifest_path, old_manifest, new_manifest): + rv = 1 + if rv: + logger.error("Manifest %s is outdated, use |./mach update-manifest| to fix." % manifest_path) + + return rv + + +def diff_manifests(logger, manifest_path, old_manifest, new_manifest): + """Lint the differences between old and new versions of a + manifest. Differences are considered significant (and so produce + lint errors) if they produce a meaningful difference in the actual + tests run. + + :param logger: mozlog logger to use for output + :param manifest_path: Path to the manifest being linted + :param old_manifest: Manifest object representing the initial manifest + :param new_manifest: Manifest object representing the updated manifest + """ + logger.info("Diffing old and new manifests %s" % manifest_path) + old_items, new_items = defaultdict(set), defaultdict(set) + for manifest, items in [(old_manifest, old_items), + (new_manifest, new_items)]: + for test_type, path, tests in manifest: + for test in tests: + test_id = [test.id] + test_id.extend(tuple(item) if isinstance(item, list) else item + for item in test.meta_key()) + if hasattr(test, "references"): + test_id.extend(tuple(item) for item in test.references) + test_id = tuple(test_id) + items[path].add((test_type, test_id)) + + old_paths = set(old_items.iterkeys()) + new_paths = set(new_items.iterkeys()) + + added_paths = new_paths - old_paths + deleted_paths = old_paths - new_paths + + common_paths = new_paths & old_paths + + clean = True + + for path in added_paths: + clean = False + log_error(logger, manifest_path, "%s in source but not in manifest." % path) + for path in deleted_paths: + clean = False + log_error(logger, manifest_path, "%s in manifest but removed from source." % path) + + for path in common_paths: + old_tests = old_items[path] + new_tests = new_items[path] + added_tests = new_tests - old_tests + removed_tests = old_tests - new_tests + if added_tests or removed_tests: + clean = False + log_error(logger, manifest_path, "%s changed test types or metadata" % path) + + if clean: + # Manifest currently has some list vs tuple inconsistencies that break + # a simple equality comparison. + new_paths = {(key, value[0], value[1]) + for (key, value) in new_manifest.to_json()["paths"].iteritems()} + old_paths = {(key, value[0], value[1]) + for (key, value) in old_manifest.to_json()["paths"].iteritems()} + if old_paths != new_paths: + logger.warning("Manifest %s contains correct tests but file hashes changed." % manifest_path) # noqa + clean = False + + return clean + + +def log_error(logger, manifest_path, msg): + logger.lint_error(path=manifest_path, + message=msg, + lineno=0, + source="", + linter="wpt-manifest") diff --git a/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini index 193d306bf54b5..6d64e8676645d 100644 --- a/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini +++ b/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini @@ -4,34 +4,10 @@ expected: FAIL bug: https://github.com/servo/rust-mozjs/issues/269 - [ArrayBuffer elements of the blobParts array should be supported.] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Passing typed arrays as elements of the blobParts array should work.] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Passing a Float64Array as element of the blobParts array should work.] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - [Passing a FrozenArray as the blobParts array should work (FrozenArray).] expected: FAIL bug: https://github.com/servo/servo/issues/7457 - [Array with two buffers] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Array with two bufferviews] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Array with mixed types] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - [options properties should be accessed in lexicographic order.] expected: FAIL diff --git a/tests/wpt/metadata/FileAPI/blob/Blob-slice.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-slice.html.ini index 25aa6248cf486..d602b90069fee 100644 --- a/tests/wpt/metadata/FileAPI/blob/Blob-slice.html.ini +++ b/tests/wpt/metadata/FileAPI/blob/Blob-slice.html.ini @@ -1,62 +1,2 @@ [Blob-slice.html] type: testharness - [Slicing test: slice (5,0).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (5,1).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (5,2).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (5,3).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (6,0).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (6,1).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (6,2).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (7,0).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (7,1).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (7,2).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (7,3).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (8,0).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (8,1).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (8,2).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Slicing test: slice (8,3).] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - diff --git a/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini b/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini index a812f00415fc0..da1c2c9114d96 100644 --- a/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini +++ b/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini @@ -1,20 +1,7 @@ [File-constructor.html] type: testharness - [ArrayBuffer fileBits] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Typed array fileBits] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Various fileBits] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - [HTMLDocument in fileBits] expected: FAIL [Invalid bits argument: "hello"] expected: FAIL - diff --git a/tests/wpt/metadata/FileAPI/reading-data-section/Determining-Encoding.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/Determining-Encoding.html.ini index 1b62c9bc1e0b3..e52ca0c4e3caf 100644 --- a/tests/wpt/metadata/FileAPI/reading-data-section/Determining-Encoding.html.ini +++ b/tests/wpt/metadata/FileAPI/reading-data-section/Determining-Encoding.html.ini @@ -1,26 +1,2 @@ [Determining-Encoding.html] type: testharness - [Blob Determing Encoding with encoding argument] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Blob Determing Encoding with type attribute] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Blob Determing Encoding with UTF-8 BOM] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Blob Determing Encoding without anything implying charset.] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Blob Determing Encoding with UTF-16BE BOM] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - - [Blob Determing Encoding with UTF-16LE BOM] - expected: FAIL - bug: https://github.com/servo/servo/issues/10911 - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index f35dc00fca730..90387ce6c8ad1 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -10429,12 +10429,6 @@ {} ] ], - "css/css-text/word-break/word-break-normal-002.xht": [ - [ - "/css/css-text/word-break/word-break-normal-002.xht", - {} - ] - ], "css/css-transitions/transition-delay-000.html": [ [ "/css/css-transitions/transition-delay-000.html", @@ -14881,6 +14875,12 @@ {} ] ], + "payment-request/payment-request-show-method-manual.https.html": [ + [ + "/payment-request/payment-request-show-method-manual.https.html", + {} + ] + ], "payment-request/payment-response/complete-method-manual.https.html": [ [ "/payment-request/payment-response/complete-method-manual.https.html", @@ -115811,6 +115811,30 @@ {} ] ], + "css/css-grid/alignment/grid-gutters-011.html": [ + [ + "/css/css-grid/alignment/grid-gutters-011.html", + [ + [ + "/css/css-grid/reference/grid-different-gutters-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/alignment/grid-gutters-012.html": [ + [ + "/css/css-grid/alignment/grid-gutters-012.html", + [ + [ + "/css/css-grid/reference/grid-different-gutters-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html": [ [ "/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html", @@ -119723,6 +119747,18 @@ {} ] ], + "css/css-multicol/float-and-block.html": [ + [ + "/css/css-multicol/float-and-block.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-multicol/multicol-basic-001.html": [ [ "/css/css-multicol/multicol-basic-001.html", @@ -125571,6 +125607,90 @@ {} ] ], + "css/css-scoping/shadow-disabled-sheet-001.html": [ + [ + "/css/css-scoping/shadow-disabled-sheet-001.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-fallback-dynamic-001.html": [ + [ + "/css/css-scoping/shadow-fallback-dynamic-001.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-fallback-dynamic-002.html": [ + [ + "/css/css-scoping/shadow-fallback-dynamic-002.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-fallback-dynamic-003.html": [ + [ + "/css/css-scoping/shadow-fallback-dynamic-003.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-fallback-dynamic-004.html": [ + [ + "/css/css-scoping/shadow-fallback-dynamic-004.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-fallback-dynamic-005.html": [ + [ + "/css/css-scoping/shadow-fallback-dynamic-005.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-root-insert-into-document.html": [ + [ + "/css/css-scoping/shadow-root-insert-into-document.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], "css/css-scoping/slotted-with-pseudo-element.html": [ [ "/css/css-scoping/slotted-with-pseudo-element.html", @@ -125583,6 +125703,18 @@ {} ] ], + "css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html": [ + [ + "/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html", + [ + [ + "/css/css-shapes/shape-outside/formatting-context/reference/shape-outside-formatting-context-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-shapes/shape-outside/shape-box/shape-outside-box-002.html": [ [ "/css/css-shapes/shape-outside/shape-box/shape-outside-box-002.html", @@ -130599,18 +130731,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-opclns-013.html": [ - [ - "/css/css-text/i18n/css3-text-line-break-opclns-013.html", - [ - [ - "/css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text/i18n/css3-text-line-break-opclns-014.html": [ [ "/css/css-text/i18n/css3-text-line-break-opclns-014.html", @@ -131019,18 +131139,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-opclns-048.html": [ - [ - "/css/css-text/i18n/css3-text-line-break-opclns-048.html", - [ - [ - "/css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text/i18n/css3-text-line-break-opclns-049.html": [ [ "/css/css-text/i18n/css3-text-line-break-opclns-049.html", @@ -131451,18 +131559,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-opclns-118.html": [ - [ - "/css/css-text/i18n/css3-text-line-break-opclns-118.html", - [ - [ - "/css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text/i18n/css3-text-line-break-opclns-119.html": [ [ "/css/css-text/i18n/css3-text-line-break-opclns-119.html", @@ -131883,18 +131979,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-opclns-154.html": [ - [ - "/css/css-text/i18n/css3-text-line-break-opclns-154.html", - [ - [ - "/css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text/i18n/css3-text-line-break-opclns-155.html": [ [ "/css/css-text/i18n/css3-text-line-break-opclns-155.html", @@ -132291,18 +132375,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-opclns-216.html": [ - [ - "/css/css-text/i18n/css3-text-line-break-opclns-216.html", - [ - [ - "/css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text/i18n/css3-text-line-break-opclns-217.html": [ [ "/css/css-text/i18n/css3-text-line-break-opclns-217.html", @@ -132387,18 +132459,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-opclns-224.html": [ - [ - "/css/css-text/i18n/css3-text-line-break-opclns-224.html", - [ - [ - "/css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text/i18n/css3-text-line-break-opclns-225.html": [ [ "/css/css-text/i18n/css3-text-line-break-opclns-225.html", @@ -132531,18 +132591,6 @@ {} ] ], - "css/css-text/line-break/line-break-normal-025.xht": [ - [ - "/css/css-text/line-break/line-break-normal-025.xht", - [ - [ - "/css/css-text/line-break/reference/line-break-normal-025-ref.xht", - "==" - ] - ], - {} - ] - ], "css/css-text/line-break/line-break-strict-011.xht": [ [ "/css/css-text/line-break/line-break-strict-011.xht", @@ -132651,30 +132699,6 @@ {} ] ], - "css/css-text/line-break/line-break-strict-018a.xht": [ - [ - "/css/css-text/line-break/line-break-strict-018a.xht", - [ - [ - "/css/css-text/line-break/reference/line-break-strict-018a-ref.xht", - "==" - ] - ], - {} - ] - ], - "css/css-text/line-break/line-break-strict-018b.xht": [ - [ - "/css/css-text/line-break/line-break-strict-018b.xht", - [ - [ - "/css/css-text/line-break/reference/line-break-strict-018b-ref.xht", - "==" - ] - ], - {} - ] - ], "css/css-text/line-breaking/line-breaking-001.html": [ [ "/css/css-text/line-breaking/line-breaking-001.html", @@ -132807,6 +132831,18 @@ {} ] ], + "css/css-text/line-breaking/line-breaking-012.html": [ + [ + "/css/css-text/line-breaking/line-breaking-012.html", + [ + [ + "/css/css-text/line-breaking/reference/line-breaking-012-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/line-breaking/line-breaking-ic-001.html": [ [ "/css/css-text/line-breaking/line-breaking-ic-001.html", @@ -159163,6 +159199,102 @@ {} ] ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html": [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html", + [ + [ + "/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/svg-aliasing-001.html": [ [ "/css/css-writing-modes/svg-aliasing-001.html", @@ -190340,12 +190472,17 @@ {} ] ], - "client-hints/accept_ch.https.html.headers": [ + "client-hints/accept_ch.http.html.headers": [ [ {} ] ], - "client-hints/echo_device_memory_header_received.py": [ + "client-hints/accept_ch.sub.https.html.headers": [ + [ + {} + ] + ], + "client-hints/echo_client_hints_received.py": [ [ {} ] @@ -199710,11 +199847,6 @@ {} ] ], - "conformance-checkers/html/elements/a/href/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/a/href/scheme-trailing-cr-novalid.html": [ [ {} @@ -200090,11 +200222,6 @@ {} ] ], - "conformance-checkers/html/elements/area/href/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/area/href/scheme-trailing-cr-novalid.html": [ [ {} @@ -200455,11 +200582,6 @@ {} ] ], - "conformance-checkers/html/elements/audio/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/audio/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -201115,11 +201237,6 @@ {} ] ], - "conformance-checkers/html/elements/base/href/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/base/href/scheme-javascript-single-slash-isvalid.html": [ [ {} @@ -201585,11 +201702,6 @@ {} ] ], - "conformance-checkers/html/elements/blockquote/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/blockquote/cite/scheme-trailing-cr-novalid.html": [ [ {} @@ -201945,11 +202057,6 @@ {} ] ], - "conformance-checkers/html/elements/button/formaction/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/button/formaction/scheme-trailing-cr-novalid.html": [ [ {} @@ -202315,11 +202422,6 @@ {} ] ], - "conformance-checkers/html/elements/del/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/del/cite/scheme-trailing-cr-novalid.html": [ [ {} @@ -203330,11 +203432,6 @@ {} ] ], - "conformance-checkers/html/elements/embed/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/embed/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -203690,11 +203787,6 @@ {} ] ], - "conformance-checkers/html/elements/form/action/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/form/action/scheme-trailing-cr-novalid.html": [ [ {} @@ -204130,11 +204222,6 @@ {} ] ], - "conformance-checkers/html/elements/iframe/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/iframe/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -204480,11 +204567,6 @@ {} ] ], - "conformance-checkers/html/elements/img/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/img/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -204855,11 +204937,6 @@ {} ] ], - "conformance-checkers/html/elements/input/type-image-formaction/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/input/type-image-formaction/scheme-trailing-cr-novalid.html": [ [ {} @@ -205195,11 +205272,6 @@ {} ] ], - "conformance-checkers/html/elements/input/type-image-src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/input/type-image-src/scheme-trailing-cr-novalid.html": [ [ {} @@ -205535,11 +205607,6 @@ {} ] ], - "conformance-checkers/html/elements/input/type-submit-formaction/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/input/type-submit-formaction/scheme-trailing-cr-novalid.html": [ [ {} @@ -205915,11 +205982,6 @@ {} ] ], - "conformance-checkers/html/elements/input/type-url-value/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/input/type-url-value/scheme-schemeless-relative-novalid.html": [ [ {} @@ -206255,11 +206317,6 @@ {} ] ], - "conformance-checkers/html/elements/ins/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/ins/cite/scheme-trailing-cr-novalid.html": [ [ {} @@ -207145,11 +207202,6 @@ {} ] ], - "conformance-checkers/html/elements/link/href/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/link/href/scheme-trailing-cr-novalid.html": [ [ {} @@ -207525,11 +207577,6 @@ {} ] ], - "conformance-checkers/html/elements/object/data/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/object/data/scheme-trailing-cr-novalid.html": [ [ {} @@ -208920,11 +208967,6 @@ {} ] ], - "conformance-checkers/html/elements/q/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/q/cite/scheme-trailing-cr-novalid.html": [ [ {} @@ -209300,11 +209342,6 @@ {} ] ], - "conformance-checkers/html/elements/script/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/script/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -209665,11 +209702,6 @@ {} ] ], - "conformance-checkers/html/elements/source/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/source/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -210140,11 +210172,6 @@ {} ] ], - "conformance-checkers/html/elements/track/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/track/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -210515,11 +210542,6 @@ {} ] ], - "conformance-checkers/html/elements/video/poster/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/video/poster/scheme-trailing-cr-novalid.html": [ [ {} @@ -210845,11 +210867,6 @@ {} ] ], - "conformance-checkers/html/elements/video/src/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/elements/video/src/scheme-trailing-cr-novalid.html": [ [ {} @@ -211445,11 +211462,6 @@ {} ] ], - "conformance-checkers/html/microdata/itemid/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/microdata/itemid/scheme-trailing-cr-novalid.html": [ [ {} @@ -211810,11 +211822,6 @@ {} ] ], - "conformance-checkers/html/microdata/itemtype/scheme-javascript-no-slash-malformed-novalid.html": [ - [ - {} - ] - ], "conformance-checkers/html/microdata/itemtype/scheme-schemeless-relative-novalid.html": [ [ {} @@ -215320,6 +215327,16 @@ {} ] ], + "css/CSS2/backgrounds/support/cat-128.png": [ + [ + {} + ] + ], + "css/CSS2/backgrounds/support/cat-830.png": [ + [ + {} + ] + ], "css/CSS2/backgrounds/support/cat.png": [ [ {} @@ -247620,6 +247637,11 @@ {} ] ], + "css/css-grid/abspos/support/grid.css": [ + [ + {} + ] + ], "css/css-grid/alignment/support/100x100-green.png": [ [ {} @@ -247640,6 +247662,11 @@ {} ] ], + "css/css-grid/grid-definition/support/grid.css": [ + [ + {} + ] + ], "css/css-grid/grid-definition/support/testing-utils.js": [ [ {} @@ -247685,6 +247712,16 @@ {} ] ], + "css/css-grid/grid-items/support/grid.css": [ + [ + {} + ] + ], + "css/css-grid/grid-model/support/grid.css": [ + [ + {} + ] + ], "css/css-grid/reference/display-grid-ref.html": [ [ {} @@ -247775,11 +247812,6 @@ {} ] ], - "css/css-grid/support/grid.css": [ - [ - {} - ] - ], "css/css-grid/test-plan/index.html": [ [ {} @@ -250880,6 +250912,11 @@ {} ] ], + "css/css-shapes/shape-outside/formatting-context/reference/shape-outside-formatting-context-ref.html": [ + [ + {} + ] + ], "css/css-shapes/shape-outside/shape-box/reference/shape-outside-box-001-ref.html": [ [ {} @@ -253250,11 +253287,6 @@ {} ] ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html": [ - [ - {} - ] - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html": [ [ {} @@ -253425,11 +253457,6 @@ {} ] ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html": [ - [ - {} - ] - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html": [ [ {} @@ -253605,11 +253632,6 @@ {} ] ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html": [ - [ - {} - ] - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html": [ [ {} @@ -253785,11 +253807,6 @@ {} ] ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html": [ - [ - {} - ] - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html": [ [ {} @@ -253955,11 +253972,6 @@ {} ] ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html": [ - [ - {} - ] - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html": [ [ {} @@ -253995,11 +254007,6 @@ {} ] ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html": [ - [ - {} - ] - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html": [ [ {} @@ -254155,11 +254162,6 @@ {} ] ], - "css/css-text/line-break/reference/line-break-normal-025-ref.xht": [ - [ - {} - ] - ], "css/css-text/line-break/reference/line-break-strict-011-ref.xht": [ [ {} @@ -254205,17 +254207,12 @@ {} ] ], - "css/css-text/line-break/reference/line-break-strict-018a-ref.xht": [ - [ - {} - ] - ], - "css/css-text/line-break/reference/line-break-strict-018b-ref.xht": [ + "css/css-text/line-breaking/reference/line-breaking-001-ref.html": [ [ {} ] ], - "css/css-text/line-breaking/reference/line-breaking-001-ref.html": [ + "css/css-text/line-breaking/reference/line-breaking-012-ref.html": [ [ {} ] @@ -255180,11 +255177,6 @@ {} ] ], - "css/css-text/word-break/reference/word-break-normal-002-ref.xht": [ - [ - {} - ] - ], "css/css-text/word-break/reference/word-break-normal-ar-ref-000.html": [ [ {} @@ -260295,6 +260287,36 @@ {} ] ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html": [ + [ + {} + ] + ], "css/css-writing-modes/support/100x100-lime.png": [ [ {} @@ -264230,6 +264252,11 @@ {} ] ], + "css/support/blue32x32.ico": [ + [ + {} + ] + ], "css/support/c-red.css": [ [ {} @@ -268965,6 +268992,11 @@ {} ] ], + "docs/assets/gh-fork-ribbon.scss": [ + [ + {} + ] + ], "docs/assets/main.scss": [ [ {} @@ -271020,6 +271052,11 @@ {} ] ], + "entries-api/README.md": [ + [ + {} + ] + ], "entries-api/support.js": [ [ {} @@ -271185,6 +271222,26 @@ {} ] ], + "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html.sub.headers": [ + [ + {} + ] + ], + "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html.sub.headers": [ + [ + {} + ] + ], + "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html.sub.headers": [ + [ + {} + ] + ], + "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html.sub.headers": [ + [ + {} + ] + ], "feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html.sub.headers": [ [ {} @@ -279840,11 +279897,6 @@ {} ] ], - "html/infrastructure/common-dom-interfaces/collections/domstringlist.idl": [ - [ - {} - ] - ], "html/infrastructure/common-dom-interfaces/domstringmap/.gitkeep": [ [ {} @@ -282395,6 +282447,11 @@ {} ] ], + "html/semantics/forms/form-submission-0/resources/file-submission.py": [ + [ + {} + ] + ], "html/semantics/forms/introduction-1/.gitkeep": [ [ {} @@ -285155,6 +285212,11 @@ {} ] ], + "interfaces/css-font-loading.idl": [ + [ + {} + ] + ], "interfaces/css-typed-om.idl": [ [ {} @@ -285195,6 +285257,11 @@ {} ] ], + "interfaces/feature-policy.idl": [ + [ + {} + ] + ], "interfaces/fullscreen.idl": [ [ {} @@ -285315,6 +285382,11 @@ {} ] ], + "interfaces/webaudio.idl": [ + [ + {} + ] + ], "interfaces/webauthn.idl": [ [ {} @@ -286185,6 +286257,46 @@ {} ] ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ + [ + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ + [ + {} + ] + ], "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} @@ -290110,11 +290222,21 @@ {} ] ], + "resource-timing/resources/empty.py": [ + [ + {} + ] + ], "resource-timing/resources/empty_script.js": [ [ {} ] ], + "resource-timing/resources/eventsource.py": [ + [ + {} + ] + ], "resource-timing/resources/fake_responses.html": [ [ {} @@ -291275,6 +291397,11 @@ {} ] ], + "service-workers/cache-storage/script-tests/cache-abort.js": [ + [ + {} + ] + ], "service-workers/cache-storage/script-tests/cache-add.js": [ [ {} @@ -292855,11 +292982,6 @@ {} ] ], - "staticrange/OWNERS": [ - [ - {} - ] - ], "storage/OWNERS": [ [ {} @@ -294430,6 +294552,16 @@ {} ] ], + "web-animations/resources/timing-tests.js": [ + [ + {} + ] + ], + "web-animations/resources/timing-utils.js": [ + [ + {} + ] + ], "web-animations/resources/xhr-doc.py": [ [ {} @@ -294620,6 +294752,11 @@ {} ] ], + "webaudio/the-audio-api/the-audioworklet-interface/processors/input-length-processor.js": [ + [ + {} + ] + ], "webaudio/the-audio-api/the-audioworklet-interface/processors/one-pole-processor.js": [ [ {} @@ -303258,6 +303395,12 @@ {} ] ], + "FileAPI/FileReader/workers.html": [ + [ + "/FileAPI/FileReader/workers.html", + {} + ] + ], "FileAPI/FileReaderSync.worker.js": [ [ "/FileAPI/FileReaderSync.worker.html", @@ -305328,15 +305471,13 @@ {} ] ], - "IndexedDB/interfaces.html": [ + "IndexedDB/interfaces.any.js": [ [ - "/IndexedDB/interfaces.html", + "/IndexedDB/interfaces.any.html", {} - ] - ], - "IndexedDB/interfaces.worker.js": [ + ], [ - "/IndexedDB/interfaces.worker.html", + "/IndexedDB/interfaces.any.worker.html", {} ] ], @@ -308064,9 +308205,15 @@ {} ] ], - "client-hints/accept_ch.https.html": [ + "client-hints/accept_ch.http.html": [ + [ + "/client-hints/accept_ch.http.html", + {} + ] + ], + "client-hints/accept_ch.sub.https.html": [ [ - "/client-hints/accept_ch.https.html", + "/client-hints/accept_ch.sub.https.html", {} ] ], @@ -310492,6 +310639,30 @@ {} ] ], + "cookie-store/cookieStore_event_arguments.tenative.window.js": [ + [ + "/cookie-store/cookieStore_event_arguments.tenative.window.html", + {} + ] + ], + "cookie-store/cookieStore_event_basic.tentative.window.js": [ + [ + "/cookie-store/cookieStore_event_basic.tentative.window.html", + {} + ] + ], + "cookie-store/cookieStore_event_delete.tenative.window.js": [ + [ + "/cookie-store/cookieStore_event_delete.tenative.window.html", + {} + ] + ], + "cookie-store/cookieStore_event_overwrite.tentative.window.js": [ + [ + "/cookie-store/cookieStore_event_overwrite.tentative.window.html", + {} + ] + ], "cookie-store/cookieStore_getAll_arguments.tentative.window.js": [ [ "/cookie-store/cookieStore_getAll_arguments.tentative.window.html", @@ -311186,6 +311357,18 @@ {} ] ], + "css/CSS2/normal-flow/unresolvable-max-height.html": [ + [ + "/css/CSS2/normal-flow/unresolvable-max-height.html", + {} + ] + ], + "css/CSS2/normal-flow/unresolvable-min-height.html": [ + [ + "/css/CSS2/normal-flow/unresolvable-min-height.html", + {} + ] + ], "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html": [ [ "/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html", @@ -312306,6 +312489,18 @@ {} ] ], + "css/css-font-loading/idlharness.https.html": [ + [ + "/css/css-font-loading/idlharness.https.html", + {} + ] + ], + "css/css-fonts/calc-in-font-variation-settings.html": [ + [ + "/css/css-fonts/calc-in-font-variation-settings.html", + {} + ] + ], "css/css-fonts/font-display/font-display-failure-fallback.html": [ [ "/css/css-fonts/font-display/font-display-failure-fallback.html", @@ -313494,6 +313689,54 @@ {} ] ], + "css/css-grid/grid-items/grid-items-minimum-width-001.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-001.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-002.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-002.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html", + {} + ] + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html": [ + [ + "/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html", + {} + ] + ], "css/css-grid/grid-items/grid-minimum-size-grid-items-021.html": [ [ "/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html", @@ -314034,6 +314277,18 @@ {} ] ], + "css/css-scroll-snap/snap-inline-block.html": [ + [ + "/css/css-scroll-snap/snap-inline-block.html", + {} + ] + ], + "css/css-scroll-snap/snap-to-visible-areas.html": [ + [ + "/css/css-scroll-snap/snap-to-visible-areas.html", + {} + ] + ], "css/css-shapes/basic-shape-circle-ellipse-serialization.html": [ [ "/css/css-shapes/basic-shape-circle-ellipse-serialization.html", @@ -316434,6 +316689,12 @@ {} ] ], + "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-value.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-value.html", + {} + ] + ], "css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html": [ [ "/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html", @@ -316602,9 +316863,15 @@ {} ] ], - "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html": [ + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html": [ [ - "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html", + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html", {} ] ], @@ -316938,6 +317205,18 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/break.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/break.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/caption-side.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/caption-side.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/caret-color.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/caret-color.html", @@ -316980,12 +317259,60 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/flex-basis.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-direction.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex-direction.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-flow.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex-flow.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-grow.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex-grow.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-shrink.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex-shrink.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-wrap.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex-wrap.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/flex.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/flex.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/float.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/float.html", {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/font-size.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/font-size.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/font-style.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/font-style.html", @@ -317004,6 +317331,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/isolation.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/isolation.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/left.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/left.html", @@ -317040,12 +317373,60 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/object-fit.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/object-fit.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/object-position.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/object-position.html", {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-distance.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-path.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/offset-path.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-position.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/offset-position.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/offset.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/offset.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/opacity.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/opacity.html", @@ -317082,6 +317463,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/pointer-events.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/pointer-events.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/position.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/position.html", @@ -317100,6 +317487,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/scroll-padding.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/scroll-padding.html", @@ -317112,6 +317505,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/table-layout.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/text-align.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/text-align.html", @@ -317136,6 +317535,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/text-orientation.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/text-transform.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/text-transform.html", @@ -317166,6 +317571,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/properties/vertical-align.html": [ [ "/css/css-typed-om/the-stylepropertymap/properties/vertical-align.html", @@ -317190,6 +317601,12 @@ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/writing-mode.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html", + {} + ] + ], "css/css-ui/box-sizing-027.html": [ [ "/css/css-ui/box-sizing-027.html", @@ -317934,6 +318351,12 @@ {} ] ], + "css/cssom-view/GetBoundingRect.html": [ + [ + "/css/cssom-view/GetBoundingRect.html", + {} + ] + ], "css/cssom-view/HTMLBody-ScrollArea_quirksmode.html": [ [ "/css/cssom-view/HTMLBody-ScrollArea_quirksmode.html", @@ -318294,12 +318717,6 @@ {} ] ], - "css/cssom/GetBoundingRect.html": [ - [ - "/css/cssom/GetBoundingRect.html", - {} - ] - ], "css/cssom/MediaList.html": [ [ "/css/cssom/MediaList.html", @@ -318432,6 +318849,12 @@ {} ] ], + "css/cssom/getComputedStyle-dynamic-subdoc.html": [ + [ + "/css/cssom/getComputedStyle-dynamic-subdoc.html", + {} + ] + ], "css/cssom/getComputedStyle-pseudo.html": [ [ "/css/cssom/getComputedStyle-pseudo.html", @@ -321616,6 +322039,12 @@ {} ] ], + "domxpath/document.tentative.html": [ + [ + "/domxpath/document.tentative.html", + {} + ] + ], "domxpath/evaluator-constructor.html": [ [ "/domxpath/evaluator-constructor.html", @@ -323538,6 +323967,12 @@ {} ] ], + "eventsource/dedicated-worker/eventsource-close2.htm": [ + [ + "/eventsource/dedicated-worker/eventsource-close2.htm", + {} + ] + ], "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm": [ [ "/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm", @@ -323950,6 +324385,30 @@ {} ] ], + "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html": [ + [ + "/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html", + {} + ] + ], + "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html": [ + [ + "/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html", + {} + ] + ], + "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html": [ + [ + "/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html", + {} + ] + ], + "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html": [ + [ + "/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html", + {} + ] + ], "feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html": [ [ "/feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html", @@ -323992,6 +324451,16 @@ {} ] ], + "feature-policy/interfaces.any.js": [ + [ + "/feature-policy/interfaces.any.html", + {} + ], + [ + "/feature-policy/interfaces.any.worker.html", + {} + ] + ], "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ [ "/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", @@ -325398,6 +325867,12 @@ {} ] ], + "geolocation-sensor/GeolocationSensor_read.https.html": [ + [ + "/geolocation-sensor/GeolocationSensor_read.https.html", + {} + ] + ], "geolocation-sensor/idlharness.https.html": [ [ "/geolocation-sensor/idlharness.https.html", @@ -328216,6 +328691,12 @@ {} ] ], + "html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument.window.js": [ + [ + "/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument.window.html", + {} + ] + ], "html/dom/elements/elements-in-the-dom/historical.html": [ [ "/html/dom/elements/elements-in-the-dom/historical.html", @@ -332542,6 +333023,12 @@ } ] ], + "html/semantics/forms/form-submission-0/submit-file.sub.html": [ + [ + "/html/semantics/forms/form-submission-0/submit-file.sub.html", + {} + ] + ], "html/semantics/forms/form-submission-0/url-encoded.html": [ [ "/html/semantics/forms/form-submission-0/url-encoded.html", @@ -335840,6 +336327,12 @@ {} ] ], + "html/syntax/parsing/html-integration-point.html": [ + [ + "/html/syntax/parsing/html-integration-point.html", + {} + ] + ], "html/syntax/parsing/html5lib_adoption01.html": [ [ "/html/syntax/parsing/html5lib_adoption01.html?run_type=uri", @@ -337834,6 +338327,14 @@ {} ] ], + "infrastructure/testdriver/click.html": [ + [ + "/infrastructure/testdriver/click.html", + { + "testdriver": true + } + ] + ], "innerText/getter.html": [ [ "/innerText/getter.html", @@ -339120,6 +339621,120 @@ {} ] ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", + {} + ] + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + [ + "/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", + {} + ] + ], + "mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + [ + "/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", + {} + ] + ], + "mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + [ + "/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", + {} + ] + ], "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ "/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", @@ -341838,6 +342453,18 @@ {} ] ], + "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html": [ + [ + "/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html", + {} + ] + ], + "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html": [ + [ + "/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html", + {} + ] + ], "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html": [ [ "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html", @@ -348882,18 +349509,6 @@ {} ] ], - "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html": [ - [ - "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html", - {} - ] - ], - "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html": [ - [ - "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html", - {} - ] - ], "offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html": [ [ "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html", @@ -358702,12 +359317,6 @@ {} ] ], - "resource-timing/resource_frame_initiator_type.html": [ - [ - "/resource-timing/resource_frame_initiator_type.html", - {} - ] - ], "resource-timing/resource_ignore_data_url.html": [ [ "/resource-timing/resource_ignore_data_url.html", @@ -359202,6 +359811,12 @@ } ] ], + "service-workers/cache-storage/serviceworker/cache-abort.https.html": [ + [ + "/service-workers/cache-storage/serviceworker/cache-abort.https.html", + {} + ] + ], "service-workers/cache-storage/serviceworker/cache-add.https.html": [ [ "/service-workers/cache-storage/serviceworker/cache-add.https.html", @@ -359280,6 +359895,12 @@ {} ] ], + "service-workers/cache-storage/window/cache-abort.https.html": [ + [ + "/service-workers/cache-storage/window/cache-abort.https.html", + {} + ] + ], "service-workers/cache-storage/window/cache-add.https.html": [ [ "/service-workers/cache-storage/window/cache-add.https.html", @@ -359360,6 +359981,12 @@ } ] ], + "service-workers/cache-storage/worker/cache-abort.https.html": [ + [ + "/service-workers/cache-storage/worker/cache-abort.https.html", + {} + ] + ], "service-workers/cache-storage/worker/cache-add.https.html": [ [ "/service-workers/cache-storage/worker/cache-add.https.html", @@ -361042,12 +361669,6 @@ {} ] ], - "staticrange/idlharness.html": [ - [ - "/staticrange/idlharness.html", - {} - ] - ], "storage/estimate-indexeddb-worker.https.html": [ [ "/storage/estimate-indexeddb-worker.https.html", @@ -363676,63 +364297,15 @@ {} ] ], - "web-animations/interfaces/AnimationEffectTiming/delay.html": [ + "web-animations/interfaces/AnimationEffect/getComputedTiming.html": [ [ - "/web-animations/interfaces/AnimationEffectTiming/delay.html", + "/web-animations/interfaces/AnimationEffect/getComputedTiming.html", {} ] ], - "web-animations/interfaces/AnimationEffectTiming/direction.html": [ + "web-animations/interfaces/AnimationEffect/updateTiming.html": [ [ - "/web-animations/interfaces/AnimationEffectTiming/direction.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/duration.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/duration.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/easing.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/easing.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/endDelay.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/endDelay.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/fill.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/fill.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/getComputedTiming.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/getComputedTiming.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/idlharness.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/idlharness.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/iterationStart.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/iterationStart.html", - {} - ] - ], - "web-animations/interfaces/AnimationEffectTiming/iterations.html": [ - [ - "/web-animations/interfaces/AnimationEffectTiming/iterations.html", + "/web-animations/interfaces/AnimationEffect/updateTiming.html", {} ] ], @@ -364018,6 +364591,12 @@ {} ] ], + "webaudio/idlharness.https.html": [ + [ + "/webaudio/idlharness.https.html", + {} + ] + ], "webaudio/the-audio-api/the-analysernode-interface/test-analyser-gain.html": [ [ "/webaudio/the-audio-api/the-analysernode-interface/test-analyser-gain.html", @@ -364162,6 +364741,12 @@ {} ] ], + "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html": [ + [ + "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html", + {} + ] + ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html": [ [ "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html", @@ -364846,6 +365431,12 @@ {} ] ], + "webmessaging/message-channels/worker.html": [ + [ + "/webmessaging/message-channels/worker.html", + {} + ] + ], "webmessaging/messageerror.html": [ [ "/webmessaging/messageerror.html", @@ -365844,6 +366435,12 @@ {} ] ], + "websockets/Create-on-worker-shutdown.html": [ + [ + "/websockets/Create-on-worker-shutdown.html", + {} + ] + ], "websockets/Create-protocol-with-space.htm": [ [ "/websockets/Create-protocol-with-space.htm", @@ -371064,6 +371661,12 @@ {} ] ], + "xhr/xmlhttprequest-closing-worker.html": [ + [ + "/xhr/xmlhttprequest-closing-worker.html", + {} + ] + ], "xhr/xmlhttprequest-eventtarget.htm": [ [ "/xhr/xmlhttprequest-eventtarget.htm", @@ -390640,7 +391243,7 @@ "support" ], "./.travis.yml": [ - "db5838d29eefceadbb7f088f7de75d765dbaa58c", + "6aeadb7da2f5fa8d09762a07b3a874b306e1fc22", "support" ], "./CONTRIBUTING.md": [ @@ -390664,11 +391267,11 @@ "support" ], "./config.default.json": [ - "73b96319b21810d51a230d475b5d5fe4e1181a69", + "54422ca469a8d54fa4b8252803bb0e2c91459858", "support" ], "./lint.whitelist": [ - "82fc9107178a6f9aef6c978ad51afe2370c92de1", + "697da251dd64d990c1ec0603fd252ba6ea11ad26", "support" ], "./serve.py": [ @@ -394815,6 +395418,10 @@ "d352d5c6b5d1f2ada419d51bcfd9ecd9100bf892", "manual" ], + "FileAPI/FileReader/workers.html": [ + "b93f6c447184bc20cc59e895ae446ee95ebdb406", + "testharness" + ], "FileAPI/FileReaderSync.worker.js": [ "19741fbd0498bf9135408ceb6128221cbeb4e2f3", "testharness" @@ -395088,7 +395695,7 @@ "support" ], "IndexedDB/README.md": [ - "fb36fa93165978667176adeba74f97a90e871ff2", + "794f80755fc065930cb311d82f84bdaadceea423", "support" ], "IndexedDB/abort-in-initial-upgradeneeded.html": [ @@ -396291,12 +396898,8 @@ "251a828d333bdd3face9d20a2a28ddf0c0ffeb49", "testharness" ], - "IndexedDB/interfaces.html": [ - "348a7350d749c4ea11d383d1f3e07e54a9d0d377", - "testharness" - ], - "IndexedDB/interfaces.worker.js": [ - "a74350d69819f73cf9f75ac636f8793f018ba2fd", + "IndexedDB/interfaces.any.js": [ + "df07f5da63c34969a24fe43bc4268418ab0a5132", "testharness" ], "IndexedDB/interleaved-cursors-common.js": [ @@ -400916,7 +401519,7 @@ "testharness" ], "bluetooth/resources/bluetooth-helpers.js": [ - "1944dc57df774ad737179dd22fb3cc9de842bc21", + "9d2b233c511627f6a4fe93bdaf16ba28c4a6ead9", "support" ], "bluetooth/resources/health-thermometer-iframe.html": [ @@ -401403,16 +402006,24 @@ "10f5f9d409ef513edb129e0e8522aa5f74d51ce8", "support" ], - "client-hints/accept_ch.https.html": [ - "b54ae9b17399e0fe4472fedbf1badd67d28e68f3", + "client-hints/accept_ch.http.html": [ + "e2181077e6d378a288d4944aee8c76939aa896fe", "testharness" ], - "client-hints/accept_ch.https.html.headers": [ - "bf59baf9a030d117964df414efc11ddb07e7a7fa", + "client-hints/accept_ch.http.html.headers": [ + "25cd8622db940411b0e8eb39921e6086916e4f36", "support" ], - "client-hints/echo_device_memory_header_received.py": [ - "defa16c455bebc2589c058d0d888326d667e317a", + "client-hints/accept_ch.sub.https.html": [ + "4e3f60751fbbc8f58bbf6fb7eadd1f334c9789ad", + "testharness" + ], + "client-hints/accept_ch.sub.https.html.headers": [ + "25cd8622db940411b0e8eb39921e6086916e4f36", + "support" + ], + "client-hints/echo_client_hints_received.py": [ + "3d3b57376cbacbd2118fe4fe07abad5bd9ad95fd", "support" ], "clipboard-apis/OWNERS": [ @@ -401740,7 +402351,7 @@ "reftest" ], "conformance-checkers/Makefile": [ - "bf1ac606bd1b1d4bfa8eca28a04c0d0f3c3fb374", + "7b6e2ee9ec808bd43d03b9f0a8054f3ac21bc583", "support" ], "conformance-checkers/OWNERS": [ @@ -409007,10 +409618,6 @@ "a2963489b57d411e3a297dce5f3176288bef06c2", "support" ], - "conformance-checkers/html/elements/a/href/scheme-javascript-no-slash-malformed-novalid.html": [ - "c87cc7f94192dac5bdb293e786dda21ab7670211", - "support" - ], "conformance-checkers/html/elements/a/href/scheme-trailing-cr-novalid.html": [ "7f8a3a727c8a39a69999abccf4439a48fcef9ddf", "support" @@ -409311,10 +409918,6 @@ "9d7d9c3a256a060e1f3ad9697b99dabaf5a5ef11", "support" ], - "conformance-checkers/html/elements/area/href/scheme-javascript-no-slash-malformed-novalid.html": [ - "b9a58f9796a69bd1ab373ce51fac310581ef92a8", - "support" - ], "conformance-checkers/html/elements/area/href/scheme-trailing-cr-novalid.html": [ "87f0fd69b35a61b401430d4ab2a476eb8001e95d", "support" @@ -409603,10 +410206,6 @@ "835aa1cd0874aad929cd10f4864ae9f4bc41c41e", "support" ], - "conformance-checkers/html/elements/audio/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "f761d7545a155e8c20921b8f937d1d9c6f80b944", - "support" - ], "conformance-checkers/html/elements/audio/src/scheme-trailing-cr-novalid.html": [ "53c39d1e68e7f8b879b2ce8e71c4a7846ba0581a", "support" @@ -410131,10 +410730,6 @@ "ca4a49eb486e35fe308a178a685cb10f56f10215", "support" ], - "conformance-checkers/html/elements/base/href/scheme-javascript-no-slash-malformed-novalid.html": [ - "4d3cc617092ee37b57cd3c946a915fcc0215b675", - "support" - ], "conformance-checkers/html/elements/base/href/scheme-javascript-single-slash-isvalid.html": [ "ebe5c0c797e4885a1692bdd9d137d7985912358c", "support" @@ -410507,10 +411102,6 @@ "58c526075ccedfe2d8742e05381adbf4c9e7b6b3", "support" ], - "conformance-checkers/html/elements/blockquote/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - "4683c04027bb7589dbc30768a6cabca3ec7caa1b", - "support" - ], "conformance-checkers/html/elements/blockquote/cite/scheme-trailing-cr-novalid.html": [ "209fdc83ff0641a4e8aa0b487ba66f80fe15a82c", "support" @@ -410795,10 +411386,6 @@ "3baf86a15eb7ec00fdf0d3ad854548ee0ed5c9c1", "support" ], - "conformance-checkers/html/elements/button/formaction/scheme-javascript-no-slash-malformed-novalid.html": [ - "f270c23de82d826adb21f5b41e4ce1d7febfb36a", - "support" - ], "conformance-checkers/html/elements/button/formaction/scheme-trailing-cr-novalid.html": [ "8716f9879d555aa1e2ad0451884d590d3ecc6a6e", "support" @@ -411091,10 +411678,6 @@ "4cb9b05260ec2edc707fbba9dc6772485384bc9d", "support" ], - "conformance-checkers/html/elements/del/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - "7acb90736a95397641fe096cc573492dc2d28c55", - "support" - ], "conformance-checkers/html/elements/del/cite/scheme-trailing-cr-novalid.html": [ "d2c8653bebb76c5e6e397aa0ec784848bef5236b", "support" @@ -411903,10 +412486,6 @@ "c3eea4347d2d2a4f369ec7995fab75ca40e5d756", "support" ], - "conformance-checkers/html/elements/embed/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "8d8874cd4f5403f23ad664fa312d8833fd7d2c1a", - "support" - ], "conformance-checkers/html/elements/embed/src/scheme-trailing-cr-novalid.html": [ "24d3fe99fa511f0bab3dfbf8241cb43cc9596df2", "support" @@ -412191,10 +412770,6 @@ "4d009d273b624d6f8d8f84c9fe08212c7fabed32", "support" ], - "conformance-checkers/html/elements/form/action/scheme-javascript-no-slash-malformed-novalid.html": [ - "de57ad06c88bbe92dd0e0c5b73f69e74005ed6cd", - "support" - ], "conformance-checkers/html/elements/form/action/scheme-trailing-cr-novalid.html": [ "ba378c03b1e9bf7656f6240794344b8af3880644", "support" @@ -412543,10 +413118,6 @@ "048b16b426b57dc073d6e817fef48644f866bac6", "support" ], - "conformance-checkers/html/elements/iframe/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "453195be13968e1c453584082629fe47a552653b", - "support" - ], "conformance-checkers/html/elements/iframe/src/scheme-trailing-cr-novalid.html": [ "988d5b2eb69b99e6c8cd19795cfcb981a691d615", "support" @@ -412823,10 +413394,6 @@ "7e75b47d4ed363c6151bc252a52728635800c71b", "support" ], - "conformance-checkers/html/elements/img/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "fbe1c6587f12681950476788d82ebaef146e6ba3", - "support" - ], "conformance-checkers/html/elements/img/src/scheme-trailing-cr-novalid.html": [ "f37ba8bc9ed67e02aa235df4adcc3387f5dc3a27", "support" @@ -413123,10 +413690,6 @@ "96a34e382d5c0bafd923e70b8a22798ef141219c", "support" ], - "conformance-checkers/html/elements/input/type-image-formaction/scheme-javascript-no-slash-malformed-novalid.html": [ - "9849da633ac7420e6dc75445017365c15a95c1f0", - "support" - ], "conformance-checkers/html/elements/input/type-image-formaction/scheme-trailing-cr-novalid.html": [ "61da5770aca2619a89f345bf07845f22d7ca441f", "support" @@ -413395,10 +413958,6 @@ "90c89887f4cf6214c1685a3d89d0405e0f2cf1d3", "support" ], - "conformance-checkers/html/elements/input/type-image-src/scheme-javascript-no-slash-malformed-novalid.html": [ - "cc0da975515645e662203e8570143235e2ee964b", - "support" - ], "conformance-checkers/html/elements/input/type-image-src/scheme-trailing-cr-novalid.html": [ "92ead4e2773635bf02b30ca7b6527298a7da5450", "support" @@ -413667,10 +414226,6 @@ "b97b06db654cd0048cd3bca78fb3d543b7dc46c8", "support" ], - "conformance-checkers/html/elements/input/type-submit-formaction/scheme-javascript-no-slash-malformed-novalid.html": [ - "4d396fd2ada0a3fd94d0da270262c72a27a495f7", - "support" - ], "conformance-checkers/html/elements/input/type-submit-formaction/scheme-trailing-cr-novalid.html": [ "5c3b36c97cc3f6e14b303b4af9fd3b2c1f41f937", "support" @@ -413971,10 +414526,6 @@ "627ace37c30d5ce0261fa3925362b3ec356b6701", "support" ], - "conformance-checkers/html/elements/input/type-url-value/scheme-javascript-no-slash-malformed-novalid.html": [ - "9d1a09cb48b68257ab565dda544374feddacc44a", - "support" - ], "conformance-checkers/html/elements/input/type-url-value/scheme-schemeless-relative-novalid.html": [ "a205b8b90a5c6aade8a94e5f9cd7bfefc3c238cd", "support" @@ -414243,10 +414794,6 @@ "1af0523c38bd8c2924beaf8a855bee797ffc6c99", "support" ], - "conformance-checkers/html/elements/ins/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - "c7b990aebe7e0a340900065a74e2d2748309870f", - "support" - ], "conformance-checkers/html/elements/ins/cite/scheme-trailing-cr-novalid.html": [ "cd1a396812e899c053b9a40ac7cea9046bfc9285", "support" @@ -414955,10 +415502,6 @@ "93a9d1e31fbacf3d0db10a6e247cbd18972a444e", "support" ], - "conformance-checkers/html/elements/link/href/scheme-javascript-no-slash-malformed-novalid.html": [ - "acee5c4161f13b51f0c62ec0c6154c19580e364a", - "support" - ], "conformance-checkers/html/elements/link/href/scheme-trailing-cr-novalid.html": [ "3b09fdd690693db2a2e2cf2486f7ff8962d8dd10", "support" @@ -415259,10 +415802,6 @@ "3672a10a251c54dcffa08f33c6346b8144a603ce", "support" ], - "conformance-checkers/html/elements/object/data/scheme-javascript-no-slash-malformed-novalid.html": [ - "aa8af8d16eef341597be000fc3c88255e88347c5", - "support" - ], "conformance-checkers/html/elements/object/data/scheme-trailing-cr-novalid.html": [ "59707c995c0acda1b03d7770db6d430e398bc9fc", "support" @@ -416375,10 +416914,6 @@ "ca9a67f72f95fc3df95a5e4daa7c9b56c1195961", "support" ], - "conformance-checkers/html/elements/q/cite/scheme-javascript-no-slash-malformed-novalid.html": [ - "1385fc623e6ecd83265c89ae234a622d3a78bb0f", - "support" - ], "conformance-checkers/html/elements/q/cite/scheme-trailing-cr-novalid.html": [ "d642f69189547e6c583a85401c73cf7fac8c1f37", "support" @@ -416679,10 +417214,6 @@ "5420be717fcf3b698a31b61ee572cbb5c5626959", "support" ], - "conformance-checkers/html/elements/script/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "216bde5c8c3e31e123f36cf3d562e01a5ee25c2e", - "support" - ], "conformance-checkers/html/elements/script/src/scheme-trailing-cr-novalid.html": [ "501df179f07045489391ffa97dc26a0afc67f121", "support" @@ -416971,10 +417502,6 @@ "ab50203cbb60e427d03349092d5676a37d3f9967", "support" ], - "conformance-checkers/html/elements/source/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "dbc19620a8adc82a31ac1540fb5fc3ebc289253c", - "support" - ], "conformance-checkers/html/elements/source/src/scheme-trailing-cr-novalid.html": [ "988c1a4b6e0ca0e709476ee418e7a5163ec7b58f", "support" @@ -417351,10 +417878,6 @@ "9799b8bd9f02ac6607767bd1f4919cb145a5ca09", "support" ], - "conformance-checkers/html/elements/track/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "1f3dbaa12e18e41072df534ef0a43af1e948a097", - "support" - ], "conformance-checkers/html/elements/track/src/scheme-trailing-cr-novalid.html": [ "bfbca1de6ea75e1fbb8a0d324f4725ddadad0834", "support" @@ -417651,10 +418174,6 @@ "ebbf02085d434ec93298875a02ec07df686c8f1a", "support" ], - "conformance-checkers/html/elements/video/poster/scheme-javascript-no-slash-malformed-novalid.html": [ - "d150e2f20153cb91e20f18c0731fdedcf7c44549", - "support" - ], "conformance-checkers/html/elements/video/poster/scheme-trailing-cr-novalid.html": [ "445fb8294bc82e58ef3f74bb0b199903eb53ad99", "support" @@ -417915,10 +418434,6 @@ "c347b1ea86c63f06ec5c0ffa182995e342d9ff56", "support" ], - "conformance-checkers/html/elements/video/src/scheme-javascript-no-slash-malformed-novalid.html": [ - "a4acc813af290b89a5ea8fcba50ab2ad7ab93583", - "support" - ], "conformance-checkers/html/elements/video/src/scheme-trailing-cr-novalid.html": [ "c03e307794a2f9c1748a26ba44c32ca7a3bb5e51", "support" @@ -418395,10 +418910,6 @@ "8270105a32ee5f4856fd8887bf5edd17fc1934d4", "support" ], - "conformance-checkers/html/microdata/itemid/scheme-javascript-no-slash-malformed-novalid.html": [ - "05744d8949afa1d0017fe81279ebbc8201b86323", - "support" - ], "conformance-checkers/html/microdata/itemid/scheme-trailing-cr-novalid.html": [ "3f53bb96ae1ad88296c7523edc6d2454b65750d3", "support" @@ -418687,10 +419198,6 @@ "5ff91cfc94ba9ea2d4754193ae5d8a9d9bf26212", "support" ], - "conformance-checkers/html/microdata/itemtype/scheme-javascript-no-slash-malformed-novalid.html": [ - "3ae8f056d8167d4e5d3a10864a22155fcbeb5184", - "support" - ], "conformance-checkers/html/microdata/itemtype/scheme-schemeless-relative-novalid.html": [ "9251707c34f0cc6fafc2c01cc21426f58cd537ff", "support" @@ -418920,7 +419427,7 @@ "support" ], "conformance-checkers/messages.json": [ - "39450ae5f07277b008e39e04b162736ec5baa2d1", + "ba6a1cf2867273360e8c9b7bb70da15bca4e15a7", "support" ], "conformance-checkers/tools/build-svg-tests.py": [ @@ -418940,7 +419447,7 @@ "support" ], "conformance-checkers/tools/url.py": [ - "550d8d52d0f6986cb6692c67cfcb951f438d672b", + "ee47cdb8f49f00b4bb9d27c85749b4e3e48271a1", "support" ], "conformance-checkers/xhtml/attributes/accesskey/003-novalid.xhtml": [ @@ -421783,6 +422290,22 @@ "f33ce9a975c759ce6da8a5caa371ca026dd537c4", "testharness" ], + "cookie-store/cookieStore_event_arguments.tenative.window.js": [ + "a61074b6062928c29a83e0f7d456fdce9e3a3d47", + "testharness" + ], + "cookie-store/cookieStore_event_basic.tentative.window.js": [ + "33faf57882e558a54d6cbf181141e03f1b3cd871", + "testharness" + ], + "cookie-store/cookieStore_event_delete.tenative.window.js": [ + "3fa86e521919eac1f89ff00f449f8c01500e170e", + "testharness" + ], + "cookie-store/cookieStore_event_overwrite.tentative.window.js": [ + "f7f3989aaaa0003693c043c582f0c78ecd1bbad0", + "testharness" + ], "cookie-store/cookieStore_getAll_arguments.tentative.window.js": [ "cf818fe92c16dfe42f0ac778f665094533d8ab10", "testharness" @@ -421916,11 +422439,11 @@ "testharness" ], "cookie-store/idlharness.tentative.html": [ - "551813353483102be5004ac6ddc325ced659f9eb", + "24a4e59e8d3c0a481c4b448bd3fb677f30d0208f", "testharness" ], "cookie-store/idlharness_serviceworker.js": [ - "b274b66237c0d83e9b8e770f6cf13fedd9a39b8f", + "aceb00f593b0447853fa70c8c971902cf02a164b", "support" ], "cookie-store/idlharness_serviceworker.tentative.https.html": [ @@ -425024,7 +425547,7 @@ "manual" ], "css/CSS2/backgrounds/background-attachment-004.xht": [ - "ffa99116e4615792f0308b7c430efab4bc31073a", + "3586ab83a0d7b2173ec33964575b26fb00f92bc8", "manual" ], "css/CSS2/backgrounds/background-attachment-005.xht": [ @@ -427487,6 +428010,14 @@ "435db9c6ad02d80fe1545ad7fbc97d5009a32ebf", "support" ], + "css/CSS2/backgrounds/support/cat-128.png": [ + "4dd27ea01f998476c3a50fd748175af07ca3632e", + "support" + ], + "css/CSS2/backgrounds/support/cat-830.png": [ + "73e44a633f1d26b915e093a65ca53650c03b9c56", + "support" + ], "css/CSS2/backgrounds/support/cat.png": [ "461fd17b274662b88500cdf42bab7f3b79e6019d", "support" @@ -456139,6 +456670,14 @@ "62aae8605308e22c641111007fdc8709507d021d", "reftest" ], + "css/CSS2/normal-flow/unresolvable-max-height.html": [ + "66e736acb2edc0bd737807abf4e2ea3e9a16965d", + "testharness" + ], + "css/CSS2/normal-flow/unresolvable-min-height.html": [ + "02d5f978e4688af271ced6c90956bfc3cc995967", + "testharness" + ], "css/CSS2/normal-flow/width-001.xht": [ "c43946e15b0dd2a0635f86f7227b112d878f6c17", "reftest" @@ -481988,7 +482527,7 @@ "testharness" ], "css/css-align/gaps/column-gap-parsing-001.html": [ - "d0b1255896cde1a3b3f2539c8533fdf65dd77f94", + "7dfb3da10a936539b53bd7692e8514cfe2142a88", "testharness" ], "css/css-align/gaps/gap-animation-001.html": [ @@ -482008,19 +482547,19 @@ "testharness" ], "css/css-align/gaps/gap-parsing-001.html": [ - "bd3a5bb6b7e4605e6f1a44f232d34c5e7d6342af", + "7eb55e0a8b04384aebfbb5a47922c5b33f93270c", "testharness" ], "css/css-align/gaps/grid-column-gap-parsing-001.html": [ - "13ce1945b50ed1c4d40f837cac8777b6b8a90066", + "6faca8cad74d38f301d9e3c210ae577d6d7355b5", "testharness" ], "css/css-align/gaps/grid-gap-parsing-001.html": [ - "441feb52cc17178d4486f92d10a1c132600788a3", + "0bc6b1cdca28b009b52b5e8b11bf97b44d7df71e", "testharness" ], "css/css-align/gaps/grid-row-gap-parsing-001.html": [ - "7302a4efd2ea5eccf65ec269175e6c15cc1771b4", + "07f8d219fb1457a1a035587f4f0bda7278a913a8", "testharness" ], "css/css-align/gaps/row-gap-animation-001.html": [ @@ -482036,7 +482575,7 @@ "testharness" ], "css/css-align/gaps/row-gap-parsing-001.html": [ - "46a9930dd28a133d1df2c9209b35716093457d5c", + "d8cecf4e1b558cb45fee82804a6407b0204b889f", "testharness" ], "css/css-align/reference/ttwf-reftest-alignContent-ref.html": [ @@ -491863,6 +492402,10 @@ "ad355c3d5220c1b938182241a8e8abe030ace699", "testharness" ], + "css/css-font-loading/idlharness.https.html": [ + "00399ffcb0ff8000e79ab4aeefdb90cabdb0fd4d", + "testharness" + ], "css/css-fonts/OWNERS": [ "4c9aabb4fac2a558b0828b50e2b06e01e43dd4b4", "support" @@ -491879,6 +492422,10 @@ "9232ad7768f5bea41d87469113b210b3c663750e", "reftest" ], + "css/css-fonts/calc-in-font-variation-settings.html": [ + "ebd68854330dd96a6cfa31c273d9b6810442497d", + "testharness" + ], "css/css-fonts/first-available-font-001-ref.html": [ "7f6bdc4dcb91cdf976631216a72ec0557234a6c2", "support" @@ -499196,11 +499743,11 @@ "testharness" ], "css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html": [ - "f35bf44f588c631cf85021df55d34b5726ceff03", + "308d1e747e91bd4d3cbeab33f53e549d380fa716", "testharness" ], "css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html": [ - "4f65457310c6f1127c10821159a37b89caf26abd", + "8623dfe31fc392230376d52382baff1e527d84eb", "testharness" ], "css/css-grid/abspos/grid-item-absolute-positioning-dynamic-001.html": [ @@ -499212,15 +499759,15 @@ "support" ], "css/css-grid/abspos/grid-paint-positioned-children-001.html": [ - "1093709bd8e0cbbbbdc02032e1e4771cd9ab53e3", + "c79700e65dccba02c03ef54c6b1ab65b9f8bc19d", "reftest" ], "css/css-grid/abspos/grid-positioned-children-writing-modes-001-ref.html": [ - "8baf87330e4005ddb664f5fc71c972e4e1c00f40", + "27b26b1a72d83b1b870b11194ce42f6a329b885c", "support" ], "css/css-grid/abspos/grid-positioned-children-writing-modes-001.html": [ - "45d1fbeb11504621afa26f82ff0819d4c8659962", + "2d123622147a051ee3a3727ea3d029b2922973b1", "reftest" ], "css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html": [ @@ -499228,31 +499775,31 @@ "reftest" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-001.html": [ - "b15d1db43efd2b8f15aab17dbbcf3afc262baa76", + "4f909aa983223a1a8b103b6e3adc014513dbb6eb", "testharness" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-002.html": [ - "6efd2dfea5027aca510f7a92e8cec16b3fddef2d", + "9c66af91c308c50dfdb9d811357b2241a5665412", "testharness" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-003.html": [ - "d485183a7ea0bfcf92503a3e420ae68470593995", + "c3ba40cd174cb2a2588898e6643ca2a489a27c25", "testharness" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-004.html": [ - "aacc2daef0aae211a8ffa433ff6684d037afd4c8", + "60cd2f1b1a78e0be1d08ed04433e8db765dd1f90", "testharness" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html": [ - "fc2cfee0c523129d8cb0bbee1685786a72031e84", + "2ba2d79cbee6c6e388c98245ccd96da9a4f186e5", "testharness" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html": [ - "7408735464c2da7fa7916ee5a739518866e5b7a2", + "d78e6df343046ae4361fddac1a5c38a1d18de5a1", "testharness" ], "css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html": [ - "4c50565bb7adf5074f57da937954c3e95ee00d7a", + "5f21384b56ed7e51c55896249e6a8dc69c8c15f5", "testharness" ], "css/css-grid/abspos/grid-positioned-items-background-001-ref.html": [ @@ -499260,7 +499807,7 @@ "support" ], "css/css-grid/abspos/grid-positioned-items-background-001.html": [ - "1776e1042cf1712a86906e6e8b56faf9d80bb143", + "f4b76880ffd08a2879354d63862533532e0acb68", "reftest" ], "css/css-grid/abspos/grid-positioned-items-background-rtl-001-ref.html": [ @@ -499268,47 +499815,47 @@ "support" ], "css/css-grid/abspos/grid-positioned-items-background-rtl-001.html": [ - "581116474bdd4214f803dd7c6375104308c245e8", + "90fdc98fa243436d0dd1c83fcacfbbafe756f69f", "reftest" ], "css/css-grid/abspos/grid-positioned-items-content-alignment-001.html": [ - "d9f5abb41f8fb479c37f0d364b9cd73cb9008829", + "53bba04085d038dfb81d1f9323915a24e1bf477e", "testharness" ], "css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html": [ - "81cd5622a02ae3bdccd609d6e409241b9ba92117", + "fcce72ee35dd8d3fb7ee6be0b6f44bf025abf5a1", "testharness" ], "css/css-grid/abspos/grid-positioned-items-gaps-001.html": [ - "29cc4d5bb2a27e59907b6f2e1c32fe260cd3f4c8", + "59ad78731845efdee151a7db5f963484505e9b49", "testharness" ], "css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html": [ - "662bd6d9451786ba0da556c3049e7747f2d9d3e7", + "618bf5f6b8ca90359e9df147f201ad4ba5d84e8e", "testharness" ], "css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html": [ - "dfeb40d25bf666ce73fda44e3cc5ad152cc55116", + "2666a4caa94fb56a17cc197f67a8572185b01514", "testharness" ], "css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html": [ - "4e687882f7721dae22c1a65789fe1cfbfcfa86e2", + "1b1dee594c037e5ee8966331e8fc2d60b4e847d9", "testharness" ], "css/css-grid/abspos/grid-positioned-items-padding-001.html": [ - "9f1dfe2b066d9df4bbce276a16849de8779d8b6e", + "6cfe2450ba28b501f1421c04c274976f63ee3494", "testharness" ], "css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html": [ - "92fa645b99f912e38c55d7a8f6a8c7983e0960d8", + "4ad027f1a382a9414ce0d34826aa877d9915d458", "testharness" ], "css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html": [ - "1a198448681696a8fed8c8240af0d069b34a50ad", + "cc16a7b4ffc4da30a2dc47b4bb627c40b611d425", "testharness" ], "css/css-grid/abspos/grid-sizing-positioned-items-001.html": [ - "a626f8ac567d7577d7f0a8b27c7104fda7bb7d86", + "80f385933b5380bb0e476db4f089b6064195c535", "testharness" ], "css/css-grid/abspos/orthogonal-positioned-grid-items-001-ref.html": [ @@ -499552,21 +500099,25 @@ "reftest" ], "css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html": [ - "7f5640648062fe8b02e98b67d48c1af1914cdab7", + "6fc9fc8a452476ae5234e67d87b06aee99b32194", "testharness" ], "css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html": [ - "8f048f2cfc368d45263fac24ab8e64ef6db0a163", + "02ea3621a3e3189181de74c7e1393db58d499181", "testharness" ], "css/css-grid/abspos/positioned-grid-items-sizing-001-ref.html": [ - "de3401d0edd3dbb428066d5fa85f5235d083aa18", + "5b07f605970df1d5de7e3e44e4cac3d8c7450198", "support" ], "css/css-grid/abspos/positioned-grid-items-sizing-001.html": [ - "053c2ad3fe2edfd36dc8743c01cf098af91c026c", + "831ab1249db84ddc90344f2c9fa38bbf8b5dd403", "reftest" ], + "css/css-grid/abspos/support/grid.css": [ + "6bb300b8baebf700481ea162fb7b41913fcca29c", + "support" + ], "css/css-grid/alignment/grid-alignment-implies-size-change-001.html": [ "6a98b19084f09099a83cd1e150dcc99e58967596", "testharness" @@ -500027,6 +500578,14 @@ "5ed8d7a44153cd4833f893fe53849a1e63d1a583", "reftest" ], + "css/css-grid/alignment/grid-gutters-011.html": [ + "30bb574c966324ac5377ef8f9250df4f959b9b9f", + "reftest" + ], + "css/css-grid/alignment/grid-gutters-012.html": [ + "a29614ba012488fbcd5cb53694ec483f8548077d", + "reftest" + ], "css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html": [ "2c431631005167b724c5dcdbe0405c583d82eef6", "testharness" @@ -500472,7 +501031,7 @@ "reftest" ], "css/css-grid/grid-definition/grid-change-fit-content-argument-001.html": [ - "409d4b815307264b17581975f0f121f40946d932", + "d00e8651be933262d7f64d22f6e8ce68d23d44eb", "testharness" ], "css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html": [ @@ -500536,11 +501095,11 @@ "testharness" ], "css/css-grid/grid-definition/grid-template-columns-fit-content-001-ref.html": [ - "5f2f68b7cf046593760e6668a3d7fca58bae263e", + "f97320fd878e74ef93435ceeaf8117acde1c0e00", "support" ], "css/css-grid/grid-definition/grid-template-columns-fit-content-001.html": [ - "adffbd4b734ae719675cb5bee7fd6bc3fbde5d5b", + "f0b39f517dbf4ceb7649c99863ca3cbb44549446", "reftest" ], "css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html": [ @@ -500548,13 +501107,17 @@ "testharness" ], "css/css-grid/grid-definition/grid-template-rows-fit-content-001-ref.html": [ - "0599be38ec7525b925d2c42dad8f6c09efff1612", + "fe5c6aad4b42792b63e609c9f17a1d26918e68cc", "support" ], "css/css-grid/grid-definition/grid-template-rows-fit-content-001.html": [ - "a6ea0c0330b667d86c54933875e5cfda9d3f2162", + "57659c467b0abc12fc953edd6e96a07d2f15786e", "reftest" ], + "css/css-grid/grid-definition/support/grid.css": [ + "6bb300b8baebf700481ea162fb7b41913fcca29c", + "support" + ], "css/css-grid/grid-definition/support/testing-utils.js": [ "7d6dc5106777942ad83e6bc570368af113f32d5f", "support" @@ -500703,6 +501266,38 @@ "d36bce8f5be4f39442a884386ea08062c873b73d", "reftest" ], + "css/css-grid/grid-items/grid-items-minimum-width-001.html": [ + "8eb22226f25e529fdfa1e904760dc9d9572cb8c5", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-002.html": [ + "46d62c774bdfa47a0aa11692a5b42ba032d3c35a", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html": [ + "012848f739cb0ac5aaf53de9f6137d87e52dac57", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html": [ + "e366eed5aa25cdcc88510dc70b55cfe1ebd410d4", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html": [ + "ad2a7bfe6c02682b9d8907234df2f28c7c6e825d", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html": [ + "5ef51897c6b890ac9508917bfcb5187406e0420b", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html": [ + "0295b15da5707dcd4b44cd95c66edbd19c08c1b8", + "testharness" + ], + "css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html": [ + "3d9ee014d1341bae70de86de585658f7432f76ef", + "testharness" + ], "css/css-grid/grid-items/grid-items-sizing-alignment-001-ref.html": [ "33080559b7f451958ea4785075bf6c8e4d8902eb", "support" @@ -500808,19 +501403,19 @@ "testharness" ], "css/css-grid/grid-items/grid-minimum-size-grid-items-022.html": [ - "7a5be2e6b0adbbf048efb0cb19c35be913729ba8", + "2baacdd3bf98a6084105e70168dbe276579b226f", "testharness" ], "css/css-grid/grid-items/grid-minimum-size-grid-items-023.html": [ - "cc51bc269d23ae345c91f91368b5a57d99a4606e", + "30f45639bea629c3db5a616a408eb6a0e5eb5f81", "testharness" ], "css/css-grid/grid-items/grid-minimum-size-grid-items-024.html": [ - "5eb13653b1d9fe889cd6bb8423e47eed207ac69d", + "36c73749ac60f7589928e9b96a2722946de3e63c", "testharness" ], "css/css-grid/grid-items/grid-minimum-size-grid-items-025.html": [ - "15a29d967b7e543edeebd6bb37a597741b79bf50", + "4b0da168ad2dc39fb9e057d39e566bd4dadc9553", "testharness" ], "css/css-grid/grid-items/grid-order-property-auto-placement-001.html": [ @@ -500935,6 +501530,10 @@ "928556fc1f503c821581032a2288a08f8aa07021", "support" ], + "css/css-grid/grid-items/support/grid.css": [ + "6bb300b8baebf700481ea162fb7b41913fcca29c", + "support" + ], "css/css-grid/grid-layout-properties.html": [ "d30ee96245cf3d25bffc64347a4ee60bfb2b2049", "testharness" @@ -500956,11 +501555,11 @@ "testharness" ], "css/css-grid/grid-model/grid-container-ignores-first-letter-001.html": [ - "e46492228ce6fdf83d9661c06db745e9c6689bb4", + "157c7945bc8f6e020f3e123789489269f318d91e", "testharness" ], "css/css-grid/grid-model/grid-container-ignores-first-line-001.html": [ - "8e8895681b8f7e8f5d416faedf5b081f7fc42243", + "aec98e4e7bf245637903a1f06d2e5d5519b8da66", "testharness" ], "css/css-grid/grid-model/grid-display-grid-001.html": [ @@ -501048,11 +501647,11 @@ "reftest" ], "css/css-grid/grid-model/grid-item-accepts-first-letter-001.html": [ - "bc3aa0022584b2dc6253aeb1bbca50b6b7c05f54", + "0ab0d1b9446d4ccaeba6778bdc65ef7d4adbd6a1", "testharness" ], "css/css-grid/grid-model/grid-item-accepts-first-line-001.html": [ - "0af2d39207188e1398e69f1e2d81848ba1bee2ee", + "9025d7543cfff53833f783d19b3f56333ac5fef3", "testharness" ], "css/css-grid/grid-model/grid-margins-no-collapse-001.html": [ @@ -501071,6 +501670,10 @@ "adfa657da1bb65a313894a8b5010a62d7c629c34", "reftest" ], + "css/css-grid/grid-model/support/grid.css": [ + "6bb300b8baebf700481ea162fb7b41913fcca29c", + "support" + ], "css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-001.html": [ "85a397623ccb6b2ced1450af19f0eaf3a2f6df22", "reftest" @@ -501187,10 +501790,6 @@ "feb53485e24aeaf9a5f27be5e42cc4a6fc5b8df0", "support" ], - "css/css-grid/support/grid.css": [ - "6bb300b8baebf700481ea162fb7b41913fcca29c", - "support" - ], "css/css-grid/test-plan/index.html": [ "e633dc7584fbc7bfe99177aa5dd9fbd107a2d3f5", "support" @@ -502555,6 +503154,10 @@ "43a6f9e055b908a42b5811d6ce5e48acf8c9ed08", "testharness" ], + "css/css-multicol/float-and-block.html": [ + "435614e6d5dcdbd8325687f70014bea0e3dea5f7", + "reftest" + ], "css/css-multicol/multicol-basic-001.html": [ "7cb568d75ea3fec9046ec69770fe59b8539beb02", "reftest" @@ -507115,6 +507718,34 @@ "46913ea7e47811b11be898de5c3bd0a330ea6637", "testharness" ], + "css/css-scoping/shadow-disabled-sheet-001.html": [ + "3de2d23c1b3339b964ec2c009832a3207a3b9dc4", + "reftest" + ], + "css/css-scoping/shadow-fallback-dynamic-001.html": [ + "741cd9e29067a4634aa5beb6bd06afa540895d22", + "reftest" + ], + "css/css-scoping/shadow-fallback-dynamic-002.html": [ + "e9a0d8178387901404030dde1b7ae7b2842f2eca", + "reftest" + ], + "css/css-scoping/shadow-fallback-dynamic-003.html": [ + "0b75fadbaee366349576e2d6f3ca8d6a49069f66", + "reftest" + ], + "css/css-scoping/shadow-fallback-dynamic-004.html": [ + "71dcc60c4ff59690927c1575fff2eecf85ee558f", + "reftest" + ], + "css/css-scoping/shadow-fallback-dynamic-005.html": [ + "ab3c3d205e59df800ba5b4217245b83685521c31", + "reftest" + ], + "css/css-scoping/shadow-root-insert-into-document.html": [ + "2cee9fff35c9222074f4ef78dcfcb8a3e02bbc98", + "reftest" + ], "css/css-scoping/slotted-invalidation.html": [ "c500e1ceba1b293d45df5f66fd89d4a5d9ceb952", "testharness" @@ -507227,6 +507858,14 @@ "51f08f58135901b332ff43d15fbdc8d0a22f962c", "manual" ], + "css/css-scroll-snap/snap-inline-block.html": [ + "4fc646db848f597af6f4562e7b60815e9ca4ef2b", + "testharness" + ], + "css/css-scroll-snap/snap-to-visible-areas.html": [ + "dfaf8675bec557c9f2178ad48b29c803f94056b5", + "testharness" + ], "css/css-shapes/OWNERS": [ "d26aa70436055346420fd8bae6fd174daf090124", "support" @@ -507331,6 +507970,14 @@ "e5b0425ea113fc8f550639aba9e85adb626fc6c1", "testharness" ], + "css/css-shapes/shape-outside/formatting-context/reference/shape-outside-formatting-context-ref.html": [ + "aaae2c3210f797109604e85016d25467d3aa5f47", + "support" + ], + "css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html": [ + "2f33cb292183209b60437955122248438b46d209", + "reftest" + ], "css/css-shapes/shape-outside/shape-box/reference/shape-outside-box-001-ref.html": [ "b732edbc1d0920b2bb6ae2c5e7f25ec8ea15d0e0", "support" @@ -508976,7 +509623,7 @@ "reftest" ], "css/css-tables/table-model-fixup-2.html": [ - "19e3577e862601a0cf00dd4644017218c363f0db", + "57f45e21a6f9f51154f872c724856d41681857e7", "testharness" ], "css/css-tables/table-model-fixup.html": [ @@ -511063,10 +511710,6 @@ "8d5809ae7986bdc493e290cc31068b478a7f4d18", "reftest" ], - "css/css-text/i18n/css3-text-line-break-opclns-013.html": [ - "def397265dafefa00bed7ef9b122667867244ee6", - "reftest" - ], "css/css-text/i18n/css3-text-line-break-opclns-014.html": [ "22e41aff080c6dcc577660d36142aef3230c3feb", "reftest" @@ -511203,10 +511846,6 @@ "a2dd7fd232c02b5edb2c9dc372bd3c4e2ef9864d", "reftest" ], - "css/css-text/i18n/css3-text-line-break-opclns-048.html": [ - "b54e6fe470f6bccfa0802d99e2e56b093fd6b834", - "reftest" - ], "css/css-text/i18n/css3-text-line-break-opclns-049.html": [ "fe9971b88c54ad8c06adff6eb2d674e1ffbe8e77", "reftest" @@ -511347,10 +511986,6 @@ "aaa7d66b89731d200b1f4b7091dda82c469929e3", "reftest" ], - "css/css-text/i18n/css3-text-line-break-opclns-118.html": [ - "2be0fd76f62c127556a749d8b159c7c29b603628", - "reftest" - ], "css/css-text/i18n/css3-text-line-break-opclns-119.html": [ "0f093970f64ea84b1246ea4d2c5d8e60667bdafe", "reftest" @@ -511491,10 +512126,6 @@ "29f3c50088569d88a654234d89ad4370165f89e3", "reftest" ], - "css/css-text/i18n/css3-text-line-break-opclns-154.html": [ - "3ad85f1ae1907eb7d84fca3e72d00cf8030adbfc", - "reftest" - ], "css/css-text/i18n/css3-text-line-break-opclns-155.html": [ "a7761d9e1602484a87506326ea69043f675a6b89", "reftest" @@ -511627,10 +512258,6 @@ "559f33d4579d496a16877f4ce02578347dbf74c1", "reftest" ], - "css/css-text/i18n/css3-text-line-break-opclns-216.html": [ - "a4bd3e721b66e12ec309e87649f97b7e0fbdebf9", - "reftest" - ], "css/css-text/i18n/css3-text-line-break-opclns-217.html": [ "88de4809077f221e3f12f8a2d3b4d3d05625c27c", "reftest" @@ -511659,10 +512286,6 @@ "8dabbc687db8e345f813add7637b021b222030fc", "reftest" ], - "css/css-text/i18n/css3-text-line-break-opclns-224.html": [ - "7918d0d8ad4661fa7f7068eb0b3d0e5db647c295", - "reftest" - ], "css/css-text/i18n/css3-text-line-break-opclns-225.html": [ "4baee0c9306bd759257c53af174dfde8be54b5ee", "reftest" @@ -512699,10 +513322,6 @@ "dc4cc7e9c23a9d36c674cd0822d22b3d6119f154", "support" ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html": [ - "e80305b0df39b2df3bdc1f4876eb4433e6babcd6", - "support" - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html": [ "d4ac1cada77f7287da48ade3857e5f68670ba98d", "support" @@ -512839,10 +513458,6 @@ "4baf979c65a0ffa4a83e65e7fdfe5f457517593f", "support" ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html": [ - "07db3b91c4798e502c9f8ee2b931d8d0d0f461ce", - "support" - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html": [ "b612c3d8bb714d1b951f963d50e8275d1a0f27a2", "support" @@ -512983,10 +513598,6 @@ "83eaef84e9d0e3f58905b9a6f7268018e4014194", "support" ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html": [ - "df62ed8942fdb2776c0a01d9765b71a4167300e5", - "support" - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html": [ "0140d6fce18604a51b1087c9cd1107b0b15b4b90", "support" @@ -513127,10 +513738,6 @@ "4dda7948a8ea442ca2c7e4b46b831cf3ac1fabc9", "support" ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html": [ - "cd266d86aa2de24d72f14f39ea675c18abaec31e", - "support" - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html": [ "b311bf9cfddc1217dd1dc5a96199ca8d8d786e82", "support" @@ -513263,10 +513870,6 @@ "e9cf46fd6dfa7fb82431b243d897c81c283acd1d", "support" ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html": [ - "fbdfa9d7795fc6294e3807bc913668f4501eb8f9", - "support" - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html": [ "9a4bb4d06e18c429ac3edab4ac263c77d08aa625", "support" @@ -513295,10 +513898,6 @@ "3d18208ca74d7809712f1e80d81e2dcb771f585e", "support" ], - "css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html": [ - "d5c3459ae7a3f98a76a969384b7377ad85800dcc", - "support" - ], "css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html": [ "acea6f0656160271223ba2513b84a89b50a1c643", "support" @@ -513431,10 +514030,6 @@ "634018ab5c30e499c6eed93465cfb7d02e2d3f02", "reftest" ], - "css/css-text/line-break/line-break-normal-025.xht": [ - "5a41b63c46c0e0e5fbadd007177d7414fe0ac8b7", - "reftest" - ], "css/css-text/line-break/line-break-strict-011.xht": [ "deef4c827b5323ca7be4ff758b36f2a99316d5a6", "reftest" @@ -513471,14 +514066,6 @@ "f9c1ce1b514450757796500b3c53ee6e8f84e842", "reftest" ], - "css/css-text/line-break/line-break-strict-018a.xht": [ - "c262806975c9049cae9aaec4d564d1d6d52866e0", - "reftest" - ], - "css/css-text/line-break/line-break-strict-018b.xht": [ - "14de59c749d0ac55a755ce4a30ffbecfb89fced8", - "reftest" - ], "css/css-text/line-break/reference/line-break-anywhere-001-ref.html": [ "6224337b8fabfa02acd3e742a65d2c7905043648", "support" @@ -513507,10 +514094,6 @@ "51fbacefed3e99ba0d2ed0f3e962d53bc441808f", "support" ], - "css/css-text/line-break/reference/line-break-normal-025-ref.xht": [ - "505f2648f4170c7f16187cbee9409c5debc1b8ef", - "support" - ], "css/css-text/line-break/reference/line-break-strict-011-ref.xht": [ "801a813b828a2a36c67c4d3b14807cfa88a96748", "support" @@ -513547,14 +514130,6 @@ "b7666d3779f515011a3f35267e3416af80e643e3", "support" ], - "css/css-text/line-break/reference/line-break-strict-018a-ref.xht": [ - "28382a5ee66ba23081d0c3562508d7c9a057804d", - "support" - ], - "css/css-text/line-break/reference/line-break-strict-018b-ref.xht": [ - "087ae59ceba531e62b44b8eff861a0ad9ecaa192", - "support" - ], "css/css-text/line-breaking/line-breaking-001.html": [ "3eb24937c6a4d0fa50c98373bec24eb6b9575401", "reftest" @@ -513599,6 +514174,10 @@ "acb72d2a4c3d5b74e63652ea19c3ed13cf1755ea", "reftest" ], + "css/css-text/line-breaking/line-breaking-012.html": [ + "e9faec31d9058bb61a9e41ba62b1f57082ae3ee2", + "reftest" + ], "css/css-text/line-breaking/line-breaking-ic-001.html": [ "1ae52aede1788270943bb03bb44d1c391a65a0b3", "reftest" @@ -513615,6 +514194,10 @@ "06870b5369af27006026689d97b057f7816b4c3c", "support" ], + "css/css-text/line-breaking/reference/line-breaking-012-ref.html": [ + "dad351b104faeae8bc8d16632c7e57d01a0fdab7", + "support" + ], "css/css-text/line-breaking/reference/line-breaking-ic-001-ref.html": [ "7757ffc4116743ff6f98649310bf8b1bdc7027c9", "support" @@ -515247,10 +515830,6 @@ "2c693ccf4d431a5fcbc55a1184f550b152b1c498", "support" ], - "css/css-text/word-break/reference/word-break-normal-002-ref.xht": [ - "d3f4b15b3f769ccad81d4839c4c35aa93077fc04", - "support" - ], "css/css-text/word-break/reference/word-break-normal-ar-ref-000.html": [ "3022f73bbcdeb8abbc14a1081a515273dba07f9c", "support" @@ -515395,10 +515974,6 @@ "c24f0f91da19e34b3fe594e8139190b6dde59ed4", "reftest" ], - "css/css-text/word-break/word-break-normal-002.xht": [ - "f1fd11fb63896e439b9970d448861de78a986882", - "manual" - ], "css/css-text/word-break/word-break-normal-ar-000.html": [ "32204f818ee4de698be8499f33aadd2adda840d6", "reftest" @@ -521548,11 +522123,15 @@ "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html": [ - "63600cc74e62ecbaf98bf786de17362764ec947e", + "b20c888c2ecc5dc7f87a2fa7114141a86a63598d", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-value.html": [ + "55f20761cbbe3dc27c718621d3e4d57eae041e8a", "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html": [ - "236520d8ac6199066d1e082b9860f2381ff61be6", + "d2ab852da57ca24e9675fd670a0bf3546063fa69", "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative.html": [ @@ -521663,8 +522242,12 @@ "e19ec7ede86d52ecf29a142607de481facabcfb2", "testharness" ], - "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html": [ - "e2d56515f3580649fc9cc8188b39056beb030036", + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html": [ + "9abf1e98ec0291f305c274e24f34b15b8c334e72", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html": [ + "a59472a3897ef37e3978f803f6a36d7a893e1f95", "testharness" ], "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssnumericvalue-multiply-two-types.tentative.html": [ @@ -521891,6 +522474,14 @@ "6fb5b014ffbbe4fe9c0019cea618a001fefdbedd", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/break.html": [ + "d23705e018072f14ceb36d364df671f7fd6a6617", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/caption-side.html": [ + "fc24cf6f0e6612646b6d8b0229ed31c2de97d763", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/caret-color.html": [ "d4139aeff755abe89ee1e04fcd34ccfba4efe91c", "testharness" @@ -521919,10 +522510,42 @@ "d7424e7fb7c27cfa31fb0e40ee9045129ed96c03", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/flex-basis.html": [ + "87f3eed7306a43a312c95fd8b525fcd5d3e167cc", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-direction.html": [ + "a27187c16080fe2daacd1c0a99657773a2b8c2d0", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-flow.html": [ + "7cc29cb60930ad904ac6a90ed6fad5673b84ed81", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-grow.html": [ + "7882699c2414306523501d253115198622a18cc9", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-shrink.html": [ + "8025e8905f2547ebdad41159c1872e6c9d868458", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/flex-wrap.html": [ + "1f57e275b4c9d195e9f82ead41410f0954fdff86", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/flex.html": [ + "3bfc9c981b2131ed480f5d0bc2b90f76743e2b28", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/float.html": [ "1dfca0045c2b57f36d5165139087301ffe54c63a", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/font-size.html": [ + "bb31e5cb88492bece2c54ff106d01e789e3f08a6", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/font-style.html": [ "c4a42872dca602b71f021799d29e404cfa7ed90e", "testharness" @@ -521932,7 +522555,11 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/height.html": [ - "36b8677eb45f8555da4381e1644624df2f2060e0", + "617ec941ab1cbd02b31b8a9bb7ce6da311109476", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/isolation.html": [ + "883b36434d3e3d8fee25f0ae0fee9884b5ceef44", "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/left.html": [ @@ -521959,10 +522586,42 @@ "2a20c6818e9d71adbf3902fde74cb26136917e72", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html": [ + "43a29c4680d0f93c586f3e7d772fe64a56947d87", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/object-fit.html": [ + "9e16a0dac44abcdb6b17475c429694ec78c5ae0a", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/object-position.html": [ "c3040ca9284c50c2149dc09502fde5f20d0a4baa", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html": [ + "6f6411b7eb198d0f76ea077f80e5974b50dd5ee1", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-distance.html": [ + "57718eea1d7c224115d7a82b0a19f368354200a7", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-path.html": [ + "5822486bf8d79310965dddcb5bcbe6bf69ac89c4", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-position.html": [ + "a0e3b777d15caecaee854c3e5fb050df8c736d0a", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html": [ + "f405f78977c3521f2dfd78316b78ad2bbe61845d", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/offset.html": [ + "87b8d31906a2bf96a38e5112600fcd8970642d53", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/opacity.html": [ "3812b01e648e3b043abbd2fe82c3733309da49ad", "testharness" @@ -521987,6 +522646,10 @@ "70c2e29badef7528469bcf11e1cb7bbc6cd519ea", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/pointer-events.html": [ + "71b42cb53d950eb62309b4567d3c7bc62dd1e28e", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/position.html": [ "4e3eccee58cec470febe4cd9a9149f4b4436487e", "testharness" @@ -521996,13 +522659,17 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [ - "6b7b909fe2cf5576ea5e483a0c0ee8a2977171f6", + "7e6c530cf36cce5d7b8d02abbbefbdd4370d1be1", "support" ], "css/css-typed-om/the-stylepropertymap/properties/right.html": [ "68a2611eaf9eecb7393c2b0db0f4378ebe285f22", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html": [ + "7d4636be3e35639b915917412465b443241e95b1", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/scroll-padding.html": [ "d37d336e4695e5055706a7822572b81b943fdbd4", "testharness" @@ -522011,6 +522678,10 @@ "3189c7b3903d30f31836ea845aebecf599198c79", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [ + "e56449111778ad18152a42d54fc88097950f15f0", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/text-align.html": [ "88a1f5866a767c25dec2ef75728c68c5631d371f", "testharness" @@ -522027,6 +522698,10 @@ "9419ab219034d1fb732965ebd3a03934bcaddf5a", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/text-orientation.html": [ + "919ebc1fadf6e097071a0f1618afeed0849f18e6", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/text-transform.html": [ "53f0482b667f049170dcdfb5de29dedc6897d09a", "testharness" @@ -522047,6 +522722,10 @@ "b735f3ff6dba561cf2e35a8a85a8e2b93c0edc61", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html": [ + "b676714807b4fcdfd5ba7555f7c2ee3d1d9590d2", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/properties/vertical-align.html": [ "41ae6fd66b5a0e6f3b5f154d839362a4921712cc", "testharness" @@ -522060,7 +522739,11 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/width.html": [ - "d429f7a88012179ef3d604b79b3db4aaba0ca426", + "205915eb7162e23fd5600488304dd8dfa8e51ee2", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/writing-mode.html": [ + "3867e6c80011aaccb4b18efa37dea27d62dcf428", "testharness" ], "css/css-ui/OWNERS": [ @@ -529923,6 +530606,62 @@ "770cfe7939de94e221926b65bccfa057ee7711f2", "reftest" ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html": [ + "dc2667e1dee2cb1c22f678aabe4d617bb4f64f69", + "support" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html": [ + "efa71c02524fa57eac92e8311b7c95befd06bda1", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html": [ + "da28e37e576350d3eec7061f0dab66d5d7d4a261", + "support" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html": [ + "109856fd1d885f7d5f8cd4a6c0db0eb8cec83dc0", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html": [ + "bea55f8e91d4ff012e7a2ce5efa70b653893c565", + "support" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html": [ + "186bbff0e10a299950a3594349115956a977d2d8", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html": [ + "663ce0026de3c61a649c77aa6ac0097940ab1a47", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html": [ + "3b68b98fd6e8be39b56d2882e0fe739d46b826d0", + "support" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html": [ + "2d4ccf4c626ead622054753ebdabadc2626483f8", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html": [ + "6d45ce1c05f792c126bd5c912f6f0232cd6a8fb9", + "support" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html": [ + "582ce006ae8576c9b44f2532fea73641a7f4ad9b", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html": [ + "a2a544c867707e4ac9715495c3ba7b6d26670818", + "support" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html": [ + "b4a0abd69a69f19ef671042ee972a7fe62675fc6", + "reftest" + ], + "css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html": [ + "2543ef7b6e41b2b0614c32167f4e0a85319dae0c", + "reftest" + ], "css/css-writing-modes/support/100x100-lime.png": [ "b02fc2d0ad1d95a2aeb6011022e63928841b183f", "support" @@ -531571,6 +532310,10 @@ "020d13088ba7b4b58ecb80bef3656a5a415b03ea", "testharness" ], + "css/cssom-view/GetBoundingRect.html": [ + "5017a0f369c71e3b952ba2fc555ec08f00e4359d", + "testharness" + ], "css/cssom-view/HTMLBody-ScrollArea_quirksmode.html": [ "6de6ee944522c61bc45335df91db210fd066b4f3", "testharness" @@ -532008,23 +532751,23 @@ "testharness" ], "css/cssom/CSS.html": [ - "2c55d573bbd90f5ca3e564131ae697b547e4a43c", + "fd9fd5a23066558960ea933a8dab6dec0039c649", "testharness" ], "css/cssom/CSSKeyframeRule.html": [ - "0246cf2511a18c247db1eabefec8b3590127d3ee", + "1a8e3e0ce0ab0d147efd0ae321a22441471db4ab", "testharness" ], "css/cssom/CSSKeyframesRule.html": [ - "bca997a63c1389ef6d14aac2f32ab770fbd15ec4", + "0d79c71fa08843fd830e06ffbff0ee1c5f6664d3", "testharness" ], "css/cssom/CSSNamespaceRule.html": [ - "701b19bdfa480a5e0997492094657e32ae11ea48", + "d12ac6dccba47c4fbe6cce03bb44e51b850fb07a", "testharness" ], "css/cssom/CSSRuleList.html": [ - "8d8b435c2398c7a9de5fd57584240e24b45b80bc", + "4d0b19a6e29ae7a721574e36b47985233ddc8bae", "testharness" ], "css/cssom/CSSStyleRule.html": [ @@ -532032,15 +532775,11 @@ "testharness" ], "css/cssom/CSSStyleSheet.html": [ - "f0d47464da9d30e70733f09af78f3e9f982c4406", - "testharness" - ], - "css/cssom/GetBoundingRect.html": [ - "7e5a8b25753ac970c2d192376c9dd93943b3dbb5", + "a69dbd728c19d1df95dd00f2750e0919893ce61d", "testharness" ], "css/cssom/MediaList.html": [ - "0357bff95fc870624d13ad3bf61cdfff5b2ad1cf", + "f3581dd2627cf4933c05f4cc61db1820f7587452", "testharness" ], "css/cssom/MediaList2.xhtml": [ @@ -532052,7 +532791,7 @@ "support" ], "css/cssom/StyleSheetList.html": [ - "3a0e6f64f70f863d679e537c4bfb76aaa0d3598a", + "0a1cd8ed56ac3a5b1a9556835d94fb80325199bf", "testharness" ], "css/cssom/computed-style-001.html": [ @@ -532096,11 +532835,11 @@ "testharness" ], "css/cssom/cssom-fontfacerule-constructors.html": [ - "c064661df74571d374f49a693f3263fcf138e670", + "4e368aa75d3840d7f819fd531c91417fd2dad63c", "testharness" ], "css/cssom/cssom-fontfacerule.html": [ - "ca5e2f162a4a0dd02f3c46e72b9e43e1b61d621a", + "b26c0a9584822f4e97d4e2f28507aa6e82a5fbd0", "testharness" ], "css/cssom/cssom-ruleTypeAndOrder.html": [ @@ -532131,12 +532870,16 @@ "c9ed57c7ef7a035c25feff4ea60547a57d727f31", "testharness" ], + "css/cssom/getComputedStyle-dynamic-subdoc.html": [ + "45d94c17f0a88877a8218135c94d331afcdf7df4", + "testharness" + ], "css/cssom/getComputedStyle-pseudo.html": [ "a2033405d6852cdeb4c3b8cf628f7c1d8f7cd1aa", "testharness" ], "css/cssom/historical.html": [ - "2c78218b89efb9bdf60cf708920be142051347c7", + "02b135e62439d775d7e8de7ca94c831a8d00e077", "testharness" ], "css/cssom/index-001.html": [ @@ -532200,7 +532943,7 @@ "testharness" ], "css/cssom/overflow-serialization.html": [ - "199039706289f577652b968706fc1251398acd1c", + "48ca70f4c20da103276e1b053ca0e4613fcc2819", "testharness" ], "css/cssom/selectorSerialize.html": [ @@ -532212,7 +532955,7 @@ "support" ], "css/cssom/selectorText-modification-restyle-001.html": [ - "ac5a5414dd849151c3ca6348c90c0f4e80a09b75", + "0391a09ae16f9e353bab57df65ba35d4372a6548", "reftest" ], "css/cssom/selectorText-modification-restyle-002.html": [ @@ -532220,7 +532963,7 @@ "testharness" ], "css/cssom/serialization-CSSDeclaration-with-important.html": [ - "ecc8b95fb2d71cacee271f4fea2fc16f35cdba57", + "ed17519b642e6e61fc9e01ef72098d5e31dbd291", "testharness" ], "css/cssom/serialize-namespaced-type-selectors.html": [ @@ -532228,11 +532971,11 @@ "testharness" ], "css/cssom/serialize-values.html": [ - "dfc69e37002cf8babc654182892c1e75f3845b58", + "53c094e381ba06f111ab8b379debaa6becb40802", "testharness" ], "css/cssom/serialize-variable-reference.html": [ - "5e83f084efc82184c3052a40bb4a061fd4a1336f", + "85a25fcb99fe433e3f71bc1b6fec92815da2704d", "testharness" ], "css/cssom/setproperty-null-undefined.html": [ @@ -532240,7 +532983,7 @@ "testharness" ], "css/cssom/shorthand-serialization.html": [ - "bd514834dbd48c267c16a4329af6fec7f6cbc081", + "0240668113cb5c280dcb76d8eabfa28d0ed9cb52", "testharness" ], "css/cssom/style-sheet-interfaces-001.html": [ @@ -532264,7 +533007,7 @@ "support" ], "css/cssom/stylesheet-same-origin.sub.html": [ - "c8112887da9ee152a9ebe64988fd29cb2c27b9ba", + "cab23bdf8b92c8194cc71b1a8ce34155f89f42cf", "testharness" ], "css/cssom/support/1x1-green.png": [ @@ -532464,7 +533207,7 @@ "testharness" ], "css/cssom/variable-names.html": [ - "5ab67b9e86fd700a556d153898c2896448cc1759", + "0da19a40542ea2eb282bf04e6ea65d15490fc097", "testharness" ], "css/filter-effects/OWNERS": [ @@ -532728,11 +533471,11 @@ "testharness" ], "css/filter-effects/parsing/filter-parsing-invalid.html": [ - "ed49a343fbf4ebffc7c98797b21bf6fed83d5f89", + "296e73b68ea36f9070c889728723bf877ad65e23", "testharness" ], "css/filter-effects/parsing/filter-parsing-valid.html": [ - "a53c5723d7f151f94b1ecbff1e4813beca40d546", + "7c17e0cd21b0a6859dd3a38a2cd7568037bca15c", "testharness" ], "css/filter-effects/parsing/lighting-color-parsing-invalid.html": [ @@ -535295,6 +536038,10 @@ "eb78a4d12f35b4249051826ea000c53d04df80b7", "support" ], + "css/support/blue32x32.ico": [ + "a968207eb33ff204ef5af90af452e6c53f5cde76", + "support" + ], "css/support/c-red.css": [ "dc288b7aa49b57e0abf803741e78582ba5ceffdb", "support" @@ -544100,7 +544847,7 @@ "testharness" ], "custom-elements/builtin-coverage.html": [ - "a33f3950860fead2c1cbe249d73394b1888facd0", + "14cda641d06979600b461a4985f36c1fbc3defc9", "testharness" ], "custom-elements/connected-callbacks.html": [ @@ -544364,7 +545111,7 @@ "support" ], "docs/_config.yml": [ - "55b531a735fbcfb21fab226717b140ba4b3f5486", + "2d80d0533330473caf490dfa1145ca76b5f42141", "support" ], "docs/_includes/footer.html": [ @@ -544376,7 +545123,7 @@ "support" ], "docs/_includes/header.html": [ - "e0306c4de5f406a7b5198d6d729ea1e14c2d91cf", + "faa044875fe2a159030203db9400ea18ed385da8", "support" ], "docs/_includes/svg/octicons/LICENSE": [ @@ -544412,7 +545159,7 @@ "support" ], "docs/_running-tests/chrome_android.md": [ - "d23a2e3446dc5f5ec4a744416fc6a5a559f18e6b", + "082b7697eed61caefcc0a280cba6cee24ff12e7d", "support" ], "docs/_running-tests/index.md": [ @@ -544523,8 +545270,12 @@ "429836f3ca93ff4896eb5d942a09e7eafad1fb02", "support" ], + "docs/assets/gh-fork-ribbon.scss": [ + "03c18f74b15f335c3be32b4410bcad9ea9b77fb9", + "support" + ], "docs/assets/main.scss": [ - "a0f4501b19a64a73c1037e2843a49060c4659bc9", + "94b8f9e5bd6785428b2ccc8e6605449de8014bc0", "support" ], "docs/assets/menu.js": [ @@ -544564,7 +545315,7 @@ "support" ], "docs/introduction.md": [ - "8b5def1fe676bd3c47a54933d08f8e43b634a31d", + "ea9a85d79dbf66598ee05da17d34f9e786a3ce78", "support" ], "dom/OWNERS": [ @@ -546227,6 +546978,10 @@ "a4e24143c2ef4b9a8fe64a0a07bd30594025f90e", "support" ], + "domxpath/document.tentative.html": [ + "c1b93714b14b822c55d3f784e0520d91c6cc46c4", + "testharness" + ], "domxpath/evaluator-constructor.html": [ "4842d40e22e25ee72536946d785a3cd03bc6a11d", "testharness" @@ -548675,6 +549430,10 @@ "892d667b4e54cc48435f07f8a2f443b8b67f33b7", "support" ], + "entries-api/README.md": [ + "9fad3adb14acfb8c14cc320a8d704c4291d01c40", + "support" + ], "entries-api/errors-manual.html": [ "baf8ef0435c4da686a5ed5e728a22fee317c2548", "manual" @@ -548787,6 +549546,10 @@ "700107771158b22fa280f30a5a52d1aac617ff6e", "testharness" ], + "eventsource/dedicated-worker/eventsource-close2.htm": [ + "dc79b53506150f4877a36c6c0d54ccebeecf87ba", + "testharness" + ], "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm": [ "9614ac5ce1967bbbcae6a1cc8d64465579f6410d", "testharness" @@ -549139,6 +549902,38 @@ "2ae1da8e026e63625a6168b842303cc156963ced", "support" ], + "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html": [ + "a48c092204750e00c9aa167a9ef9d2d239445d22", + "testharness" + ], + "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html.sub.headers": [ + "bfcf350d87faae8e6cf4b2beb9fee84957cac449", + "support" + ], + "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html": [ + "7a68af16b8cb8292185997cefdfeb3be295813a7", + "testharness" + ], + "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html.sub.headers": [ + "ea3519ed0612b18268c0df22a1c9472e404c2573", + "support" + ], + "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html": [ + "a1304e1954b23cde1d017a242bad05e2d3039a6e", + "testharness" + ], + "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html.sub.headers": [ + "035bf4abe912636d5bd070eb20d573cf9c464565", + "support" + ], + "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html": [ + "aa8ef0a6f90986121f597231f5ae75b8d4b65368", + "testharness" + ], + "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html.sub.headers": [ + "f20475f628a5f4a3067b8682019054e3f31c703a", + "support" + ], "feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html": [ "4d27ea669ef4362242db87a5abda1589b985bf20", "testharness" @@ -549195,6 +549990,10 @@ "f20475f628a5f4a3067b8682019054e3f31c703a", "support" ], + "feature-policy/interfaces.any.js": [ + "57e4d58d5b12e63832c1c620b271b0124469d728", + "testharness" + ], "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ "22d155755cd7aaff8a1c40c597468066f01eb13b", "testharness" @@ -549292,7 +550091,7 @@ "support" ], "feature-policy/resources/featurepolicy.js": [ - "f6bb46c7ababec6a7902b1ed2b00a7803e0a7e1d", + "87607362a81716400d9fee10958893e7a785f74e", "support" ], "feature-policy/resources/picture-in-picture.js": [ @@ -549968,7 +550767,7 @@ "testharness" ], "fetch/api/request/request-disturbed.html": [ - "47a1771e5ce32b63cf4b378a87c5d53ee486c246", + "62d53aaa3cefd7f76f315ab3f3aa1cd5d5a4e4a0", "testharness" ], "fetch/api/request/request-error.html": [ @@ -551432,7 +552231,7 @@ "testharness" ], "geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html": [ - "5c9b0421e10e87ce540ae89304cb06189521db28", + "b85d614841994226c2cab7fdf88e03620e453457", "testharness" ], "geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -551475,6 +552274,10 @@ "8c5a4e48439ff0620d6267b127a5d49f85657896", "manual" ], + "geolocation-sensor/GeolocationSensor_read.https.html": [ + "5a61a677b26c1c25cb46da2baa16e3a6783febee", + "testharness" + ], "geolocation-sensor/OWNERS": [ "fabf35173a8bd10c7e5ffe348dd92532199ab51a", "support" @@ -553856,7 +554659,7 @@ "testharness" ], "html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html": [ - "caaede75e5c16cc78023ce410f48e37e612cffbb", + "6da68164fdba8986d4dd217ad48198f675e83165", "testharness" ], "html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html": [ @@ -555223,6 +556026,10 @@ "a2a5acc9dfe53c7482eeaa4be3a4819238f8e120", "testharness" ], + "html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument.window.js": [ + "0f0020e1d7d8050892ef146d687178cfe8eedcd2", + "testharness" + ], "html/dom/elements-embedded.js": [ "99489e3a8ac2be0d7dcfb22f7f45c30b00511358", "support" @@ -560336,21 +561143,17 @@ "support" ], "html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.html": [ - "ca8af91733f0b0704409e26f17d4a14977ce14f7", + "8e594aef8d0201565c770ec7c01e13a5f4b8042d", "testharness" ], "html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.worker.js": [ - "2e35f55a86d31d98e69ad1013c18ab1ff9d9be02", + "4effaa2678d2f99954e222ef9a743bffb029431e", "testharness" ], "html/infrastructure/common-dom-interfaces/collections/domstringlist.html": [ "b51c104271ba1cc404de0d68fd004b4e4ecb0d8c", "testharness" ], - "html/infrastructure/common-dom-interfaces/collections/domstringlist.idl": [ - "3b23d2861e3e3037ef3364781394d1b3e8371bae", - "support" - ], "html/infrastructure/common-dom-interfaces/collections/historical.html": [ "a5d4598e215e1e9322538b646a0541ba64687c3d", "testharness" @@ -565583,6 +566386,10 @@ "92c8c30e186f0a94a962bb5c4be7acf0860b943e", "testharness" ], + "html/semantics/forms/form-submission-0/resources/file-submission.py": [ + "902650776538707a501367bac3f224f8feb89514", + "support" + ], "html/semantics/forms/form-submission-0/submission-checks.window.js": [ "c13ed40ca2a1988368564cb5c9dbcabee4306ceb", "testharness" @@ -565591,6 +566398,10 @@ "f73376af978f2fb89dcbd6e9092f113d90c7a3d6", "testharness" ], + "html/semantics/forms/form-submission-0/submit-file.sub.html": [ + "3a32d9a2218c9a77045b88b3ca1b1eab46e9adf0", + "testharness" + ], "html/semantics/forms/form-submission-0/url-encoded.html": [ "04568ab3b18733d4773a5020fdf0c22bdca3b210", "testharness" @@ -569691,6 +570502,10 @@ "78e72ad26b9df9b3f32f1cf00acb6eb051dc86c5", "support" ], + "html/syntax/parsing/html-integration-point.html": [ + "cd2686abb45f08150a13c887959fa0e8e26753a5", + "testharness" + ], "html/syntax/parsing/html5lib_adoption01.html": [ "90f39dae58f37f2f8d786a617fcc5804e6235ae0", "testharness" @@ -571083,6 +571898,10 @@ "1a291b68cdf6edcfc28a2ff22e294e8e8ebc0c42", "reftest" ], + "infrastructure/testdriver/click.html": [ + "afb1a08faa639bdd1ee4387069d76803c5e38d54", + "testharness" + ], "innerText/getter-tests.js": [ "e5ec1c1fd4777a1a1c25720047a955ec04c0d014", "support" @@ -571164,7 +571983,11 @@ "support" ], "interfaces/cookie-store.idl": [ - "5284cfc7bbb5282d670c59ef7baaa39e166bebe9", + "0d74ef8e7681fddddfb786b75075a1dd0ddb9147", + "support" + ], + "interfaces/css-font-loading.idl": [ + "a0d53cc4e88f38cce9fd45759963e5da9a6f3dc3", "support" ], "interfaces/css-typed-om.idl": [ @@ -571184,7 +572007,7 @@ "support" ], "interfaces/dom.idl": [ - "2d65a8029a80cfc97398d18f911f1ae65067e765", + "f5881beeeaa7e990e9b889182989d6d0fb0ba8a3", "support" ], "interfaces/encoding.idl": [ @@ -571199,6 +572022,10 @@ "6bb93df3e14e49931f54eead37a009649e035bd1", "support" ], + "interfaces/feature-policy.idl": [ + "cba4a18b5a6b69c467067dc4a7ac7449f39be6a1", + "support" + ], "interfaces/fullscreen.idl": [ "fda57b55aabdc54d674851851451c6c69c514ed1", "support" @@ -571220,11 +572047,11 @@ "support" ], "interfaces/hr-time.idl": [ - "61bd84c720a00b5dfaff8a98ace54cb476a4ed18", + "db4f313176e4fdfb8efd78545079da42cbb0729b", "support" ], "interfaces/html.idl": [ - "84ed07588763a87bffbe191bf440e820f9d130ec", + "b2b35732b54cbe3406493a6c121363eccceb4f5c", "support" ], "interfaces/magnetometer.idl": [ @@ -571256,7 +572083,7 @@ "support" ], "interfaces/screen-orientation.idl": [ - "b280c2a72795d4abd55a361a0afd8adce70562dc", + "ace5a4ae79933cdfd7ecf5c3801e93f0636fe57b", "support" ], "interfaces/selection-api.idl": [ @@ -571292,7 +572119,11 @@ "support" ], "interfaces/web-share.idl": [ - "d3ab33fa078f1b3bd4b29e174369073aab3963d5", + "21b54128664c5962c29fd708ebba3d8d90987f26", + "support" + ], + "interfaces/webaudio.idl": [ + "43a244276b9795b137c2e46c194d56dbb957635d", "support" ], "interfaces/webauthn.idl": [ @@ -571652,19 +572483,19 @@ "testharness" ], "mathml/presentation-markup/fractions/frac-parameters-1.html": [ - "21ffc564f5bf999df38e265c104ddc3cc767ece3", + "043847a6c09fc388420383c1ce2c992369af299f", "testharness" ], "mathml/presentation-markup/fractions/frac-parameters-2.html": [ - "17502e5c3311cb262d4d47657f71211292a1d4b0", + "5fa05dd23cc431661ca7460781191670d54f5340", "testharness" ], "mathml/presentation-markup/operators/mo-axis-height-1.html": [ - "282c85bc036793c96972a348c8cced5b87d3f078", + "678286269101ccc22a3944c7f3fda1be95360be9", "testharness" ], "mathml/presentation-markup/radicals/root-parameters-1.html": [ - "58293790346b6f6b5ad59de9637f136aad206d20", + "03787fde52972882808119b175331e671dbb477d", "testharness" ], "mathml/presentation-markup/scripts/subsup-1.html": [ @@ -571688,7 +572519,7 @@ "testharness" ], "mathml/presentation-markup/scripts/subsup-parameters-1.html": [ - "59ca4d1cc0b773f1e57b9cc1fb45ccab6a97dd5b", + "a9198166947a3d181d21d2597d167d3962c67f6e", "testharness" ], "mathml/presentation-markup/scripts/underover-1.html": [ @@ -571696,19 +572527,19 @@ "testharness" ], "mathml/presentation-markup/scripts/underover-parameters-1.html": [ - "0bd971f6288d6a198a0d3edcd5777943e4898296", + "8da018d0029c885f8d6caf4d8ae6517430e385c5", "testharness" ], "mathml/presentation-markup/scripts/underover-parameters-2.html": [ - "19c54c65a72706e1d7f2a00fc998f4ffa3a8990c", + "56c694b6be115dc3241f9efe3e95ff8efc854896", "testharness" ], "mathml/presentation-markup/scripts/underover-parameters-3.html": [ - "97bc8e457eada46d22e8c73f69c6854d4d2ebf44", + "a597bbccde38b2273fa552be0b7bbca8372beaf1", "testharness" ], "mathml/presentation-markup/scripts/underover-parameters-4.html": [ - "609c7ff70d3c5509ca08197e38a3a1208faa093b", + "2a0978f31bae3934a18c34865a2193cc2d906bfb", "testharness" ], "mathml/presentation-markup/spaces/space-1.html": [ @@ -571724,7 +572555,7 @@ "reftest" ], "mathml/presentation-markup/tables/table-axis-height.html": [ - "0019b8c73ac46a41c078f722b854f5d4b179f9a2", + "e19346c7b5514aeb048a18ae6cb80e9f3fb76c3a", "testharness" ], "mathml/relations/css-styling/color-1-ref.html": [ @@ -571744,7 +572575,7 @@ "reftest" ], "mathml/relations/css-styling/displaystyle-1.html": [ - "ec33c536a756cf8870acaf029257f126284c7130", + "16a7750938d2cf3b33e502365fcd9a25e51ed2a9", "testharness" ], "mathml/relations/css-styling/lengths-1-ref.html": [ @@ -571764,7 +572595,7 @@ "reftest" ], "mathml/relations/css-styling/lengths-3.html": [ - "206d9a369266e8639f290545c86df7cd6ab9ebea", + "2723869ffc2e841ed40676283fd0b818240dd111", "testharness" ], "mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html": [ @@ -572712,7 +573543,7 @@ "testharness" ], "mediacapture-streams/MediaDevices-enumerateDevices.https.html": [ - "1fb376d675c685d5de76fef0e840e440de3e3268", + "892229b737d157845d9b2e24170f3bc820b10036", "testharness" ], "mediacapture-streams/MediaDevices-getUserMedia.https.html": [ @@ -572975,6 +573806,114 @@ "bf977afe3f0b5daa0e899dff1d55241352125531", "testharness" ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "9a7a66a2fd1f04a410548b0691fa6bd07767e2ca", + "testharness" + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "be6392b34d8a7c5e1c257d6894ed192be567a75c", + "testharness" + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "ec9fb7ca5ee63c2c94ec1c599fda84847488ea31", + "testharness" + ], + "mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "838fb9e5d6c0a976f1978ff711f71b4b830fbd9c", + "testharness" + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "7d20e9e36d2288e2f52984c50531bba7eeec4c59", + "testharness" + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "c93ac7834ab5a560f476c93523430070520675fd", + "testharness" + ], + "mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "8b95b2cf6fcdb8294ddd0eb16f999c3d312c4d49", + "testharness" + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "d83bc79c2125bd20e741ed6ed2322a3c73e38842", + "testharness" + ], + "mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "7244ccaed934c8892da287d89fe4418b485bcb29", + "testharness" + ], + "mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "04cd47a9a5cb974525428323f1e81218f911df79", + "testharness" + ], + "mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "7386bac3932ac650ce1d729091ffe5ab7bd09942", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "1780dbdb75192b26622c7849488a058a5f2d310c", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "ab083ef45668b3ceffa689c81546bee4786121ab", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "7f9cd64a146504b2fc4d60f3c28ac4bee1fb51d9", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "ee88f8fcf9442d1a887e0f998af0d065151ab1d1", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "40880807f157570f164238eb86dc2b3a6f6e0efc", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "94b5f5df01cde9577971f202fc28c7054c125861", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "19709011c5d1aa274bcd4a3472db7dabc280034a", + "testharness" + ], + "mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "85f56860a2f9bf88854ab1f732fa3e7b15995dc6", + "testharness" + ], "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ "1b368a53bec1da5921224e4fd3ae3db4d11014d3", "testharness" @@ -573084,7 +574023,7 @@ "testharness" ], "mixed-content/generic/common.js": [ - "7eb02bdb367f618dd7848de2c64c83bb915d3bd2", + "eb29cec6e5a930521b9526ea46c6a1d747c23a79", "support" ], "mixed-content/generic/expect.py": [ @@ -573092,7 +574031,7 @@ "support" ], "mixed-content/generic/mixed-content-test-case.js": [ - "55980afcecb041ee23942c18b222b20eb8c5bea4", + "b09fc28dbbdfe1d5b7d9d06dfd5610d4572f8912", "support" ], "mixed-content/generic/sanity-checker.js": [ @@ -573804,11 +574743,11 @@ "testharness" ], "mixed-content/spec.src.json": [ - "1e46012ca5e1f0892e6c80572fa28c5358596c57", + "bdd9ba1d38e8bb484c91651bb2592ae9a688befc", "support" ], "mixed-content/spec_json.js": [ - "f3b78849f97e307c39f81cf9cebb01b367c91b79", + "817c54f14d3dabb0c8b21325b9824a8d0f439bb0", "support" ], "mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ @@ -575315,6 +576254,14 @@ "aebe4c1ad096a35fce7aa8c12d7655b525b5cd2a", "testharness" ], + "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html": [ + "4268a275ad695dfded9f6ed8de1850fafb649f95", + "testharness" + ], + "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html": [ + "8466fb824c584d343ca20a52fd8d316fc2cd0d1c", + "testharness" + ], "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html": [ "f2e95967ca89ad85787c121f3cae4ed35e825b44", "testharness" @@ -580015,14 +580962,6 @@ "ca1cedea429efabeaaf1132b54fe45a7626f7f86", "testharness" ], - "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html": [ - "4268a275ad695dfded9f6ed8de1850fafb649f95", - "testharness" - ], - "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html": [ - "8466fb824c584d343ca20a52fd8d316fc2cd0d1c", - "testharness" - ], "offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html": [ "2961422d4081a0fc55cb8bde62e6d33cb2877832", "testharness" @@ -580836,7 +581775,7 @@ "testharness" ], "payment-handler/interfaces.https.any.js": [ - "7910e8fa96dabaf03f1806c6faad94a640e4726c", + "66f067e3988546afc0796dcbc276b04b5a5615fc", "testharness" ], "payment-handler/manifest.json": [ @@ -581039,8 +581978,12 @@ "27ecc7e10e50bf2df07f84a15972c3b913ebf32f", "testharness" ], + "payment-request/payment-request-show-method-manual.https.html": [ + "1df34a1d4ae403ef4853af6850a3f2e9521703f7", + "manual" + ], "payment-request/payment-request-show-method.https.html": [ - "1e4c792de7013839c713555a0a295bcbb9597094", + "676d99be4ce55ab42061921255657c3ab4e458ac", "testharness" ], "payment-request/payment-response/complete-method-manual.https.html": [ @@ -581632,7 +582575,7 @@ "testharness" ], "preload/download-resources.html": [ - "f4894d37e5687cdadf8aa6879cf233b8af4e84da", + "a8af59b5a58b04bfda533a314c9822b13b5c379b", "testharness" ], "preload/dynamic-adding-preload-nonce.html": [ @@ -581648,7 +582591,7 @@ "testharness" ], "preload/link-header-on-subresource.html": [ - "ea2f018b648d77b13b8010b4ebe63cdc5f846603", + "e324d7511f139f6d08c1535adfe75df579ebf747", "testharness" ], "preload/link-header-preload-delay-onload.html": [ @@ -581692,19 +582635,19 @@ "testharness" ], "preload/onload-event.html": [ - "a02dd91451d598684a91575e8b09bda81c90e43f", + "2b8bd3c576b4d264d30dd664a5057fbfb1fa3fd5", "testharness" ], "preload/preload-csp.sub.html": [ - "6b883cf98ebedfffbc66ab01db8736b3a978ba3b", + "a363e5f2447bbbcef709216d1b0bbfeec003d588", "testharness" ], "preload/preload-default-csp.sub.html": [ - "5dc342bc568e96a53d5d8c0259a4f3c32a9a6ae5", + "8b22c83cb91255a74078c643d92078695bcd4cea", "testharness" ], "preload/preload-with-type.html": [ - "ede6cb60bc1fff4f5b7740f66f039c88adb23f6f", + "5592d7d0d7495b04753d09f7e01d34358b03e22e", "testharness" ], "preload/reflected-as-value.html": [ @@ -581724,7 +582667,7 @@ "support" ], "preload/resources/dummy-preloads-subresource.css.sub.headers": [ - "74cf2e94b49905203c42c7e701bd2308997347ea", + "99175c5e06059af0e13bb3a7d40e5ed9e4a447fc", "support" ], "preload/resources/dummy.css": [ @@ -581812,7 +582755,7 @@ "testharness" ], "preload/single-download-preload.html": [ - "2b7af8e911957d6b49246a17ceb284b97981241e", + "7c11c149daba797eb7ddae3254d6166e3057e66a", "testharness" ], "presentation-api/OWNERS": [ @@ -581848,7 +582791,7 @@ "manual" ], "presentation-api/controlling-ua/PresentationRequest_error.https.html": [ - "8d8a2a77b5735cfe4dc6d0eeb3c5bdf7f13c4148", + "c1156f81c778b871e741d55eed332e441c0cda1d", "testharness" ], "presentation-api/controlling-ua/PresentationRequest_mixedcontent.https.html": [ @@ -581872,7 +582815,7 @@ "testharness" ], "presentation-api/controlling-ua/PresentationRequest_success.https.html": [ - "74cc007c2472f11bdc08410f870f270e8e4b0f4a", + "91cc64f165493d46bf3e9f0a303c9794bff78854", "testharness" ], "presentation-api/controlling-ua/common.js": [ @@ -589763,10 +590706,6 @@ "a6cd75583f6363a83b18f1bc77d89821de344ff7", "testharness" ], - "resource-timing/resource_frame_initiator_type.html": [ - "dcea1111a2c9a40a1d3de7246a5295e84dcf08b5", - "testharness" - ], "resource-timing/resource_ignore_data_url.html": [ "f8513b4ae7cc26c07cea1c16d872e0594f05041c", "testharness" @@ -589776,7 +590715,7 @@ "testharness" ], "resource-timing/resource_initiator_types.html": [ - "70ab5e0b5d8d684fc420e9242a273e948edbb1ba", + "b05a2dfad953398d6b31f11055606f2f3694a9af", "testharness" ], "resource-timing/resource_memory_cached.sub.html": [ @@ -589832,7 +590771,7 @@ "support" ], "resource-timing/resources/all_resource_types.htm": [ - "c7f698888c64e5b750fac45e22dbb85e5979b3c5", + "63a40f0ab7e27536448a7624bb632332c9d0aae4", "support" ], "resource-timing/resources/blank_page_green.htm": [ @@ -589847,10 +590786,18 @@ "51e0050cf1bdeb051d0d7ab6f23a7a2173cb40db", "support" ], + "resource-timing/resources/empty.py": [ + "3638ba60904616a2bf551fef1fb81b08db9e172f", + "support" + ], "resource-timing/resources/empty_script.js": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "resource-timing/resources/eventsource.py": [ + "e53940d9844b03cd06b425530e2e23e20aa31bdb", + "support" + ], "resource-timing/resources/fake_responses.html": [ "c942abc1e8c1672935ffc8ce34821891345bacb9", "support" @@ -589860,7 +590807,7 @@ "support" ], "resource-timing/resources/green_frame.htm": [ - "08f8ca19b61ab0ac68014d5b406a952669fbe104", + "710159d2dcfce2cdc2f98449ec7a516fdc739079", "support" ], "resource-timing/resources/gzip_xml.py": [ @@ -590268,7 +591215,7 @@ "support" ], "sensors/generic-sensor-tests.js": [ - "383a4f839c4a74b5b4d2a6cff9c83a61bc5aee04", + "6364f1838215eaafd91b86690039da41d4c19cd1", "support" ], "sensors/idlharness.https.html": [ @@ -591023,6 +591970,10 @@ "fc315489c4d337f7cf8395beb4005be9c12da9d6", "support" ], + "service-workers/cache-storage/script-tests/cache-abort.js": [ + "7c381e34a8e1444ad82645caf05ec8cbfe8360f8", + "support" + ], "service-workers/cache-storage/script-tests/cache-add.js": [ "5807ce231254f89d9e5f2fc43955a8dda5bd865d", "support" @@ -591059,6 +592010,10 @@ "43a44ad35e90ce759de7a855f75b149b756029b4", "support" ], + "service-workers/cache-storage/serviceworker/cache-abort.https.html": [ + "6b44436f3b2e1a463e64f3f5fc343086a295a975", + "testharness" + ], "service-workers/cache-storage/serviceworker/cache-add.https.html": [ "294e76cb7b067b17fc9a0850bdab1d6e169cc25a", "testharness" @@ -591099,6 +592054,10 @@ "ef598649e75e3c8736729d7e233982748e31eb79", "testharness" ], + "service-workers/cache-storage/window/cache-abort.https.html": [ + "2143ee1d78242bd2d055f6ea1b63a1becff657fe", + "testharness" + ], "service-workers/cache-storage/window/cache-add.https.html": [ "d2c83935c4f413fa6f9459843a9ba669deb0e8ce", "testharness" @@ -591139,6 +592098,10 @@ "dafb0d18e02c256a78188fdaf6997a1abd58b215", "testharness" ], + "service-workers/cache-storage/worker/cache-abort.https.html": [ + "d67a78e50008a587d0b349daaacafc25a18cfd5b", + "testharness" + ], "service-workers/cache-storage/worker/cache-add.https.html": [ "2cbea6be14f2f1852993be40744cac72a7fc62f6", "testharness" @@ -593695,14 +594658,6 @@ "45bfdcce349e2cb28611520b006c060347fdf58d", "testharness" ], - "staticrange/OWNERS": [ - "290c71b49f1147778f51898e114db808b4568549", - "support" - ], - "staticrange/idlharness.html": [ - "16f30a68d97edf19c5255328fd1460ac54a4c025", - "testharness" - ], "storage/OWNERS": [ "2c585ecaee5e62118d3cb98c98e12d959ebcbd50", "support" @@ -594084,7 +595039,7 @@ "testharness" ], "streams/readable-byte-streams/general.js": [ - "a7262a490c4a913811c8d0c489b06a567a448fc6", + "ce3c72f3a552a6b9a42b4f37be7e6a053cad10a1", "support" ], "streams/readable-byte-streams/general.serviceworker.https.html": [ @@ -594600,7 +595555,7 @@ "testharness" ], "streams/writable-streams/aborting.js": [ - "f10c4d9ffb59d4480fd069a9ea70ec41f5b71754", + "24615519115cde901b8cac1a19c23cd0d9244a17", "support" ], "streams/writable-streams/aborting.serviceworker.https.html": [ @@ -598520,7 +599475,7 @@ "testharness" ], "user-timing/invoke_with_timing_attributes.html": [ - "c946c734573a3e8598389ae854c1d9792e96440c", + "05283be9a7230ba0c4af09fb5dac98d828bfaf2e", "testharness" ], "user-timing/invoke_with_timing_attributes.worker.js": [ @@ -598544,7 +599499,7 @@ "testharness" ], "user-timing/measure_exceptions_navigation_timing.html": [ - "e557969014be8b0ed1870e288e7f06f4b2a149a4", + "ed9d9be01e740d282ec94379bfd78aca07b56325", "testharness" ], "user-timing/measure_navigation_timing.html": [ @@ -599852,7 +600807,7 @@ "testharness" ], "web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation.html": [ - "bda186b311457e58c48ca5cf4619f485a41f8e2d", + "2c424570af86e1a4541d4f0a67c7693cfcac8abc", "testharness" ], "web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html": [ @@ -599868,27 +600823,27 @@ "testharness" ], "web-animations/interfaces/Animatable/animate.html": [ - "8d76a26de47494600da40e756a26de61329ff3aa", + "4cd816ad368f1dae077f601022f9b57d9cb931ae", "testharness" ], "web-animations/interfaces/Animatable/getAnimations.html": [ - "9c03f9a6410dc8463a3e3acb3b6e38c26d79b097", + "a11049c78d2ca16a9df9d0f21b3a3d0fd35e29f3", "testharness" ], "web-animations/interfaces/Animation/cancel.html": [ - "38d509e24fa224fc8b937e4a63dd1c404e72b466", + "105313dffbe7953ca6b413e860ba8b47e316e0b7", "testharness" ], "web-animations/interfaces/Animation/constructor.html": [ - "f4dc4fdca61255557ed346412e134745bce1a3ed", + "75e8dd9d9d3c96a87cec1abc2c1373537c6e0f77", "testharness" ], "web-animations/interfaces/Animation/effect.html": [ - "4445fc8bd2120fb1e212dfc6a1fcf786a531ee6f", + "db36e79cf6839cda7d6940f21afe2f56d4d9a115", "testharness" ], "web-animations/interfaces/Animation/finished.html": [ - "ffcba3379db7094455a7798e4d5972d8e52caec5", + "a944518bdd0151534f0172ac58034ac613a70249", "testharness" ], "web-animations/interfaces/Animation/id.html": [ @@ -599896,7 +600851,7 @@ "testharness" ], "web-animations/interfaces/Animation/idlharness.html": [ - "d61aa2d95ea31809a275183408e822c8c1eec87d", + "b049999bb0512bfa0c3eb8b60176eb9213d663f7", "testharness" ], "web-animations/interfaces/Animation/oncancel.html": [ @@ -599927,44 +600882,12 @@ "01f669542434f03d37e9f148a4f3135fe3122d46", "testharness" ], - "web-animations/interfaces/AnimationEffectTiming/delay.html": [ - "4de5b0a692d645961de27df67efa8257adb0a031", + "web-animations/interfaces/AnimationEffect/getComputedTiming.html": [ + "e0d4ba4c0f1a5da4d126c501eca733e00adbef1a", "testharness" ], - "web-animations/interfaces/AnimationEffectTiming/direction.html": [ - "642207ce454fb816cc47d14fbe29f65d92ddf6ed", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/duration.html": [ - "14abe09cb19080585a315115e387b85784c7d862", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/easing.html": [ - "b3ad4c78c9bce0e17db0ce780cd1260de1ce7cb0", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/endDelay.html": [ - "a8609f22672b092178c2391d7ba7ef804112bef4", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/fill.html": [ - "1cef601cde33eea3b591a0826ad52f379bb31d0d", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/getComputedTiming.html": [ - "020e9faaae05de5a25829a05558ea72672b04f63", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/idlharness.html": [ - "aa9823e5a06c76921b49aa5f5e61fd1dedfac3af", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/iterationStart.html": [ - "393b37098ab470e75b1254b53875901e705d8d1b", - "testharness" - ], - "web-animations/interfaces/AnimationEffectTiming/iterations.html": [ - "1e8bb46b5a1eef496edda32b16c856baa16e9b30", + "web-animations/interfaces/AnimationEffect/updateTiming.html": [ + "5daa5580c2d34e992f3560bf5b85419498b6c5ee", "testharness" ], "web-animations/interfaces/AnimationPlaybackEvent/constructor.html": [ @@ -599976,7 +600899,7 @@ "testharness" ], "web-animations/interfaces/Document/getAnimations.html": [ - "12fdbce3e75f5a7d7771d9337089255ef73f9712", + "7fbd5eed47955fdaeccd329f82f0884b86654784", "testharness" ], "web-animations/interfaces/Document/timeline.html": [ @@ -599996,23 +600919,23 @@ "testharness" ], "web-animations/interfaces/KeyframeEffect/constructor.html": [ - "2f6449cbf2b47ae457efb23fb52b8fd1709837ac", + "38ff2a4b64e7318fa96eb867aae7f25bed53e67b", "testharness" ], "web-animations/interfaces/KeyframeEffect/copy-constructor.html": [ - "6ef462ddc696269f132d596188ffd5e8da1e1164", + "0e3d893d7b8e438b279f087846df596256ccbe84", "testharness" ], "web-animations/interfaces/KeyframeEffect/idlharness.html": [ - "f05c9bd1cdee77ff6be143b0eb4f982c7218908b", + "ffe493133d4029820f8b27389a15157706b738e8", "testharness" ], "web-animations/interfaces/KeyframeEffect/iterationComposite.html": [ - "65cd746596a6770d1101b030769712be433bf6f3", + "c5ce17faeb355f1e9efae516d6272a88c46daa1f", "testharness" ], "web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html": [ - "f54c7c0da5728f88f37a067761af7ad815fea005", + "ca5efb8556aff617bef957be315ea2fd01e756d8", "testharness" ], "web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html": [ @@ -600043,12 +600966,20 @@ "08da0c81847809328bda0d6e0581711f7838916e", "support" ], + "web-animations/resources/timing-tests.js": [ + "2da06d9e7ace5947141165284697c4ea9be5b9d5", + "support" + ], + "web-animations/resources/timing-utils.js": [ + "e0918d83187c0fbdadaebb14be72c6f34f8dfc03", + "support" + ], "web-animations/resources/xhr-doc.py": [ "de68c45fc1d38a49946f9046f34031e9278a1531", "support" ], "web-animations/testcommon.js": [ - "6f3e85e7ae7786ad9ff3aaec8c6343642d2510c5", + "8f593cc9211bcc0f8f99579e8a3475528f837969", "support" ], "web-animations/timing-model/animation-effects/active-time.html": [ @@ -600064,7 +600995,7 @@ "testharness" ], "web-animations/timing-model/animation-effects/phases-and-states.html": [ - "3edd2c4bdd8409c2c12f08bc998dd8d532e0fd7d", + "b8cc580e3e8d17961ffff4b693857f6c333dd57f", "testharness" ], "web-animations/timing-model/animation-effects/simple-iteration-progress.html": [ @@ -600076,7 +601007,7 @@ "testharness" ], "web-animations/timing-model/animations/finishing-an-animation.html": [ - "4c1cf823a81e72541abcafaa08950cf87424ae55", + "afe654435332e798b3771b6ec6ca13bcca99e421", "testharness" ], "web-animations/timing-model/animations/pausing-an-animation.html": [ @@ -600112,7 +601043,7 @@ "testharness" ], "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [ - "5575a251b9c265d98471e758b3cf9b218e381cba", + "f4e50b805229e0170bff67530b694ee5d6dd1f1a", "testharness" ], "web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html": [ @@ -600124,7 +601055,7 @@ "testharness" ], "web-animations/timing-model/animations/updating-the-finished-state.html": [ - "59e7ed8e4eac5c9edf2526ef748b22e1877b7016", + "8eea7caf9f0bf8b9a87b5a6574a28b378054c8db", "testharness" ], "web-animations/timing-model/time-transformations/transformed-progress.html": [ @@ -600295,6 +601226,10 @@ "93068df297042344669093ce899f0230c87ebf54", "testharness" ], + "webaudio/idlharness.https.html": [ + "7876e16ea643f69315e18c3e17af0d7f95769420", + "testharness" + ], "webaudio/js/buffer-loader.js": [ "4d564eae0b3d7d1045626d1f144cd2638dba64e5", "support" @@ -600495,6 +601430,10 @@ "99284ab790c09dd7a23a6fa5022e8b08b9e3947d", "testharness" ], + "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html": [ + "bf3ebb3a403b24078b7e8c2ff7073dcbc486bb27", + "testharness" + ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html": [ "a1cd969fe32a5aca7cd90d0d0955132fd1660b9c", "testharness" @@ -600519,6 +601458,10 @@ "1561b9eede1ee15126fdd9674a6d9d63194b66c2", "support" ], + "webaudio/the-audio-api/the-audioworklet-interface/processors/input-length-processor.js": [ + "bd6e7a669a2c445ecfd3de4dd6b48a4d84b214cc", + "support" + ], "webaudio/the-audio-api/the-audioworklet-interface/processors/one-pole-processor.js": [ "80b817db4e8d3f49e4f5fe6e97f8e687d16f3159", "support" @@ -600996,7 +601939,7 @@ "wdspec" ], "webdriver/tests/cookies/add_cookie.py": [ - "dcf93071762ea0a0cde253dcd5a54eace26619af", + "c87dc51111c10bbc29339ba0d1be85fb35ee6d6f", "wdspec" ], "webdriver/tests/cookies/delete_cookie.py": [ @@ -601036,7 +601979,7 @@ "wdspec" ], "webdriver/tests/element_retrieval/find_element_from_element.py": [ - "34f356f2579391289edb31adf5b4d4eb88ffc643", + "fa64a4164762861097f11252e8526261038ae1c5", "wdspec" ], "webdriver/tests/element_retrieval/find_elements.py": [ @@ -601044,7 +601987,7 @@ "wdspec" ], "webdriver/tests/element_retrieval/find_elements_from_element.py": [ - "b062b9f044268f0d9e092def81afae1277a91cd8", + "90be4b09a41b8ba00529a78983fbd64cdb3453ef", "wdspec" ], "webdriver/tests/element_retrieval/get_active_element.py": [ @@ -601204,7 +602147,7 @@ "support" ], "webdriver/tests/support/fixtures.py": [ - "cfae7bac775181b96107346746f0e5b17b4e2eed", + "f564352a1d24e685cfe96c5b6f1b986b0dedadfe", "support" ], "webdriver/tests/support/http_request.py": [ @@ -601372,7 +602315,7 @@ "testharness" ], "webmessaging/broadcastchannel/workers.html": [ - "c060739cf485439c5648a49c131353f161c24a0c", + "483e03e9528f1e80fc1b250caee46f7f256d63c1", "testharness" ], "webmessaging/event.data.sub.htm": [ @@ -601423,6 +602366,10 @@ "19fc5d2f7e0f30e9d35a8606c3fb05b537ea3a82", "testharness" ], + "webmessaging/message-channels/worker.html": [ + "25778166691434e77f361a609742a170c4f787e8", + "testharness" + ], "webmessaging/messageerror.html": [ "92c5359ad64394cb2d30402204968d49227c5daf", "testharness" @@ -602171,6 +603118,10 @@ "f556c52a5ba7370dfd94f57331d606b147b0932f", "testharness" ], + "websockets/Create-on-worker-shutdown.html": [ + "75112264efdc3b310f4ba2ab4517b7608aacf2f2", + "testharness" + ], "websockets/Create-protocol-with-space.htm": [ "923fd2681d86812d63347f995f91747ebec18a44", "testharness" @@ -608640,7 +609591,7 @@ "testharness" ], "xhr/responsexml-document-properties.htm": [ - "3171001d9f35e2524a575d02c581c2cbe813f973", + "432b8327dbb09533bb64e8dabf72754d85c25e4f", "testharness" ], "xhr/responsexml-get-twice.htm": [ @@ -608999,6 +609950,10 @@ "a67d1876d6245fb94d60a937b633c87c51a04d21", "testharness" ], + "xhr/xmlhttprequest-closing-worker.html": [ + "2e12b49aca2dc3908837b6b419c92cb890e60e3f", + "testharness" + ], "xhr/xmlhttprequest-eventtarget.htm": [ "40c886f79399108db3ded8a23848905dcf9e0862", "testharness" diff --git a/tests/wpt/metadata/css/css-fonts/calc-in-font-variation-settings.html.ini b/tests/wpt/metadata/css/css-fonts/calc-in-font-variation-settings.html.ini new file mode 100644 index 0000000000000..a1fdcbd2b19b6 --- /dev/null +++ b/tests/wpt/metadata/css/css-fonts/calc-in-font-variation-settings.html.ini @@ -0,0 +1,4 @@ +[calc-in-font-variation-settings.html] + [calc() in font-variation-settings] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-013.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-013.html.ini deleted file mode 100644 index 85e6bf04a53c2..0000000000000 --- a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-013.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[css3-text-line-break-opclns-013.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-048.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-048.html.ini deleted file mode 100644 index 8e23244fd5dad..0000000000000 --- a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-048.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[css3-text-line-break-opclns-048.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-118.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-118.html.ini deleted file mode 100644 index 6d35f44055190..0000000000000 --- a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-118.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[css3-text-line-break-opclns-118.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-154.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-154.html.ini deleted file mode 100644 index f83c4887e81f1..0000000000000 --- a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-154.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[css3-text-line-break-opclns-154.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-025.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-025.xht.ini deleted file mode 100644 index 156e95be92044..0000000000000 --- a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-025.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[line-break-normal-025.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018a.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018a.xht.ini deleted file mode 100644 index 8e7e8001eede0..0000000000000 --- a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018a.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[line-break-strict-018a.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018b.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018b.xht.ini deleted file mode 100644 index e98130a06722d..0000000000000 --- a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018b.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[line-break-strict-018b.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-012.html.ini b/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-012.html.ini new file mode 100644 index 0000000000000..6fd167de2a7b3 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-012.html.ini @@ -0,0 +1,2 @@ +[line-breaking-012.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-normal-002.xht.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-normal-002.xht.ini deleted file mode 100644 index 5670f4380e80f..0000000000000 --- a/tests/wpt/metadata/css/css-text/word-break/word-break-normal-002.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[word-break-normal-002.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini new file mode 100644 index 0000000000000..26435e28b090d --- /dev/null +++ b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini @@ -0,0 +1,2 @@ +[vh_not_refreshing_on_chrome.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini new file mode 100644 index 0000000000000..b39d7c251c501 --- /dev/null +++ b/tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini @@ -0,0 +1,4 @@ +[getComputedStyle-dynamic-subdoc.html] + [getComputedStyle cross-doc properly reflects media query changes] + expected: FAIL + diff --git a/tests/wpt/metadata/css/filter-effects/parsing/filter-parsing-valid.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/filter-parsing-valid.html.ini index 13a7cbc551795..b8ca47ff7b3d4 100644 --- a/tests/wpt/metadata/css/filter-effects/parsing/filter-parsing-valid.html.ini +++ b/tests/wpt/metadata/css/filter-effects/parsing/filter-parsing-valid.html.ini @@ -47,3 +47,15 @@ [Serialization should round-trip after setting e.style['filter'\] = "blur(10px) url(\\"picture.svg#f\\") contrast(20) brightness(30)"] expected: FAIL + [e.style['filter'\] = "drop-shadow(rgb(4, 5, 6) 1px 2px)" should set the property value] + expected: FAIL + + [Serialization should round-trip after setting e.style['filter'\] = "drop-shadow(rgb(4, 5, 6) 1px 2px)"] + expected: FAIL + + [e.style['filter'\] = "drop-shadow(rgba(4, 5, 6, 0.75) 1px 2px 3px)" should set the property value] + expected: FAIL + + [Serialization should round-trip after setting e.style['filter'\] = "drop-shadow(rgba(4, 5, 6, 0.75) 1px 2px 3px)"] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index 41e5ae4d90e47..a1bd285b66b3d 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -864,3 +864,60 @@ [CDATASection interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL + [AbstractRange interface: existence and properties of interface object] + expected: FAIL + + [AbstractRange interface object length] + expected: FAIL + + [AbstractRange interface object name] + expected: FAIL + + [AbstractRange interface: existence and properties of interface prototype object] + expected: FAIL + + [AbstractRange interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [AbstractRange interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [AbstractRange interface: attribute startContainer] + expected: FAIL + + [AbstractRange interface: attribute startOffset] + expected: FAIL + + [AbstractRange interface: attribute endContainer] + expected: FAIL + + [AbstractRange interface: attribute endOffset] + expected: FAIL + + [AbstractRange interface: attribute collapsed] + expected: FAIL + + [StaticRange interface: existence and properties of interface object] + expected: FAIL + + [StaticRange interface object length] + expected: FAIL + + [StaticRange interface object name] + expected: FAIL + + [StaticRange interface: existence and properties of interface prototype object] + expected: FAIL + + [StaticRange interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [StaticRange interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [Range interface: existence and properties of interface object] + expected: FAIL + + [Range interface: existence and properties of interface prototype object] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/request/request-disturbed.html.ini b/tests/wpt/metadata/fetch/api/request/request-disturbed.html.ini index 446edf226de94..15cf180a2a802 100644 --- a/tests/wpt/metadata/fetch/api/request/request-disturbed.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-disturbed.html.ini @@ -21,3 +21,6 @@ [Input request used for creating new request became disturbed even if body is not used] expected: FAIL + [Check creating a new request with a new body from a disturbed request] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/submit-file.sub.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/submit-file.sub.html.ini new file mode 100644 index 0000000000000..a2d487c0e971b --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/submit-file.sub.html.ini @@ -0,0 +1,4 @@ +[submit-file.sub.html] + [Posting a File] + expected: FAIL + diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index bac04108893d4..bad63745ddadb 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1,2 +1,2 @@ -local: c88dc51d03a81e9e405688ccd2baae75d61ffffd -upstream: 9ca21c6c87ccec0ff7fdb0fc896d6e9918f3e331 +local: 84ce43284cd074fec9fafc7dd23bb3d2a1013d43 +upstream: ef805cb3832c2deaf1ab8fc4f3353b65671e6f32 diff --git a/tests/wpt/metadata/websockets/Create-on-worker-shutdown.html.ini b/tests/wpt/metadata/websockets/Create-on-worker-shutdown.html.ini new file mode 100644 index 0000000000000..64c1b5de121d5 --- /dev/null +++ b/tests/wpt/metadata/websockets/Create-on-worker-shutdown.html.ini @@ -0,0 +1,5 @@ +[Create-on-worker-shutdown.html] + expected: TIMEOUT + [WebSocket created after a worker self.close()] + expected: TIMEOUT + diff --git a/tests/wpt/mozilla/meta/mozilla/worklets/__dir__.ini b/tests/wpt/mozilla/meta/mozilla/worklets/__dir__.ini index 43043a1b6c3d1..c000a50cb3b31 100644 --- a/tests/wpt/mozilla/meta/mozilla/worklets/__dir__.ini +++ b/tests/wpt/mozilla/meta/mozilla/worklets/__dir__.ini @@ -1 +1 @@ -prefs: [dom.worklet.enabled:true,dom.worklet.blockingsleep.enabled:true] +prefs: [dom.worklet.enabled:true,dom.worklet.blockingsleep.enabled:true,dom.worklet.timeout_ms:5000] diff --git a/tests/wpt/mozilla/meta/mozilla/worklets/test_paint_worklet_timeout.html.ini b/tests/wpt/mozilla/meta/mozilla/worklets/test_paint_worklet_timeout.html.ini new file mode 100644 index 0000000000000..b99ea5a3ee921 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/worklets/test_paint_worklet_timeout.html.ini @@ -0,0 +1,3 @@ +[test_paint_worklet_timeout.html] + type: testharness + prefs: [dom.worklet.timeout_ms:10] diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini deleted file mode 100644 index 1e2567027d8ae..0000000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[rapid-resizing.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml index 125d50bc2db71..26df65e9827b2 100644 --- a/tests/wpt/web-platform-tests/.travis.yml +++ b/tests/wpt/web-platform-tests/.travis.yml @@ -87,9 +87,6 @@ matrix: - env: # exclude empty env from the top-level above allow_failures: - env: JOB=build_css SCRIPT=css/build-css-testsuites.sh - - env: - - secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM=" - - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev script: - ./tools/ci/run.sh cache: diff --git a/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html b/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html new file mode 100644 index 0000000000000..8e114eeaf86ff --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html @@ -0,0 +1,27 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/README.md b/tests/wpt/web-platform-tests/IndexedDB/README.md index 6b636d5f1a4fa..18f067b18b28f 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/README.md +++ b/tests/wpt/web-platform-tests/IndexedDB/README.md @@ -1,8 +1,8 @@ This directory contains the Indexed Database API test suite. -To run the tests in this test suite within a browser, go to: . +To run the tests in this test suite within a browser, go to: . -The latest Editor's Draft of Indexed Database API is: . +The latest Editor's Draft of Indexed Database API is: . -The latest W3C Technical Report of Indexed Database API is: . +The latest W3C Technical Report of Indexed Database API is: . diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.any.js b/tests/wpt/web-platform-tests/IndexedDB/interfaces.any.js new file mode 100644 index 0000000000000..f142db45bcb9d --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/interfaces.any.js @@ -0,0 +1,32 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +promise_test(async t => { + const [html, dom, indexeddb] = await Promise.all([ + '/interfaces/html.idl', + '/interfaces/dom.idl', + '/interfaces/IndexedDB.idl', + ].map(url => fetch(url).then(response => response.text()))); + + const idl_array = new IdlArray(); + idl_array.add_untested_idls('interface LinkStyle {};'); // Needed by html + idl_array.add_untested_idls(html); + idl_array.add_untested_idls(dom); + idl_array.add_idls(indexeddb); + idl_array.add_objects({ + IDBCursor: [], + IDBCursorWithValue: [], + IDBDatabase: [], + IDBFactory: [self.indexedDB], + IDBIndex: [], + IDBKeyRange: [IDBKeyRange.only(0)], + IDBObjectStore: [], + IDBOpenDBRequest: [], + IDBRequest: [], + IDBTransaction: [], + IDBVersionChangeEvent: [new IDBVersionChangeEvent('')], + DOMStringList: [], + }); + + idl_array.test(); +}, 'Test driver'); diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.html b/tests/wpt/web-platform-tests/IndexedDB/interfaces.html deleted file mode 100644 index 8bffa6227621e..0000000000000 --- a/tests/wpt/web-platform-tests/IndexedDB/interfaces.html +++ /dev/null @@ -1,61 +0,0 @@ - - -IndexedDB IDL tests - - - - - -

IndexedDB IDL tests

-
- - diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js b/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js deleted file mode 100644 index 547b07b8f1797..0000000000000 --- a/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -importScripts("/resources/testharness.js"); -importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); - -async_test(function(t) { - var request = new XMLHttpRequest(); - request.open("GET", "/interfaces/IndexedDB.idl"); - request.send(); - request.onload = t.step_func(function() { - var idlArray = new IdlArray(); - var idls = request.responseText; - - // https://html.spec.whatwg.org/multipage/workers.html#workerglobalscope - idlArray.add_untested_idls("[Exposed=Worker] interface WorkerGlobalScope {};"); - - // https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope-mixin - idlArray.add_untested_idls(`[NoInterfaceObject, Exposed=(Window,Worker)] - interface WindowOrWorkerGlobalScope {};`); - idlArray.add_untested_idls("WorkerGlobalScope implements WindowOrWorkerGlobalScope;"); - - // https://dom.spec.whatwg.org/#interface-event - idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface Event { };"); - - // https://dom.spec.whatwg.org/#interface-eventtarget - idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface EventTarget { };"); - - // https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#domstringlist - idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface DOMStringList { };"); - - // From Indexed DB: - idlArray.add_idls(idls); - - idlArray.add_objects({ - IDBCursor: [], - IDBCursorWithValue: [], - IDBDatabase: [], - IDBFactory: ["self.indexedDB"], - IDBIndex: [], - IDBKeyRange: ["IDBKeyRange.only(0)"], - IDBObjectStore: [], - IDBOpenDBRequest: [], - IDBRequest: [], - IDBTransaction: [], - IDBVersionChangeEvent: ["new IDBVersionChangeEvent('foo')"], - DOMStringList: [], - }); - idlArray.test(); - t.done(); - }); -}); - -done(); diff --git a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js index 56357043ba7b0..7b23742fc4c9a 100644 --- a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js +++ b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js @@ -42,6 +42,7 @@ function performChromiumSetup() { `${prefix}/mojo_layouttest_test.mojom.js`, `${prefix}/uuid.mojom.js`, `${prefix}/fake_bluetooth.mojom.js`, + `${prefix}/fake_bluetooth_chooser.mojom.js`, `${prefix}/web-bluetooth-test.js`, ].concat(extra)) // Call setBluetoothFakeAdapter() to clean up any fake adapters left over diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.http.html b/tests/wpt/web-platform-tests/client-hints/accept_ch.http.html new file mode 100644 index 0000000000000..447dd2861c9e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept_ch.http.html @@ -0,0 +1,33 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.http.html.headers b/tests/wpt/web-platform-tests/client-hints/accept_ch.http.html.headers new file mode 100644 index 0000000000000..38f4f33be8a9d --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept_ch.http.html.headers @@ -0,0 +1 @@ +Accept-CH: device-memory, dpr, viewport-width \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.https.html b/tests/wpt/web-platform-tests/client-hints/accept_ch.https.html deleted file mode 100644 index c0f0581dedbe5..0000000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept_ch.https.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept_ch.https.html.headers deleted file mode 100644 index 401e1af283c02..0000000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept_ch.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Accept-CH: device-memory \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html new file mode 100644 index 0000000000000..68263267bd065 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html @@ -0,0 +1,32 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html.headers new file mode 100644 index 0000000000000..38f4f33be8a9d --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html.headers @@ -0,0 +1 @@ +Accept-CH: device-memory, dpr, viewport-width \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/echo_device_memory_header_received.py b/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py similarity index 56% rename from tests/wpt/web-platform-tests/client-hints/echo_device_memory_header_received.py rename to tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py index 0ab4368cf0b4b..a787fed165873 100644 --- a/tests/wpt/web-platform-tests/client-hints/echo_device_memory_header_received.py +++ b/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py @@ -5,4 +5,8 @@ def main(request, response): """ if "device-memory" in request.headers: - response.headers.set("device-memory-received", "true") \ No newline at end of file + response.headers.set("device-memory-received", "true") + if "dpr" in request.headers: + response.headers.set("dpr-received", "true") + if "viewport-width" in request.headers: + response.headers.set("viewport-width-received", "true") \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/config.default.json b/tests/wpt/web-platform-tests/config.default.json index 6c49b77de1c7d..d08d7c4a3fe21 100644 --- a/tests/wpt/web-platform-tests/config.default.json +++ b/tests/wpt/web-platform-tests/config.default.json @@ -1,14 +1,14 @@ -{"host": "web-platform.test", +{"browser_host": "web-platform.test", "doc_root": null, "ws_doc_root": null, - "host_ip": null, + "server_host": null, "ports":{"http":[8000, "auto"], "https":[8443], "ws":["auto"], "wss":["auto"]}, "check_subdomains": true, "log_level":"debug", - "bind_hostname": true, + "bind_address": true, "ssl": {"type": "pregenerated", "encrypt_after_connect": false, "openssl": { diff --git a/tests/wpt/web-platform-tests/conformance-checkers/Makefile b/tests/wpt/web-platform-tests/conformance-checkers/Makefile index 161c8db7d57c8..879b023c6eaac 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/Makefile +++ b/tests/wpt/web-platform-tests/conformance-checkers/Makefile @@ -7,7 +7,7 @@ EXPAND=expand EXPANDFLAGS= GIT=git GITFLAGS= -PYTHON=python +PYTHON=python3 PYTHONFLAGS= VNU_TEST_REPO=git@github.com:validator/tests.git ITS_REPO=git@github.com:w3c/its-2.0-testsuite-inputdata.git @@ -24,7 +24,7 @@ README.md: index.html | $(EXPAND) $(EXPANDFLAGS) > $@ messages.json: .FORCE - $(PYTHON) $(PYTHONFLAGS) -mjson.tool $@ > $@.tmp + $(PYTHON) $(PYTHONFLAGS) -mjson.tool --sort-keys $@ > $@.tmp mv $@.tmp $@ push: diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index e818ba76b54e2..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid href: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index bb12e65f532f9..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid href: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 7d37b16afcb87..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 16b4187b80deb..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid href: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 71df3f36e1da8..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid cite: scheme-javascript-no-slash-malformed -
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 74c1cbc8872e4..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid formaction: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 4328b02e9b3ab..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid cite: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 52aff9fb79261..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index bc66953ab7d83..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid action: scheme-javascript-no-slash-malformed -
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 6424e83c0f073..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 00a8c885719fd..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 727da488fc78b..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid formaction: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index f22ebf502263e..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index fe2c0ce719ca7..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid formaction: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 73c7e6adf4d2e..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid value attribute: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 267f1131ace3f..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid cite: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 6cf49ca2367e8..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid href: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index aa27796597519..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid data: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index a142b0040b291..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid cite: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 6e85d80fee481..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 6516b42310dcb..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 13a633d37087e..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index af5c83dd2d67f..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid poster: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index adc7a8789826a..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid src: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 3bf1c6516a51b..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid itemid: scheme-javascript-no-slash-malformed -
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index 5110c6d35b2b0..0000000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,4 +0,0 @@ - - -invalid itemtype: scheme-javascript-no-slash-malformed -
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/messages.json b/tests/wpt/web-platform-tests/conformance-checkers/messages.json index fc85b29fd1dcb..73e1d6910fc1b 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/messages.json +++ b/tests/wpt/web-platform-tests/conformance-checkers/messages.json @@ -144,7 +144,6 @@ "html/elements/a/href/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/a/href/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/a/href/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/a/href/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Unexpected token.", "html/elements/a/href/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/a/href/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/a/href/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -214,7 +213,6 @@ "html/elements/area/href/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/area/href/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/area/href/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/area/href/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Unexpected token.", "html/elements/area/href/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/area/href/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/area/href/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -284,7 +282,6 @@ "html/elements/audio/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/audio/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/audio/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/audio/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Unexpected token.", "html/elements/audio/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/audio/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/audio/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -350,7 +347,6 @@ "html/elements/base/href/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/base/href/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/base/href/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/base/href/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Unexpected token.", "html/elements/base/href/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/base/href/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/base/href/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -416,7 +412,6 @@ "html/elements/blockquote/cite/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/blockquote/cite/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/blockquote/cite/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/blockquote/cite/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Unexpected token.", "html/elements/blockquote/cite/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/blockquote/cite/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/blockquote/cite/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -485,7 +480,6 @@ "html/elements/button/formaction/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/button/formaction/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/button/formaction/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/button/formaction/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Unexpected token.", "html/elements/button/formaction/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/button/formaction/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/button/formaction/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -553,7 +547,6 @@ "html/elements/del/cite/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/del/cite/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/del/cite/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/del/cite/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Unexpected token.", "html/elements/del/cite/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/del/cite/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/del/cite/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -749,7 +742,6 @@ "html/elements/embed/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/embed/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/embed/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/embed/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Unexpected token.", "html/elements/embed/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/embed/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/embed/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -820,7 +812,6 @@ "html/elements/form/action/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/form/action/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/form/action/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/form/action/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Unexpected token.", "html/elements/form/action/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/form/action/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/form/action/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -898,7 +889,6 @@ "html/elements/iframe/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/iframe/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/iframe/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/iframe/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Unexpected token.", "html/elements/iframe/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/iframe/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/iframe/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -966,7 +956,6 @@ "html/elements/img/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/img/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/img/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/img/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Unexpected token.", "html/elements/img/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/img/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/img/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1038,7 +1027,6 @@ "html/elements/input/type-image-formaction/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/input/type-image-formaction/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/input/type-image-formaction/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/input/type-image-formaction/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Unexpected token.", "html/elements/input/type-image-formaction/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-image-formaction/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-image-formaction/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1105,7 +1093,6 @@ "html/elements/input/type-image-src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/input/type-image-src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/input/type-image-src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/input/type-image-src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Unexpected token.", "html/elements/input/type-image-src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-image-src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-image-src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1172,7 +1159,6 @@ "html/elements/input/type-submit-formaction/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/input/type-submit-formaction/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/input/type-submit-formaction/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/input/type-submit-formaction/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Unexpected token.", "html/elements/input/type-submit-formaction/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-submit-formaction/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-submit-formaction/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1246,7 +1232,6 @@ "html/elements/input/type-url-value/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Expected a slash (\"/\").", "html/elements/input/type-url-value/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Expected a slash (\"/\").", "html/elements/input/type-url-value/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Expected a slash (\"/\").", - "html/elements/input/type-url-value/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Unexpected token.", "html/elements/input/type-url-value/scheme-schemeless-relative-novalid.html": "Bad value \u201c//foo/bar\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: The string \u201c//foo/bar\u201d is not an absolute URL.", "html/elements/input/type-url-value/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in scheme data: line break is not allowed.", "html/elements/input/type-url-value/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in scheme data: line break is not allowed.", @@ -1312,7 +1297,6 @@ "html/elements/ins/cite/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/ins/cite/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/ins/cite/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/ins/cite/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Unexpected token.", "html/elements/ins/cite/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/ins/cite/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/ins/cite/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1485,7 +1469,6 @@ "html/elements/link/href/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/link/href/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/link/href/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/link/href/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Unexpected token.", "html/elements/link/href/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/link/href/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/link/href/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1554,7 +1537,6 @@ "html/elements/object/data/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/object/data/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/object/data/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/object/data/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Unexpected token.", "html/elements/object/data/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/object/data/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/object/data/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1822,7 +1804,6 @@ "html/elements/q/cite/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/q/cite/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/q/cite/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/q/cite/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Unexpected token.", "html/elements/q/cite/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/q/cite/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/q/cite/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1894,7 +1875,6 @@ "html/elements/script/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/script/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/script/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/script/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Unexpected token.", "html/elements/script/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/script/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/script/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -1962,7 +1942,6 @@ "html/elements/source/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/source/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/source/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/source/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Unexpected token.", "html/elements/source/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/source/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/source/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -2049,7 +2028,6 @@ "html/elements/track/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/track/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/track/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/track/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Unexpected token.", "html/elements/track/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/track/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/track/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -2119,7 +2097,6 @@ "html/elements/video/poster/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/video/poster/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/video/poster/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/video/poster/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Unexpected token.", "html/elements/video/poster/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/video/poster/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/video/poster/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -2184,7 +2161,6 @@ "html/elements/video/src/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/video/src/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Expected a slash (\"/\").", "html/elements/video/src/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/video/src/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Unexpected token.", "html/elements/video/src/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/video/src/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/elements/video/src/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -2272,7 +2248,6 @@ "html/microdata/itemid/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Expected a slash (\"/\").", "html/microdata/itemid/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Expected a slash (\"/\").", "html/microdata/itemid/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Expected a slash (\"/\").", - "html/microdata/itemid/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Unexpected token.", "html/microdata/itemid/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/microdata/itemid/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", "html/microdata/itemid/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", @@ -2344,7 +2319,6 @@ "html/microdata/itemtype/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Expected a slash (\"/\").", "html/microdata/itemtype/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Expected a slash (\"/\").", "html/microdata/itemtype/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Expected a slash (\"/\").", - "html/microdata/itemtype/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Unexpected token.", "html/microdata/itemtype/scheme-schemeless-relative-novalid.html": "Bad value \u201c//foo/bar\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201c//foo/bar\u201d is not an absolute URL.", "html/microdata/itemtype/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201cfoo.com\u201d is not an absolute URL.", "html/microdata/itemtype/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201cfoo.com\u201d is not an absolute URL.", diff --git a/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py b/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py index 1f59c0252099b..df31eab22af5f 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py +++ b/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py @@ -17,7 +17,6 @@ "scheme-data-single-slash": "data:/example.com/", "scheme-ftp-no-slash": "ftp:example.com/", "scheme-https-no-slash": "https:example.com/", - "scheme-javascript-no-slash-malformed": "javascript:example.com/", "userinfo-password-bad-chars": "http://&a:foo(b]c@d:2/", "userinfo-username-contains-at-sign": "http://::@c@d:2", "userinfo-backslash": "http://a\\b:c\\d@foo.com", diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_arguments.tenative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_arguments.tenative.window.js new file mode 100644 index 0000000000000..bcb698eeb0d6c --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_arguments.tenative.window.js @@ -0,0 +1,65 @@ +'use strict'; + +test(() => { + const event = new CookieChangeEvent('change'); + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.changed.length, 0); + assert_equals(event.deleted.length, 0); +}, 'CookieChangeEvent construction with default arguments'); + +test(() => { + const event = new CookieChangeEvent('change', { + changed: [ + { name: 'changed-name1', value: 'changed-value1' }, + { name: 'changed-name2', value: 'changed-value2' }, + ], + }); + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.changed.length, 2); + assert_equals(event.changed[0].name, 'changed-name1'); + assert_equals(event.changed[0].value, 'changed-value1'); + assert_equals(event.changed[1].name, 'changed-name2'); + assert_equals(event.changed[1].value, 'changed-value2'); + assert_equals(event.deleted.length, 0); +}, 'CookieChangeEvent construction with changed cookie list'); + +test(() => { + const event = new CookieChangeEvent('change', { + deleted: [ + { name: 'deleted-name1', value: 'deleted-value1' }, + { name: 'deleted-name2', value: 'deleted-value2' }, + ], + }); + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.changed.length, 0); + assert_equals(event.deleted.length, 2); + assert_equals(event.deleted[0].name, 'deleted-name1'); + assert_equals(event.deleted[0].value, 'deleted-value1'); + assert_equals(event.deleted[1].name, 'deleted-name2'); + assert_equals(event.deleted[1].value, 'deleted-value2'); +}, 'CookieChangeEvent construction with deleted cookie list'); + +test(() => { + const event = new CookieChangeEvent('change', { + changed: [ + { name: 'changed-name1', value: 'changed-value1' }, + { name: 'changed-name2', value: 'changed-value2' }, + ], + deleted: [ + { name: 'deleted-name1', value: 'deleted-value1' }, + ], + }); + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.changed.length, 2); + assert_equals(event.changed[0].name, 'changed-name1'); + assert_equals(event.changed[0].value, 'changed-value1'); + assert_equals(event.changed[1].name, 'changed-name2'); + assert_equals(event.changed[1].value, 'changed-value2'); + assert_equals(event.deleted.length, 1); + assert_equals(event.deleted[0].name, 'deleted-name1'); + assert_equals(event.deleted[0].value, 'deleted-value1'); +}, 'CookieChangeEvent construction with changed and deleted cookie lists'); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_basic.tentative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_basic.tentative.window.js new file mode 100644 index 0000000000000..306fc1e5d0006 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_basic.tentative.window.js @@ -0,0 +1,29 @@ +'use strict'; + +// Workaround because add_cleanup doesn't support async functions yet. +// See https://github.com/w3c/web-platform-tests/issues/6075 +async function async_cleanup(cleanup_function) { + try { + await cleanup_function(); + } catch (e) { + // Errors in cleanup functions shouldn't result in test failures. + } +} + +promise_test(async testCase => { + const eventPromise = new Promise((resolve) => { + cookieStore.onchange = resolve; + }); + + await cookieStore.set('cookie-name', 'cookie-value'); + + const event = await eventPromise; + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.changed.length, 1); + assert_equals(event.changed[0].name, 'cookie-name'); + assert_equals(event.changed[0].value, 'cookie-value'); + assert_equals(event.deleted.length, 0); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore fires change event for cookie set by cookieStore.set()'); diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_delete.tenative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_delete.tenative.window.js new file mode 100644 index 0000000000000..de544491c56e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_delete.tenative.window.js @@ -0,0 +1,31 @@ +'use strict'; + +// Workaround because add_cleanup doesn't support async functions yet. +// See https://github.com/w3c/web-platform-tests/issues/6075 +async function async_cleanup(cleanup_function) { + try { + await cleanup_function(); + } catch (e) { + // Errors in cleanup functions shouldn't result in test failures. + } +} + +promise_test(async testCase => { + await cookieStore.set('cookie-name', 'cookie-value'); + + const eventPromise = new Promise((resolve) => { + cookieStore.onchange = resolve; + }); + await cookieStore.delete('cookie-name'); + const event = await eventPromise; + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.deleted.length, 1); + assert_equals(event.deleted[0].name, 'cookie-name'); + assert_equals( + event.deleted[0].value, undefined, + 'Cookie change events for deletions should not have cookie values'); + assert_equals(event.changed.length, 0); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore fires change event for cookie deleted by cookieStore.delete()'); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_overwrite.tentative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_overwrite.tentative.window.js new file mode 100644 index 0000000000000..8e8c9c1dd7b66 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_event_overwrite.tentative.window.js @@ -0,0 +1,31 @@ +'use strict'; + +// Workaround because add_cleanup doesn't support async functions yet. +// See https://github.com/w3c/web-platform-tests/issues/6075 +async function async_cleanup(cleanup_function) { + try { + await cleanup_function(); + } catch (e) { + // Errors in cleanup functions shouldn't result in test failures. + } +} + +promise_test(async testCase => { + await cookieStore.set('cookie-name', 'cookie-value'); + + const eventPromise = new Promise((resolve) => { + cookieStore.onchange = resolve; + }); + + await cookieStore.set('cookie-name', 'new-cookie-value'); + + const event = await eventPromise; + assert_true(event instanceof CookieChangeEvent); + assert_equals(event.type, 'change'); + assert_equals(event.changed.length, 1); + assert_equals(event.changed[0].name, 'cookie-name'); + assert_equals(event.changed[0].value, 'new-cookie-value'); + assert_equals(event.deleted.length, 0); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore fires change event for cookie overwritten by cookieStore.set()'); diff --git a/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html b/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html index 00dc29d7d49fb..648d567a9e905 100644 --- a/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html +++ b/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html @@ -21,6 +21,9 @@ idl_array.add_untested_idls('interface LinkStyle {};'); idl_array.add_untested_idls(html); + idl_array.add_untested_idls('interface Event {};'); + idl_array.add_untested_idls('dictionary EventInit {};'); + idl_array.add_untested_idls('interface EventTarget {};'); idl_array.add_untested_idls( `[Global=ServiceWorker, Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};`); @@ -29,6 +32,7 @@ idl_array.add_objects({ CookieStore: [self.cookieStore], + CookieChangeEvent: [new CookieChangeEvent('change')], }); idl_array.test(); }, 'Interface test'); diff --git a/tests/wpt/web-platform-tests/cookie-store/idlharness_serviceworker.js b/tests/wpt/web-platform-tests/cookie-store/idlharness_serviceworker.js index aa2e79a9de7d4..e2e838dc7e61a 100644 --- a/tests/wpt/web-platform-tests/cookie-store/idlharness_serviceworker.js +++ b/tests/wpt/web-platform-tests/cookie-store/idlharness_serviceworker.js @@ -13,6 +13,14 @@ promise_test(async t => { const idl_array = new IdlArray(); + idl_array.add_untested_idls( + `[Global=Event, Exposed=ServiceWorker] + interface Event {};`); + idl_array.add_untested_idls('dictionary EventHandler {};'); + idl_array.add_untested_idls('dictionary EventInit {};'); + idl_array.add_untested_idls( + `[Global=EventTarget, Exposed=ServiceWorker] + interface EventTarget {};`); idl_array.add_untested_idls( `[Global=ServiceWorker, Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};`); @@ -24,6 +32,7 @@ promise_test(async t => { idl_array.add_objects({ CookieStore: [self.cookieStore], + CookieChangeEvent: [new CookieChangeEvent('change')], }); idl_array.test(); }, 'Interface test'); diff --git a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht index 9bf2fd0490b8c..d738fc8735c87 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht @@ -8,8 +8,8 @@ diff --git a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.png b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.png new file mode 100644 index 0000000000000..a7b61bced86ee Binary files /dev/null and b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.png differ diff --git a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.png b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.png new file mode 100644 index 0000000000000..34c4f5b2a27ca Binary files /dev/null and b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.png differ diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/unresolvable-max-height.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/unresolvable-max-height.html new file mode 100644 index 0000000000000..8a2fbb28ac99f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/unresolvable-max-height.html @@ -0,0 +1,13 @@ + +Unresolvable percentage min-height + + + + + +
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/unresolvable-min-height.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/unresolvable-min-height.html new file mode 100644 index 0000000000000..5201eddb2111f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/unresolvable-min-height.html @@ -0,0 +1,14 @@ + +Unresolvable percentage min-height + + + + + +

There should be a blue square below.

+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/column-gap-parsing-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/column-gap-parsing-001.html index f0bcea4d98db9..a0a92a911e29a 100644 --- a/tests/wpt/web-platform-tests/css/css-align/gaps/column-gap-parsing-001.html +++ b/tests/wpt/web-platform-tests/css/css-align/gaps/column-gap-parsing-001.html @@ -11,6 +11,7 @@ #columnGapVw { column-gap: 2vw; } #columnGapPercent { column-gap: 15%; } #columnGapCalc { column-gap: calc(10px + 4px); } + #columnGapCalcFixedPercent { column-gap: calc(5px + 10%); } .columnGapInitial { column-gap: initial; } .columnGapInherit { column-gap: inherit; } @@ -31,6 +32,7 @@
+
@@ -81,6 +83,11 @@ var target = document.getElementById("columnGapCalc"); assert_equals(getComputedStyle(target).columnGap, "14px"); }, "column-gap accepts calc()"); + test( + function(){ + var target = document.getElementById("columnGapCalcFixedPercent"); + assert_equals(getComputedStyle(target).columnGap, "calc(5px + 10%)"); + }, "column-gap accepts calc() mixing fixed and percentage values"); test( function(){ var target = document.getElementById("columnGapInitial"); diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/gap-parsing-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-parsing-001.html index 4885612818425..0a2a9bda7c69f 100644 --- a/tests/wpt/web-platform-tests/css/css-align/gaps/gap-parsing-001.html +++ b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-parsing-001.html @@ -16,6 +16,7 @@ #gapPercent { gap: 15%; } #gapPercentTwo { gap: 15% 10%; } #gapCalc { gap: calc(10px + 4px); } + #gapCalcFixedPercent { gap: calc(5px + 10%); } #gapCalcTwo { gap: calc(10px + 4px) calc(20px - 8px); } .gapInitial { gap: initial; } .gapInherit { gap: inherit; } @@ -44,6 +45,7 @@
+
@@ -135,6 +137,12 @@ assert_equals(getComputedStyle(target).rowGap, "14px"); assert_equals(getComputedStyle(target).columnGap, "14px"); }, "gap accepts calc()"); + test( + function(){ + var target = document.getElementById("gapCalcFixedPercent"); + assert_equals(getComputedStyle(target).rowGap, "calc(5px + 10%)"); + assert_equals(getComputedStyle(target).columnGap, "calc(5px + 10%)"); + }, "gap accepts calc() mixing fixed and percentage values"); test( function(){ var target = document.getElementById("gapCalcTwo"); diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html index a552463950c10..66d81998b668e 100644 --- a/tests/wpt/web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html +++ b/tests/wpt/web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html @@ -1,26 +1,27 @@ -CSS Box Alignment Test: column-gap parsing +CSS Box Alignment Test: grid-column-gap parsing
@@ -31,6 +32,7 @@
+
@@ -53,91 +55,96 @@ function(){ var target = document.getElementById("default"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Default column-gap is 'normal'"); + }, "Default grid-column-gap is 'normal'"); test( function(){ var target = document.getElementById("columnGapPx"); assert_equals(getComputedStyle(target).columnGap, "12px"); - }, "column-gap accepts pixels"); + }, "grid-column-gap accepts pixels"); test( function(){ var target = document.getElementById("columnGapEm"); assert_equals(getComputedStyle(target).columnGap, "20px"); - }, "column-gap accepts em"); + }, "grid-column-gap accepts em"); test( function(){ var target = document.getElementById("columnGapVw"); // The columnGap size would depend on the viewport width, so to make the test pass // in any window size we just check it's not "normal". assert_not_equals(getComputedStyle(target).columnGap, "normal"); - }, "column-gap accepts vw"); + }, "grid-column-gap accepts vw"); test( function(){ var target = document.getElementById("columnGapPercent"); assert_equals(getComputedStyle(target).columnGap, "15%"); - }, "column-gap accepts percentage"); + }, "grid-column-gap accepts percentage"); test( function(){ var target = document.getElementById("columnGapCalc"); assert_equals(getComputedStyle(target).columnGap, "14px"); - }, "column-gap accepts calc()"); + }, "grid-column-gap accepts calc()"); + test( + function(){ + var target = document.getElementById("columnGapCalcFixedPercent"); + assert_equals(getComputedStyle(target).columnGap, "calc(5px + 10%)"); + }, "grid-column-gap accepts calc() mixing fixed and percentage values"); test( function(){ var target = document.getElementById("columnGapInitial"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Initial column-gap is 'normal'"); + }, "Initial grid-column-gap is 'normal'"); test( function(){ var target = document.getElementById("columnGapInitialPx"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Initial column-gap is 'normal' 2"); + }, "Initial grid-column-gap is 'normal' 2"); test( function(){ var target = document.getElementById("columnGapInherit"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Initial inherited column-gap is 'normal'"); + }, "Initial inherited grid-column-gap is 'normal'"); test( function(){ var target = document.getElementById("columnGapInheritPx"); assert_equals(getComputedStyle(target).columnGap, "12px"); - }, "column-gap is inheritable"); + }, "grid-column-gap is inheritable"); test( function(){ var target = document.getElementById("invalidColumnGapNegative"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Negative column-gap is invalid"); + }, "Negative grid-column-gap is invalid"); test( function(){ var target = document.getElementById("invalidColumnGapMaxContent"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "'max-content' column-gap is invalid"); + }, "'max-content' grid-column-gap is invalid"); test( function(){ var target = document.getElementById("invalidColumnGapNone"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "'none' column-gap is invalid"); + }, "'none' grid-column-gap is invalid"); test( function(){ var target = document.getElementById("invalidColumnGapMultiple"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "column-gap with multiple values is invalid"); + }, "grid-column-gap with multiple values is invalid"); test( function(){ var target = document.getElementById("invalidColumnGapAngle"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Angle column-gap is invalid"); + }, "Angle grid-column-gap is invalid"); test( function(){ var target = document.getElementById("invalidColumnGapResolution"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Resolution column-gap is invalid"); + }, "Resolution grid-column-gap is invalid"); test( function(){ var target = document.getElementById("invalidColumnGapTime"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Time column-gap is invalid"); + }, "Time grid-column-gap is invalid"); diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html index 614b23a7a4f84..aa43f772996b2 100644 --- a/tests/wpt/web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html +++ b/tests/wpt/web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html @@ -16,6 +16,7 @@ #gapPercent { grid-gap: 15%; } #gapPercentTwo { grid-gap: 15% 10%; } #gapCalc { grid-gap: calc(10px + 4px); } + #gapCalcFixedPercent { grid-gap: calc(5px + 10%); } #gapCalcTwo { grid-gap: calc(10px + 4px) calc(20px - 8px); } .gapInitial { grid-gap: initial; } .gapInherit { grid-gap: inherit; } @@ -44,6 +45,7 @@
+
@@ -70,37 +72,37 @@ var target = document.getElementById("default"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Default gap is 'normal'"); + }, "Default grid-gap is 'normal'"); test( function(){ var target = document.getElementById("gapPx"); assert_equals(getComputedStyle(target).rowGap, "12px"); assert_equals(getComputedStyle(target).columnGap, "12px"); - }, "gap accepts pixels"); + }, "grid-gap accepts pixels"); test( function(){ var target = document.getElementById("gapPxTwo"); assert_equals(getComputedStyle(target).rowGap, "12px"); assert_equals(getComputedStyle(target).columnGap, "8px"); - }, "gap accepts pixels 2"); + }, "grid-gap accepts pixels 2"); test( function(){ var target = document.getElementById("gapPxPercent"); assert_equals(getComputedStyle(target).rowGap, "12px"); assert_equals(getComputedStyle(target).columnGap, "10%"); - }, "gap accepts pixels combined with percentage"); + }, "grid-gap accepts pixels combined with percentage"); test( function(){ var target = document.getElementById("gapEm"); assert_equals(getComputedStyle(target).rowGap, "20px"); assert_equals(getComputedStyle(target).columnGap, "20px"); - }, "gap accepts em"); + }, "grid-gap accepts em"); test( function(){ var target = document.getElementById("gapEmTwo"); assert_equals(getComputedStyle(target).rowGap, "20px"); assert_equals(getComputedStyle(target).columnGap, "40px"); - }, "gap accepts em 2"); + }, "grid-gap accepts em 2"); test( function(){ var target = document.getElementById("gapVw"); @@ -108,7 +110,7 @@ // in any window size we just check it's not "normal". assert_not_equals(getComputedStyle(target).rowGap, "normal"); assert_not_equals(getComputedStyle(target).columnGap, "normal"); - }, "gap accepts vw"); + }, "grid-gap accepts vw"); test( function(){ var target = document.getElementById("gapVwTwo"); @@ -116,110 +118,116 @@ // in any window size we just check it's not "normal". assert_not_equals(getComputedStyle(target).rowGap, "normal"); assert_not_equals(getComputedStyle(target).columnGap, "normal"); - }, "gap accepts vw and vh"); + }, "grid-gap accepts vw and vh"); test( function(){ var target = document.getElementById("gapPercent"); assert_equals(getComputedStyle(target).rowGap, "15%"); assert_equals(getComputedStyle(target).columnGap, "15%"); - }, "gap accepts percentage"); + }, "grid-gap accepts percentage"); test( function(){ var target = document.getElementById("gapPercentTwo"); assert_equals(getComputedStyle(target).rowGap, "15%"); assert_equals(getComputedStyle(target).columnGap, "10%"); - }, "gap accepts percentage 2"); + }, "grid-gap accepts percentage 2"); test( function(){ var target = document.getElementById("gapCalc"); assert_equals(getComputedStyle(target).rowGap, "14px"); assert_equals(getComputedStyle(target).columnGap, "14px"); - }, "gap accepts calc()"); + }, "grid-gap accepts calc()"); + test( + function(){ + var target = document.getElementById("gapCalcFixedPercent"); + assert_equals(getComputedStyle(target).rowGap, "calc(5px + 10%)"); + assert_equals(getComputedStyle(target).columnGap, "calc(5px + 10%)"); + }, "grid-gap accepts calc() mixing fixed and percentage values"); test( function(){ var target = document.getElementById("gapCalcTwo"); assert_equals(getComputedStyle(target).rowGap, "14px"); assert_equals(getComputedStyle(target).columnGap, "12px"); - }, "gap accepts calc() 2"); + }, "grid-gap accepts calc() 2"); test( function(){ var target = document.getElementById("gapInitial"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Initial gap is 'normal'"); + }, "Initial grid-gap is 'normal'"); test( function(){ var target = document.getElementById("gapInitialPx"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Initial gap is 'normal' 2"); + }, "Initial grid-gap is 'normal' 2"); test( function(){ var target = document.getElementById("gapInherit"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Initial inherited gap is 'normal'"); + }, "Initial inherited grid-gap is 'normal'"); test( function(){ var target = document.getElementById("gapInheritPx"); assert_equals(getComputedStyle(target).rowGap, "12px"); assert_equals(getComputedStyle(target).columnGap, "12px"); - }, "gap is inheritable"); + }, "grid-gap is inheritable"); test( function(){ var target = document.getElementById("invalidGridGapNegative"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Negative gap is invalid"); + }, "Negative grid-gap is invalid"); test( function(){ var target = document.getElementById("invalidGridGapMaxContent"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "'max-content' gap is invalid"); + }, "'max-content' grid-gap is invalid"); test( function(){ var target = document.getElementById("invalidGridGapNone"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "'none' gap is invalid"); + }, "'none' grid-gap is invalid"); test( function(){ var target = document.getElementById("invalidGridGapAngle"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Angle gap is invalid"); + }, "Angle grid-gap is invalid"); test( function(){ var target = document.getElementById("invalidGridGapResolution"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Resolution gap is invalid"); + }, "Resolution grid-gap is invalid"); test( function(){ var target = document.getElementById("invalidGridGapTime"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "Time gap is invalid"); + }, "Time grid-gap is invalid"); test( function(){ var target = document.getElementById("invalidGridGapThree"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "gap with three values is invalid"); + }, "grid-gap with three values is invalid"); test( function(){ var target = document.getElementById("invalidGridGapSlash"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "gap with slash is invalid"); + }, "grid-gap with slash is invalid"); test( function(){ var target = document.getElementById("invalidGridGapOneWrong"); assert_equals(getComputedStyle(target).rowGap, "normal"); assert_equals(getComputedStyle(target).columnGap, "normal"); - }, "gap with one wrong value is invalid"); + }, "grid-gap with one wrong value is invalid"); diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001.html index 9dc8c8da59a9b..e394ea1446b08 100644 --- a/tests/wpt/web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001.html +++ b/tests/wpt/web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001.html @@ -1,26 +1,27 @@ -CSS Box Alignment Test: row-gap parsing +CSS Box Alignment Test: grid-row-gap parsing
@@ -31,6 +32,7 @@
+
@@ -53,91 +55,96 @@ function(){ var target = document.getElementById("default"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Default row-gap is 'normal'"); + }, "Default grid-row-gap is 'normal'"); test( function(){ var target = document.getElementById("rowGapPx"); assert_equals(getComputedStyle(target).rowGap, "12px"); - }, "row-gap accepts pixels"); + }, "grid-row-gap accepts pixels"); test( function(){ var target = document.getElementById("rowGapEm"); assert_equals(getComputedStyle(target).rowGap, "20px"); - }, "row-gap accepts em"); + }, "grid-row-gap accepts em"); test( function(){ var target = document.getElementById("rowGapVw"); // The rowGap size would depend on the viewport width, so to make the test pass // in any window size we just check it's not "normal". assert_not_equals(getComputedStyle(target).rowGap, "normal"); - }, "row-gap accepts vw"); + }, "grid-row-gap accepts vw"); test( function(){ var target = document.getElementById("rowGapPercent"); assert_equals(getComputedStyle(target).rowGap, "15%"); - }, "row-gap accepts percentage"); + }, "grid-row-gap accepts percentage"); test( function(){ var target = document.getElementById("rowGapCalc"); assert_equals(getComputedStyle(target).rowGap, "14px"); - }, "row-gap accepts calc()"); + }, "grid-row-gap accepts calc()"); + test( + function(){ + var target = document.getElementById("rowGapCalcFixedPercent"); + assert_equals(getComputedStyle(target).rowGap, "calc(5px + 10%)"); + }, "grid-row-gap accepts calc() mixing fixed and percentage values"); test( function(){ var target = document.getElementById("rowGapInitial"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Initial row-gap is 'normal'"); + }, "Initial grid-row-gap is 'normal'"); test( function(){ var target = document.getElementById("rowGapInitialPx"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Initial row-gap is 'normal' 2"); + }, "Initial grid-row-gap is 'normal' 2"); test( function(){ var target = document.getElementById("rowGapInherit"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Initial inherited row-gap is 'normal'"); + }, "Initial inherited grid-row-gap is 'normal'"); test( function(){ var target = document.getElementById("rowGapInheritPx"); assert_equals(getComputedStyle(target).rowGap, "12px"); - }, "row-gap is inheritable"); + }, "grid-row-gap is inheritable"); test( function(){ var target = document.getElementById("invalidRowGapNegative"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Negative row-gap is invalid"); + }, "Negative grid-row-gap is invalid"); test( function(){ var target = document.getElementById("invalidRowGapMaxContent"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "'max-content' row-gap is invalid"); + }, "'max-content' grid-row-gap is invalid"); test( function(){ var target = document.getElementById("invalidRowGapNone"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "'none' row-gap is invalid"); + }, "'none' grid-row-gap is invalid"); test( function(){ var target = document.getElementById("invalidRowGapMultiple"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "row-gap with multiple values is invalid"); + }, "grid-row-gap with multiple values is invalid"); test( function(){ var target = document.getElementById("invalidRowGapAngle"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Angle row-gap is invalid"); + }, "Angle grid-row-gap is invalid"); test( function(){ var target = document.getElementById("invalidRowGapResolution"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Resolution row-gap is invalid"); + }, "Resolution grid-row-gap is invalid"); test( function(){ var target = document.getElementById("invalidRowGapTime"); assert_equals(getComputedStyle(target).rowGap, "normal"); - }, "Time row-gap is invalid"); + }, "Time grid-row-gap is invalid"); diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/row-gap-parsing-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/row-gap-parsing-001.html index 6de848c3c2ac6..71b971d3a8a18 100644 --- a/tests/wpt/web-platform-tests/css/css-align/gaps/row-gap-parsing-001.html +++ b/tests/wpt/web-platform-tests/css/css-align/gaps/row-gap-parsing-001.html @@ -11,6 +11,7 @@ #rowGapVw { row-gap: 2vw; } #rowGapPercent { row-gap: 15%; } #rowGapCalc { row-gap: calc(10px + 4px); } + #rowGapCalcFixedPercent { row-gap: calc(5px + 10%); } .rowGapInitial { row-gap: initial; } .rowGapInherit { row-gap: inherit; } @@ -31,6 +32,7 @@
+
@@ -81,6 +83,11 @@ var target = document.getElementById("rowGapCalc"); assert_equals(getComputedStyle(target).rowGap, "14px"); }, "row-gap accepts calc()"); + test( + function(){ + var target = document.getElementById("rowGapCalcFixedPercent"); + assert_equals(getComputedStyle(target).rowGap, "calc(5px + 10%)"); + }, "row-gap accepts calc() mixing fixed and percentage values"); test( function(){ var target = document.getElementById("rowGapInitial"); diff --git a/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html b/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html new file mode 100644 index 0000000000000..037e62f9949db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html @@ -0,0 +1,30 @@ + +Font Loading API IDL tests + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/calc-in-font-variation-settings.html b/tests/wpt/web-platform-tests/css/css-fonts/calc-in-font-variation-settings.html new file mode 100644 index 0000000000000..1a7c59abd5dde --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/calc-in-font-variation-settings.html @@ -0,0 +1,19 @@ + + +CSS Test: calc() function in font-variation-settings + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html index a447ead37f572..e456af8ce0a30 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html @@ -4,7 +4,7 @@ - + + +

The test passes if it has the same visual effect as reference.

+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-gutters-012.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-gutters-012.html new file mode 100644 index 0000000000000..1e56e708dfb45 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-gutters-012.html @@ -0,0 +1,31 @@ + + +CSS Grid Layout Test: Support for calc mixing fixed and percentage values for grid-gap as alias for gap + + + + + + + +

The test passes if it has the same visual effect as reference.

+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html index d08712d30d25c..9441b0a439e1b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html @@ -6,7 +6,7 @@ - + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-002.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-002.html new file mode 100644 index 0000000000000..c9f77a6ebe095 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-002.html @@ -0,0 +1,349 @@ + + +CSS Grid Layout Test: Mininum width of grid items + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html new file mode 100644 index 0000000000000..943837d2031c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html @@ -0,0 +1,349 @@ + + +CSS Grid Layout Test: Mininum width of grid items orthogonal + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html new file mode 100644 index 0000000000000..25ad710d5d2f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html @@ -0,0 +1,349 @@ + + +CSS Grid Layout Test: Mininum width of grid items orthogonal + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html new file mode 100644 index 0000000000000..1afe6df953507 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html @@ -0,0 +1,350 @@ + + +CSS Grid Layout Test: Mininum width of grid items vertical-lr + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html new file mode 100644 index 0000000000000..a239369e4d9e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html @@ -0,0 +1,350 @@ + + +CSS Grid Layout Test: Mininum width of grid items vertical-lr + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html new file mode 100644 index 0000000000000..df3fe9bca499f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html @@ -0,0 +1,350 @@ + + +CSS Grid Layout Test: Mininum width of grid items vertical-rl + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html new file mode 100644 index 0000000000000..3978ed607b7f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html @@ -0,0 +1,350 @@ + + +CSS Grid Layout Test: Mininum width of grid items vertical-rl + + + + + + + + + + + +
+ +

Direction LTR

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +

Direction RTL

+ +
Item width: 60px;
+ +
+
+
+
+ +
Item min-width: 60px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px;
+ +
+
+
+
+ +
Item width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px;
+ +
+
+
+
+ +
Item width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item min-width: 60px; & padding-left: 6px; & padding-right: 3px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px;
+ +
+
+
+
+ +
Item width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
+ +
Item min-width: 60px; & margin-left: 5px; & margin-right: 10px; & padding-left: 6px; & padding-right: 3px; & border-left-width: 2px; & border-right-width: 4px;
+ +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html index 127ea8df4aff6..ce1db93080a63 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html @@ -4,7 +4,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-item-accepts-first-line-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-item-accepts-first-line-001.html index 1330b37631878..8bf8c653bf795 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-item-accepts-first-line-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-item-accepts-first-line-001.html @@ -5,7 +5,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/support/grid.css b/tests/wpt/web-platform-tests/css/css-grid/grid-model/support/grid.css new file mode 100644 index 0000000000000..602e114880ae6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/support/grid.css @@ -0,0 +1,277 @@ +.grid { + display: grid; + background-color: grey; +} + +.inline-grid { + display: inline-grid; + background-color: grey; +} + +.firstRowFirstColumn { + background-color: blue; + grid-column: 1; + grid-row: 1; +} + +.onlyFirstRowOnlyFirstColumn { + background-color: blue; + grid-column: 1 / 2; + grid-row: 1 / 2; +} + +.firstRowSecondColumn { + background-color: lime; + grid-column: 2; + grid-row: 1; +} + +.onlyFirstRowOnlySecondColumn { + background-color: lime; + grid-column: 2 / 3; + grid-row: 1 / 2; +} + +.secondRowFirstColumn { + background-color: purple; + grid-column: 1; + grid-row: 2; +} + +.onlySecondRowOnlyFirstColumn { + background-color: purple; + grid-column: 1 / 2; + grid-row: 2 / 3; +} + +.secondRowSecondColumn { + background-color: orange; + grid-column: 2; + grid-row: 2; +} + +.onlySecondRowOnlySecondColumn { + background-color: orange; + grid-column: 2 / 3; + grid-row: 2 / 3; +} + +.endSecondRowEndSecondColumn { + background-color: orange; + grid-column-end: 3; + grid-row-end: 3; +} + +.thirdRowSecondColumn { + background-color: red; + grid-column: 2; + grid-row: 3; +} + +.firstRowThirdColumn { + background-color: magenta; + grid-column: 3; + grid-row: 1; +} + +.secondRowThirdColumn { + background-color: navy; + grid-column: 3; + grid-row: 2; +} + +.firstRowFourthColumn { + background-color: green; + grid-column: 4; + grid-row: 1; +} + +.secondRowFourthColumn { + background-color: pink; + grid-column: 4; + grid-row: 2; +} + +.firstAutoRowSecondAutoColumn { + grid-row: 1 / auto; + grid-column: 2 / auto; +} + +.autoLastRowAutoLastColumn { + grid-row: auto / -1; + grid-column: auto / -1; +} + +.autoSecondRowAutoFirstColumn { + grid-row: auto / 2; + grid-column: auto / 1; +} + +.firstRowBothColumn { + grid-row: 1; + grid-column: 1 / -1; +} + +.secondRowBothColumn { + grid-row: 2; + grid-column: 1 / -1; +} + +.bothRowFirstColumn { + grid-row: 1 / -1; + grid-column: 1; +} + +.bothRowSecondColumn { + grid-row: 1 / -1; + grid-column: 2; +} + +.bothRowBothColumn { + grid-row: 1 / -1; + grid-column: 1 / -1; +} + +/* Auto column / row. */ +.autoRowAutoColumn { + background-color: pink; + grid-column: auto; + grid-row: auto; +} + +.firstRowAutoColumn { + background-color: blue; + grid-column: auto; + grid-row: 1; +} + +.secondRowAutoColumn { + background-color: purple; + grid-column: auto; + grid-row: 2; +} + +.thirdRowAutoColumn { + background-color: navy; + grid-column: auto; + grid-row: 3; +} + +.autoRowFirstColumn { + background-color: lime; + grid-column: 1; + grid-row: auto; +} + +.autoRowSecondColumn { + background-color: orange; + grid-column: 2; + grid-row: auto; +} + +.autoRowThirdColumn { + background-color: magenta; + grid-column: 3; + grid-row: auto; +} + +.autoRowAutoColumnSpanning2 { + background-color: maroon; + grid-column: span 2; + grid-row: auto; +} + +.autoRowSpanning2AutoColumn { + background-color: aqua; + grid-column: auto; + grid-row: span 2; +} + +.autoRowSpanning2AutoColumnSpanning3 { + background-color: olive; + grid-column: span 3; + grid-row: span 2; +} + +.autoRowSpanning3AutoColumnSpanning2 { + background-color: indigo; + grid-column: span 2; + grid-row: span 3; +} + +.autoRowFirstColumnSpanning2 { + background-color: maroon; + grid-column: 1 / span 2; + grid-row: auto; +} + +.autoRowSecondColumnSpanning2 { + background-color: olive; + grid-column: 2 / span 2; + grid-row: auto; +} + +.firstRowSpanning2AutoColumn { + background-color: maroon; + grid-column: auto; + grid-row: 1 / span 2; + height: 100%; +} + +.secondRowSpanning2AutoColumn { + background-color: olive; + grid-column: auto; + grid-row: 2 / span 2; + height: 100%; +} + +/* Grid element flow. */ +.gridAutoFlowColumnSparse { + grid-auto-flow: column; +} + +.gridAutoFlowColumnDense { + grid-auto-flow: column dense; +} + +.gridAutoFlowRowSparse { + grid-auto-flow: row; +} + +.gridAutoFlowRowDense { + grid-auto-flow: row dense; +} + +/* This rule makes sure the container is smaller than any grid items to avoid distributing any extra logical space to them. */ +.constrainedContainer { + width: 10px; + height: 10px; +} + +.unconstrainedContainer { + width: 1000px; + height: 1000px; +} + +.sizedToGridArea { + font: 10px/1 Ahem; + /* Make us fit our grid area. */ + width: 100%; + height: 100%; +} + +.verticalRL { + writing-mode: vertical-rl; +} +.verticalLR { + writing-mode: vertical-lr; +} +.horizontalTB { + writing-mode: horizontal-tb; +} +.directionRTL { + direction: rtl; +} +.directionLTR { + direction: ltr; +} diff --git a/tests/wpt/web-platform-tests/css/css-multicol/float-and-block.html b/tests/wpt/web-platform-tests/css/css-multicol/float-and-block.html new file mode 100644 index 0000000000000..21f9fb97436be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/float-and-block.html @@ -0,0 +1,10 @@ + +Paint order with float VS regular block is correct inside multicol + + + +

Test passes if there is a filled green square and no red.

+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-disabled-sheet-001.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-disabled-sheet-001.html new file mode 100644 index 0000000000000..275ac47a613ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-disabled-sheet-001.html @@ -0,0 +1,21 @@ + +CSS Scoping Module Level 1 - Disabled stylesheet dynamically + + + +

Test passes if you see a single 100px by 100px green box below.

+
+ diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-001.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-001.html new file mode 100644 index 0000000000000..9a5672eb63a90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-001.html @@ -0,0 +1,19 @@ + +CSS Scoping Module Level 1 - Dynamic fallback content + + + +

Test passes if you see a single 100px by 100px green box below.

+
+ FAIL +
+ diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-002.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-002.html new file mode 100644 index 0000000000000..f65d0c7a2129d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-002.html @@ -0,0 +1,19 @@ + +CSS Scoping Module Level 1 - Dynamic fallback content + + + +

Test passes if you see a single 100px by 100px green box below.

+
+ FAIL +
+ diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-003.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-003.html new file mode 100644 index 0000000000000..a30e8fed7d257 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-003.html @@ -0,0 +1,18 @@ + +CSS Scoping Module Level 1 - Dynamic fallback content + + + +

Test passes if you see a single 100px by 100px green box below.

+
+
+ diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-004.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-004.html new file mode 100644 index 0000000000000..29e407573a31b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-004.html @@ -0,0 +1,20 @@ + +CSS Scoping Module Level 1 - Dynamic fallback content + + + +

Test passes if you see a single 100px by 100px green box below.

+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-005.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-005.html new file mode 100644 index 0000000000000..1d84907e5fc0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-fallback-dynamic-005.html @@ -0,0 +1,20 @@ + +CSS Scoping Module Level 1 - Dynamic fallback content + + + +

Test passes if you see a single 100px by 100px green box below.

+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-root-insert-into-document.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-root-insert-into-document.html new file mode 100644 index 0000000000000..a3b89be389a78 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-root-insert-into-document.html @@ -0,0 +1,18 @@ + +CSS Scoping Module Level 1 - Dynamic insertion of shadow host + + + +

Test passes if you see a single 100px by 100px green box below.

+ diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html new file mode 100644 index 0000000000000..d41dcc8a759e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html @@ -0,0 +1,53 @@ + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas.html new file mode 100644 index 0000000000000..8227434452633 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas.html @@ -0,0 +1,69 @@ + + + + + +
+
+
+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/formatting-context/reference/shape-outside-formatting-context-ref.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/formatting-context/reference/shape-outside-formatting-context-ref.html new file mode 100644 index 0000000000000..2fd6df981961e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/formatting-context/reference/shape-outside-formatting-context-ref.html @@ -0,0 +1,26 @@ + + +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html new file mode 100644 index 0000000000000..cfb5d46a0db67 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html @@ -0,0 +1,31 @@ + + + + + + +
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html b/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html index 543645135ba4f..737a8d7e2a8b3 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html +++ b/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html @@ -79,8 +79,8 @@

Table fixup

Replaced elements inside a table cannot be table-row and are considered block -- img elements

- - + +
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-value.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-value.html new file mode 100644 index 0000000000000..1af557fb08678 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-value.html @@ -0,0 +1,34 @@ + + +CSSKeywordValue.value + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html index fe163681ee983..1ebbf8de73bb7 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html @@ -1,12 +1,11 @@ -CSSKeywordValue - - +CSSKeywordValue Constructor + -
+
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html new file mode 100644 index 0000000000000..4dff735e97136 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html @@ -0,0 +1,19 @@ + + +CSSUnitValue.value + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html new file mode 100644 index 0000000000000..411b36fe1ed71 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html @@ -0,0 +1,32 @@ + + +CSSUnitValue Constructor + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html deleted file mode 100644 index e1278b20b6bad..0000000000000 --- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html +++ /dev/null @@ -1,30 +0,0 @@ - - -CSSUnitValue tests - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/break.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/break.html new file mode 100644 index 0000000000000..66d24beab09c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/break.html @@ -0,0 +1,41 @@ + + +'break' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/caption-side.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/caption-side.html new file mode 100644 index 0000000000000..9ae512d2dfea3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/caption-side.html @@ -0,0 +1,21 @@ + + +'caption-side' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html new file mode 100644 index 0000000000000..650b08035df77 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html @@ -0,0 +1,29 @@ + + +'flex-basis' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-direction.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-direction.html new file mode 100644 index 0000000000000..49b7a98331633 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-direction.html @@ -0,0 +1,23 @@ + + +'flex-direction' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-flow.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-flow.html new file mode 100644 index 0000000000000..3d6b46f262408 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-flow.html @@ -0,0 +1,20 @@ + + +'flex-flow' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-grow.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-grow.html new file mode 100644 index 0000000000000..9c04ad30c865c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-grow.html @@ -0,0 +1,23 @@ + + +'flex-grow' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-shrink.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-shrink.html new file mode 100644 index 0000000000000..30ee7db84d810 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-shrink.html @@ -0,0 +1,23 @@ + + +'flex-shrink' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-wrap.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-wrap.html new file mode 100644 index 0000000000000..56d14f64cf9b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex-wrap.html @@ -0,0 +1,22 @@ + + +'flex-wrap' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex.html new file mode 100644 index 0000000000000..99a3e1219da14 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flex.html @@ -0,0 +1,20 @@ + + +'flex' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-size.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-size.html new file mode 100644 index 0000000000000..620f68ff65365 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-size.html @@ -0,0 +1,65 @@ + + +'font-size' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html index 4ec1a7a4ba0cf..55af0947c2a7a 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html @@ -19,4 +19,27 @@ { syntax: '', specified: assert_is_equal_with_range_handling }, ]); +runPropertyTests('min-height', [ + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, +]); + +runPropertyTests('max-height', [ + { syntax: 'none' }, + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, +]); + diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/isolation.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/isolation.html new file mode 100644 index 0000000000000..85f5749f94ed7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/isolation.html @@ -0,0 +1,21 @@ + + +'isolation' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html new file mode 100644 index 0000000000000..5509d878135e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html @@ -0,0 +1,35 @@ + + +'mix-blend-mode' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html new file mode 100644 index 0000000000000..1d1ee0afd1ff2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html @@ -0,0 +1,24 @@ + + +'object-fit' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html new file mode 100644 index 0000000000000..590e9eb776d60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html @@ -0,0 +1,20 @@ + +'offset-anchor' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html new file mode 100644 index 0000000000000..fc4adaff9da27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html @@ -0,0 +1,21 @@ + + +'offset-distance' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html new file mode 100644 index 0000000000000..1cf1b094bbe22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html @@ -0,0 +1,25 @@ + + +'offset-path' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html new file mode 100644 index 0000000000000..fb843bf6822e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html @@ -0,0 +1,21 @@ + + +'offset-position' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html new file mode 100644 index 0000000000000..56a8580cb80a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html @@ -0,0 +1,20 @@ + +'offset-rotate' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html new file mode 100644 index 0000000000000..5b7e713bec963 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html @@ -0,0 +1,23 @@ + + +'offset' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/pointer-events.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/pointer-events.html new file mode 100644 index 0000000000000..3e069e760456b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/pointer-events.html @@ -0,0 +1,29 @@ + + +'pointer-events' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js index 3145ac8911b91..2c20c05e7d0f0 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js @@ -352,7 +352,7 @@ function runPropertyTests(propertyName, testCases) { // Retrieve test examples for this test case's syntax. If the syntax // looks like a keyword, then create an example on the fly. - const syntaxExamples = testCase.syntax.match(/^[a-z\-]+$/) ? + const syntaxExamples = testCase.syntax.toLowerCase().match(/^[a-z\-]+$/) ? createKeywordExample(testCase.syntax) : gTestSyntaxExamples[testCase.syntax]; diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html new file mode 100644 index 0000000000000..8f2cc07593bd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html @@ -0,0 +1,32 @@ + + +scroll-margin related properties + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html new file mode 100644 index 0000000000000..e58d019958b7c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html @@ -0,0 +1,21 @@ + + +'table-layout' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html new file mode 100644 index 0000000000000..8bc74b7b3c49b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html @@ -0,0 +1,22 @@ + + +'text-orientation' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html new file mode 100644 index 0000000000000..5ac27c433dcc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html @@ -0,0 +1,25 @@ + + +'unicode-bidi' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html index f79eda147c68f..29b3382b1dd4a 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html @@ -25,4 +25,27 @@ }, ]); +runPropertyTests('min-width', [ + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, +]); + +runPropertyTests('max-width', [ + { syntax: 'none' }, + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, + { + syntax: '', + specified: assert_is_equal_with_range_handling + }, +]); + diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html new file mode 100644 index 0000000000000..976a0ea22db0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html @@ -0,0 +1,24 @@ + + +'writing-mode' property + + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html new file mode 100644 index 0000000000000..d8edfb69df86f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html @@ -0,0 +1,25 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html new file mode 100644 index 0000000000000..d5a77cd23aec6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html @@ -0,0 +1,28 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html new file mode 100644 index 0000000000000..98e6d770ff0cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html @@ -0,0 +1,25 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html new file mode 100644 index 0000000000000..55e266fd9ffc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html @@ -0,0 +1,28 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html new file mode 100644 index 0000000000000..f035f59db16f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html @@ -0,0 +1,26 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html new file mode 100644 index 0000000000000..d722504a69929 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html @@ -0,0 +1,29 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html new file mode 100644 index 0000000000000..2cd59eb6d1fba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html @@ -0,0 +1,29 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html new file mode 100644 index 0000000000000..40e44125ababb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html @@ -0,0 +1,25 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html new file mode 100644 index 0000000000000..7980142456530 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html @@ -0,0 +1,28 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html new file mode 100644 index 0000000000000..3b25252862d15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html @@ -0,0 +1,25 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html new file mode 100644 index 0000000000000..f945dec8f641f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html @@ -0,0 +1,28 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html new file mode 100644 index 0000000000000..02dfe07eb1c57 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html @@ -0,0 +1,26 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html new file mode 100644 index 0000000000000..93f5053348975 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html @@ -0,0 +1,29 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html new file mode 100644 index 0000000000000..39bf4f5cf136b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html @@ -0,0 +1,29 @@ + + +CSS Writing Modes Test: Orthogonal element sizing and percentage margins + + + + + + + +

The test passes if it has the same visual effect as reference.

+ +
+
XX X X X XX X X XX X XX
+
diff --git a/tests/wpt/web-platform-tests/css/cssom/GetBoundingRect.html b/tests/wpt/web-platform-tests/css/cssom-view/GetBoundingRect.html similarity index 87% rename from tests/wpt/web-platform-tests/css/cssom/GetBoundingRect.html rename to tests/wpt/web-platform-tests/css/cssom-view/GetBoundingRect.html index 6ab5e4c9b3fda..7286bd09882e7 100644 --- a/tests/wpt/web-platform-tests/css/cssom/GetBoundingRect.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/GetBoundingRect.html @@ -3,6 +3,7 @@ getBoundingClientRect + diff --git a/tests/wpt/web-platform-tests/css/cssom/CSS.html b/tests/wpt/web-platform-tests/css/cssom/CSS.html index 1bbecbfa3ba4e..fd2966a104c08 100644 --- a/tests/wpt/web-platform-tests/css/cssom/CSS.html +++ b/tests/wpt/web-platform-tests/css/cssom/CSS.html @@ -1,6 +1,7 @@ CSSOM - CSS interface + Should be green'); + frmDoc.close(); + + document.body.offsetTop; + + assert_equals( + getComputedStyle(frmDoc.body).color, + "rgb(255, 0, 0)", + "Initial color should be red" + ); + + frm.style.width = "200px"; + + assert_equals( + getComputedStyle(frmDoc.body).color, + "rgb(0, 128, 0)", + "style should have been updated to account for media query changes" + ); +}, "getComputedStyle cross-doc properly reflects media query changes"); + diff --git a/tests/wpt/web-platform-tests/css/cssom/historical.html b/tests/wpt/web-platform-tests/css/cssom/historical.html index ef31d14d3cf05..d956f1410dc82 100644 --- a/tests/wpt/web-platform-tests/css/cssom/historical.html +++ b/tests/wpt/web-platform-tests/css/cssom/historical.html @@ -1,5 +1,6 @@ Historical features +
diff --git a/tests/wpt/web-platform-tests/css/cssom/overflow-serialization.html b/tests/wpt/web-platform-tests/css/cssom/overflow-serialization.html index c350a1ac2119c..7e2d1767a0b14 100644 --- a/tests/wpt/web-platform-tests/css/cssom/overflow-serialization.html +++ b/tests/wpt/web-platform-tests/css/cssom/overflow-serialization.html @@ -3,6 +3,7 @@ CSSOM - Overlow property has different serialization than other shorthands. + + +&lt;/noembed&gt;&lt;img> +&lt;/noframes&gt;&lt;img> + + + diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/click.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/click.html new file mode 100644 index 0000000000000..37721ad9ef3df --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/click.html @@ -0,0 +1,19 @@ + + +TestDriver click method + + + + + + + + diff --git a/tests/wpt/web-platform-tests/interfaces/cookie-store.idl b/tests/wpt/web-platform-tests/interfaces/cookie-store.idl index d4f6459374125..6d4f35973cb5f 100644 --- a/tests/wpt/web-platform-tests/interfaces/cookie-store.idl +++ b/tests/wpt/web-platform-tests/interfaces/cookie-store.idl @@ -7,23 +7,17 @@ dictionary CookieListItem { typedef sequence CookieList; -[ - Exposed=(ServiceWorker,Window) -] interface CookieStore { - Promise getAll(USVString name, optional CookieStoreGetOptions options); - Promise getAll(optional CookieStoreGetOptions options); - - Promise get(USVString name, optional CookieStoreGetOptions options); - Promise get(optional CookieStoreGetOptions options); - - Promise has(USVString name, optional CookieStoreGetOptions options); - Promise has(optional CookieStoreGetOptions options); - - Promise set(USVString name, USVString value, optional CookieStoreSetOptions options); - Promise set(CookieStoreSetOptions options); +dictionary CookieChangeEventInit : EventInit { + CookieList changed; + CookieList deleted; +}; - Promise delete(USVString name, optional CookieStoreSetOptions options); - Promise delete(CookieStoreSetOptions options); +[ + Exposed=(ServiceWorker,Window), + Constructor(DOMString type, optional CookieChangeEventInit eventInitDict) +] interface CookieChangeEvent : Event { + readonly attribute CookieList changed; + readonly attribute CookieList deleted; }; enum CookieMatchType { @@ -47,6 +41,27 @@ dictionary CookieStoreSetOptions { boolean httpOnly = false; }; +[ + Exposed=(ServiceWorker,Window) +] interface CookieStore : EventTarget { + Promise getAll(USVString name, optional CookieStoreGetOptions options); + Promise getAll(optional CookieStoreGetOptions options); + + Promise get(USVString name, optional CookieStoreGetOptions options); + Promise get(optional CookieStoreGetOptions options); + + Promise has(USVString name, optional CookieStoreGetOptions options); + Promise has(optional CookieStoreGetOptions options); + + Promise set(USVString name, USVString value, optional CookieStoreSetOptions options); + Promise set(CookieStoreSetOptions options); + + Promise delete(USVString name, optional CookieStoreSetOptions options); + Promise delete(CookieStoreSetOptions options); + + attribute EventHandler onchange; +}; + partial interface Window { [Replaceable, SameObject] readonly attribute CookieStore cookieStore; }; diff --git a/tests/wpt/web-platform-tests/interfaces/css-font-loading.idl b/tests/wpt/web-platform-tests/interfaces/css-font-loading.idl new file mode 100644 index 0000000000000..5609101717203 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/css-font-loading.idl @@ -0,0 +1,86 @@ +typedef (ArrayBuffer or ArrayBufferView) BinaryData; + +dictionary FontFaceDescriptors { + CSSOMString style = "normal"; + CSSOMString weight = "normal"; + CSSOMString stretch = "normal"; + CSSOMString unicodeRange = "U+0-10FFFF"; + CSSOMString variant = "normal"; + CSSOMString featureSettings = "normal"; + CSSOMString variationSettings = "normal"; + CSSOMString display = "auto"; +}; + +enum FontFaceLoadStatus { "unloaded", "loading", "loaded", "error" }; + +[Constructor(CSSOMString family, (CSSOMString or BinaryData) source, + optional FontFaceDescriptors descriptors), + Exposed=(Window,Worker)] +interface FontFace { + attribute CSSOMString family; + attribute CSSOMString style; + attribute CSSOMString weight; + attribute CSSOMString stretch; + attribute CSSOMString unicodeRange; + attribute CSSOMString variant; + attribute CSSOMString featureSettings; + attribute CSSOMString variationSettings; + attribute CSSOMString display; + + readonly attribute FontFaceLoadStatus status; + + Promise load(); + readonly attribute Promise loaded; +}; + +dictionary FontFaceSetLoadEventInit : EventInit { + sequence fontfaces = []; +}; + +[Constructor(CSSOMString type, optional FontFaceSetLoadEventInit eventInitDict), + Exposed=(Window,Worker)] +interface FontFaceSetLoadEvent : Event { + [SameObject] readonly attribute FrozenArray fontfaces; +}; + +enum FontFaceSetLoadStatus { "loading", "loaded" }; + +callback ForEachCallback = void (FontFace font, long index, FontFaceSet self); + +[Exposed=(Window,Worker), + Constructor(sequence initialFaces)] +interface FontFaceSet : EventTarget { + // FontFaceSet is Set-like! + setlike; + FontFaceSet add(FontFace font); + boolean delete(FontFace font); + void clear(); + + // events for when loading state changes + attribute EventHandler onloading; + attribute EventHandler onloadingdone; + attribute EventHandler onloadingerror; + + // check and start loads if appropriate + // and fulfill promise when all loads complete + Promise> load(CSSOMString font, optional CSSOMString text = " "); + + // return whether all fonts in the fontlist are loaded + // (does not initiate load if not available) + boolean check(CSSOMString font, optional CSSOMString text = " "); + + // async notification that font loading and layout operations are done + readonly attribute Promise ready; + + // loading state, "loading" while one or more fonts loading, "loaded" otherwise + readonly attribute FontFaceSetLoadStatus status; +}; + +[Exposed=(Window,Worker), + NoInterfaceObject] +interface FontFaceSource { + readonly attribute FontFaceSet fonts; +}; + +Document implements FontFaceSource; +WorkerGlobalScope implements FontFaceSource; diff --git a/tests/wpt/web-platform-tests/interfaces/dom.idl b/tests/wpt/web-platform-tests/interfaces/dom.idl index ae65018c71b88..4186f1d2df52e 100644 --- a/tests/wpt/web-platform-tests/interfaces/dom.idl +++ b/tests/wpt/web-platform-tests/interfaces/dom.idl @@ -440,14 +440,22 @@ interface Comment : CharacterData { }; -[Constructor, - Exposed=Window] -interface Range { +[Exposed=Window] +interface AbstractRange { readonly attribute Node startContainer; readonly attribute unsigned long startOffset; readonly attribute Node endContainer; readonly attribute unsigned long endOffset; readonly attribute boolean collapsed; +}; + +[Exposed=Window] +interface StaticRange : AbstractRange { +}; + +[Constructor, + Exposed=Window] +interface Range : AbstractRange { readonly attribute Node commonAncestorContainer; void setStart(Node node, unsigned long offset); diff --git a/tests/wpt/web-platform-tests/interfaces/feature-policy.idl b/tests/wpt/web-platform-tests/interfaces/feature-policy.idl new file mode 100644 index 0000000000000..f11815ac5431e --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/feature-policy.idl @@ -0,0 +1,7 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the Feature Policy spec. +// See https://wicg.github.io/feature-policy/ + +partial interface HTMLIFrameElement { + [CEReactions] attribute DOMString allow; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/hr-time.idl b/tests/wpt/web-platform-tests/interfaces/hr-time.idl index ccbbc33232633..3c793c328c612 100644 --- a/tests/wpt/web-platform-tests/interfaces/hr-time.idl +++ b/tests/wpt/web-platform-tests/interfaces/hr-time.idl @@ -1,13 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the High Resolution Time spec. +// See https://w3c.github.io/hr-time/ + typedef double DOMHighResTimeStamp; [Exposed=(Window,Worker)] interface Performance : EventTarget { - DOMHighResTimeStamp now(); + DOMHighResTimeStamp now (); readonly attribute DOMHighResTimeStamp timeOrigin; - [Default] object toJSON(); + [Default] object toJSON(); }; partial interface WindowOrWorkerGlobalScope { [Replaceable] - readonly attribute Performance performance; + readonly attribute Performance performance; }; diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl index 49348a723b359..89558dfe1330f 100644 --- a/tests/wpt/web-platform-tests/interfaces/html.idl +++ b/tests/wpt/web-platform-tests/interfaces/html.idl @@ -2,7 +2,7 @@ LegacyUnenumerableNamedProperties] interface HTMLAllCollection { readonly attribute unsigned long length; - getter Element? (unsigned long index); + getter Element (unsigned long index); getter (HTMLCollection or Element)? namedItem(DOMString name); (HTMLCollection or Element)? item(optional DOMString nameOrIndex); diff --git a/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl b/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl index 7db942ea9553c..faa1c93b70b09 100644 --- a/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl +++ b/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl @@ -1,28 +1,34 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the Screen Orientation API spec. +// See https://w3c.github.io/screen-orientation/ + partial interface Screen { - [SameObject] - readonly attribute ScreenOrientation orientation; + [SameObject] readonly attribute ScreenOrientation orientation; }; + [Exposed=Window] interface ScreenOrientation : EventTarget { - Promise lock(OrientationLockType orientation); - void unlock(); - readonly attribute OrientationType type; - readonly attribute unsigned short angle; - attribute EventHandler onchange; + Promise lock(OrientationLockType orientation); + void unlock(); + readonly attribute OrientationType type; + readonly attribute unsigned short angle; + attribute EventHandler onchange; }; + enum OrientationType { - "portrait-primary", - "portrait-secondary", - "landscape-primary", - "landscape-secondary" + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" }; + enum OrientationLockType { - "any", - "natural", - "landscape", - "portrait", - "portrait-primary", - "portrait-secondary", - "landscape-primary", - "landscape-secondary" + "any", + "natural", + "landscape", + "portrait", + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" }; diff --git a/tests/wpt/web-platform-tests/interfaces/web-share.idl b/tests/wpt/web-platform-tests/interfaces/web-share.idl index cf19b7e9e7622..7403af3e2f7e6 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-share.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-share.idl @@ -1,8 +1,9 @@ -// https://wicg.github.io/web-share/ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the Web Share API spec. +// See https://wicg.github.io/web-share/ partial interface Navigator { - [SecureContext] - Promise share(optional ShareData data); + [SecureContext] Promise share(optional ShareData data); }; dictionary ShareData { diff --git a/tests/wpt/web-platform-tests/interfaces/webaudio.idl b/tests/wpt/web-platform-tests/interfaces/webaudio.idl new file mode 100644 index 0000000000000..d20bc7fc5590c --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/webaudio.idl @@ -0,0 +1,596 @@ +enum AudioContextState { + "suspended", + "running", + "closed" +}; + +callback DecodeErrorCallback = void (DOMException error); + +callback DecodeSuccessCallback = void (AudioBuffer decodedData); + +[Exposed=Window] +interface BaseAudioContext : EventTarget { + readonly attribute AudioDestinationNode destination; + readonly attribute float sampleRate; + readonly attribute double currentTime; + readonly attribute AudioListener listener; + readonly attribute AudioContextState state; + [SameObject, SecureContext] + readonly attribute AudioWorklet audioWorklet; + Promise resume (); + attribute EventHandler onstatechange; + AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate); + Promise decodeAudioData (ArrayBuffer audioData, + optional DecodeSuccessCallback successCallback, + optional DecodeErrorCallback errorCallback); + AudioBufferSourceNode createBufferSource (); + ConstantSourceNode createConstantSource (); + ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, + optional unsigned long numberOfInputChannels = 2, + optional unsigned long numberOfOutputChannels = 2); + AnalyserNode createAnalyser (); + GainNode createGain (); + DelayNode createDelay (optional double maxDelayTime = 1.0); + BiquadFilterNode createBiquadFilter (); + IIRFilterNode createIIRFilter (sequence feedforward, sequence feedback); + WaveShaperNode createWaveShaper (); + PannerNode createPanner (); + StereoPannerNode createStereoPanner (); + ConvolverNode createConvolver (); + ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6); + ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6); + DynamicsCompressorNode createDynamicsCompressor (); + OscillatorNode createOscillator (); + PeriodicWave createPeriodicWave (sequence real, sequence imag, optional PeriodicWaveConstraints constraints); +}; + +[Exposed=Window] +enum AudioContextLatencyCategory { + "balanced", + "interactive", + "playback" +}; + +[Exposed=Window, + Constructor (optional AudioContextOptions contextOptions)] +interface AudioContext : BaseAudioContext { + readonly attribute double baseLatency; + readonly attribute double outputLatency; + AudioTimestamp getOutputTimestamp (); + Promise suspend (); + Promise close (); + MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement); + MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream); + MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack mediaStreamTrack); + MediaStreamAudioDestinationNode createMediaStreamDestination (); +}; + +[Exposed=Window] +dictionary AudioContextOptions { + (AudioContextLatencyCategory or double) latencyHint = "interactive"; + float sampleRate; +}; + +[Exposed=Window] +dictionary AudioTimestamp { + double contextTime; + DOMHighResTimeStamp performanceTime; +}; + +[Exposed=Window, + Constructor (OfflineAudioContextOptions contextOptions), + Constructor (unsigned long numberOfChannels, unsigned long length, float sampleRate)] +interface OfflineAudioContext : BaseAudioContext { + Promise startRendering(); + Promise suspend(double suspendTime); + readonly attribute unsigned long length; + attribute EventHandler oncomplete; +}; + +[Exposed=Window] +dictionary OfflineAudioContextOptions { + unsigned long numberOfChannels = 1; + required unsigned long length; + required float sampleRate; +}; + +[Exposed=Window, + Constructor (DOMString type, OfflineAudioCompletionEventInit eventInitDict)] +interface OfflineAudioCompletionEvent : Event { + readonly attribute AudioBuffer renderedBuffer; +}; + +[Exposed=Window] +dictionary OfflineAudioCompletionEventInit : EventInit { + required AudioBuffer renderedBuffer; +}; + +[Exposed=Window, + Constructor (AudioBufferOptions options)] +interface AudioBuffer { + readonly attribute float sampleRate; + readonly attribute unsigned long length; + readonly attribute double duration; + readonly attribute unsigned long numberOfChannels; + Float32Array getChannelData (unsigned long channel); + void copyFromChannel (Float32Array destination, unsigned long channelNumber, optional unsigned long startInChannel = 0); + void copyToChannel (Float32Array source, unsigned long channelNumber, optional unsigned long startInChannel = 0); +}; + +dictionary AudioBufferOptions { + unsigned long numberOfChannels = 1; + required unsigned long length; + required float sampleRate; +}; + +[Exposed=Window] +interface AudioNode : EventTarget { + AudioNode connect (AudioNode destinationNode, + optional unsigned long output = 0, + optional unsigned long input = 0); + void connect (AudioParam destinationParam, optional unsigned long output = 0); + void disconnect (); + void disconnect (unsigned long output); + void disconnect (AudioNode destinationNode); + void disconnect (AudioNode destinationNode, unsigned long output); + void disconnect (AudioNode destinationNode, unsigned long output, unsigned long input); + void disconnect (AudioParam destinationParam); + void disconnect (AudioParam destinationParam, unsigned long output); + readonly attribute BaseAudioContext context; + readonly attribute unsigned long numberOfInputs; + readonly attribute unsigned long numberOfOutputs; + attribute unsigned long channelCount; + attribute ChannelCountMode channelCountMode; + attribute ChannelInterpretation channelInterpretation; +}; + +[Exposed=Window] +enum ChannelCountMode { + "max", + "clamped-max", + "explicit" +}; + +[Exposed=Window] +enum ChannelInterpretation { + "speakers", + "discrete" +}; + +dictionary AudioNodeOptions { + unsigned long channelCount; + ChannelCountMode channelCountMode; + ChannelInterpretation channelInterpretation; +}; + +[Exposed=Window] +interface AudioParam { + attribute float value; + readonly attribute float defaultValue; + readonly attribute float minValue; + readonly attribute float maxValue; + AudioParam setValueAtTime (float value, double startTime); + AudioParam linearRampToValueAtTime (float value, double endTime); + AudioParam exponentialRampToValueAtTime (float value, double endTime); + AudioParam setTargetAtTime (float target, double startTime, float timeConstant); + AudioParam setValueCurveAtTime (sequence values, double startTime, double duration); + AudioParam cancelScheduledValues (double cancelTime); + AudioParam cancelAndHoldAtTime (double cancelTime); +}; + +[Exposed=Window] +interface AudioScheduledSourceNode : AudioNode { + attribute EventHandler onended; + void start(optional double when = 0); + void stop(optional double when = 0); +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional AnalyserOptions options)] +interface AnalyserNode : AudioNode { + void getFloatFrequencyData (Float32Array array); + void getByteFrequencyData (Uint8Array array); + void getFloatTimeDomainData (Float32Array array); + void getByteTimeDomainData (Uint8Array array); + attribute unsigned long fftSize; + readonly attribute unsigned long frequencyBinCount; + attribute double minDecibels; + attribute double maxDecibels; + attribute double smoothingTimeConstant; +}; + +dictionary AnalyserOptions : AudioNodeOptions { + unsigned long fftSize = 2048; + double maxDecibels = -30; + double minDecibels = -100; + double smoothingTimeConstant = 0.8; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional AudioBufferSourceOptions options)] +interface AudioBufferSourceNode : AudioScheduledSourceNode { + attribute AudioBuffer? buffer; + readonly attribute AudioParam playbackRate; + readonly attribute AudioParam detune; + attribute boolean loop; + attribute double loopStart; + attribute double loopEnd; + void start (optional double when = 0, + optional double offset, + optional double duration); + void stop (optional double when = 0); +}; + +dictionary AudioBufferSourceOptions { + AudioBuffer? buffer; + float detune = 0; + boolean loop = false; + double loopEnd = 0; + double loopStart = 0; + float playbackRate = 1; +}; + +[Exposed=Window] +interface AudioDestinationNode : AudioNode { + readonly attribute unsigned long maxChannelCount; +}; + +[Exposed=Window] +interface AudioListener { + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + readonly attribute AudioParam forwardX; + readonly attribute AudioParam forwardY; + readonly attribute AudioParam forwardZ; + readonly attribute AudioParam upX; + readonly attribute AudioParam upY; + readonly attribute AudioParam upZ; + void setPosition (float x, float y, float z); + void setOrientation (float x, float y, float z, float xUp, float yUp, float zUp); +}; + +[Exposed=Window, + Constructor (DOMString type, AudioProcessingEventInit eventInitDict)] +interface AudioProcessingEvent : Event { + readonly attribute double playbackTime; + readonly attribute AudioBuffer inputBuffer; + readonly attribute AudioBuffer outputBuffer; +}; + +dictionary AudioProcessingEventInit : EventInit { + required double playbackTime; + required AudioBuffer inputBuffer; + required AudioBuffer outputBuffer; +}; + +enum BiquadFilterType { + "lowpass", + "highpass", + "bandpass", + "lowshelf", + "highshelf", + "peaking", + "notch", + "allpass" +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional BiquadFilterOptions options)] +interface BiquadFilterNode : AudioNode { + attribute BiquadFilterType type; + readonly attribute AudioParam frequency; + readonly attribute AudioParam detune; + readonly attribute AudioParam Q; + readonly attribute AudioParam gain; + void getFrequencyResponse (Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse); +}; + +dictionary BiquadFilterOptions : AudioNodeOptions { + BiquadFilterType type = "lowpass"; + float Q = 1; + float detune = 0; + float frequency = 350; + float gain = 0; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional ChannelMergerOptions options)] +interface ChannelMergerNode : AudioNode { +}; + +dictionary ChannelMergerOptions : AudioNodeOptions { + unsigned long numberOfInputs = 6; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional ChannelSplitterNode options)] +interface ChannelSplitterNode : AudioNode { +}; + +dictionary ChannelSplitterOptions : AudioNodeOptions { + unsigned long numberOfOutputs = 6; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional ConstantSourceOptions options)] +interface ConstantSourceNode : AudioScheduledSourceNode { + readonly attribute AudioParam offset; +}; + +dictionary ConstantSourceOptions { + float offset = 1; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional ConvolverOptions options)] +interface ConvolverNode : AudioNode { + attribute AudioBuffer? buffer; + attribute boolean normalize; +}; + +dictionary ConvolverOptions : AudioNodeOptions { + AudioBuffer? buffer; + boolean disableNormalization = false; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional DelayOptions options)] +interface DelayNode : AudioNode { + readonly attribute AudioParam delayTime; +}; + +dictionary DelayOptions : AudioNodeOptions { + double maxDelayTime = 1; + double delayTime = 0; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional DynamicsCompressorOptions options)] +interface DynamicsCompressorNode : AudioNode { + readonly attribute AudioParam threshold; + readonly attribute AudioParam knee; + readonly attribute AudioParam ratio; + readonly attribute float reduction; + readonly attribute AudioParam attack; + readonly attribute AudioParam release; +}; + +dictionary DynamicsCompressorOptions : AudioNodeOptions { + float attack = 0.003; + float knee = 30; + float ratio = 12; + float release = 0.25; + float threshold = -24; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional GainOptions options)] +interface GainNode : AudioNode { + readonly attribute AudioParam gain; +}; + +dictionary GainOptions : AudioNodeOptions { + float gain = 1.0; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, IIRFilterOptions options)] +interface IIRFilterNode : AudioNode { + void getFrequencyResponse (Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse); +}; + +dictionary IIRFilterOptions : AudioNodeOptions { + required sequence feedforward; + required sequence feedback; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, MediaElementAudioSourceOptions options)] +interface MediaElementAudioSourceNode : AudioNode { + [SameObject] readonly attribute HTMLMediaElement mediaElement; +}; + +dictionary MediaElementAudioSourceOptions { + required HTMLMediaElement mediaElement; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional AudioNodeOptions options)] +interface MediaStreamAudioDestinationNode : AudioNode { + readonly attribute MediaStream stream; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, MediaStreamAudioSourceOptions options)] +interface MediaStreamAudioSourceNode : AudioNode { + [SameObject] readonly attribute MediaStream mediaStream; +}; + +dictionary MediaStreamAudioSourceOptions { + required MediaStream mediaStream; +}; + +[Exposed=Window, + Constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options)] +interface MediaStreamTrackAudioSourceNode : AudioNode { +}; + +dictionary MediaStreamTrackAudioSourceOptions { + required MediaStreamTrack mediaStreamTrack; +}; + +enum OscillatorType { + "sine", + "square", + "sawtooth", + "triangle", + "custom" +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional OscillatorOptions options)] +interface OscillatorNode : AudioScheduledSourceNode { + attribute OscillatorType type; + readonly attribute AudioParam frequency; + readonly attribute AudioParam detune; + void setPeriodicWave (PeriodicWave periodicWave); +}; + +dictionary OscillatorOptions : AudioNodeOptions { + OscillatorType type = "sine"; + float frequency = 440; + float detune = 0; + PeriodicWave periodicWave; +}; + +enum PanningModelType { + "equalpower", + "HRTF" +}; + +enum DistanceModelType { + "linear", + "inverse", + "exponential" +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional PannerOptions options)] +interface PannerNode : AudioNode { + attribute PanningModelType panningModel; + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + readonly attribute AudioParam orientationX; + readonly attribute AudioParam orientationY; + readonly attribute AudioParam orientationZ; + attribute DistanceModelType distanceModel; + attribute double refDistance; + attribute double maxDistance; + attribute double rolloffFactor; + attribute double coneInnerAngle; + attribute double coneOuterAngle; + attribute double coneOuterGain; + void setPosition (float x, float y, float z); + void setOrientation (float x, float y, float z); +}; + +dictionary PannerOptions : AudioNodeOptions { + PanningModelType panningModel = "equalpower"; + DistanceModelType distanceModel = "inverse"; + float positionX = 0; + float positionY = 0; + float positionZ = 0; + float orientationX = 1; + float orientationY = 0; + float orientationZ = 0; + double refDistance = 1; + double maxDistance = 10000; + double rolloffFactor = 1; + double coneInnerAngle = 360; + double coneOuterAngle = 360; + double coneOuterGain = 0; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional PeriodicWaveOptions options)] +interface PeriodicWave { +}; + +dictionary PeriodicWaveConstraints { + boolean disableNormalization = false; +}; + +dictionary PeriodicWaveOptions : PeriodicWaveConstraints { + sequence real; + sequence imag; +}; + +[Exposed=Window] +interface ScriptProcessorNode : AudioNode { + attribute EventHandler onaudioprocess; + readonly attribute long bufferSize; +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional StereoPannerOptions options)] +interface StereoPannerNode : AudioNode { + readonly attribute AudioParam pan; +}; + +dictionary StereoPannerOptions : AudioNodeOptions { + float pan = 0; +}; + +enum OverSampleType { + "none", + "2x", + "4x" +}; + +[Exposed=Window, + Constructor (BaseAudioContext context, optional WaveShaperOptions options)] +interface WaveShaperNode : AudioNode { + attribute Float32Array? curve; + attribute OverSampleType oversample; +}; + +dictionary WaveShaperOptions : AudioNodeOptions { + sequence curve; + OverSampleType oversample = "none"; +}; + +[Exposed=Window, SecureContext] +interface AudioWorklet : Worklet { +}; + +[Global=(Worklet, AudioWorklet), Exposed=AudioWorklet] +interface AudioWorkletGlobalScope : WorkletGlobalScope { + void registerProcessor (DOMString name, VoidFunction processorCtor); + readonly attribute double currentTime; + readonly attribute float sampleRate; +}; + +[Exposed=Window] +interface AudioParamMap { + readonly maplike; +}; + +enum AudioWorkletProcessorState { + "pending", + "running", + "stopped", + "error" +}; + +[Exposed=Window, + SecureContext, + Constructor (BaseAudioContext context, DOMString name, optional AudioWorkletNodeOptions options)] +interface AudioWorkletNode : AudioNode { + readonly attribute AudioParamMap parameters; + readonly attribute MessagePort port; + readonly attribute AudioWorkletProcessorState processorState; + attribute EventHandler onprocessorstatechange; +}; + +dictionary AudioWorkletNodeOptions : AudioNodeOptions { + unsigned long numberOfInputs = 1; + unsigned long numberOfOutputs = 1; + sequence outputChannelCount; + record parameterData; + object processorOptions = null; +}; + +[Exposed=AudioWorklet, +Constructor (optional AudioWorkletNodeOptions options)] +interface AudioWorkletProcessor { + readonly attribute MessagePort port; +}; + +dictionary AudioParamDescriptor { + required DOMString name; + float defaultValue = 0; + float minValue = -3.4028235e38; + float maxValue = 3.4028235e38; +}; diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index 74ecc09bf41da..958adb25ace15 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -197,6 +197,7 @@ SET TIMEOUT: screen-orientation/lock-bad-argument.html SET TIMEOUT: screen-orientation/onchange-event.html SET TIMEOUT: screen-orientation/resources/sandboxed-iframe-locking.html SET TIMEOUT: secure-contexts/basic-popup-and-iframe-tests.https.js +SET TIMEOUT: service-workers/cache-storage/script-tests/cache-abort.js SET TIMEOUT: service-workers/service-worker/activation.https.html SET TIMEOUT: service-workers/service-worker/fetch-frame-resource.https.html SET TIMEOUT: service-workers/service-worker/fetch-request-redirect.https.html @@ -889,25 +890,7 @@ SUPPORT-WRONG-DIR: css/css-timing/testcommon.js MISSING-LINK: css/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html MISSING-LINK: css/css-typed-om/declared-styleMap-accepts-inherit.html MISSING-LINK: css/css-typed-om/styleMap-update-function.html -MISSING-LINK: css/cssom/CSS.html -MISSING-LINK: css/cssom/CSSKeyframeRule.html -MISSING-LINK: css/cssom/CSSKeyframesRule.html -MISSING-LINK: css/cssom/CSSNamespaceRule.html -MISSING-LINK: css/cssom/CSSRuleList.html -MISSING-LINK: css/cssom/CSSStyleSheet.html -MISSING-LINK: css/cssom/GetBoundingRect.html -MISSING-LINK: css/cssom/historical.html -MISSING-LINK: css/cssom/MediaList.html -MISSING-LINK: css/cssom/overflow-serialization.html -MISSING-LINK: css/cssom/selectorText-modification-restyle-001.html -MISSING-LINK: css/cssom/serialization-CSSDeclaration-with-important.html -MISSING-LINK: css/cssom/serialize-values.html -MISSING-LINK: css/cssom/serialize-variable-reference.html -MISSING-LINK: css/cssom/shorthand-serialization.html SUPPORT-WRONG-DIR: css/cssom/stylesheet-same-origin.css -MISSING-LINK: css/cssom/stylesheet-same-origin.sub.html -MISSING-LINK: css/cssom/StyleSheetList.html -MISSING-LINK: css/cssom/variable-names.html MISSING-LINK: css/cssom-view/DOMRectList.html MISSING-LINK: css/cssom-view/elementFromPoint-002.html MISSING-LINK: css/cssom-view/elementFromPoint-003.html diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html index f2b3251647557..a047a30873c77 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html @@ -62,7 +62,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html index 08d639dd48889..544511388685a 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html @@ -50,7 +50,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html index ee06e19fd579f..327a72e30b53a 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html @@ -26,7 +26,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html index beddc512a77da..67a4613813421 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html @@ -50,7 +50,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html index bc710f302f6ae..9bc6bcbf277c1 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html @@ -62,7 +62,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html index 462c8193374a1..1e5a6606b03a1 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html @@ -38,7 +38,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html index afd5b8e77a9db..c28f29c99e697 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html @@ -38,7 +38,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html index 29b023b305164..0172ff1c70092 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html @@ -41,7 +41,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html index 4dfe2eae97591..061cda79af9f9 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html @@ -41,7 +41,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html index f68f13df77d67..50c3491e487bf 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html @@ -26,7 +26,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html index a616e7f2336c4..2749e09c48a75 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html @@ -32,7 +32,8 @@ } window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-3.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-3.html index 3dadb399a2639..a7133f89ecf4e 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-3.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-3.html @@ -26,7 +26,8 @@ setup({ explicit_done: true }); window.addEventListener("load", function() { - document.fonts.ready.then(runTests); + // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. + requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); function runTests() { diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html index 83604b1e70efd..a29b5832a9e5f 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html @@ -34,6 +34,10 @@

Description

if (mediainfo.kind == "audioinput") { assert_equals(typeof capabilities.echoCancellation, "object", "echoCancellation must be an object."); } + if (mediainfo.kind == "videoinput") { + assert_equals(typeof capabilities.facingMode, "object", "facingMode must be an object."); + verifyVideoRangeProperties(capabilities); + } } else if ( mediainfo.kind == "audiooutput" ) { assert_true(mediainfo instanceof MediaDeviceInfo); } else { @@ -42,6 +46,33 @@

Description

} }); }, "mediaDevices.enumerateDevices() is present and working on navigator"); + +function verifyVideoRangeProperties(capabilities) { + if (capabilities.hasOwnProperty('width')) { + assert_equals(Object.keys(capabilities.width).length, 2); + assert_true(capabilities.width.hasOwnProperty('min')); + assert_true(capabilities.width.hasOwnProperty('max')); + assert_less_than_equal(capabilities.width.min, capabilities.width.max); + } + if (capabilities.hasOwnProperty('height')) { + assert_equals(Object.keys(capabilities.height).length, 2); + assert_true(capabilities.height.hasOwnProperty('min')); + assert_true(capabilities.height.hasOwnProperty('max')); + assert_less_than_equal(capabilities.height.min, capabilities.height.max); + } + if (capabilities.hasOwnProperty('aspectRatio')) { + assert_equals(Object.keys(capabilities.aspectRatio).length, 2); + assert_true(capabilities.aspectRatio.hasOwnProperty('min')); + assert_true(capabilities.aspectRatio.hasOwnProperty('max')); + assert_less_than_equal(capabilities.aspectRatio.min, capabilities.aspectRatio.max); + } + if (capabilities.hasOwnProperty('frameRate')) { + assert_equals(Object.keys(capabilities.frameRate).length, 2); + assert_true(capabilities.frameRate.hasOwnProperty('min')); + assert_true(capabilities.frameRate.hasOwnProperty('max')); + assert_less_than_equal(capabilities.frameRate.min, capabilities.frameRate.max); + } +} diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..f0c5ae172baf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..e592db53c3c84 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..ee9c3c6d22dd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..e050885df3b07 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..369044ff69e62 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..aea84f71e64fb --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html new file mode 100644 index 0000000000000..83d425c58ebba --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Allowed content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html new file mode 100644 index 0000000000000..728e6ce73ff25 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Allowed content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers new file mode 100644 index 0000000000000..46e2255e388e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..4753bb3208d26 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,41 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html new file mode 100644 index 0000000000000..e82c6cfdc1883 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html @@ -0,0 +1,41 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html new file mode 100644 index 0000000000000..d9c87b30c5412 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html @@ -0,0 +1,41 @@ + + + + + Mixed-Content: Allowed content + + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html new file mode 100644 index 0000000000000..2a4f6a5e4593f --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html new file mode 100644 index 0000000000000..6b9d9b4f82668 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html new file mode 100644 index 0000000000000..a3f302ae60b87 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html new file mode 100644 index 0000000000000..0a507e5b10963 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html new file mode 100644 index 0000000000000..5375ae50b97e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html new file mode 100644 index 0000000000000..c6afc29050c03 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Blockable content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html new file mode 100644 index 0000000000000..2b83f31198b18 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Allowed content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html new file mode 100644 index 0000000000000..efc6ce6881d38 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html @@ -0,0 +1,40 @@ + + + + + Mixed-Content: Allowed content + + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/common.js b/tests/wpt/web-platform-tests/mixed-content/generic/common.js index b2673e0d9c104..12e9262ca0758 100644 --- a/tests/wpt/web-platform-tests/mixed-content/generic/common.js +++ b/tests/wpt/web-platform-tests/mixed-content/generic/common.js @@ -304,6 +304,26 @@ function requestViaLinkPrefetch(url) { } } +/** + * Initiates a new beacon request. + * @param {string} url The URL of a resource to prefetch. + * @return {Promise} The promise for success/error events. + */ +async function requestViaSendBeacon(url) { + function wait(ms) { + return new Promise(resolve => step_timeout(resolve, ms)); + } + if (!navigator.sendBeacon(url)) { + // If mixed-content check fails, it should return false. + throw new Error('sendBeacon() fails.'); + } + // We don't have a means to see the result of sendBeacon() request + // for sure. Let's wait for a while and let the generic test function + // ask the server for the result. + await wait(500); + return 'allowed'; +} + /** * Creates a new media element with a child source element, binds loadeddata and * error events, sets attributes and appends to document.body. diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js b/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js index fa27a3d6ae197..f0e2d340fcffd 100644 --- a/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js +++ b/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js @@ -59,6 +59,7 @@ function MixedContentTestCase(scenario, description, sanityChecker) { var resourceMap = { "a-tag": requestViaAnchor, "area-tag": requestViaArea, + "beacon-request": requestViaSendBeacon, "fetch-request": requestViaFetch, "form-tag": requestViaForm, "iframe-tag": requestViaIframe, @@ -81,6 +82,7 @@ function MixedContentTestCase(scenario, description, sanityChecker) { var contentType = { "a-tag": "text/html", "area-tag": "text/html", + "beacon-request": "text/plain", "fetch-request": "application/json", "form-tag": "text/html", "iframe-tag": "text/html", diff --git a/tests/wpt/web-platform-tests/mixed-content/spec.src.json b/tests/wpt/web-platform-tests/mixed-content/spec.src.json index e59fa9f8c4ce3..54479ef42821d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/spec.src.json +++ b/tests/wpt/web-platform-tests/mixed-content/spec.src.json @@ -240,7 +240,8 @@ "object-tag", "picture-tag", "websocket-request", - "link-prefetch-tag" + "link-prefetch-tag", + "beacon-request" ], "optionally-blockable": [ "img-tag", diff --git a/tests/wpt/web-platform-tests/mixed-content/spec_json.js b/tests/wpt/web-platform-tests/mixed-content/spec_json.js index f70e3ccc00005..1bd1ecc8a26f0 100644 --- a/tests/wpt/web-platform-tests/mixed-content/spec_json.js +++ b/tests/wpt/web-platform-tests/mixed-content/spec_json.js @@ -1 +1 @@ -var SPEC_JSON = {"test_expansion_schema": {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http", "same-host-wss", "same-host-ws", "cross-origin-wss", "cross-origin-ws"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr-request", "worker-request", "fetch-request", "a-tag", "object-tag", "picture-tag", "websocket-request", "link-prefetch-tag"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag"]}, "context_nesting": ["top-level", "sub-level"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme-redirect", "swap-scheme-redirect"], "opt_in_method": ["no-opt-in", "http-csp", "meta-csp", "img-crossorigin"], "source_scheme": ["http", "https"]}, "specification": [{"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-allows", "redirection": "*", "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-ws", "same-host-ws"], "name": "ws-downgrade-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["no-opt-in", "http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"origin": ["same-host-https"], "name": "allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": ["same-host-wss"], "name": "websocket-allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "excluded_tests": [{"origin": "*", "name": "Redundant-subresources", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http"], "name": "Skip-origins-not-applicable-to-websockets", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket-request"], "optionally-blockable": []}}, {"origin": "*", "name": "TODO-opt-in-method-img-cross-origin", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "img-crossorigin", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": "*", "name": "Skip-redundant-for-opt-in-method", "redirection": ["keep-scheme-redirect", "swap-scheme-redirect"], "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": ["meta-csp", "img-crossorigin"], "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}]}; +var SPEC_JSON = {"test_expansion_schema": {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http", "same-host-wss", "same-host-ws", "cross-origin-wss", "cross-origin-ws"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr-request", "worker-request", "fetch-request", "a-tag", "object-tag", "picture-tag", "websocket-request", "link-prefetch-tag", "beacon-request"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag"]}, "context_nesting": ["top-level", "sub-level"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme-redirect", "swap-scheme-redirect"], "opt_in_method": ["no-opt-in", "http-csp", "meta-csp", "img-crossorigin"], "source_scheme": ["http", "https"]}, "specification": [{"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-allows", "redirection": "*", "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-ws", "same-host-ws"], "name": "ws-downgrade-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["no-opt-in", "http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"origin": ["same-host-https"], "name": "allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": ["same-host-wss"], "name": "websocket-allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "excluded_tests": [{"origin": "*", "name": "Redundant-subresources", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http"], "name": "Skip-origins-not-applicable-to-websockets", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket-request"], "optionally-blockable": []}}, {"origin": "*", "name": "TODO-opt-in-method-img-cross-origin", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "img-crossorigin", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": "*", "name": "Skip-redundant-for-opt-in-method", "redirection": ["keep-scheme-redirect", "swap-scheme-redirect"], "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": ["meta-csp", "img-crossorigin"], "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}]}; diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html b/tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html similarity index 100% rename from tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html rename to tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html similarity index 100% rename from tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html rename to tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html diff --git a/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js b/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js index d0e23281c27f4..ccddf464d135f 100644 --- a/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js +++ b/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js @@ -3,11 +3,6 @@ 'use strict'; -if (self.importScripts) { - importScripts('/resources/testharness.js'); - importScripts('/resources/WebIDLParser.js', '/resources/idlharness.js'); -} - // https://w3c.github.io/payment-handler/ promise_test(async () => { diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method-manual.https.html new file mode 100644 index 0000000000000..fab78f43fd6d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method-manual.https.html @@ -0,0 +1,95 @@ + + +Test for PaymentRequest.show() method + + + + + +

Test for PaymentRequest.show() method

+

+ Click on each button in sequence from top to bottom without refreshing the page. +

+
    +
  1. + +
  2. +
  3. + +
  4. +
  5. + +
  6. +
+ + If you find a buggy test, please file a bug + and tag one of the owners. + diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html index 555c4936537ad..32b56680e7fb3 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html @@ -7,8 +7,11 @@ diff --git a/tests/wpt/web-platform-tests/preload/download-resources.html b/tests/wpt/web-platform-tests/preload/download-resources.html index ee8fdd0ea12c1..dc2b4693cf11f 100644 --- a/tests/wpt/web-platform-tests/preload/download-resources.html +++ b/tests/wpt/web-platform-tests/preload/download-resources.html @@ -8,7 +8,7 @@ - + @@ -22,7 +22,7 @@ verifyPreloadAndRTSupport() verifyNumberOfDownloads("resources/dummy.js", 1); verifyNumberOfDownloads("resources/dummy.css", 1); - verifyNumberOfDownloads("resources/CanvasTest.ttf", 1); + verifyNumberOfDownloads("/fonts/CanvasTest.ttf", 1); verifyNumberOfDownloads("resources/white.mp4", 1); verifyNumberOfDownloads("resources/sound_5.oga", 1); verifyNumberOfDownloads("resources/foo.vtt", 1); diff --git a/tests/wpt/web-platform-tests/preload/link-header-on-subresource.html b/tests/wpt/web-platform-tests/preload/link-header-on-subresource.html index 22351e37c7b69..a02bc7c819eb7 100644 --- a/tests/wpt/web-platform-tests/preload/link-header-on-subresource.html +++ b/tests/wpt/web-platform-tests/preload/link-header-on-subresource.html @@ -10,7 +10,7 @@ diff --git a/tests/wpt/web-platform-tests/preload/onload-event.html b/tests/wpt/web-platform-tests/preload/onload-event.html index 35ba2eb54b886..6af2d64a1c1d7 100644 --- a/tests/wpt/web-platform-tests/preload/onload-event.html +++ b/tests/wpt/web-platform-tests/preload/onload-event.html @@ -19,7 +19,7 @@ - + diff --git a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html index 70db5f474e348..8e5e45b9a1cda 100644 --- a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html +++ b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html @@ -9,7 +9,7 @@ - + @@ -23,7 +23,7 @@ verifyNumberOfDownloads("{{host}}:{{ports[http][1]}}/preload/resources/dummy.js", 0); verifyNumberOfDownloads("resources/dummy.css", 0); verifyNumberOfDownloads("resources/square.png", 0); - verifyNumberOfDownloads("resources/CanvasTest.ttf", 0); + verifyNumberOfDownloads("/fonts/CanvasTest.ttf", 0); verifyNumberOfDownloads("resources/white.mp4", 0); verifyNumberOfDownloads("resources/sound_5.oga", 0); verifyNumberOfDownloads("resources/foo.vtt", 0); diff --git a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html index bde6b982bcea0..cb080e62ba3ef 100644 --- a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html +++ b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html @@ -9,7 +9,7 @@ - + @@ -23,7 +23,7 @@ verifyNumberOfDownloads("{{host}}:{{ports[http][1]}}/preload/resources/dummy.js", 0); verifyNumberOfDownloads("resources/dummy.css", 0); verifyNumberOfDownloads("resources/square.png", 0); - verifyNumberOfDownloads("resources/CanvasTest.ttf", 0); + verifyNumberOfDownloads("/fonts/CanvasTest.ttf", 0); verifyNumberOfDownloads("resources/white.mp4", 0); verifyNumberOfDownloads("resources/sound_5.oga", 0); verifyNumberOfDownloads("resources/foo.vtt", 0); diff --git a/tests/wpt/web-platform-tests/preload/preload-with-type.html b/tests/wpt/web-platform-tests/preload/preload-with-type.html index cf79e778c2984..8578143a23495 100644 --- a/tests/wpt/web-platform-tests/preload/preload-with-type.html +++ b/tests/wpt/web-platform-tests/preload/preload-with-type.html @@ -31,7 +31,7 @@ - + diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationRequest_success.https.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationRequest_success.https.html index 70ea5a806e7b9..890e0ed624918 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationRequest_success.https.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationRequest_success.https.html @@ -8,17 +8,24 @@ \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_frame_initiator_type.html b/tests/wpt/web-platform-tests/resource-timing/resource_frame_initiator_type.html deleted file mode 100644 index f6471988624ad..0000000000000 --- a/tests/wpt/web-platform-tests/resource-timing/resource_frame_initiator_type.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - -Resource Timing frame initiator type - - - - - - - - - -

Description

-

This test validates that the frame initiator type is represented.

-
- - - diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html index 30f8c0c024ee3..d593f13db7e29 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html +++ b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html @@ -18,6 +18,7 @@ let ul_font_loaded = false; let xhr_loaded = false; let tests_run = false; +let frameset_loaded = false; function check_finished() { if (!ul_font_loaded) { @@ -26,7 +27,7 @@ if (!ol_font_loaded) { ol_font_loaded = check_font_loaded('ol'); } - if (page_loaded && ol_font_loaded && ul_font_loaded && background_loaded && xhr_loaded) { + if (page_loaded && ol_font_loaded && ul_font_loaded && background_loaded && xhr_loaded && frameset_loaded) { perform_test(); } else { step_timeout(check_finished, 100); @@ -64,40 +65,88 @@ step_timeout(check_finished, 100); } +function frameset_onload() { + frameset_loaded = true; + + step_timeout(check_finished, 100); +} + function perform_test() { if (tests_run) { return; } tests_run = true; const context = new PerformanceContext(document.getElementById('frameContext').contentWindow.performance); - const entries = context.getEntriesByType('resource'); + let entries = context.getEntriesByType('resource'); + + // check for frameset + if (document.getElementById('frameContext2') && + document.getElementById('frameContext2').contentWindow) { + const context2 = new PerformanceContext(document.getElementById('frameContext2').contentWindow.performance); + entries = entries.concat(context2.getEntriesByType('resource')); + } const index = window.location.pathname.lastIndexOf('/'); const pathname = window.location.pathname.substring(0, index) + '/resources/'; const font_pathname = window.location.pathname.substring(0, index - 15) + 'fonts/Ahem.ttf'; let expected_entries = {}; - expected_entries[font_pathname] = 'css'; - expected_entries[pathname + 'resource_timing_test0.png'] = 'img'; - expected_entries[pathname + 'blank_page_green.htm'] = 'iframe'; - expected_entries[pathname + 'empty_script.js'] = 'script'; - expected_entries[pathname + 'resource_timing_test0.css?id=embed'] = 'embed'; - expected_entries[pathname + 'resource_timing_test0.css?id=n1'] = 'css'; - expected_entries[font_pathname + '?id=n1'] = 'css'; - expected_entries[pathname + 'blue.png?id=1'] = 'css'; - expected_entries[pathname + 'blue.png?id=2'] = 'css'; - expected_entries[pathname + 'blue.png?id=async_xhr'] = 'xmlhttprequest'; - expected_entries[pathname + 'blue.png?id=body'] = 'body'; - expected_entries[pathname + 'blue.png?id=input'] = 'input'; - expected_entries[pathname + 'blue.png?id=n1'] = 'css'; - expected_entries[pathname + 'blue.png?id=object'] = 'object'; - expected_entries[pathname + 'blue.png?id=poster'] = 'video'; - expected_entries[pathname + 'nested.css'] = 'link'; + addEntryIfExists(entries, expected_entries, font_pathname, 'css'); + addEntryIfExists(entries, expected_entries, pathname + 'resource_timing_test0.png', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'resource_timing_test0.png?id=srcset-srcset', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'resource_timing_test0.png?id=srcset-src', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'blank_page_green.htm', 'iframe'); + addEntryIfExists(entries, expected_entries, pathname + 'blank_page_green.htm?id=frame', 'frame'); + addEntryIfExists(entries, expected_entries, pathname + 'empty_script.js', 'script'); + addEntryIfExists(entries, expected_entries, pathname + 'resource_timing_test0.css?id=embed', 'embed'); + addEntryIfExists(entries, expected_entries, pathname + 'resource_timing_test0.css?id=n1', 'css'); + addEntryIfExists(entries, expected_entries, font_pathname + '?id=n1', 'css'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=cursor', 'css'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=1', 'css'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=2', 'css'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=async_xhr', 'xmlhttprequest'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=body', 'body'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=input', 'input'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=n1', 'css'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=object', 'object'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=video-poster', 'video'); + addEntryIfExists(entries, expected_entries, '/media/test.mp4?id=video-src', 'video'); + addEntryIfExists(entries, expected_entries, '/media/test.mp4?id=video-source', 'source'); + addEntryIfExists(entries, expected_entries, '/media/test.ogv?id=video-source', 'source'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=video-track', 'track'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=audio-src', 'audio'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=audio-source-wav', 'source'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=audio-source-mpeg', 'source'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=audio-source-ogg', 'source'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=picture-source', 'source'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=picture-img', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=picture-notsupported-img', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=picture-img-src', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=picture-img-srcset', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=picture-99x-img-src', 'img'); + addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=svg-image', 'image'); + addEntryIfExists(entries, expected_entries, pathname + 'nested.css', 'link'); + addEntryIfExists(entries, expected_entries, pathname + 'nested.css?id=prefetch', 'link'); + addEntryIfExists(entries, expected_entries, pathname + 'nested.css?id=preload', 'link'); + addEntryIfExists(entries, expected_entries, pathname + 'blank_page_green.htm?id=prerender', 'link'); + addEntryIfExists(entries, expected_entries, pathname + 'manifest.json', 'link'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=beacon', 'beacon'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=fetch', 'fetch'); + addEntryIfExists(entries, expected_entries, pathname + 'empty.py?favicon', 'link'); + addEntryIfExists(entries, expected_entries, pathname + 'eventsource.py?id=eventsource', 'eventsource'); test_resource_entries(entries, expected_entries); done(); } +function addEntryIfExists(entries, expected_entries, path, initiatorType) { + const url = window.location.protocol + "//" + window.location.host + path; + + if (entries.find(function(entry) { return entry.name === url; })) { + expected_entries[path] = initiatorType; + } +} + window.on_test_body_created = check_finished; window.on_async_xhr_done = function() { xhr_loaded = true; @@ -110,5 +159,6 @@

Description

This test validates that all of the initiator types are represented.

+ diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm b/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm index 41789d869cf00..bc7101c219230 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm @@ -3,6 +3,7 @@ All Resource Types Test Page + + + + + +