diff options
118 files changed, 2162 insertions, 1345 deletions
diff --git a/Cargo.lock b/Cargo.lock index f4a083be3b5..5c439fee0ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -342,10 +342,11 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -637,14 +638,6 @@ dependencies = [ ] [[package]] -name = "debug_unreachable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "debugger" version = "0.0.1" dependencies = [ @@ -950,11 +943,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1012,7 +1005,7 @@ dependencies = [ "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "malloc_size_of 0.0.1", "net_traits 0.0.1", - "ordered-float 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "new-ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "range 0.0.1", "serde 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "servo-fontconfig 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1401,7 +1394,7 @@ dependencies = [ "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)", + "new-ordered-float 1.0.1 (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", @@ -1634,7 +1627,7 @@ dependencies = [ "servo_arc 0.1.1", "smallbitvec 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "string_cache 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1669,7 +1662,7 @@ dependencies = [ "serde 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "string_cache 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1935,6 +1928,23 @@ dependencies = [ ] [[package]] +name = "new-ordered-float" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1952,21 +1962,11 @@ dependencies = [ ] [[package]] -name = "num" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "num-integer" -version = "0.1.34" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1974,7 +1974,7 @@ name = "num-iter" version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1983,7 +1983,7 @@ name = "num-rational" version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1992,12 +1992,12 @@ name = "num-traits" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-traits" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2095,15 +2095,6 @@ dependencies = [ ] [[package]] -name = "ordered-float" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "osmesa-src" version = "18.1.0-devel" source = "git+https://github.com/servo/osmesa-src#25825d4ca357cdaf540f20fafc545f5aff1aa355" @@ -2384,7 +2375,7 @@ dependencies = [ "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2478,7 +2469,7 @@ dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "canvas_traits 0.0.1", "caseless 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2699,7 +2690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2822,7 +2813,7 @@ dependencies = [ name = "servo_atoms" version = "0.0.1" dependencies = [ - "string_cache 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2945,11 +2936,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "string_cache" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2991,7 +2982,6 @@ dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", - "debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "fallible 0.0.1", @@ -3006,10 +2996,11 @@ dependencies = [ "malloc_size_of 0.0.1", "malloc_size_of_derive 0.0.1", "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "new-ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "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.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)", @@ -3023,7 +3014,7 @@ dependencies = [ "servo_url 0.0.1", "smallbitvec 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "string_cache 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "style_derive 0.0.1", "style_traits 0.0.1", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3153,7 +3144,7 @@ name = "tendril" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futf 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "utf-8 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3185,21 +3176,12 @@ dependencies = [ ] [[package]] -name = "thread-id" -version = "3.1.0" -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)", -] - -[[package]] name = "thread_local" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3326,7 +3308,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unreachable" -version = "0.1.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3789,7 +3771,7 @@ dependencies = [ "checksum cexpr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393a5f0088efbe41f9d1fcd062f24e83c278608420e62109feb2c8abee07de7d" "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" "checksum cgl 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "80f05e25f9631fdee56693110feda284a49308ca1e768857a0ad3906cfc1502a" -"checksum chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9" +"checksum chrono 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cce36c92cb605414e9b824f866f5babe0a0368e39ea07393b9b63cf3844c0e6" "checksum clang-sys 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "939a1a34310b120d26eba35c29475933128b0ec58e24b43327f8dbe6036fc538" "checksum clap 2.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dc34bf7d5d66268b466b9852bca925ec1d2650654dab4da081e63fd230145c2e" "checksum clipboard 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b9b4623b47d8637fc9d47564583d4cc01eb8c8e34e26b2bf348bf4b036acb657" @@ -3812,7 +3794,6 @@ dependencies = [ "checksum darling_macro 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eb69a38fdeaeaf3db712e1df170de67ee9dfc24fb88ca3e9d21e703ec25a4d8e" "checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" "checksum dbus 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "acd824d45fad5ff0e178fcb3c040f13780e73f63a0a6d5cde59e7894f251ab0e" -"checksum debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9a032eac705ca39214d169f83e3d3da290af06d8d1d344d1baad2fd002dca4b3" "checksum deflate 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ebb02aaf4b775afc96684b8402510a338086974e38570a1f65bea8c202eb77a7" "checksum device 0.0.1 (git+https://github.com/servo/devices)" = "<none>" "checksum dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "77e51249a9d823a4cb79e3eca6dcd756153e8ed0157b6c04775d04bf1b13b76a" @@ -3839,7 +3820,7 @@ dependencies = [ "checksum freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b659e75b7a7338fe75afd7f909fc2b71937845cffb6ebe54ba2e50f13d8e903d" "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 futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" "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)" = "<none>" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" @@ -3909,14 +3890,15 @@ dependencies = [ "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" "checksum net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)" = "bc01404e7568680f1259aa5729539f221cb1e6d047a0d9053cab4be8a73b5d67" +"checksum new-ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8ccbebba6fb53a6d2bdcfaf79cb339bc136dee3bfff54dc337a334bafe36476a" +"checksum new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cdc457076c78ab54d5e0d6fa7c47981757f1e34dc39ff92787f217dede586c4" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b8c256fd9471521bcb84c3cdba98921497f1a331cbc15b8030fc63b82050ce" -"checksum num 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "98b15ba84e910ea7a1973bccd3df7b31ae282bf9d8bd2897779950c9b8303d40" -"checksum num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1a4bf6f9174aa5783a9b4cc892cacd11aebad6c69ad027a0b65c6ca5f8aa37" +"checksum num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac0ea58d64a89d9d6b7688031b3be9358d6c919badcf7fbb0527ccfd891ee45" "checksum num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d1891bd7b936f12349b7d1403761c8a0b85a18b148e9da4429d5d102c1a41e" "checksum num-rational 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "c2dc5ea04020a8f18318ae485c751f8cfa1c0e69dcf465c29ddaaa64a313cc44" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -"checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" +"checksum num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775393e285254d2f5004596d69bb8bc1149754570dcc08cf30cabeba67955e28" "checksum num_cpus 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca313f1862c7ec3e0dfe8ace9fa91b1d9cb5c84ace3d00f5ec4216238e93c167" "checksum objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "877f30f37acef6749b1841cceab289707f211aecfc756553cd63976190e6cc2e" "checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" @@ -3926,7 +3908,6 @@ dependencies = [ "checksum ogg_metadata 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fc665717454399cba557c55ad226148996e9266ee291f8a37a98bb2cded0a490" "checksum openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985" "checksum openssl-sys 0.9.27 (registry+https://github.com/rust-lang/crates.io-index)" = "d6fdc5c4a02e69ce65046f1763a0181107038e02176233acb0b3351d7cc588f9" -"checksum ordered-float 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "da12c96037889ae0be29dd2bdd260e5a62a7df24e6466d5a15bb8131c1c200a8" "checksum osmesa-src 18.1.0-devel (git+https://github.com/servo/osmesa-src)" = "<none>" "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" @@ -3989,7 +3970,7 @@ dependencies = [ "checksum smallbitvec 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "665fbc8384f961eb55c548daa2a4b1efff1f9d03b7a10f162ac6ad6a781ca966" "checksum smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44db0ecb22921ef790d17ae13a3f6d15784183ff5f2a01aa32098c7498d2b4b9" "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" -"checksum string_cache 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8ae5fbdcafd8573e2bfc14acb54720e27bbf102376ed05d6052f7eb238b27" +"checksum string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25d70109977172b127fe834e5449e5ab1740b9ba49fa18a2020f509174f25423" "checksum string_cache_codegen 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "35293b05cf1494e8ddd042a7df6756bf18d07f42d234f32e71dce8a7aabb0191" "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" "checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694" @@ -4003,8 +3984,7 @@ dependencies = [ "checksum termcolor 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "adc4587ead41bf016f11af03e55a624c06568b5a19db4e90fde573d805074f83" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" -"checksum thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8df7875b676fddfadffd96deea3b1124e5ede707d4884248931077518cf1f773" -"checksum thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c85048c6260d17cf486ceae3282d9fb6b90be220bf5b28c400f5485ffc29f0c7" +"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" "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" @@ -4024,7 +4004,7 @@ dependencies = [ "checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" +"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa35e768d4daf1d85733418a49fb42e10d7f633e394fccab4ab7aba897053fe2" "checksum url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74e7d099f1ee52f823d4bdd60c93c3602043c728f5db3b97bdb548467f7bddea" "checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" diff --git a/components/gfx/Cargo.toml b/components/gfx/Cargo.toml index ee0746fb01b..4c8b53aae5f 100644 --- a/components/gfx/Cargo.toml +++ b/components/gfx/Cargo.toml @@ -29,7 +29,7 @@ libc = "0.2" log = "0.4" malloc_size_of = { path = "../malloc_size_of" } net_traits = {path = "../net_traits"} -ordered-float = "0.4" +new-ordered-float = "1.0" range = {path = "../range"} serde = "1.0" servo_arc = {path = "../servo_arc"} diff --git a/components/gfx/font.rs b/components/gfx/font.rs index b45707330f2..8c9c1ca0b81 100644 --- a/components/gfx/font.rs +++ b/components/gfx/font.rs @@ -6,7 +6,7 @@ use app_units::Au; use euclid::{Point2D, Rect, Size2D}; use font_context::{FontContext, FontSource}; use font_template::FontTemplateDescriptor; -use ordered_float::NotNaN; +use ordered_float::NotNan; use platform::font::{FontHandle, FontTable}; use platform::font_context::FontContextHandle; pub use platform::font_list::fallback_font_families; @@ -195,7 +195,7 @@ pub struct ShapingOptions { /// NB: You will probably want to set the `IGNORE_LIGATURES_SHAPING_FLAG` if this is non-null. pub letter_spacing: Option<Au>, /// Spacing to add between each word. Corresponds to the CSS 2.1 `word-spacing` property. - pub word_spacing: (Au, NotNaN<f32>), + pub word_spacing: (Au, NotNan<f32>), /// The Unicode script property of the characters in this run. pub script: Script, /// Various flags. diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index 10ff2070d9f..6775ac46bee 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -27,7 +27,7 @@ log = "0.4" malloc_size_of = { path = "../malloc_size_of" } msg = {path = "../msg"} net_traits = {path = "../net_traits"} -ordered-float = "0.4" +new-ordered-float = "1.0" parking_lot = "0.5" profile_traits = {path = "../profile_traits"} range = {path = "../range"} diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index a3a40a98cc0..b5c252cc64e 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -192,12 +192,16 @@ pub struct StackingContextCollectionState { /// recursively building and processing the display list. pub current_stacking_context_id: StackingContextId, - /// The current stacking real context id, which doesn't include pseudo-stacking contexts. + /// The current reference frame ClipScrollNodeIndex. pub current_real_stacking_context_id: StackingContextId, /// The next stacking context id that we will assign to a stacking context. pub next_stacking_context_id: StackingContextId, + /// The current reference frame id. This is used to assign items to the parent + /// reference frame when we encounter a fixed position stacking context. + pub current_parent_reference_frame_id: ClipScrollNodeIndex, + /// The current clip and scroll info, used to keep track of state when /// recursively building and processing the display list. pub current_clipping_and_scrolling: ClippingAndScrolling, @@ -221,19 +225,8 @@ pub struct StackingContextCollectionState { impl StackingContextCollectionState { pub fn new(pipeline_id: PipelineId) -> StackingContextCollectionState { - let root_clip_indices = ClippingAndScrolling::simple(ClipScrollNodeIndex(0)); - - // This is just a dummy node to take up a slot in the array. WebRender - // takes care of adding this root node and it can be ignored during DL conversion. - let root_node = ClipScrollNode { - parent_index: ClipScrollNodeIndex(0), - clip: ClippingRegion::from_rect(LayoutRect::zero()), - content_rect: LayoutRect::zero(), - node_type: ClipScrollNodeType::ScrollFrame( - ScrollSensitivity::ScriptAndInputEvents, - pipeline_id.root_scroll_id(), - ), - }; + let root_clip_indices = + ClippingAndScrolling::simple(ClipScrollNodeIndex::root_scroll_node()); let mut stacking_context_info = FnvHashMap::default(); stacking_context_info.insert( @@ -241,14 +234,22 @@ impl StackingContextCollectionState { StackingContextInfo::new(StackingContextId::root()), ); + // We add two empty nodes to represent the WebRender root reference frame and + // root scroll nodes. WebRender adds these automatically and we add them here + // so that the ids in the array match up with the ones we assign during display + // list building. We ignore these two nodes during conversion to WebRender + // display lists. + let clip_scroll_nodes = vec![ClipScrollNode::placeholder(), ClipScrollNode::placeholder()]; + StackingContextCollectionState { pipeline_id: pipeline_id, root_stacking_context: StackingContext::root(), stacking_context_info, - clip_scroll_nodes: vec![root_node], + clip_scroll_nodes, current_stacking_context_id: StackingContextId::root(), current_real_stacking_context_id: StackingContextId::root(), next_stacking_context_id: StackingContextId::root().next(), + current_parent_reference_frame_id: ClipScrollNodeIndex::root_reference_frame(), current_clipping_and_scrolling: root_clip_indices, containing_block_clipping_and_scrolling: root_clip_indices, clip_stack: Vec::new(), @@ -291,17 +292,27 @@ impl StackingContextCollectionState { } fn add_clip_scroll_node(&mut self, clip_scroll_node: ClipScrollNode) -> ClipScrollNodeIndex { - // We want the scroll root to be defined before any possible item that could use it, - // so we make sure that it is added to the beginning of the parent "real" (non-pseudo) - // stacking context. This ensures that item reordering will not result in an item using - // the scroll root before it is defined. + let is_placeholder = clip_scroll_node.is_placeholder(); + self.clip_scroll_nodes.push(clip_scroll_node); - let index = ClipScrollNodeIndex(self.clip_scroll_nodes.len() - 1); - self.stacking_context_info - .get_mut(&self.current_real_stacking_context_id) - .unwrap() - .clip_scroll_nodes - .push(index); + let index = ClipScrollNodeIndex::new(self.clip_scroll_nodes.len() - 1); + + // If this node is a placeholder node (currently just reference frames), then don't add + // it to the stacking context list. Placeholder nodes are created automatically by + // WebRender and we don't want to explicitly create them in the display list. The node + // is just there to take up a spot in the global list of ClipScrollNodes. + if !is_placeholder { + // We want the scroll root to be defined before any possible item that could use it, + // so we make sure that it is added to the beginning of the parent "real" (non-pseudo) + // stacking context. This ensures that item reordering will not result in an item using + // the scroll root before it is defined. + self.stacking_context_info + .get_mut(&self.current_real_stacking_context_id) + .unwrap() + .clip_scroll_nodes + .push(index); + } + index } } @@ -347,7 +358,6 @@ impl<'a> DisplayListBuildState<'a> { layout_context: &'a LayoutContext, state: StackingContextCollectionState, ) -> DisplayListBuildState<'a> { - let root_clip_indices = ClippingAndScrolling::simple(ClipScrollNodeIndex(0)); DisplayListBuildState { layout_context: layout_context, root_stacking_context: state.root_stacking_context, @@ -356,7 +366,8 @@ impl<'a> DisplayListBuildState<'a> { clip_scroll_nodes: state.clip_scroll_nodes, processing_scrolling_overflow_element: false, current_stacking_context_id: StackingContextId::root(), - current_clipping_and_scrolling: root_clip_indices, + current_clipping_and_scrolling: + ClippingAndScrolling::simple(ClipScrollNodeIndex::root_scroll_node()), iframe_sizes: Vec::new(), indexable_text: IndexableText::default(), } @@ -374,7 +385,7 @@ impl<'a> DisplayListBuildState<'a> { return index; } - self.clip_scroll_nodes[index.0].parent_index + self.clip_scroll_nodes[index.to_index()].parent_index } fn is_background_or_border_of_clip_scroll_node(&self, section: DisplayListSection) -> bool { @@ -429,7 +440,7 @@ impl<'a> DisplayListBuildState<'a> { // stacking context. This ensures that item reordering will not result in an item using // the scroll root before it is defined. self.clip_scroll_nodes.push(node); - let index = ClipScrollNodeIndex(self.clip_scroll_nodes.len() - 1); + let index = ClipScrollNodeIndex::new(self.clip_scroll_nodes.len() - 1); let real_stacking_context_id = self.stacking_context_info[&self.current_stacking_context_id].real_stacking_context_id; self.stacking_context_info @@ -751,6 +762,7 @@ pub trait FragmentDisplayListBuilding { base_flow: &BaseFlow, scroll_policy: ScrollPolicy, context_type: StackingContextType, + established_reference_frame: Option<ClipScrollNodeIndex>, parent_clipping_and_scrolling: ClippingAndScrolling, ) -> StackingContext; @@ -1873,6 +1885,7 @@ impl FragmentDisplayListBuilding for Fragment { base_flow: &BaseFlow, scroll_policy: ScrollPolicy, context_type: StackingContextType, + established_reference_frame: Option<ClipScrollNodeIndex>, parent_clipping_and_scrolling: ClippingAndScrolling, ) -> StackingContext { let border_box = self.stacking_relative_border_box( @@ -1916,6 +1929,7 @@ impl FragmentDisplayListBuilding for Fragment { self.perspective_matrix(&border_box), scroll_policy, parent_clipping_and_scrolling, + established_reference_frame, ) } @@ -2135,6 +2149,7 @@ pub trait BlockFlowDisplayListBuilding { state: &mut StackingContextCollectionState, preserved_state: &mut SavedStackingContextCollectionState, stacking_context_type: Option<StackingContextType>, + established_reference_frame: Option<ClipScrollNodeIndex>, flags: StackingContextCollectionFlags, ) -> ClippingAndScrolling; fn setup_clip_scroll_node_for_position( @@ -2164,6 +2179,7 @@ pub trait BlockFlowDisplayListBuilding { &mut self, parent_stacking_context_id: StackingContextId, parent_clipping_and_scrolling: ClippingAndScrolling, + established_reference_frame: Option<ClipScrollNodeIndex>, state: &mut StackingContextCollectionState, ); fn build_display_list_for_block( @@ -2187,6 +2203,8 @@ pub trait BlockFlowDisplayListBuilding { &self, flags: StackingContextCollectionFlags, ) -> Option<StackingContextType>; + + fn is_reference_frame(&self, context_type: Option<StackingContextType>) -> bool; } /// This structure manages ensuring that modification to StackingContextCollectionState is @@ -2197,6 +2215,7 @@ pub trait BlockFlowDisplayListBuilding { pub struct SavedStackingContextCollectionState { stacking_context_id: StackingContextId, real_stacking_context_id: StackingContextId, + parent_reference_frame_id: ClipScrollNodeIndex, clipping_and_scrolling: ClippingAndScrolling, containing_block_clipping_and_scrolling: ClippingAndScrolling, clips_pushed: usize, @@ -2209,6 +2228,7 @@ impl SavedStackingContextCollectionState { SavedStackingContextCollectionState { stacking_context_id: state.current_stacking_context_id, real_stacking_context_id: state.current_real_stacking_context_id, + parent_reference_frame_id: state.current_parent_reference_frame_id, clipping_and_scrolling: state.current_clipping_and_scrolling, containing_block_clipping_and_scrolling: state.containing_block_clipping_and_scrolling, clips_pushed: 0, @@ -2230,6 +2250,7 @@ impl SavedStackingContextCollectionState { fn restore(self, state: &mut StackingContextCollectionState) { state.current_stacking_context_id = self.stacking_context_id; state.current_real_stacking_context_id = self.real_stacking_context_id; + state.current_parent_reference_frame_id = self.parent_reference_frame_id; state.current_clipping_and_scrolling = self.clipping_and_scrolling; state.containing_block_clipping_and_scrolling = self.containing_block_clipping_and_scrolling; @@ -2332,6 +2353,16 @@ impl BlockFlowDisplayListBuilding for BlockFlow { } } + /// Returns true if this fragment may establish a reference frame and this block + /// creates a stacking context. Both are necessary in order to establish a reference + /// frame. + fn is_reference_frame(&self, context_type: Option<StackingContextType>) -> bool { + match context_type { + Some(StackingContextType::Real) => self.fragment.can_establish_reference_frame(), + _ => false, + } + } + fn collect_stacking_contexts_for_block( &mut self, state: &mut StackingContextCollectionState, @@ -2348,8 +2379,17 @@ impl BlockFlowDisplayListBuilding for BlockFlow { if stacking_context_type == Some(StackingContextType::Real) { state.current_real_stacking_context_id = self.base.stacking_context_id; + } + let established_reference_frame = if self.is_reference_frame(stacking_context_type) { + // WebRender currently creates reference frames automatically, so just add + // a placeholder node to allocate a ClipScrollNodeIndex for this reference frame. + Some(state.add_clip_scroll_node(ClipScrollNode::placeholder())) + } else { + None + }; + // We are getting the id of the scroll root that contains us here, not the id of // any scroll root that we create. If we create a scroll root, its index will be // stored in state.current_clipping_and_scrolling. If we create a stacking context, @@ -2358,6 +2398,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow { state, &mut preserved_state, stacking_context_type, + established_reference_frame, flags, ); @@ -2371,6 +2412,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow { self.create_real_stacking_context_for_block( preserved_state.stacking_context_id, containing_clipping_and_scrolling, + established_reference_frame, state, ); }, @@ -2392,6 +2434,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow { state: &mut StackingContextCollectionState, preserved_state: &mut SavedStackingContextCollectionState, stacking_context_type: Option<StackingContextType>, + established_reference_frame: Option<ClipScrollNodeIndex>, flags: StackingContextCollectionFlags, ) -> ClippingAndScrolling { // If this block is absolutely positioned, we should be clipped and positioned by @@ -2404,13 +2447,23 @@ impl BlockFlowDisplayListBuilding for BlockFlow { state.containing_block_clipping_and_scrolling }, StylePosition::Fixed => { + // If we are a fixed positioned stacking context, we want to be scrolled by + // our reference frame instead of the clip scroll node that we are inside. preserved_state.push_clip(state, Rect::max_rect(), StylePosition::Fixed); + state.current_clipping_and_scrolling.scrolling = + state.current_parent_reference_frame_id; state.current_clipping_and_scrolling }, _ => state.current_clipping_and_scrolling, }; self.base.clipping_and_scrolling = Some(containing_clipping_and_scrolling); + if let Some(reference_frame_index) = established_reference_frame { + let clipping_and_scrolling = ClippingAndScrolling::simple(reference_frame_index); + state.current_clipping_and_scrolling = clipping_and_scrolling; + self.base.clipping_and_scrolling = Some(clipping_and_scrolling); + } + let stacking_relative_border_box = if self.fragment.establishes_stacking_context() { self.stacking_relative_border_box(CoordinateSystem::Own) } else { @@ -2658,6 +2711,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow { &self.base, ScrollPolicy::Scrollable, stacking_context_type, + None, parent_clipping_and_scrolling, ); state.add_stacking_context(parent_stacking_context_id, new_context); @@ -2683,19 +2737,15 @@ impl BlockFlowDisplayListBuilding for BlockFlow { &mut self, parent_stacking_context_id: StackingContextId, parent_clipping_and_scrolling: ClippingAndScrolling, + established_reference_frame: Option<ClipScrollNodeIndex>, state: &mut StackingContextCollectionState, ) { - let scroll_policy = if self.is_fixed() { - ScrollPolicy::Fixed - } else { - ScrollPolicy::Scrollable - }; - let stacking_context = self.fragment.create_stacking_context( self.base.stacking_context_id, &self.base, - scroll_policy, + ScrollPolicy::Scrollable, StackingContextType::Real, + established_reference_frame, parent_clipping_and_scrolling, ); @@ -2833,6 +2883,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow { &self.base, ScrollPolicy::Scrollable, StackingContextType::Real, + None, state.current_clipping_and_scrolling, ); diff --git a/components/layout/display_list/items.rs b/components/layout/display_list/items.rs index 09539050789..7d293996c58 100644 --- a/components/layout/display_list/items.rs +++ b/components/layout/display_list/items.rs @@ -38,14 +38,25 @@ pub static BLUR_INFLATION_FACTOR: i32 = 3; /// An index into the vector of ClipScrollNodes. During WebRender conversion these nodes /// are given ClipIds. #[derive(Clone, Copy, Debug, PartialEq, Serialize)] -pub struct ClipScrollNodeIndex(pub usize); +pub struct ClipScrollNodeIndex(usize); impl ClipScrollNodeIndex { + pub fn root_scroll_node() -> ClipScrollNodeIndex { + ClipScrollNodeIndex(1) + } + + pub fn root_reference_frame() -> ClipScrollNodeIndex { + ClipScrollNodeIndex(0) + } + + pub fn new(index: usize) -> ClipScrollNodeIndex { + assert_ne!(index, 0, "Use the root_reference_frame constructor"); + assert_ne!(index, 1, "Use the root_scroll_node constructor"); + ClipScrollNodeIndex(index) + } + pub fn is_root_scroll_node(&self) -> bool { - match *self { - ClipScrollNodeIndex(0) => true, - _ => false, - } + *self == Self::root_scroll_node() } pub fn to_define_item(&self) -> DisplayItem { @@ -54,6 +65,10 @@ impl ClipScrollNodeIndex { node_index: *self, })) } + + pub fn to_index(self) -> usize { + self.0 + } } /// A set of indices into the clip scroll node vector for a given item. @@ -193,6 +208,9 @@ pub struct StackingContext { /// The clip and scroll info for this StackingContext. pub parent_clipping_and_scrolling: ClippingAndScrolling, + + /// The index of the reference frame that this stacking context estalishes. + pub established_reference_frame: Option<ClipScrollNodeIndex>, } impl StackingContext { @@ -211,6 +229,7 @@ impl StackingContext { perspective: Option<LayoutTransform>, scroll_policy: ScrollPolicy, parent_clipping_and_scrolling: ClippingAndScrolling, + established_reference_frame: Option<ClipScrollNodeIndex>, ) -> StackingContext { StackingContext { id, @@ -225,6 +244,7 @@ impl StackingContext { perspective, scroll_policy, parent_clipping_and_scrolling, + established_reference_frame, } } @@ -242,7 +262,8 @@ impl StackingContext { TransformStyle::Flat, None, ScrollPolicy::Scrollable, - ClippingAndScrolling::simple(ClipScrollNodeIndex(0)), + ClippingAndScrolling::simple(ClipScrollNodeIndex::root_scroll_node()), + None, ) } @@ -309,15 +330,16 @@ impl fmt::Debug for StackingContext { } } -#[derive(Clone, Debug, Serialize)] +#[derive(Clone, Debug, PartialEq, Serialize)] pub struct StickyFrameData { pub margins: SideOffsets2D<Option<f32>>, pub vertical_offset_bounds: StickyOffsetBounds, pub horizontal_offset_bounds: StickyOffsetBounds, } -#[derive(Clone, Debug, Serialize)] +#[derive(Clone, Debug, PartialEq, Serialize)] pub enum ClipScrollNodeType { + Placeholder, ScrollFrame(ScrollSensitivity, ExternalScrollId), StickyFrame(StickyFrameData), Clip, @@ -339,6 +361,21 @@ pub struct ClipScrollNode { pub node_type: ClipScrollNodeType, } +impl ClipScrollNode { + pub fn placeholder() -> ClipScrollNode { + ClipScrollNode { + parent_index: ClipScrollNodeIndex(0), + clip: ClippingRegion::from_rect(LayoutRect::zero()), + content_rect: LayoutRect::zero(), + node_type: ClipScrollNodeType::Placeholder, + } + } + + pub fn is_placeholder(&self) -> bool { + self.node_type == ClipScrollNodeType::Placeholder + } +} + /// One drawing command in the list. #[derive(Clone, Serialize)] pub enum DisplayItem { @@ -412,7 +449,8 @@ impl BaseDisplayItem { clip_rect: LayoutRect::max_rect(), section: DisplayListSection::Content, stacking_context_id: StackingContextId::root(), - clipping_and_scrolling: ClippingAndScrolling::simple(ClipScrollNodeIndex(0)), + clipping_and_scrolling: + ClippingAndScrolling::simple(ClipScrollNodeIndex::root_scroll_node()), } } } diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index 30f61386b92..da66b9c2b80 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -41,7 +41,12 @@ impl WebRenderDisplayListConverter for DisplayList { let mut clip_ids = Vec::with_capacity(self.clip_scroll_nodes.len()); clip_ids.resize(self.clip_scroll_nodes.len(), None); - clip_ids[0] = Some(ClipId::root_scroll_node(pipeline_id.to_webrender())); + + // We need to add the WebRender root reference frame and root scroll node ids + // here manually, because WebRender creates these automatically. + let webrender_pipeline = pipeline_id.to_webrender(); + clip_ids[0] = Some(ClipId::root_reference_frame(webrender_pipeline)); + clip_ids[1] = Some(ClipId::root_scroll_node(webrender_pipeline)); for item in &self.list { item.convert_to_webrender( @@ -78,7 +83,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { current_clip_and_scroll_info: &mut ClipAndScrollInfo, ) { let get_id = |clip_ids: &[Option<ClipId>], index: ClipScrollNodeIndex| -> ClipId { - match clip_ids[index.0] { + match clip_ids[index.to_index()] { Some(id) => id, None => unreachable!("Tried to use WebRender ClipId before it was defined."), } @@ -214,7 +219,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { let stacking_context = &item.stacking_context; debug_assert_eq!(stacking_context.context_type, StackingContextType::Real); - builder.push_stacking_context( + let reference_frame_clip_id = builder.push_stacking_context( &webrender_api::LayoutPrimitiveInfo::new(stacking_context.bounds), None, stacking_context.scroll_policy, @@ -225,10 +230,17 @@ impl WebRenderDisplayItemConverter for DisplayItem { stacking_context.filters.clone(), GlyphRasterSpace::Screen, ); + + match (reference_frame_clip_id, stacking_context.established_reference_frame) { + (Some(webrender_id), Some(frame_index)) => + clip_ids[frame_index.to_index()] = Some(webrender_id), + (None, None) => {}, + _ => warn!("Mismatch between reference frame establishment!"), + } }, DisplayItem::PopStackingContext(_) => builder.pop_stacking_context(), DisplayItem::DefineClipScrollNode(ref item) => { - let node = &clip_scroll_nodes[item.node_index.0]; + let node = &clip_scroll_nodes[item.node_index.to_index()]; let parent_id = get_id(clip_ids, node.parent_index); let item_rect = node.clip.main; @@ -262,9 +274,12 @@ impl WebRenderDisplayItemConverter for DisplayItem { builder.pop_clip_id(); id }, + ClipScrollNodeType::Placeholder => { + unreachable!("Found DefineClipScrollNode for Placeholder type node."); + } }; - clip_ids[item.node_index.0] = Some(webrender_id); + clip_ids[item.node_index.to_index()] = Some(webrender_id); }, } } diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index a1c84da3569..38ea9d03b93 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -2474,6 +2474,12 @@ impl Fragment { stacking_relative_border_box.size.height - border_padding.vertical())) } + /// Returns true if this fragment may establish a reference frame. + pub fn can_establish_reference_frame(&self) -> bool { + !self.style().get_box().transform.0.is_empty() || + self.style().get_box().perspective != Perspective::None + } + /// Returns true if this fragment has a filter, transform, or perspective property set. pub fn has_filter_transform_or_perspective(&self) -> bool { !self.style().get_box().transform.0.is_empty() || diff --git a/components/layout/text.rs b/components/layout/text.rs index d7763a8e570..15fecd3f7d1 100644 --- a/components/layout/text.rs +++ b/components/layout/text.rs @@ -16,7 +16,7 @@ use gfx::text::text_run::TextRun; use gfx::text::util::{self, CompressionMode}; use inline::{InlineFragmentNodeFlags, InlineFragments}; use linked_list::split_off_head; -use ordered_float::NotNaN; +use ordered_float::NotNan; use range::Range; use servo_atoms::Atom; use std::borrow::ToOwned; @@ -183,7 +183,7 @@ impl TextRunScanner { letter_spacing = inherited_text_style.letter_spacing; word_spacing = inherited_text_style.word_spacing.value() .map(|lop| lop.to_hash_key()) - .unwrap_or((Au(0), NotNaN::new(0.0).unwrap())); + .unwrap_or((Au(0), NotNan::new(0.0).unwrap())); text_rendering = inherited_text_style.text_rendering; word_break = inherited_text_style.word_break; } diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index f6089962b47..56e427c983a 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -32,7 +32,7 @@ bitflags = "1.0" byteorder = "1.0" cfg-if = "0.1.0" cssparser = "0.23.0" -debug_unreachable = "0.1.1" +new_debug_unreachable = "1.0" encoding_rs = {version = "0.7", optional = true} euclid = "0.17" fallible = { path = "../fallible" } @@ -49,7 +49,7 @@ matches = "0.1" num_cpus = {version = "1.1.0", optional = true} num-integer = "0.1.32" num-traits = "0.1.32" -ordered-float = "0.4" +new-ordered-float = "1.0" owning_ref = "0.3.3" parking_lot = "0.5" precomputed-hash = "0.1.1" diff --git a/components/style/values/computed/length.rs b/components/style/values/computed/length.rs index 2518b8c0a3f..0ff99a08a3f 100644 --- a/components/style/values/computed/length.rs +++ b/components/style/values/computed/length.rs @@ -6,7 +6,7 @@ use app_units::Au; use logical_geometry::WritingMode; -use ordered_float::NotNaN; +use ordered_float::NotNan; use properties::LonghandId; use std::fmt::{self, Write}; use std::ops::{Add, Neg}; @@ -391,14 +391,14 @@ impl LengthOrPercentage { // CSSFloat doesn't implement Hash, so does CSSPixelLength. Therefore, we still use Au as the // hash key. #[allow(missing_docs)] - pub fn to_hash_key(&self) -> (Au, NotNaN<f32>) { + pub fn to_hash_key(&self) -> (Au, NotNan<f32>) { use self::LengthOrPercentage::*; match *self { - Length(l) => (Au::from(l), NotNaN::new(0.0).unwrap()), - Percentage(p) => (Au(0), NotNaN::new(p.0).unwrap()), + Length(l) => (Au::from(l), NotNan::new(0.0).unwrap()), + Percentage(p) => (Au(0), NotNan::new(p.0).unwrap()), Calc(c) => ( Au::from(c.unclamped_length()), - NotNaN::new(c.percentage()).unwrap(), + NotNan::new(c.percentage()).unwrap(), ), } } diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py index dfc52d4b1dc..2db4bf01c30 100644 --- a/python/mach_bootstrap.py +++ b/python/mach_bootstrap.py @@ -193,18 +193,7 @@ def _activate_virtualenv(topdir, is_firefox): if need_pip_upgrade: # Upgrade pip when virtualenv is created to fix the issue # https://github.com/servo/servo/issues/11074 - if sys.platform in ['msys', 'win32']: - python = _get_exec_path(PYTHON_NAMES, is_valid_path=check_exec_path) - if not python: - sys.exit("Python is either not installed or not found in virtualenv.") - - _process_exec([python, "-m", "pip", "install", "-I", "-U", "pip"]) - else: - pip = _get_exec_path(PIP_NAMES, is_valid_path=check_exec_path) - if not pip: - sys.exit("Python pip is either not installed or not found in virtualenv.") - - _process_exec([pip, "install", "-I", "-U", "pip"]) + _process_exec([python, "-m", "pip", "install", "-I", "-U", "pip"]) for req_rel_path in requirements_paths: req_path = os.path.join(topdir, req_rel_path) @@ -217,11 +206,7 @@ def _activate_virtualenv(topdir, is_firefox): except OSError: pass - pip = _get_exec_path(PIP_NAMES, is_valid_path=check_exec_path) - if not pip: - sys.exit("Python pip is either not installed or not found in virtualenv.") - - _process_exec([pip, "install", "-I", "-r", req_path]) + _process_exec([python, "-m", "pip", "install", "-I", "-r", req_path]) open(marker_path, 'w').close() diff --git a/python/servo/bootstrap_commands.py b/python/servo/bootstrap_commands.py index 18653c9d4da..b422a553003 100644 --- a/python/servo/bootstrap_commands.py +++ b/python/servo/bootstrap_commands.py @@ -234,8 +234,14 @@ class MachCommands(CommandBase): git_dir = path.join(cargo_dir, "git") git_db_dir = path.join(git_dir, "db") git_checkout_dir = path.join(git_dir, "checkouts") - git_db_list = filter(lambda f: not f.startswith('.'), os.listdir(git_db_dir)) - git_checkout_list = os.listdir(git_checkout_dir) + if os.path.isdir(git_db_dir): + git_db_list = filter(lambda f: not f.startswith('.'), os.listdir(git_db_dir)) + else: + git_db_list = [] + if os.path.isdir(git_checkout_dir): + git_checkout_list = os.listdir(git_checkout_dir) + else: + git_checkout_list = [] for d in list(set(git_db_list + git_checkout_list)): crate_name = d.replace("-{}".format(d.split("-")[-1]), "") diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index dbe451afaa8..1b2b14f23a3 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -1273,9 +1273,15 @@ {} ] ], - "console/console-format-specifier-symbol-manual.html": [ + "console/console-number-format-specifiers-symbol-manual.html": [ [ - "/console/console-format-specifier-symbol-manual.html", + "/console/console-number-format-specifiers-symbol-manual.html", + {} + ] + ], + "console/console-string-format-specifier-symbol-manual.html": [ + [ + "/console/console-string-format-specifier-symbol-manual.html", {} ] ], @@ -11803,6 +11809,12 @@ {} ] ], + "html/browsers/history/the-location-interface/reload_post_1-manual.html": [ + [ + "/html/browsers/history/the-location-interface/reload_post_1-manual.html", + {} + ] + ], "html/browsers/offline/application-cache-api/api_status_checking-manual.html": [ [ "/html/browsers/offline/application-cache-api/api_status_checking-manual.html", @@ -98101,6 +98113,18 @@ {} ] ], + "css/WOFF2/directory-knowntags-001.xht": [ + [ + "/css/WOFF2/directory-knowntags-001.xht", + [ + [ + "/css/WOFF2/directory-knowntags-001-ref.xht", + "==" + ] + ], + {} + ] + ], "css/WOFF2/directory-mismatched-tables-001.xht": [ [ "/css/WOFF2/directory-mismatched-tables-001.xht", @@ -98233,18 +98257,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-compression-001.xht": [ - [ - "/css/WOFF2/metadatadisplay-compression-001.xht", - [ - [ - "/css/WOFF2/metadatadisplay-compression-001-ref.xht", - "==" - ] - ], - {} - ] - ], "css/WOFF2/metadatadisplay-encoding-001.xht": [ [ "/css/WOFF2/metadatadisplay-encoding-001.xht", @@ -98317,30 +98329,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-metaOrigLength-001.xht": [ - [ - "/css/WOFF2/metadatadisplay-metaOrigLength-001.xht", - [ - [ - "/css/WOFF2/metadatadisplay-metaOrigLength-001-ref.xht", - "==" - ] - ], - {} - ] - ], - "css/WOFF2/metadatadisplay-metaOrigLength-002.xht": [ - [ - "/css/WOFF2/metadatadisplay-metaOrigLength-002.xht", - [ - [ - "/css/WOFF2/metadatadisplay-metaOrigLength-002-ref.xht", - "==" - ] - ], - {} - ] - ], "css/WOFF2/metadatadisplay-schema-copyright-001.xht": [ [ "/css/WOFF2/metadatadisplay-schema-copyright-001.xht", @@ -100885,18 +100873,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-schema-uniqueid-004.xht": [ - [ - "/css/WOFF2/metadatadisplay-schema-uniqueid-004.xht", - [ - [ - "/css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht", - "==" - ] - ], - {} - ] - ], "css/WOFF2/metadatadisplay-schema-uniqueid-005.xht": [ [ "/css/WOFF2/metadatadisplay-schema-uniqueid-005.xht", @@ -100981,18 +100957,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-schema-vendor-005.xht": [ - [ - "/css/WOFF2/metadatadisplay-schema-vendor-005.xht", - [ - [ - "/css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht", - "==" - ] - ], - {} - ] - ], "css/WOFF2/metadatadisplay-schema-vendor-006.xht": [ [ "/css/WOFF2/metadatadisplay-schema-vendor-006.xht", @@ -101341,6 +101305,18 @@ {} ] ], + "css/WOFF2/tabledata-glyf-origlength-003.xht": [ + [ + "/css/WOFF2/tabledata-glyf-origlength-003.xht", + [ + [ + "/css/WOFF2/tabledata-glyf-origlength-003-ref.xht", + "==" + ] + ], + {} + ] + ], "css/WOFF2/tabledata-non-zero-loca-001.xht": [ [ "/css/WOFF2/tabledata-non-zero-loca-001.xht", @@ -108769,6 +108745,90 @@ {} ] ], + "css/css-contain/contain-layout-008.html": [ + [ + "/css/css-contain/contain-layout-008.html", + [ + [ + "/css/css-contain/reference/contain-paint-013-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-contain/contain-layout-009.html": [ + [ + "/css/css-contain/contain-layout-009.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-contain/contain-layout-010.html": [ + [ + "/css/css-contain/contain-layout-010.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-contain/contain-layout-011.html": [ + [ + "/css/css-contain/contain-layout-011.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-contain/contain-layout-012.html": [ + [ + "/css/css-contain/contain-layout-012.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-contain/contain-layout-013.html": [ + [ + "/css/css-contain/contain-layout-013.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-contain/contain-layout-014.html": [ + [ + "/css/css-contain/contain-layout-014.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-contain/contain-layout-breaks-001.html": [ [ "/css/css-contain/contain-layout-breaks-001.html", @@ -115525,6 +115585,18 @@ {} ] ], + "css/css-flexbox/flexbox_quirks_body.html": [ + [ + "/css/css-flexbox/flexbox_quirks_body.html", + [ + [ + "/css/css-flexbox/reference/flexbox_quirks_body-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-flexbox/flexbox_rowspan-overflow-automatic.html": [ [ "/css/css-flexbox/flexbox_rowspan-overflow-automatic.html", @@ -123705,6 +123777,18 @@ {} ] ], + "css/css-multicol/column-count-used-001.html": [ + [ + "/css/css-multicol/column-count-used-001.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-multicol/float-and-block.html": [ [ "/css/css-multicol/float-and-block.html", @@ -157253,6 +157337,18 @@ {} ] ], + "css/css-writing-modes/float-in-htb-in-vrl.html": [ + [ + "/css/css-writing-modes/float-in-htb-in-vrl.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/float-lft-orthog-htb-in-vlr-002.xht": [ [ "/css/css-writing-modes/float-lft-orthog-htb-in-vlr-002.xht", @@ -235506,6 +235602,11 @@ {} ] ], + "css/WOFF2/directory-knowntags-001-ref.xht": [ + [ + {} + ] + ], "css/WOFF2/directory-mismatched-tables-001-ref.xht": [ [ {} @@ -235561,11 +235662,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-compression-001-ref.xht": [ - [ - {} - ] - ], "css/WOFF2/metadatadisplay-encoding-001-ref.xht": [ [ {} @@ -235596,16 +235692,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-metaOrigLength-001-ref.xht": [ - [ - {} - ] - ], - "css/WOFF2/metadatadisplay-metaOrigLength-002-ref.xht": [ - [ - {} - ] - ], "css/WOFF2/metadatadisplay-schema-copyright-001-ref.xht": [ [ {} @@ -236666,11 +236752,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht": [ - [ - {} - ] - ], "css/WOFF2/metadatadisplay-schema-uniqueid-005-ref.xht": [ [ {} @@ -236706,11 +236787,6 @@ {} ] ], - "css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht": [ - [ - {} - ] - ], "css/WOFF2/metadatadisplay-schema-vendor-006-ref.xht": [ [ {} @@ -236821,6 +236897,21 @@ {} ] ], + "css/WOFF2/support/available-002.woff2": [ + [ + {} + ] + ], + "css/WOFF2/support/available-002a.xht": [ + [ + {} + ] + ], + "css/WOFF2/support/available-002b.xht": [ + [ + {} + ] + ], "css/WOFF2/support/blocks-extraneous-data-001.woff2": [ [ {} @@ -236896,6 +236987,11 @@ {} ] ], + "css/WOFF2/support/directory-knowntags-001.woff2": [ + [ + {} + ] + ], "css/WOFF2/support/directory-mismatched-tables-001.woff2": [ [ {} @@ -236956,11 +237052,6 @@ {} ] ], - "css/WOFF2/support/metadatadisplay-compression-001.woff2": [ - [ - {} - ] - ], "css/WOFF2/support/metadatadisplay-encoding-001.woff2": [ [ {} @@ -236991,16 +237082,6 @@ {} ] ], - "css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2": [ - [ - {} - ] - ], - "css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2": [ - [ - {} - ] - ], "css/WOFF2/support/metadatadisplay-schema-copyright-001.woff2": [ [ {} @@ -238061,11 +238142,6 @@ {} ] ], - "css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2": [ - [ - {} - ] - ], "css/WOFF2/support/metadatadisplay-schema-uniqueid-005.woff2": [ [ {} @@ -238101,11 +238177,6 @@ {} ] ], - "css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2": [ - [ - {} - ] - ], "css/WOFF2/support/metadatadisplay-schema-vendor-006.woff2": [ [ {} @@ -238251,6 +238322,11 @@ {} ] ], + "css/WOFF2/support/tabledata-glyf-origlength-003.woff2": [ + [ + {} + ] + ], "css/WOFF2/support/tabledata-non-zero-loca-001.woff2": [ [ {} @@ -238401,6 +238477,11 @@ {} ] ], + "css/WOFF2/tabledata-glyf-origlength-003-ref.xht": [ + [ + {} + ] + ], "css/WOFF2/tabledata-non-zero-loca-001-ref.xht": [ [ {} @@ -241901,6 +241982,11 @@ {} ] ], + "css/css-flexbox/reference/flexbox_quirks_body-ref.html": [ + [ + {} + ] + ], "css/css-flexbox/reference/flexbox_writing_mode_vertical_lays_out_contents_from_top_to_bottom-ref.html": [ [ {} @@ -251421,6 +251507,11 @@ {} ] ], + "css/css-logical/resources/test-box-properties.js": [ + [ + {} + ] + ], "css/css-masking/OWNERS": [ [ {} @@ -276236,17 +276327,17 @@ {} ] ], - "html/browsers/history/the-location-interface/reload_post_1-1.html": [ + "html/browsers/history/the-location-interface/resources/post-your-origin.html": [ [ {} ] ], - "html/browsers/history/the-location-interface/resources/post-your-origin.html": [ + "html/browsers/history/the-location-interface/resources/post-your-protocol.html": [ [ {} ] ], - "html/browsers/history/the-location-interface/resources/post-your-protocol.html": [ + "html/browsers/history/the-location-interface/resources/reload_post_1-1.py": [ [ {} ] @@ -317891,6 +317982,48 @@ {} ] ], + "css/css-logical/logical-box-border-color.html": [ + [ + "/css/css-logical/logical-box-border-color.html", + {} + ] + ], + "css/css-logical/logical-box-border-style.html": [ + [ + "/css/css-logical/logical-box-border-style.html", + {} + ] + ], + "css/css-logical/logical-box-border-width.html": [ + [ + "/css/css-logical/logical-box-border-width.html", + {} + ] + ], + "css/css-logical/logical-box-inset.html": [ + [ + "/css/css-logical/logical-box-inset.html", + {} + ] + ], + "css/css-logical/logical-box-margin.html": [ + [ + "/css/css-logical/logical-box-margin.html", + {} + ] + ], + "css/css-logical/logical-box-padding.html": [ + [ + "/css/css-logical/logical-box-padding.html", + {} + ] + ], + "css/css-logical/logical-box-size.html": [ + [ + "/css/css-logical/logical-box-size.html", + {} + ] + ], "css/css-logical/logicalprops-block-size-vlr.html": [ [ "/css/css-logical/logicalprops-block-size-vlr.html", @@ -328671,7 +328804,7 @@ } ], [ - "/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html?10001-10000", + "/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html?10001-11000", { "timeout": "long" } @@ -328805,7 +328938,7 @@ } ], [ - "/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html?10001-10000", + "/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html?10001-11000", { "timeout": "long" } @@ -329179,7 +329312,7 @@ } ], [ - "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html?20001-last", + "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html?20001-21000", { "timeout": "long" } @@ -329191,6 +329324,12 @@ } ], [ + "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html?21001-last", + { + "timeout": "long" + } + ], + [ "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html?3001-4000", { "timeout": "long" @@ -329463,7 +329602,7 @@ } ], [ - "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html?20001-last", + "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html?20001-21000", { "timeout": "long" } @@ -329475,6 +329614,12 @@ } ], [ + "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html?21001-last", + { + "timeout": "long" + } + ], + [ "/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html?3001-4000", { "timeout": "long" @@ -330199,7 +330344,7 @@ } ], [ - "/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html?20001-last", + "/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html?20001-21000", { "timeout": "long" } @@ -330211,6 +330356,12 @@ } ], [ + "/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html?21001-last", + { + "timeout": "long" + } + ], + [ "/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html?3001-4000", { "timeout": "long" @@ -330711,7 +330862,7 @@ } ], [ - "/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html?10001-10000", + "/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html?10001-11000", { "timeout": "long" } @@ -334151,43 +334302,7 @@ } ], [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?14001-15000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?15001-16000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?16001-17000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?17001-18000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?18001-19000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?19001-20000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?20001-21000", + "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?14001-last", { "timeout": "long" } @@ -334199,24 +334314,6 @@ } ], [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?21001-22000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?22001-23000", - { - "timeout": "long" - } - ], - [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?23001-last", - { - "timeout": "long" - } - ], - [ "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html?3001-4000", { "timeout": "long" @@ -334267,7 +334364,7 @@ } ], [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html?10001-10000", + "/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html?10001-11000", { "timeout": "long" } @@ -334367,12 +334464,42 @@ } ], [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?10001-11000", + { + "timeout": "long" + } + ], + [ "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?1001-2000", { "timeout": "long" } ], [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?11001-12000", + { + "timeout": "long" + } + ], + [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?12001-13000", + { + "timeout": "long" + } + ], + [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?13001-14000", + { + "timeout": "long" + } + ], + [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?14001-last", + { + "timeout": "long" + } + ], + [ "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?2001-3000", { "timeout": "long" @@ -334403,7 +334530,19 @@ } ], [ - "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?7001-last", + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?7001-8000", + { + "timeout": "long" + } + ], + [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?8001-9000", + { + "timeout": "long" + } + ], + [ + "/encoding/legacy-mb-tchinese/big5/big5-encode-href.html?9001-10000", { "timeout": "long" } @@ -338499,12 +338638,6 @@ {} ] ], - "html/browsers/history/the-location-interface/reload_post_1.html": [ - [ - "/html/browsers/history/the-location-interface/reload_post_1.html", - {} - ] - ], "html/browsers/history/the-location-interface/scripted_click_assign_during_load.html": [ [ "/html/browsers/history/the-location-interface/scripted_click_assign_during_load.html", @@ -362747,6 +362880,16 @@ {} ] ], + "priority-hints/fetch-api-request.tentative.any.js": [ + [ + "/priority-hints/fetch-api-request.tentative.any.html", + {} + ], + [ + "/priority-hints/fetch-api-request.tentative.any.worker.html", + {} + ] + ], "priority-hints/img-attr-named-constructor.tentative.html": [ [ "/priority-hints/img-attr-named-constructor.tentative.html", @@ -401817,6 +401960,12 @@ {} ] ], + "css/WOFF2/available-002.xht": [ + [ + "/css/WOFF2/available-002.xht", + {} + ] + ], "css/compositing/Blending_in_a_group_with_filter.html": [ [ "/css/compositing/Blending_in_a_group_with_filter.html", @@ -410777,7 +410926,7 @@ "support" ], "IndexedDB/support.js": [ - "1a2e89e3be7ba2af3352d5d284666465a5663fb5", + "df25e578a049e65114cedd280d3d7faf5685c09c", "support" ], "IndexedDB/transaction-abort-generator-revert.html": [ @@ -415929,7 +416078,7 @@ "support" ], "common/subset-tests.js": [ - "ee72de5b5f2302d111a0f131eddf5081ad02b789", + "0ec265b2167686390b1c0ef92575780d47c6b1a9", "support" ], "common/test-setting-immutable-prototype.js": [ @@ -433624,14 +433773,18 @@ "a48d28ca0a1d6c5c50dc5d29521563a44beb6590", "testharness" ], - "console/console-format-specifier-symbol-manual.html": [ - "d3301d5fa86c5acad2dd4daec1d42ee7a7ef8732", - "manual" - ], "console/console-is-a-namespace.any.js": [ "9ad845184a6dd40b1ab64992ca514dbf4736c930", "testharness" ], + "console/console-number-format-specifiers-symbol-manual.html": [ + "a0b0c97ec5312027ff0152536458071254235d01", + "manual" + ], + "console/console-string-format-specifier-symbol-manual.html": [ + "d3126f4c136d646f79f2534f66b4d9f8d0c5c67d", + "manual" + ], "console/console-tests-historical.any.js": [ "ee18f8a672534b478ca15990026638a73588fcf4", "testharness" @@ -492405,7 +492558,11 @@ "support" ], "css/WOFF2/available-001.xht": [ - "2e779891c0ea5e90aca58752e409da84d9613002", + "0aab71e1e232626d4cef4a2de34f7feefe4d0618", + "visual" + ], + "css/WOFF2/available-002.xht": [ + "c878bbfc6db1b6ec424cc32a15d170817795228a", "visual" ], "css/WOFF2/blocks-extraneous-data-001-ref.xht": [ @@ -492528,6 +492685,14 @@ "90cb6da506d06546d9c0627d59b425e212398f4e", "reftest" ], + "css/WOFF2/directory-knowntags-001-ref.xht": [ + "ada263b85badb59ea702f1670a283038d3ad9a9a", + "support" + ], + "css/WOFF2/directory-knowntags-001.xht": [ + "e9c0f0b53a7f690b68ce87ad6c9664530335dba8", + "reftest" + ], "css/WOFF2/directory-mismatched-tables-001-ref.xht": [ "8870e36b34179708b5a595935da3fdc9c8080468", "support" @@ -492616,14 +492781,6 @@ "3f148fdf8e60bbae09905094cef592bf66b682fa", "reftest" ], - "css/WOFF2/metadatadisplay-compression-001-ref.xht": [ - "1c50594e625c68ab131a0e762aa332a0fa126cab", - "support" - ], - "css/WOFF2/metadatadisplay-compression-001.xht": [ - "e00eb68fe9ff26fc2369c40061748accd6788eda", - "reftest" - ], "css/WOFF2/metadatadisplay-encoding-001-ref.xht": [ "4eb8e30e5f51b0c7ffe9301849088c2424abe3c4", "support" @@ -492672,22 +492829,6 @@ "5bc6c2234455f2ce75d46bdc619daa3c6cf5d740", "reftest" ], - "css/WOFF2/metadatadisplay-metaOrigLength-001-ref.xht": [ - "ac2ae417246c466d01062799c40f62d68cf75a4e", - "support" - ], - "css/WOFF2/metadatadisplay-metaOrigLength-001.xht": [ - "fee557449493df24fc552f74e625b545dabcb536", - "reftest" - ], - "css/WOFF2/metadatadisplay-metaOrigLength-002-ref.xht": [ - "b7bad5321ae0d79c8258982ab783f67a19546db5", - "support" - ], - "css/WOFF2/metadatadisplay-metaOrigLength-002.xht": [ - "1d6119b7aa72b983e3633584759fed752c5c6ad2", - "reftest" - ], "css/WOFF2/metadatadisplay-schema-copyright-001-ref.xht": [ "86142803798c5f4e0b8df50c4f4ece8391086da4", "support" @@ -494384,14 +494525,6 @@ "2537f8710b296e9df2a28bd0031c5971cbad86b6", "reftest" ], - "css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht": [ - "df78ebeb86195face36831285f35034719d7ccea", - "support" - ], - "css/WOFF2/metadatadisplay-schema-uniqueid-004.xht": [ - "4b363d40faa79270a4c726c8a23a14e4b33dd562", - "reftest" - ], "css/WOFF2/metadatadisplay-schema-uniqueid-005-ref.xht": [ "ad5e224370b744c9faa675056fa5d30695fe426b", "support" @@ -494448,14 +494581,6 @@ "940b65930059774e3c9e4ae22ea27b0dd53e0851", "reftest" ], - "css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht": [ - "fb91c0dc9d593d09263b5e36fa8150ccb52d087d", - "support" - ], - "css/WOFF2/metadatadisplay-schema-vendor-005.xht": [ - "c32d88a29e1d156b78ea2a052c04d031d9f52d9b", - "reftest" - ], "css/WOFF2/metadatadisplay-schema-vendor-006-ref.xht": [ "3d68b2d1443e4c3de3c21f9eda8e976e6a596026", "support" @@ -494601,11 +494726,23 @@ "support" ], "css/WOFF2/support/available-001a.xht": [ - "b3855f0368089ab100ed07556c86ba722379afb5", + "f0f8d0c812c04e9d8d92de518c3c5ee3c5be6d72", "support" ], "css/WOFF2/support/available-001b.xht": [ - "c8cd9549a60cc51f2a151d68e5a8f1fc1d171a45", + "40b719cc57be9a9fb1abcb2387914af8b6b13908", + "support" + ], + "css/WOFF2/support/available-002.woff2": [ + "bbaf83c6cf1e9f1eb6af7246d9ad732f88c4d27f", + "support" + ], + "css/WOFF2/support/available-002a.xht": [ + "4846124a378a0ac0563358cb5ed7cf324d4b28fa", + "support" + ], + "css/WOFF2/support/available-002b.xht": [ + "aa13699a7a06c0a73cb9deed94056343bfa54855", "support" ], "css/WOFF2/support/blocks-extraneous-data-001.woff2": [ @@ -494668,6 +494805,10 @@ "5a885fdcd771f075bcfba54dcdb16b371d0bcccd", "support" ], + "css/WOFF2/support/directory-knowntags-001.woff2": [ + "b434ac11f6f0c49294f88993c34d5ddcbe67cfda", + "support" + ], "css/WOFF2/support/directory-mismatched-tables-001.woff2": [ "013fa4309fc83aca62a22a9105fb0af2455b7a95", "support" @@ -494716,10 +494857,6 @@ "71872d4b1ac0f01427ff6d6624ab892805274969", "support" ], - "css/WOFF2/support/metadatadisplay-compression-001.woff2": [ - "1a80b36fc0f2eb19c192542922f893f8f4ae1a59", - "support" - ], "css/WOFF2/support/metadatadisplay-encoding-001.woff2": [ "af7ba905cd3a99c9b0e4972b5f6ebda7ceecc290", "support" @@ -494744,14 +494881,6 @@ "17f709e28841a1bc435c88bbbd921e055d78ddad", "support" ], - "css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2": [ - "01060bc6c393ddcabdc19921469c87d7ef47ad72", - "support" - ], - "css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2": [ - "86cea26fb940b45a5b2ee756aed56ca82436eb25", - "support" - ], "css/WOFF2/support/metadatadisplay-schema-copyright-001.woff2": [ "22c45c35ac3e39b15327a48d91500f199e04e416", "support" @@ -495600,10 +495729,6 @@ "c01027878d213127be2d8c7ed02896657e94ecbc", "support" ], - "css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2": [ - "1e4a7a0573dad685a23ce739fda52a7503e901b4", - "support" - ], "css/WOFF2/support/metadatadisplay-schema-uniqueid-005.woff2": [ "ff3530d375c8d87bfd6b13bab3a6589024917fa4", "support" @@ -495632,10 +495757,6 @@ "085f98baca38f22b06f96da2242c272a444b9247", "support" ], - "css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2": [ - "2fa20a59d351fad0bec7fbd8cf4a2cb445ac18be", - "support" - ], "css/WOFF2/support/metadatadisplay-schema-vendor-006.woff2": [ "8c23ea5d233c064b62cbfc4e98db85faf798b878", "support" @@ -495752,6 +495873,10 @@ "c635e28422a94bada295360324d9719a58267413", "support" ], + "css/WOFF2/support/tabledata-glyf-origlength-003.woff2": [ + "0c58e88818e1fb83818805d578c2c5f274736c76", + "support" + ], "css/WOFF2/support/tabledata-non-zero-loca-001.woff2": [ "49352d1160b3dbdaeaf7c8055e4b556d00ec4ce1", "support" @@ -495924,6 +496049,14 @@ "327c6fa746f6e8ff256626b043d2fa9be6ce42c7", "reftest" ], + "css/WOFF2/tabledata-glyf-origlength-003-ref.xht": [ + "7507f42fdd6aafdf65871bcfbb8a908fc3da78ee", + "support" + ], + "css/WOFF2/tabledata-glyf-origlength-003.xht": [ + "513579d874b497478c880b5620e3a29865ce5fe2", + "reftest" + ], "css/WOFF2/tabledata-non-zero-loca-001-ref.xht": [ "6d6c3b481fc5890f8a4654ddf7c3e32bf6e2947e", "support" @@ -495989,7 +496122,7 @@ "reftest" ], "css/WOFF2/testcaseindex.xht": [ - "cecf29c942d42bd8c8bc5df0c3e3f2ca3ee35016", + "61e31662525a66543159dc57c85b5d014bfb1403", "support" ], "css/WOFF2/valid-001-ref.xht": [ @@ -501705,23 +501838,23 @@ "support" ], "css/css-contain/contain-layout-001.html": [ - "937507caf01330e9beafc7a5ba850284d35c4369", + "325039fe561cd040fe680c42155a53d59eaf114e", "reftest" ], "css/css-contain/contain-layout-002.html": [ - "f37c06237a09aea4eaa09bdc08d9969f7763f0b7", + "950f95e3be4bfa0b7458699e1f34e6f0567b9a35", "reftest" ], "css/css-contain/contain-layout-003.html": [ - "b031fdb81e39d3044e133e6e332aff31b2844d8a", + "ab1c4fa31dd731e4b0993c4a2a2ba8d82ec3d524", "reftest" ], "css/css-contain/contain-layout-004.html": [ - "dea2a6b1dada9e57f36d2245ac67c05fd9c4ad0b", + "bb9d7c13fa5745171c5e3319e04e7dc1c4007807", "reftest" ], "css/css-contain/contain-layout-005.html": [ - "60b834ef7b5becf76f5cacd55b2b9c4774562637", + "26160f813c0b3e5c963d4aae7bb23f90e9956941", "reftest" ], "css/css-contain/contain-layout-006.html": [ @@ -501732,6 +501865,34 @@ "799965dfb9989fc3a8226e80fa3c67cafb24374b", "reftest" ], + "css/css-contain/contain-layout-008.html": [ + "f06682f9240a713a2e8aa3d3eb439b75a14abe82", + "reftest" + ], + "css/css-contain/contain-layout-009.html": [ + "3a8655c7fb8f607886e0214f2508e2eec518b21f", + "reftest" + ], + "css/css-contain/contain-layout-010.html": [ + "6b05164d4abe8469404a36b8a37a94e975d1df5d", + "reftest" + ], + "css/css-contain/contain-layout-011.html": [ + "cd642fe5a0ab00d9e0bba9f05da25f61f128c6e9", + "reftest" + ], + "css/css-contain/contain-layout-012.html": [ + "affcd347ab4212194504fe97f2a7a8c8630d9286", + "reftest" + ], + "css/css-contain/contain-layout-013.html": [ + "0a65acb189add340bc231936785f30d586aac4da", + "reftest" + ], + "css/css-contain/contain-layout-014.html": [ + "08bea5d1d2a8cac172e232d86ecf99926e027817", + "reftest" + ], "css/css-contain/contain-layout-breaks-001.html": [ "09fcfd311126800c7ce63f27c3154ef31fc647bd", "reftest" @@ -506132,6 +506293,10 @@ "3f8ea7d7e6b8ab8d0473aebfdedc108c34f732a1", "reftest" ], + "css/css-flexbox/flexbox_quirks_body.html": [ + "b39447c4a7eba1ec321ae469fbd6442b1ef05445", + "reftest" + ], "css/css-flexbox/flexbox_rowspan-overflow-automatic.html": [ "d13114027f1508a37406ad333f8b39882eba9fe8", "reftest" @@ -506884,6 +507049,10 @@ "a69d1222f1ea291ef87ca0e996de93171aca28aa", "support" ], + "css/css-flexbox/reference/flexbox_quirks_body-ref.html": [ + "307f46b4cedc1acf40c0a267b1175098a51c7245", + "support" + ], "css/css-flexbox/reference/flexbox_writing_mode_vertical_lays_out_contents_from_top_to_bottom-ref.html": [ "696a426eca7e126eef17fc995bbe794ae60af0ca", "support" @@ -517828,6 +517997,34 @@ "a94344f196774b463dff39c022a48a0cc5585c88", "reftest" ], + "css/css-logical/logical-box-border-color.html": [ + "9e3a2a3796bf840f0e3ff78e54ad0382adff5b36", + "testharness" + ], + "css/css-logical/logical-box-border-style.html": [ + "b4e50119630c3b3b82f8ffbd03d7e221d77735f7", + "testharness" + ], + "css/css-logical/logical-box-border-width.html": [ + "22e99144abdf927b195bec6aee59a41eb5b00700", + "testharness" + ], + "css/css-logical/logical-box-inset.html": [ + "a409ba1436ca88743278cd811bb7345560ccec23", + "testharness" + ], + "css/css-logical/logical-box-margin.html": [ + "b4812c03f505f096b97d752608defb604f683a67", + "testharness" + ], + "css/css-logical/logical-box-padding.html": [ + "4f14cc4e6bd3623f6a55a6694039bd172e7a2361", + "testharness" + ], + "css/css-logical/logical-box-size.html": [ + "f0a5d18ea2a33fbde40e290de33e7c1d3a1fc378", + "testharness" + ], "css/css-logical/logicalprops-block-size-vlr.html": [ "b77a4607318ab1c8a1cf292a83618720210cf3cf", "testharness" @@ -517848,6 +518045,10 @@ "3024bbd54e4cbe1ee55e59684188587e2a56fda6", "testharness" ], + "css/css-logical/resources/test-box-properties.js": [ + "132f6024928641f0cd1f0580e69126a8ab02eba8", + "support" + ], "css/css-masking/OWNERS": [ "388433ab37e52bf8982700fad3ffd34b8ecae122", "support" @@ -518688,6 +518889,10 @@ "7dc7d3872831592215162aff9196d55032c5c31f", "support" ], + "css/css-multicol/column-count-used-001.html": [ + "61068e123633b0ffacaae1f025e72cb94065cef5", + "reftest" + ], "css/css-multicol/extremely-tall-multicol-with-extremely-tall-child-crash.html": [ "43a6f9e055b908a42b5811d6ce5e48acf8c9ed08", "testharness" @@ -542988,6 +543193,10 @@ "4cbcdb79cf6f1359855fd4c9668327bdbd15859b", "reftest" ], + "css/css-writing-modes/float-in-htb-in-vrl.html": [ + "17eaf8be10afb7fc1b5c6f861624365875667711", + "reftest" + ], "css/css-writing-modes/float-lft-orthog-htb-in-vlr-002-ref.xht": [ "3a6acd515d3631525965d274582b81f7df575a2d", "support" @@ -559965,7 +560174,7 @@ "testharness" ], "custom-elements/Document-createElement.html": [ - "46e64c9f412fb04582f8ec287e08783ac83cb933", + "5beef262e1e1a1c98eb320019c88d9a7bda02ba5", "testharness" ], "custom-elements/Document-createElementNS.html": [ @@ -562857,7 +563066,7 @@ "support" ], "encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html": [ - "033c5ce0f5b992f81ccf4838da120ea097268548", + "567cd4f8b9b399aa1b9b548cd380c72b10014334", "testharness" ], "encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html.headers": [ @@ -562865,7 +563074,7 @@ "support" ], "encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html": [ - "fc46574bdb29fdd33a850b5cfc15640e02587185", + "8cf5d13b80fc9cd4926ba721a70ba5f1e9fcb375", "testharness" ], "encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html.headers": [ @@ -562957,7 +563166,7 @@ "support" ], "encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html": [ - "a22811fdbd126d98b234c2618919f65b426bfeec", + "c0b4ef19b0c83907206f0dc7664b27cb23b55a0f", "testharness" ], "encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html.headers": [ @@ -562993,7 +563202,7 @@ "support" ], "encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html": [ - "c50d0ffb66e826113397c0af8ef20b7e9794a179", + "b5159b733b3fc457bf1afce00d8a472f541133db", "testharness" ], "encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html.headers": [ @@ -563109,7 +563318,7 @@ "support" ], "encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html": [ - "6c166a30f84f442a3aeb803aa9861c406718baee", + "8ed904fd4990c98c9fa34c48e803c5291e4a7074", "testharness" ], "encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html.headers": [ @@ -563189,7 +563398,7 @@ "support" ], "encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html": [ - "191b78f2db1a27fa19970985a330e77ed5e48578", + "6653ad373c3a6a6da6b9c54496d11df28330e953", "testharness" ], "encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html.headers": [ @@ -563353,7 +563562,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html": [ - "ec39f68af9894ab6b633d57ac58060ae1ee49d77", + "c14259cc33e9b8fd27387be8255805304d2e6e61", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html.headers": [ @@ -563361,7 +563570,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html": [ - "369a386e8983d3c15e3cd7ac6ff8ba10b28cfa5e", + "bf4faa3b4fcf8ffcf0c2465b04862fbde94e8f51", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html.headers": [ @@ -563377,7 +563586,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html": [ - "152db8284caf186d03bfca5396a72fe6a1715449", + "f69a2077e68204fa3101ccee35dca786d6f52a76", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html.headers": [ @@ -563385,7 +563594,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html": [ - "0dc06f5158ee41f26e801c2a584bd207118d8fbc", + "5207b03d246f6019bee7730e66f2925f331e6f4f", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html.headers": [ @@ -563393,7 +563602,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html": [ - "3cb58cf45311173bd63449dd264ebc8e77e7461f", + "288b720da24c09a8c67b9c266fadbbf211575739", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html.headers": [ @@ -563401,7 +563610,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html": [ - "4fbe2e412e07a5cc24876287f0ab57dbf83b9aa6", + "52a2d7707819ca3828e31edf3e74afd77d3de7ef", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html.headers": [ @@ -563417,7 +563626,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html": [ - "29531cacec50549c48d974b7cbbb1b70da4be633", + "1298821171b1f926338b3f5ebad5fd0f3f645c77", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html.headers": [ @@ -563441,7 +563650,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html": [ - "01d7933e6995c9afbeba289b0e2219d636b8cc7f", + "ecffcf53cb5e847e33c386a2e25fc49382f69f4c", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html.headers": [ @@ -563457,7 +563666,7 @@ "support" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html": [ - "447babc2cfcbc5fc54662313b173d143e975b46c", + "3fc406d1e3cf552f941354609d3020982cdd41c0", "testharness" ], "encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html.headers": [ @@ -563685,7 +563894,7 @@ "support" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html": [ - "cd684a384fa563ba8bad826bdb77878e71198590", + "81a3309eeec6dfacef31aa4fde764e3b2b0768ea", "testharness" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html.headers": [ @@ -563693,7 +563902,7 @@ "support" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html": [ - "cfa27f2ec91d0f38416a12f9581eb09e3169f91b", + "618819c0aec5e9d2404924aee0eeeaf4f1fa7dc0", "testharness" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html.headers": [ @@ -563701,7 +563910,7 @@ "support" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html": [ - "f55a2bfb2bc00720126b19e7aace7869b2e0e5c5", + "268ea8e20b64f6e025b62fdc1035bb8ecf808039", "testharness" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html.headers": [ @@ -563709,7 +563918,7 @@ "support" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href.html": [ - "7470f06a2c26f807162834dec74e848b7bd1a004", + "d49db53d857f72997e6dcae6babc749ac22bdcbe", "testharness" ], "encoding/legacy-mb-tchinese/big5/big5-encode-href.html.headers": [ @@ -565813,7 +566022,7 @@ "testharness" ], "fetch/api/request/request-bad-port.html": [ - "1e4fbcdad22c78c6774c2496b70f6a3ede4a7c34", + "5436112676d73fb12b31723ec7b2f4700eef03fd", "testharness" ], "fetch/api/request/request-cache-default-conditional.html": [ @@ -569444,13 +569653,9 @@ "768c7cdbd792aba7675e9bb519c48d32775ed5cb", "testharness" ], - "html/browsers/history/the-location-interface/reload_post_1-1.html": [ - "656f35b990b49ec854580bcaa860e718e463a0e4", - "support" - ], - "html/browsers/history/the-location-interface/reload_post_1.html": [ - "3f86c065f9ea20c9b9a0c6fd2f0fd94ae73f3088", - "testharness" + "html/browsers/history/the-location-interface/reload_post_1-manual.html": [ + "57cab7b8fd84b0890771ca3be4abb3bb826056a6", + "manual" ], "html/browsers/history/the-location-interface/resources/post-your-origin.html": [ "56c03a4c666d4ae3498fafb9c507d6ef16508179", @@ -569460,6 +569665,10 @@ "d6a54e137ca516d16fb64bed157b0ac3ceaab99c", "support" ], + "html/browsers/history/the-location-interface/resources/reload_post_1-1.py": [ + "d3313fa0cf5c9d6a423d8e72d76f186d2d6ef686", + "support" + ], "html/browsers/history/the-location-interface/same_origin_frame.html": [ "ffabc8fb608c6dad4e7d1d148a4d77cdc4231e68", "support" @@ -569845,7 +570054,7 @@ "testharness" ], "html/browsers/sandboxing/sandbox-disallow-same-origin.html": [ - "5227604766655481e4a168c603de51772f93c41e", + "62e0e820de95397a412e9ea4f5a8d34255a9b552", "testharness" ], "html/browsers/sandboxing/sandbox-disallow-scripts.html": [ @@ -577613,7 +577822,7 @@ "testharness" ], "html/rendering/non-replaced-elements/tables/hidden-attr.html": [ - "dd0173850f4593c883b24f28a750462bf0bae0e5", + "3f64410ffad71115b509911f846fbc35208f10f8", "testharness" ], "html/rendering/non-replaced-elements/tables/table-border-1-ref.html": [ @@ -587765,7 +587974,7 @@ "support" ], "interfaces/payment-request.idl": [ - "8bf519a543c72c282ac08f3feb2b5522913ec82f", + "594179265efe3f056059ba834da5e1873c3e6174", "support" ], "interfaces/pointerevents.idl": [ @@ -598888,6 +599097,10 @@ "bb8339b99aba30b127cd21f1396278ba55aec1c9", "support" ], + "priority-hints/fetch-api-request.tentative.any.js": [ + "7a70e7a8bb65ce50a646d312db8e9259d2c8688f", + "testharness" + ], "priority-hints/img-attr-named-constructor.tentative.html": [ "7c30cb250fb854916a8bf87a4fd5c049ee1dcf5b", "testharness" @@ -620333,7 +620546,7 @@ "testharness" ], "websockets/Create-blocked-port.any.js": [ - "e09fb109af886f9f85a7ba94556158e0d8a19a52", + "8c2ebbc8199bc7b74d5ff8e61307a36c9ffc4786", "testharness" ], "websockets/Create-invalid-urls.any.js": [ @@ -626245,7 +626458,7 @@ "testharness" ], "xhr/event-upload-progress.htm": [ - "4970811cfd2c1bdd1a08af6dd16eda8ffbff8ffd", + "f8a1ab4e69e60915e1e05bd465fdb07b7cc2211e", "testharness" ], "xhr/firing-events-http-content-length.html": [ diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini index 7c80799aece..b075270b5f3 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini @@ -38,3 +38,6 @@ [Test @font-face matching for weight 249] expected: FAIL + [Test @font-face matching for weight 420] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/request/request-bad-port.html.ini b/tests/wpt/metadata/fetch/api/request/request-bad-port.html.ini new file mode 100644 index 00000000000..6143800f34d --- /dev/null +++ b/tests/wpt/metadata/fetch/api/request/request-bad-port.html.ini @@ -0,0 +1,89 @@ +[request-bad-port.html] + expected: TIMEOUT + [Request on bad port 427 should throw TypeError.] + expected: TIMEOUT + + [Request on bad port 465 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 512 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 513 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 514 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 515 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 526 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 530 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 531 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 532 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 540 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 548 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 556 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 563 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 587 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 601 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 636 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 993 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 995 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 2049 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 3659 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 4045 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6000 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6665 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6666 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6667 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6668 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6669 should throw TypeError.] + expected: NOTRUN + + [Request on bad port 6697 should throw TypeError.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini deleted file mode 100644 index d9288dccdec..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[reload_post_1.html] - type: testharness - [Reload document with POST] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-same-origin.html.ini b/tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-same-origin.html.ini deleted file mode 100644 index 45a45857a97..00000000000 --- a/tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-same-origin.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[sandbox-disallow-same-origin.html] - type: testharness - expected: ERROR - [Access to sandbox iframe is disallowed] - expected: NOTRUN - diff --git a/tests/wpt/metadata/xhr/event-upload-progress.htm.ini b/tests/wpt/metadata/xhr/event-upload-progress.htm.ini new file mode 100644 index 00000000000..e191b32c6be --- /dev/null +++ b/tests/wpt/metadata/xhr/event-upload-progress.htm.ini @@ -0,0 +1,7 @@ +[event-upload-progress.htm] + [Upload events registered too late (http://www1.web-platform.test:8000/xhr/resources/corsenabled.py)] + expected: FAIL + + [Upload events registered too late (resources/redirect.py?code=307&location=http://www1.web-platform.test:8000/xhr/resources/corsenabled.py)] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini b/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini deleted file mode 100644 index 65c78fd3a4a..00000000000 --- a/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[hide_after_load.html] - expected: TIMEOUT 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 1e2567027d8..00000000000 --- 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/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini deleted file mode 100644 index fbdc89a8f0d..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[context-creation-and-destruction.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini deleted file mode 100644 index 393e42df192..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[context-creation.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini deleted file mode 100644 index b2918fac56f..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[context-eviction-with-garbage-collection.html] - expected: TIMEOUT diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini deleted file mode 100644 index 84c7aa47561..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[context-release-upon-reload.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/web-platform-tests/IndexedDB/support.js b/tests/wpt/web-platform-tests/IndexedDB/support.js index ac9c2f32419..5edbdacbcc7 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/support.js +++ b/tests/wpt/web-platform-tests/IndexedDB/support.js @@ -12,7 +12,7 @@ add_completion_callback(function(tests) if(tests[i].db) { tests[i].db.close(); - window.indexedDB.deleteDatabase(tests[i].db.name); + self.indexedDB.deleteDatabase(tests[i].db.name); } } }); @@ -43,9 +43,9 @@ function createdb_for_multiple_tests(dbname, version) { dbname = (dbname ? dbname : "testdb-" + new Date().getTime() + Math.random() ); if (version) - rq_open = window.indexedDB.open(dbname, version); + rq_open = self.indexedDB.open(dbname, version); else - rq_open = window.indexedDB.open(dbname); + rq_open = self.indexedDB.open(dbname); function auto_fail(evt, current_test) { /* Fail handlers, if we haven't set on/whatever/, don't @@ -107,7 +107,7 @@ function assert_key_equals(actual, expected, description) { function indexeddb_test(upgrade_func, open_func, description, options) { async_test(function(t) { options = Object.assign({upgrade_will_abort: false}, options); - var dbname = document.location + '-' + t.name; + var dbname = location + '-' + t.name; var del = indexedDB.deleteDatabase(dbname); del.onerror = t.unreached_func('deleteDatabase should succeed'); var open = indexedDB.open(dbname, 1); diff --git a/tests/wpt/web-platform-tests/common/subset-tests.js b/tests/wpt/web-platform-tests/common/subset-tests.js index 1810320e660..3713819c887 100644 --- a/tests/wpt/web-platform-tests/common/subset-tests.js +++ b/tests/wpt/web-platform-tests/common/subset-tests.js @@ -9,13 +9,33 @@ var subTestEnd = Infinity; var match; if (location.search) { - match = /(?:^\?|&)(\d+)-(\d+|last)(?:&|$)/.exec(location.search); - if (match) { - subTestStart = parseInt(match[1], 10); - if (match[2] !== "last") { - subTestEnd = parseInt(match[2], 10); - } + match = /(?:^\?|&)(\d+)-(\d+|last)(?:&|$)/.exec(location.search); + if (match) { + subTestStart = parseInt(match[1], 10); + if (match[2] !== "last") { + subTestEnd = parseInt(match[2], 10); } + } + // Below is utility code to generate <meta> for copy/paste into tests. + // Sample usage: + // test.html?split=1000 + match = /(?:^\?|&)split=(\d+)(?:&|$)/.exec(location.search); + if (match) { + var testsPerVariant = parseInt(match[1], 10); + add_completion_callback(tests => { + var total = tests.length; + var template = '<meta name="variant" content="?%s-%s">'; + var metas = []; + for (var i = 1; i < total - testsPerVariant; i = i + testsPerVariant) { + metas.push(template.replace("%s", i).replace("%s", i + testsPerVariant - 1)); + } + metas.push(template.replace("%s", i).replace("%s", "last")); + var pre = document.createElement('pre'); + pre.textContent = metas.join('\n'); + document.body.insertBefore(pre, document.body.firstChild); + document.getSelection().selectAllChildren(pre); + }); + } } function shouldRunSubTest(currentSubTest) { return currentSubTest >= subTestStart && currentSubTest <= subTestEnd; diff --git a/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html b/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html new file mode 100644 index 00000000000..4fb65fa8f18 --- /dev/null +++ b/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> +<head> +<title>Console Number Format Specifiers on Symbols</title> +<meta name="author" title="Dominic Farolino" href="mailto:domfarolino@gmail.com"> +<meta name="assert" content="Console format specifiers on Symbols"> +<link rel="help" href="https://console.spec.whatwg.org/#formatter"> +</head> +<body> +<p>Open the console inside the developer tools. It should contain 15 lines, each of which are:</p> +<p><code>NaN</code></p> + +<script> +const methods = ["log", "dirxml", "trace", "group", "groupCollapsed"]; + +for (method of methods) { + console[method]("%i", Symbol.for("description")); + if (method == "group" || method == "groupCollapsed") console.groupEnd(); + console[method]("%d", Symbol.for("description")); + if (method == "group" || method == "groupCollapsed") console.groupEnd(); + console[method]("%f", Symbol.for("description")); + if (method == "group" || method == "groupCollapsed") console.groupEnd(); +} +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/console/console-format-specifier-symbol-manual.html b/tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html index 47a981fba69..5988b14d0d4 100644 --- a/tests/wpt/web-platform-tests/console/console-format-specifier-symbol-manual.html +++ b/tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html> <head> -<title>Console Format Specifiers on Symbols</title> +<title>Console String Format Specifier on Symbols</title> <meta name="author" title="Dominic Farolino" href="mailto:domfarolino@gmail.com"> <meta name="assert" content="Console format specifiers on Symbols"> <link rel="help" href="https://console.spec.whatwg.org/#formatter"> @@ -15,7 +15,9 @@ console.log("%s", Symbol.for("description")); console.dirxml("%s", Symbol.for("description")); console.trace("%s", Symbol.for("description")); console.group("%s", Symbol.for("description")); +console.groupEnd(); console.groupCollapsed("%s", Symbol.for("description")); +console.groupEnd(); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/WOFF2/available-001.xht b/tests/wpt/web-platform-tests/css/WOFF2/available-001.xht index b8982dc2b6a..494c214a646 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/available-001.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/available-001.xht @@ -4,6 +4,7 @@ <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> <title>WOFF Test: Font access</title> <link rel="author" title="Chris Lilley" href="http://www.w3.org/People" /> + <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#General" /> <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-css3font-available" /> <meta name="assert" content="Linked fonts are only available to the documents that reference them." /> diff --git a/tests/wpt/web-platform-tests/css/WOFF2/available-002.xht b/tests/wpt/web-platform-tests/css/WOFF2/available-002.xht new file mode 100644 index 00000000000..efeef4b9627 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/WOFF2/available-002.xht @@ -0,0 +1,30 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> + <title>WOFF Test: Font access</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustLoadFontCollection" /> + <meta name="assert" content="Fonts must be loaded from font collections." /> + <style type="text/css"><![CDATA[ + body { + font-size: 20px; + } + pre { + font-size: 12px; + } + iframe { + width: 24em; + height: 300px; + border: thin solid green + } + ]]></style> + </head> + <body> + <p>Test passes if the word PASS appears <em>twice</em> below, and the second one is condensed.</p> + <iframe src="support/available-002a.xht" /> + <iframe src="support/available-002b.xht" /> + + </body> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-001-ref.xht b/tests/wpt/web-platform-tests/css/WOFF2/directory-knowntags-001-ref.xht index fd8372764db..43076d2ba43 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-001-ref.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/directory-knowntags-001-ref.xht @@ -2,12 +2,12 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: Decompressed Metadata Length Less Than metaOrigLength</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metaOrigLength" /> + <title>WOFF Test: Valid SFNT With Cutsom Tag For Known Table</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#table_dir_format" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mayAcceptKnownTagsAsCustom" /> <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <meta name="assert" content="The metadata decompresses to a length that is 1 byte smaller than the length defined in metaOrigLength" /> + <meta name="assert" content="Valid TTF flavored SFNT font with table directory using custom tag instead of known table flag for some know tables." /> <style type="text/css"><![CDATA[ @import url("support/test-fonts.css"); body { @@ -24,8 +24,7 @@ ]]></style> </head> <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> + <p>Test passes if the word PASS appears below.</p> <div class="test">P</div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-001.xht b/tests/wpt/web-platform-tests/css/WOFF2/directory-knowntags-001.xht index d5a227ba73d..e30189c698b 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-001.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/directory-knowntags-001.xht @@ -2,18 +2,18 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: Decompressed Metadata Length Less Than metaOrigLength</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metaOrigLength" /> + <title>WOFF Test: Valid SFNT With Cutsom Tag For Known Table</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#table_dir_format" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mayAcceptKnownTagsAsCustom" /> <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <link rel="match" href="metadatadisplay-metaOrigLength-001-ref.xht" /> - <meta name="assert" content="The metadata decompresses to a length that is 1 byte smaller than the length defined in metaOrigLength" /> + <link rel="match" href="directory-knowntags-001-ref.xht" /> + <meta name="assert" content="Valid TTF flavored SFNT font with table directory using custom tag instead of known table flag for some know tables." /> <style type="text/css"><![CDATA[ @import url("support/test-fonts.css"); @font-face { font-family: "WOFF Test"; - src: url("support/metadatadisplay-metaOrigLength-001.woff2") format("woff2"); + src: url("support/directory-knowntags-001.woff2") format("woff2"); } body { font-size: 20px; @@ -29,8 +29,7 @@ ]]></style> </head> <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> + <p>Test passes if the word PASS appears below.</p> <div class="test">P</div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001-ref.xht b/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001-ref.xht deleted file mode 100644 index 4fe706321a5..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001-ref.xht +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: Metadata No Compression</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-alwayscompress" /> - <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <meta name="assert" content="The metadata is stored in an uncompressed state and therefore does not have the proper compression format." /> - <style type="text/css"><![CDATA[ - @import url("support/test-fonts.css"); - body { - font-size: 20px; - } - pre { - font-size: 12px; - } - .test { - font-family: "WOFF Test CFF Reference"; - font-size: 200px; - margin-top: 50px; - } - ]]></style> - </head> - <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> - <div class="test">P</div> - </body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001.xht b/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001.xht deleted file mode 100644 index d0ce0a00775..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001.xht +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: Metadata No Compression</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-alwayscompress" /> - <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <link rel="match" href="metadatadisplay-compression-001-ref.xht" /> - <meta name="assert" content="The metadata is stored in an uncompressed state and therefore does not have the proper compression format." /> - <style type="text/css"><![CDATA[ - @import url("support/test-fonts.css"); - @font-face { - font-family: "WOFF Test"; - src: url("support/metadatadisplay-compression-001.woff2") format("woff2"); - } - body { - font-size: 20px; - } - pre { - font-size: 12px; - } - .test { - font-family: "WOFF Test", "WOFF Test CFF Fallback"; - font-size: 200px; - margin-top: 50px; - } - ]]></style> - </head> - <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> - <div class="test">P</div> - </body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht b/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht deleted file mode 100644 index 069f2b5b937..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: No id Attribute in uniqueid Element</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-id-required" /> - <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <meta name="assert" content="The uniqueid element does not contain the required id attribute." /> - <style type="text/css"><![CDATA[ - @import url("support/test-fonts.css"); - body { - font-size: 20px; - } - pre { - font-size: 12px; - } - .test { - font-family: "WOFF Test CFF Reference"; - font-size: 200px; - margin-top: 50px; - } - ]]></style> - </head> - <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> - <div class="test">P</div> - </body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004.xht b/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004.xht deleted file mode 100644 index eb54b4eab68..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004.xht +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: No id Attribute in uniqueid Element</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-id-required" /> - <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <link rel="match" href="metadatadisplay-schema-uniqueid-004-ref.xht" /> - <meta name="assert" content="The uniqueid element does not contain the required id attribute." /> - <style type="text/css"><![CDATA[ - @import url("support/test-fonts.css"); - @font-face { - font-family: "WOFF Test"; - src: url("support/metadatadisplay-schema-uniqueid-004.woff2") format("woff2"); - } - body { - font-size: 20px; - } - pre { - font-size: 12px; - } - .test { - font-family: "WOFF Test", "WOFF Test CFF Fallback"; - font-size: 200px; - margin-top: 50px; - } - ]]></style> - </head> - <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> - <div class="test">P</div> - </body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht b/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht deleted file mode 100644 index 78230030267..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: No name Attribute in vendor Element</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-vendor-required" /> - <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <meta name="assert" content="The vendor element does not contain the required name attribute." /> - <style type="text/css"><![CDATA[ - @import url("support/test-fonts.css"); - body { - font-size: 20px; - } - pre { - font-size: 12px; - } - .test { - font-family: "WOFF Test CFF Reference"; - font-size: 200px; - margin-top: 50px; - } - ]]></style> - </head> - <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> - <div class="test">P</div> - </body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005.xht b/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005.xht deleted file mode 100644 index 3744add1ef5..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005.xht +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: No name Attribute in vendor Element</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-vendor-required" /> - <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <link rel="match" href="metadatadisplay-schema-vendor-005-ref.xht" /> - <meta name="assert" content="The vendor element does not contain the required name attribute." /> - <style type="text/css"><![CDATA[ - @import url("support/test-fonts.css"); - @font-face { - font-family: "WOFF Test"; - src: url("support/metadatadisplay-schema-vendor-005.woff2") format("woff2"); - } - body { - font-size: 20px; - } - pre { - font-size: 12px; - } - .test { - font-family: "WOFF Test", "WOFF Test CFF Fallback"; - font-size: 200px; - margin-top: 50px; - } - ]]></style> - </head> - <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> - <div class="test">P</div> - </body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/available-001a.xht b/tests/wpt/web-platform-tests/css/WOFF2/support/available-001a.xht index 7612b2d6e79..09029569542 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/available-001a.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/available-001a.xht @@ -5,9 +5,11 @@ <title>WOFF Test: Font access</title> <link rel="author" title="Tal Leming" href="http://typesupply.com" /> <link rel="author" title="Chris Lilley" href="http://www.w3.org/People" /> + <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#General" /> <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-css3font-available" /> - <meta name="assert" content="Linked fonts are only available to the documents that reference them" /> + <meta name="flags" content="interact" /> + <meta name="assert" content="Linked fonts are only available to the documents that reference them." /> <style type="text/css"><![CDATA[ @import url("test-fonts.css"); @font-face { diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/available-001b.xht b/tests/wpt/web-platform-tests/css/WOFF2/support/available-001b.xht index e466eccd41f..f7f569497b9 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/available-001b.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/available-001b.xht @@ -5,9 +5,11 @@ <title>WOFF Test: Font access</title> <link rel="author" title="Tal Leming" href="http://typesupply.com" /> <link rel="author" title="Chris Lilley" href="http://www.w3.org/People" /> + <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#General" /> <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-css3font-available" /> - <meta name="assert" content="Linked fonts are only available to the documents that reference them" /> + <meta name="flags" content="interact" /> + <meta name="assert" content="Linked fonts are only available to the documents that reference them." /> <style type="text/css"><![CDATA[ @import url("test-fonts.css"); body { diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/available-002.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002.woff2 Binary files differnew file mode 100644 index 00000000000..eb4f7821863 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002.woff2 diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/available-002a.xht b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002a.xht new file mode 100644 index 00000000000..067adf8d661 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002a.xht @@ -0,0 +1,33 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> + <title>WOFF Test: Font access</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustLoadFontCollection" /> + <meta name="flags" content="interact" /> + <meta name="assert" content="Fonts must be loaded from font collections." /> + <style type="text/css"><![CDATA[ + @import url("test-fonts.css"); + @font-face { + font-family: "WOFF Test"; + src: url("support/available-002.woff2#1") format("woff2"); + } + body { + font-size: 20px; + } + pre { + font-size: 12px; + } + .test { + font-family: "WOFF Test", "WOFF Test CFF Fallback"; + font-size: 200px; + margin-top: 50px; + } + ]]></style> + </head> + <body> + <div class="test">P</div> + </body> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/available-002b.xht b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002b.xht new file mode 100644 index 00000000000..ee59eaa5d3a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002b.xht @@ -0,0 +1,33 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> + <title>WOFF Test: Font access</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustLoadFontCollection" /> + <meta name="flags" content="font" /> + <meta name="assert" content="Fonts must be loaded from font collections." /> + <style type="text/css"><![CDATA[ + @import url("test-fonts.css"); + @font-face { + font-family: "WOFF Test"; + src: url("available-002.woff2#2") format("woff2"); + } + body { + font-size: 20px; + } + pre { + font-size: 12px; + } + .test { + font-family: "WOFF Test", "WOFF Test CFF Fallback"; + font-size: 200px; + margin-top: 50px; + } + ]]></style> + </head> + <body> + <div class="test">P</div> + </body> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/directory-knowntags-001.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/directory-knowntags-001.woff2 Binary files differnew file mode 100644 index 00000000000..4995d9cba74 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/directory-knowntags-001.woff2 diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-compression-001.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-compression-001.woff2 Binary files differdeleted file mode 100644 index 38eab419ba2..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-compression-001.woff2 +++ /dev/null diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2 Binary files differdeleted file mode 100644 index 12f1a96138f..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2 +++ /dev/null diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2 Binary files differdeleted file mode 100644 index cc62a109028..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2 +++ /dev/null diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2 Binary files differdeleted file mode 100644 index f0eaee134f3..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2 +++ /dev/null diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2 Binary files differdeleted file mode 100644 index f34bb90d56f..00000000000 --- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2 +++ /dev/null diff --git a/tests/wpt/web-platform-tests/css/WOFF2/support/tabledata-glyf-origlength-003.woff2 b/tests/wpt/web-platform-tests/css/WOFF2/support/tabledata-glyf-origlength-003.woff2 Binary files differnew file mode 100644 index 00000000000..9bd964d202b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/WOFF2/support/tabledata-glyf-origlength-003.woff2 diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-002-ref.xht b/tests/wpt/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003-ref.xht index 530d6122c66..f95b76077a9 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-002-ref.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003-ref.xht @@ -2,12 +2,12 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: Decompressed Metadata Length Greater Than metaOrigLength</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metaOrigLength" /> + <title>WOFF Test: Glyf OrigLength Mismatching</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#DataTables" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustNotRejectGlyfSizeMismatch" /> <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <meta name="assert" content="The metadata decompresses to a length that is 1 byte greater than the length defined in metaOrigLength" /> + <meta name="assert" content="The origLength field of glyf table is larger than constructed table." /> <style type="text/css"><![CDATA[ @import url("support/test-fonts.css"); body { @@ -24,8 +24,7 @@ ]]></style> </head> <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> + <p>Test passes if the word PASS appears below.</p> <div class="test">P</div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-002.xht b/tests/wpt/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003.xht index d2ff013ad5c..a9caabd58ba 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-002.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003.xht @@ -2,18 +2,18 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> - <title>WOFF Test: Decompressed Metadata Length Greater Than metaOrigLength</title> - <link rel="author" title="Tal Leming" href="http://typesupply.com" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#Metadata" /> - <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metaOrigLength" /> + <title>WOFF Test: Glyf OrigLength Mismatching</title> + <link rel="author" title="Khaled Hosny" href="http://khaledhosny.org" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#DataTables" /> + <link rel="help" href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustNotRejectGlyfSizeMismatch" /> <link rel="reviewer" title="Chris Lilley" href="mailto:chris@w3.org" /> - <link rel="match" href="metadatadisplay-metaOrigLength-002-ref.xht" /> - <meta name="assert" content="The metadata decompresses to a length that is 1 byte greater than the length defined in metaOrigLength" /> + <link rel="match" href="tabledata-glyf-origlength-003-ref.xht" /> + <meta name="assert" content="The origLength field of glyf table is larger than constructed table." /> <style type="text/css"><![CDATA[ @import url("support/test-fonts.css"); @font-face { font-family: "WOFF Test"; - src: url("support/metadatadisplay-metaOrigLength-002.woff2") format("woff2"); + src: url("support/tabledata-glyf-origlength-003.woff2") format("woff2"); } body { font-size: 20px; @@ -29,8 +29,7 @@ ]]></style> </head> <body> - <p>If the UA does not display WOFF metadata, the test passes if the word PASS appears below.</p> - <p>The Extended Metadata Block is not valid and must not be displayed. If the UA does display it, the test fails.</p> + <p>Test passes if the word PASS appears below.</p> <div class="test">P</div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/WOFF2/testcaseindex.xht b/tests/wpt/web-platform-tests/css/WOFF2/testcaseindex.xht index b0f6c72df1d..0997db372f4 100644 --- a/tests/wpt/web-platform-tests/css/WOFF2/testcaseindex.xht +++ b/tests/wpt/web-platform-tests/css/WOFF2/testcaseindex.xht @@ -3,11 +3,11 @@ <head> <title>WOFF 2.0: User Agent Test Suite</title> <style type="text/css"> - @import "resources/index.css"; + @import "support/index.css"; </style> </head> <body> - <h1>WOFF 2.0: User Agent Test Suite (303 tests)</h1> + <h1>WOFF 2.0: User Agent Test Suite (300 tests)</h1> <h2 class="testCategory">Valid WOFFs</h2> <div class="testCase" id="valid-001"> @@ -21,7 +21,7 @@ <p><a href="valid-001-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> <p>Metadata Expectation: None</p> </div> </div> @@ -37,8 +37,8 @@ <p><a href="valid-002-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> - <p>Metadata Expectation: Display <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>Metadata Expectation: Display <a href="http://www.w3.org/TR/WOFF/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> </div> </div> </div> @@ -53,7 +53,7 @@ <p><a href="valid-003-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> <p>Metadata Expectation: None</p> </div> </div> @@ -69,8 +69,8 @@ <p><a href="valid-004-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> - <p>Metadata Expectation: Display <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>Metadata Expectation: Display <a href="http://www.w3.org/TR/WOFF/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> </div> </div> </div> @@ -85,7 +85,7 @@ <p><a href="valid-005-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> <p>Metadata Expectation: None</p> </div> </div> @@ -101,8 +101,8 @@ <p><a href="valid-006-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> - <p>Metadata Expectation: Display <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>Metadata Expectation: Display <a href="http://www.w3.org/TR/WOFF/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> </div> </div> </div> @@ -117,7 +117,7 @@ <p><a href="valid-007-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> <p>Metadata Expectation: None</p> </div> </div> @@ -133,24 +133,8 @@ <p><a href="valid-008-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> - <p>Metadata Expectation: Display <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> - </div> - </div> - </div> - <div class="testCase" id="valid-009"> - <div class="testCaseOverview"> - <h3><a href="#valid-009">valid-009</a>: Valid WOFF 9</h3> - <p>Valid TTF flavored WOFF with simple and composite glyphs</p> - </div> - <div class="testCaseDetails"> - <div class="testCasePages"> - <p><a href="valid-009.xht">Test</a></p> - <p><a href="valid-009-ref.xht">Reference Rendering</a></p> - </div> - <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustProduceOFF">conform-mustProduceOFF</a>)</p> - <p>Metadata Expectation: None</p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a> <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-private-noeffect">conform-private-noeffect</a>)</p> + <p>Metadata Expectation: Display <a href="http://www.w3.org/TR/WOFF/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> </div> </div> </div> @@ -514,6 +498,22 @@ </div> <h2 class="testCategory">WOFF Table Directory Tests</h2> + <div class="testCase" id="directory-knowntags-001"> + <div class="testCaseOverview"> + <h3><a href="#directory-knowntags-001">directory-knowntags-001</a>: Valid SFNT With Cutsom Tag For Known Table</h3> + <p>Valid TTF flavored SFNT font with table directory using custom tag instead of known table flag for some know tables.</p> + </div> + <div class="testCaseDetails"> + <div class="testCasePages"> + <p><a href="directory-knowntags-001.xht">Test</a></p> + <p><a href="directory-knowntags-001-ref.xht">Reference Rendering</a></p> + </div> + <div class="testCaseExpectations"> + <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mayAcceptKnownTagsAsCustom">conform-mayAcceptKnownTagsAsCustom</a>)</p> + <p>Metadata Expectation: None</p> + </div> + </div> + </div> <div class="testCase" id="directory-mismatched-tables-001"> <div class="testCaseOverview"> <h3><a href="#directory-mismatched-tables-001">directory-mismatched-tables-001</a>: Font Collection With Mismatched Glyf/Loca Tables</h3> @@ -735,7 +735,7 @@ <p><a href="tabledata-glyf-bbox-003-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Reject (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustRejectNonEmptyBBox">conform-mustRejectNonEmptyBBox</a>)</p> + <p>SFNT Expectation: Reject (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustRejectNonEmptyBBox2">conform-mustRejectNonEmptyBBox2</a>)</p> <p>Metadata Expectation: None</p> </div> </div> @@ -806,8 +806,8 @@ </div> <div class="testCase" id="tabledata-transform-hmtx-003"> <div class="testCaseOverview"> - <h3><a href="#tabledata-transform-hmtx-003">tabledata-transform-hmtx-003</a>: Transformed Hmtx Table With Bad Flags 1</h3> - <p>Invalid TTF flavored WOFF with transformed hmtx table with non-zero reserved bits of the flags field.</p> + <h3><a href="#tabledata-transform-hmtx-003">tabledata-transform-hmtx-003</a>: Transformed Hmtx Table With All Flags Set</h3> + <p>Invalid TTF flavored WOFF with transformed hmtx table that has all flags bits (including reserved bits) set.</p> </div> <div class="testCaseDetails"> <div class="testCasePages"> @@ -822,8 +822,8 @@ </div> <div class="testCase" id="tabledata-transform-hmtx-004"> <div class="testCaseOverview"> - <h3><a href="#tabledata-transform-hmtx-004">tabledata-transform-hmtx-004</a>: Transformed Hmtx Table With Bad Flags 2</h3> - <p>Invalid TTF flavored WOFF with transformed hmtx table with all flags bits set to 0</p> + <h3><a href="#tabledata-transform-hmtx-004">tabledata-transform-hmtx-004</a>: Transformed Hmtx Table With 0 Flags</h3> + <p>Invalid TTF flavored WOFF with transformed hmtx table that has 0 flags (null transform).</p> </div> <div class="testCaseDetails"> <div class="testCasePages"> @@ -868,6 +868,22 @@ </div> </div> </div> + <div class="testCase" id="tabledata-glyf-origlength-003"> + <div class="testCaseOverview"> + <h3><a href="#tabledata-glyf-origlength-003">tabledata-glyf-origlength-003</a>: Glyf OrigLength Mismatching</h3> + <p>The origLength field of glyf table is larger than constructed table.</p> + </div> + <div class="testCaseDetails"> + <div class="testCasePages"> + <p><a href="tabledata-glyf-origlength-003.xht">Test</a></p> + <p><a href="tabledata-glyf-origlength-003-ref.xht">Reference Rendering</a></p> + </div> + <div class="testCaseExpectations"> + <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustNotRejectGlyfSizeMismatch">conform-mustNotRejectGlyfSizeMismatch</a>)</p> + <p>Metadata Expectation: None</p> + </div> + </div> + </div> <h2 class="testCategory">WOFF Metadata Tests</h2> <div class="testCase" id="metadata-noeffect-001"> @@ -881,7 +897,7 @@ <p><a href="metadata-noeffect-001-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> <p>Metadata Expectation: None</p> </div> </div> @@ -897,8 +913,8 @@ <p><a href="metadata-noeffect-002-ref.xht">Reference Rendering</a></p> </div> <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Display <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> + <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> + <p>Metadata Expectation: Display <a href="http://www.w3.org/TR/WOFF/#conform-metadata-maydisplay">(conform-metadata-maydisplay)</a></p> </div> </div> </div> @@ -950,55 +966,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/">documentation</a>)</p> - <p>Metadata Expectation: Display <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-authoritative">(conform-metadata-authoritative)</a></p> - </div> - </div> - </div> - <div class="testCase" id="metadatadisplay-compression-001"> - <div class="testCaseOverview"> - <h3><a href="#metadatadisplay-compression-001">metadatadisplay-compression-001</a>: Metadata No Compression</h3> - <p>The metadata is stored in an uncompressed state and therefore does not have the proper compression format.</p> - </div> - <div class="testCaseDetails"> - <div class="testCasePages"> - <p><a href="metadatadisplay-compression-001.xht">Test</a></p> - <p><a href="metadatadisplay-compression-001-ref.xht">Reference Rendering</a></p> - </div> - <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/">documentation</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-alwayscompress">(conform-metadata-alwayscompress)</a></p> - </div> - </div> - </div> - <div class="testCase" id="metadatadisplay-metaOrigLength-001"> - <div class="testCaseOverview"> - <h3><a href="#metadatadisplay-metaOrigLength-001">metadatadisplay-metaOrigLength-001</a>: Decompressed Metadata Length Less Than metaOrigLength</h3> - <p>The metadata decompresses to a length that is 1 byte smaller than the length defined in metaOrigLength</p> - </div> - <div class="testCaseDetails"> - <div class="testCasePages"> - <p><a href="metadatadisplay-metaOrigLength-001.xht">Test</a></p> - <p><a href="metadatadisplay-metaOrigLength-001-ref.xht">Reference Rendering</a></p> - </div> - <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metaOrigLength">conform-metaOrigLength</a>)</p> - <p>Metadata Expectation: Reject</p> - </div> - </div> - </div> - <div class="testCase" id="metadatadisplay-metaOrigLength-002"> - <div class="testCaseOverview"> - <h3><a href="#metadatadisplay-metaOrigLength-002">metadatadisplay-metaOrigLength-002</a>: Decompressed Metadata Length Greater Than metaOrigLength</h3> - <p>The metadata decompresses to a length that is 1 byte greater than the length defined in metaOrigLength</p> - </div> - <div class="testCaseDetails"> - <div class="testCasePages"> - <p><a href="metadatadisplay-metaOrigLength-002.xht">Test</a></p> - <p><a href="metadatadisplay-metaOrigLength-002-ref.xht">Reference Rendering</a></p> - </div> - <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metaOrigLength">conform-metaOrigLength</a>)</p> - <p>Metadata Expectation: Reject</p> + <p>Metadata Expectation: Display <a href="http://www.w3.org/TR/WOFF/#conform-metadata-authoritative">(conform-metadata-authoritative)</a></p> </div> </div> </div> @@ -1014,7 +982,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1030,7 +998,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1046,7 +1014,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1062,7 +1030,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1078,7 +1046,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1094,7 +1062,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1110,7 +1078,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1158,7 +1126,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1206,7 +1174,7 @@ </div> <div class="testCaseExpectations"> <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> + <p>Metadata Expectation: Reject <a href="http://www.w3.org/TR/WOFF/#conform-invalid-mustignore">(conform-invalid-mustignore)</a></p> </div> </div> </div> @@ -1354,22 +1322,6 @@ </div> </div> </div> - <div class="testCase" id="metadatadisplay-schema-uniqueid-004"> - <div class="testCaseOverview"> - <h3><a href="#metadatadisplay-schema-uniqueid-004">metadatadisplay-schema-uniqueid-004</a>: No id Attribute in uniqueid Element</h3> - <p>The uniqueid element does not contain the required id attribute.</p> - </div> - <div class="testCaseDetails"> - <div class="testCasePages"> - <p><a href="metadatadisplay-schema-uniqueid-004.xht">Test</a></p> - <p><a href="metadatadisplay-schema-uniqueid-004-ref.xht">Reference Rendering</a></p> - </div> - <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-id-required">(conform-metadata-id-required)</a></p> - </div> - </div> - </div> <div class="testCase" id="metadatadisplay-schema-uniqueid-005"> <div class="testCaseOverview"> <h3><a href="#metadatadisplay-schema-uniqueid-005">metadatadisplay-schema-uniqueid-005</a>: Unknown Attribute in uniqueid Element</h3> @@ -1482,22 +1434,6 @@ </div> </div> </div> - <div class="testCase" id="metadatadisplay-schema-vendor-005"> - <div class="testCaseOverview"> - <h3><a href="#metadatadisplay-schema-vendor-005">metadatadisplay-schema-vendor-005</a>: No name Attribute in vendor Element</h3> - <p>The vendor element does not contain the required name attribute.</p> - </div> - <div class="testCaseDetails"> - <div class="testCasePages"> - <p><a href="metadatadisplay-schema-vendor-005.xht">Test</a></p> - <p><a href="metadatadisplay-schema-vendor-005-ref.xht">Reference Rendering</a></p> - </div> - <div class="testCaseExpectations"> - <p>SFNT Expectation: Display (<a href="http://www.w3.org/TR/WOFF/#conform-metadata-noeffect">conform-metadata-noeffect</a>)</p> - <p>Metadata Expectation: Reject <a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-metadata-vendor-required">(conform-metadata-vendor-required)</a></p> - </div> - </div> - </div> <div class="testCase" id="metadatadisplay-schema-vendor-006"> <div class="testCaseOverview"> <h3><a href="#metadatadisplay-schema-vendor-006">metadatadisplay-schema-vendor-006</a>: Valid dir Attribute in vendor Element 1</h3> @@ -4863,7 +4799,7 @@ <div class="testCase" id="available-001"> <div class="testCaseOverview"> <h3><a href="#available-001">available-001</a>: Font access</h3> - <p>Linked fonts are only available to the documents that reference them</p> + <p>Linked fonts are only available to the documents that reference them.</p> </div> <div class="testCaseDetails"> <div class="testCasePages"> @@ -4875,5 +4811,20 @@ </div> </div> </div> + <div class="testCase" id="available-002"> + <div class="testCaseOverview"> + <h3><a href="#available-002">available-002</a>: Loading font collections</h3> + <p>Fonts must be loaded from font collections.</p> + </div> + <div class="testCaseDetails"> + <div class="testCasePages"> + <p><a href="available-002.xht">Test</a></p> + </div> + <div class="testCaseExpectations"> + <p>SFNT Expectation: Display (<a href="http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustLoadFontCollection">conform-mustLoadFontCollection</a>)</p> + <p>Metadata Expectation: None</p> + </div> + </div> + </div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-001.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-001.html index decea3b249c..3a49cb9ea8e 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-001.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-001.html @@ -1,12 +1,12 @@ <!doctype html> <html lang=en> <meta charset=utf-8> - <title>CSS-contain test: paint containment on non-atomic inlines</title> + <title>CSS-contain test: layout containment on non-atomic inlines</title> <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net"> <meta name=flags content=""> - <meta name=assert content="paint containment does not apply to non atomic inlines"> + <meta name=assert content="layout containment does not apply to non atomic inlines"> <link rel="match" href="reference/contain-size-001-ref.html"> - <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-paint"> + <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-layout"> <style> span { diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-002.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-002.html index 8bbf95146e3..c39d759c1a6 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-002.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-002.html @@ -6,7 +6,7 @@ <meta name=flags content="ahem"> <meta name=assert content="layout containment does not apply to ruby-base"> <link rel="match" href="reference/contain-layout-002-ref.html"> - <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-paint"> + <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-layout"> <style> rb { diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-003.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-003.html index 2d59bd8a85f..b1bc2418893 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-003.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-003.html @@ -6,7 +6,7 @@ <meta name=flags content="ahem"> <meta name=assert content="layout containment does not apply to ruby-base-container"> <link rel="match" href="reference/contain-layout-002-ref.html"> - <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-paint"> + <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-layout"> <style> rbc { diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-004.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-004.html index ef74af91caf..93af6ee4511 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-004.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-004.html @@ -6,7 +6,7 @@ <meta name=flags content="ahem"> <meta name=assert content="layout containment does not apply to ruby-text-container"> <link rel="match" href="reference/contain-layout-004-ref.html"> - <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-paint"> + <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-layout"> <style> rtc { diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-005.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-005.html index a12aef53c64..f348359a117 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-005.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-005.html @@ -6,7 +6,7 @@ <meta name=flags content="ahem"> <meta name=assert content="layout containment does not apply to ruby-text"> <link rel="match" href="reference/contain-layout-005-ref.html"> - <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-paint"> + <link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-layout"> <style> rt { diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-008.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-008.html new file mode 100644 index 00000000000..d442bebb065 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-008.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Containment Test: Layout containment independent formatting context</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="reference/contain-paint-013-ref.html"> +<meta name=assert content="Layout containment elements establish an independent formatting context. The test checks that this feature of layout containment applies to blocks and inline blocks, but it doesn't apply to inline elements."> +<style> +.wrapper { + border: solid thick; + margin: 1em; +} +</style> +<p>Test passes if on the first two boxes the top and bottom margins of the text line are double size than on the last box.</p> +<div class="wrapper"> + <div style="margin: 1em 0; contain: layout;"> + <div style="margin: 1em 0;">This text should have 2em top and bottom margins (margins do not collapse).</div> + </div> +</div> +<div class="wrapper"> + <span style="display: inline-block; margin: 1em 0; contain: layout;"> + <div style="margin: 1em 0;">This text should have 2em top and bottom margins (margins do not collapse).</div> + </span> +</div> +<div class="wrapper"> + <span style="margin: 1em 0; contain: layout;"> + <div style="margin: 1em 0;">This text should have 1em top and bottom margins.</div> + </span> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-009.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-009.html new file mode 100644 index 00000000000..fc57bbd1820 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-009.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Containment Test: Layout containment on table-row-group</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=flags content="ahem"> +<meta name=assert content="Layout containment doesn't apply to table-row-group elements."> + +<style> +#wrapper { + position: relative; + background: red; + width: 100px; + height: 100px; + padding: 25px; + box-sizing: border-box; +} +#table-row-group { + display: table-row-group; + contain: layout; +} +#abspos { + position: absolute; + font: 100px/1 Ahem; + color: green; + top: 0; + left: 0; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="wrapper"> + <div id="table-row-group"> + <div id="abspos">X</div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-010.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-010.html new file mode 100644 index 00000000000..8c8cb73ae3b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-010.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Containment Test: Layout containment on table-header-group</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=flags content="ahem"> +<meta name=assert content="Layout containment doesn't apply to table-header-group elements."> + +<style> +#wrapper { + position: relative; + background: red; + width: 100px; + height: 100px; + padding: 25px; + box-sizing: border-box; +} +#table-header-group { + display: table-header-group; + contain: layout; +} +#abspos { + position: absolute; + font: 100px/1 Ahem; + color: green; + top: 0; + left: 0; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="wrapper"> + <div id="table-header-group"> + <div id="abspos">X</div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-011.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-011.html new file mode 100644 index 00000000000..68dcede5a4e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-011.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Containment Test: Layout containment on table-footer-group</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=flags content="ahem"> +<meta name=assert content="Layout containment doesn't apply to table-footer-group elements."> + +<style> +#wrapper { + position: relative; + background: red; + width: 100px; + height: 100px; + padding: 25px; + box-sizing: border-box; +} +#table-footer-group { + display: table-footer-group; + contain: layout; +} +#abspos { + position: absolute; + font: 100px/1 Ahem; + color: green; + top: 0; + left: 0; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="wrapper"> + <div id="table-footer-group"> + <div id="abspos">X</div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-012.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-012.html new file mode 100644 index 00000000000..dfc776ef027 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-012.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Containment Test: Layout containment on table-row</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=flags content="ahem"> +<meta name=assert content="Layout containment doesn't apply to table-row elements."> + +<style> +#wrapper { + position: relative; + background: red; + width: 100px; + height: 100px; + padding: 25px; + box-sizing: border-box; +} +#table-row { + display: table-row; + contain: layout; +} +#abspos { + position: absolute; + font: 100px/1 Ahem; + color: green; + top: 0; + left: 0; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="wrapper"> + <div id="table-row"> + <div id="abspos">X</div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-013.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-013.html new file mode 100644 index 00000000000..08e1e4d9ec7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-013.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Containment Test: Layout containment on table-cell</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=assert content="Layout containment does apply to table-cell elements."> + +<style> +#table-cell { + display: table-cell; + contain: layout; + width: 100px; + height: 100px; + background: red; +} +#abspos { + position: absolute; + bottom: 0; + right: 0; + background: green; + width: 100px; + height: 100px; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="table-cell"> + <div id="abspos"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-014.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-014.html new file mode 100644 index 00000000000..bf0e47eee10 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-014.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Containment Test: Layout containment on table-caption</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=assert content="Layout containment does apply to table-caption elements."> + +<style> +#table-caption { + display: table-caption; + contain: layout; + width: 100px; + height: 100px; + background: red; +} +#abspos { + position: absolute; + bottom: 0; + right: 0; + background: green; + width: 100px; + height: 100px; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="table-caption"> + <div id="abspos"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_quirks_body.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_quirks_body.html new file mode 100644 index 00000000000..4be3896fadc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_quirks_body.html @@ -0,0 +1,20 @@ +<!doctype quirks><!-- Intentional quirks mode --> +<title>CSS Test: Flex body in quirks mode</title> +<link rel="author" title="Aleks Totic" href="atotic@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#main-sizing" title="9.3 Main Size Determination"> +<link rel="help" href="https://quirks.spec.whatwg.org/#the-body-element-fills-the-html-element-quirk" title="The body element fills the html element quirk"> +<link rel="match" href="./reference/flexbox_quirks_body-ref.html"> +<style> +html { + margin:3px 6px 9px 12px; + padding: 0px; + background-color: green; +} +body { + display: flex; + margin: 7px 11px 14px 23px; + padding: 0px; + background-color: yellow; +} +</style> +Flex body in quirks mode should fill viewport except for margins. diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox_quirks_body-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox_quirks_body-ref.html new file mode 100644 index 00000000000..164784fbd30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox_quirks_body-ref.html @@ -0,0 +1,17 @@ +<!doctype quirks> +<title>CSS Test: Flex body in quirks mode</title> +<link rel="author" title="Aleks Totic" href="atotic@chromium.org"> +<style> +html { + margin:3px 6px 9px 12px; + padding: 0px; + background-color: green; +} +body { + display: block; + margin: 7px 11px 14px 23px;; + padding: 0px; + background-color: yellow; +} +</style> +Flex body in quirks mode should fill viewport except for margins. diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-color.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-color.html new file mode 100644 index 00000000000..9cc7e244bcb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-color.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Border Colors</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#border-color"> +<meta name="assert" content="This test checks the interaction of the flow-relative border-*-color longhand properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createBoxPropertyGroup("border-*-color", {type: "color"})); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-style.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-style.html new file mode 100644 index 00000000000..6a32f4e2e37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-style.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Border Styles</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#border-style"> +<meta name="assert" content="This test checks the interaction of the flow-relative border-*-style longhand properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createBoxPropertyGroup("border-*-style", {type: "border-style"})); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-width.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-width.html new file mode 100644 index 00000000000..40d66348fbf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-border-width.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Border Widths</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#border-width"> +<meta name="assert" content="This test checks the interaction of the flow-relative border-*-width longhand properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createBoxPropertyGroup("border-*-width", { + type: "length", + prerequisites: {"border-*-style": "solid"}, +})); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-inset.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-inset.html new file mode 100644 index 00000000000..0741c79a764 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-inset.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Offsets</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#inset-properties"> +<meta name="assert" content="This test checks the interaction of the flow-relative inset-* longhand properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createBoxPropertyGroup("inset-*", { + type: "length", + prerequisites: {"position": "relative"}, +})); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-margin.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-margin.html new file mode 100644 index 00000000000..3ad6c8b451f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-margin.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Margins</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#margin-properties"> +<meta name="assert" content="This test checks the interaction of the flow-relative margin-* longhand properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createBoxPropertyGroup("margin-*", {type: "length"})); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-padding.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-padding.html new file mode 100644 index 00000000000..9d9972164be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-padding.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Padding</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#padding-properties"> +<meta name="assert" content="This test checks the interaction of the flow-relative padding-* longhand properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createBoxPropertyGroup("padding-*", {type: "length"})); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-box-size.html b/tests/wpt/web-platform-tests/css/css-logical/logical-box-size.html new file mode 100644 index 00000000000..90d8e440582 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logical-box-size.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>CSS Logical Properties: Flow-Relative Sizing</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-logical/#dimension-properties"> +<meta name="assert" content="This test checks the interaction of the flow-relative sizing properties with the physical ones in different writing modes." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script src="./resources/test-box-properties.js"></script> +<script> +runTests(createSizingPropertyGroup("")); +runTests(createSizingPropertyGroup("max-")); +runTests(createSizingPropertyGroup("min-")); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/resources/test-box-properties.js b/tests/wpt/web-platform-tests/css/css-logical/resources/test-box-properties.js new file mode 100644 index 00000000000..a52b8fdbba1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/resources/test-box-properties.js @@ -0,0 +1,252 @@ +"use strict"; +(function(exports) { + const sheet = document.head.appendChild(document.createElement("style")); + + // Specify size for outer <div> to avoid unconstrained-size warnings + // when writing-mode of the inner test <div> is vertical-* + const wrapper = document.body.appendChild(document.createElement("div")); + wrapper.style.cssText = "width:100px; height: 100px;"; + const testElement = wrapper.appendChild(document.createElement("div")); + testElement.id = testElement.className = "test"; + + // Values to use while testing + const testValues = { + "length": ["1px", "2px", "3px", "4px", "5px"], + "color": ["rgb(1, 1, 1)", "rgb(2, 2, 2)", "rgb(3, 3, 3)", "rgb(4, 4, 4)", "rgb(5, 5, 5)"], + "border-style": ["solid", "dashed", "dotted", "double", "groove"], + }; + + // Six unique overall writing modes for property-mapping purposes. + const writingModes = [ + { + styles: [ + {"writing-mode": "horizontal-tb", "direction": "ltr"}, + ], + blockStart: "top", blockEnd: "bottom", inlineStart: "left", inlineEnd: "right", + block: "vertical", inline: "horizontal" }, + { + styles: [ + {"writing-mode": "horizontal-tb", "direction": "rtl"}, + ], + blockStart: "top", blockEnd: "bottom", inlineStart: "right", inlineEnd: "left", + block: "vertical", inline: "horizontal" }, + { + styles: [ + {"writing-mode": "vertical-rl", "direction": "rtl"}, + {"writing-mode": "sideways-rl", "direction": "rtl"}, + ], + blockStart: "right", blockEnd: "left", inlineStart: "bottom", inlineEnd: "top", + block: "horizontal", inline: "vertical" }, + { + styles: [ + {"writing-mode": "vertical-rl", "direction": "ltr"}, + {"writing-mode": "sideways-rl", "direction": "ltr"}, + ], + blockStart: "right", blockEnd: "left", inlineStart: "top", inlineEnd: "bottom", + block: "horizontal", inline: "vertical" }, + { + styles: [ + {"writing-mode": "vertical-lr", "direction": "rtl"}, + {"writing-mode": "sideways-lr", "direction": "ltr"}, + ], + blockStart: "left", blockEnd: "right", inlineStart: "bottom", inlineEnd: "top", + block: "horizontal", inline: "vertical" }, + { + styles: [ + {"writing-mode": "vertical-lr", "direction": "ltr"}, + {"writing-mode": "sideways-lr", "direction": "rtl"}, + ], + blockStart: "left", blockEnd: "right", inlineStart: "top", inlineEnd: "bottom", + block: "horizontal", inline: "vertical" }, + ]; + + function testCSSValues(testName, style, expectedValues) { + for (const [property, value] of expectedValues) { + assert_equals(style.getPropertyValue(property), value, `${testName}, ${property}`); + } + } + + function testComputedValues(testName, rules, expectedValues) { + sheet.textContent = rules; + const cs = getComputedStyle(testElement); + testCSSValues(testName, cs, expectedValues); + sheet.textContent = ""; + } + + function makeDeclaration(object = {}, replacement = "*") { + let decl = ""; + for (const [property, value] of Object.entries(object)) { + decl += `${property.replace("*", replacement)}: ${value}; `; + } + return decl; + } + + /** + * Creates a group of physical and logical box properties, such as + * + * { physical: { + * left: "margin-left", right: "margin-right", + * top: "margin-top", bottom: "margin-bottom", + * }, logical: { + * inlineStart: "margin-inline-start", inlineEnd: "margin-inline-end", + * blockStart: "margin-block-start", blockEnd: "margin-block-end", + * }, type: "length", prerequisites: "...", property: "'margin-*'" } + * + * @param {string} property + * A string representing the property names, like "margin-*". + * @param {Object} descriptor + * @param {string} descriptor.type + * Describes the kind of values accepted by the property, like "length". + * Must be a key from the `testValues` object. + * @param {Object={}} descriptor.prerequisites + * Represents property declarations that are needed by `property` to work. + * For example, border-width properties require a border style. + */ + exports.createBoxPropertyGroup = function(property, descriptor) { + const logical = {}; + const physical = {}; + for (const logicalSide of ["inline-start", "inline-end", "block-start", "block-end"]) { + const camelCase = logicalSide.replace(/-(.)/g, (match, $1) => $1.toUpperCase()); + logical[camelCase] = property.replace("*", logicalSide); + } + const isInset = property === "inset-*"; + let prerequisites = ""; + for (const physicalSide of ["left", "right", "top", "bottom"]) { + physical[physicalSide] = isInset ? physicalSide : property.replace("*", physicalSide); + prerequisites += makeDeclaration(descriptor.prerequisites, physicalSide); + } + return {name, logical, physical, type: descriptor.type, prerequisites, property}; + }; + + /** + * Creates a group of physical and logical sizing properties. + * + * @param {string} prefix + * One of "", "max-" or "min-". + */ + exports.createSizingPropertyGroup = function(prefix) { + return { + logical: { + inline: `${prefix}inline-size`, + block: `${prefix}block-size`, + }, + physical: { + horizontal: `${prefix}width`, + vertical: `${prefix}height`, + }, + type: "length", + prerequisites: makeDeclaration({display: "block"}), + property: (prefix ? prefix.slice(0, -1) + " " : "") + "sizing", + }; + }; + + /** + * Tests a grup of logical and physical properties in different writing modes. + * + * @param {Object} group + * An object returned by createBoxPropertyGroup or createSizingPropertyGroup. + */ + exports.runTests = function(group) { + const values = testValues[group.type]; + const logicals = Object.values(group.logical); + const physicals = Object.values(group.physical); + + test(function() { + const expected = []; + for (const [i, logicalProp] of logicals.entries()) { + testElement.style.setProperty(logicalProp, values[i]); + expected.push([logicalProp, values[i]]); + } + testCSSValues("logical properties in inline style", testElement.style, expected); + testElement.style.cssText = ""; + }, `Test that logical ${group.property} properties are supported.`); + + for (const writingMode of writingModes) { + for (const style of writingMode.styles) { + const writingModeDecl = makeDeclaration(style); + + const associated = {}; + for (const [logicalSide, logicalProp] of Object.entries(group.logical)) { + const physicalProp = group.physical[writingMode[logicalSide]]; + associated[logicalProp] = physicalProp; + associated[physicalProp] = logicalProp; + } + + // Test that logical properties are converted to their physical + // equivalent correctly when all in the group are present on a single + // declaration, with no overwriting of previous properties and + // no physical properties present. We put the writing mode properties + // on a separate declaration to test that the computed values of these + // properties are used, rather than those on the same declaration. + test(function() { + let decl = group.prerequisites; + const expected = []; + for (const [i, logicalProp] of logicals.entries()) { + decl += `${logicalProp}: ${values[i]}; `; + expected.push([logicalProp, values[i]]); + expected.push([associated[logicalProp], values[i]]); + } + testComputedValues("logical properties on one declaration, writing " + + `mode properties on another, '${writingModeDecl}'`, + `.test { ${writingModeDecl} } .test { ${decl} }`, + expected); + }, `Test that logical ${group.property} properties share computed values ` + + `with their physical associates, with '${writingModeDecl}'.`); + + // Test that logical and physical properties are cascaded together, + // honoring their relative order on a single declaration + // (a) with a single logical property after the physical ones + // (b) with a single physical property after the logical ones + test(function() { + for (const lastIsLogical of [true, false]) { + const lasts = lastIsLogical ? logicals : physicals; + const others = lastIsLogical ? physicals : logicals; + for (const lastProp of lasts) { + let decl = writingModeDecl + group.prerequisites; + const expected = []; + for (const [i, prop] of others.entries()) { + decl += `${prop}: ${values[i]}; `; + const valueIdx = associated[prop] === lastProp ? others.length : i; + expected.push([prop, values[valueIdx]]); + expected.push([associated[prop], values[valueIdx]]); + } + decl += `${lastProp}: ${values[others.length]}; `; + testComputedValues(`'${lastProp}' last on single declaration, '${writingModeDecl}'`, + `.test { ${decl} }`, + expected); + } + } + }, `Test that ${group.property} properties honor order of appearance when both ` + + `logical and physical associates are declared, with '${writingModeDecl}'.`); + + // Test that logical and physical properties are cascaded properly when + // on different declarations + // (a) with a logical property in the high specificity rule + // (b) with a physical property in the high specificity rule + test(function() { + for (const highIsLogical of [true, false]) { + let lowDecl = writingModeDecl + group.prerequisites; + const high = highIsLogical ? logicals : physicals; + const others = highIsLogical ? physicals : logicals; + for (const [i, prop] of others.entries()) { + lowDecl += `${prop}: ${values[i]}; `; + } + for (const highProp of high) { + const highDecl = `${highProp}: ${values[others.length]}; `; + const expected = []; + for (const [i, prop] of others.entries()) { + const valueIdx = associated[prop] === highProp ? others.length : i; + expected.push([prop, values[valueIdx]]); + expected.push([associated[prop], values[valueIdx]]); + } + testComputedValues(`'${highProp}', two declarations, '${writingModeDecl}'`, + `#test { ${highDecl} } .test { ${lowDecl} }`, + expected); + } + } + }, `Test that ${group.property} properties honor selector specificty when both ` + + `logical and physical associates are declared, with '${writingModeDecl}'.`); + } + } + }; +})(window); diff --git a/tests/wpt/web-platform-tests/css/css-multicol/column-count-used-001.html b/tests/wpt/web-platform-tests/css/css-multicol/column-count-used-001.html new file mode 100644 index 00000000000..2949a1996eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/column-count-used-001.html @@ -0,0 +1,26 @@ +<!doctype html> +<title>column-count used value when neither column-count nor column-width are auto</title> +<link rel=help href=https://www.w3.org/TR/css-multicol-1/#pseudo-algorithm> +<link rel=match href=../reference/ref-filled-green-100px-square.xht> +<style> +div { + position: absolute; +} +.bg { + background: red; + width: 100px; + height: 100px; +} +.test { + line-height: 50px; + width: 100px; + background: green; + columns: 2 20px; + column-gap: 0; + orphans: 1; + widows: 1; +} +</style> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div class=bg></div> +<div class=test><br><br><br><br></div> diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/float-in-htb-in-vrl.html b/tests/wpt/web-platform-tests/css/css-writing-modes/float-in-htb-in-vrl.html new file mode 100644 index 00000000000..fbee2fbed37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/float-in-htb-in-vrl.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<title>Fixed-size float in autosized htr in vrl</title> +<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-sizing-3/#intrinsic" title="4. Intrinsic Size Determination"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="width:100px; height:100px; background:red;"> + <div style="writing-mode:vertical-rl; background:green;"> + <div style="writing-mode:horizontal-tb;"> + <div style="float:left; width:100px; height:100px;"></div> + </div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html b/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html index ad29b91d88d..cc946a4797a 100644 --- a/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html +++ b/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html @@ -376,6 +376,19 @@ test(() => { document.body.appendChild(div); assert_true(div instanceof MyElement, 'Undefined element is upgraded on connecting to a document'); }, 'document.createElement with unknown "is" value should create "undefined" state element'); + +test(() => { + class MyElement extends HTMLElement { + constructor() { + super(); + this.foo = true; + } + } + customElements.define("my-element", MyElement); + + const instance = document.createElement('my-element', undefined); + assert_true(instance.foo); +}, 'document.createElement with undefined options value should be upgraded.'); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html index 5883c006e84..4ab75ca1109 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html @@ -14,7 +14,7 @@ <meta name="variant" content="?7001-8000"> <meta name="variant" content="?8001-9000"> <meta name="variant" content="?9001-10000"> -<meta name="variant" content="?10001-10000"> +<meta name="variant" content="?10001-11000"> <meta name="variant" content="?11001-12000"> <meta name="variant" content="?12001-13000"> <meta name="variant" content="?13001-14000"> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html index 695aad887c9..342a732def6 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html @@ -14,7 +14,7 @@ <meta name="variant" content="?7001-8000"> <meta name="variant" content="?8001-9000"> <meta name="variant" content="?9001-10000"> -<meta name="variant" content="?10001-10000"> +<meta name="variant" content="?10001-11000"> <meta name="variant" content="?11001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html index b288479d909..d35ef5fe1d3 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html @@ -24,7 +24,8 @@ <meta name="variant" content="?17001-18000"> <meta name="variant" content="?18001-19000"> <meta name="variant" content="?19001-20000"> -<meta name="variant" content="?20001-last"> +<meta name="variant" content="?20001-21000"> +<meta name="variant" content="?21001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/subset-tests.js"></script> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html index 125d0415a8c..e9ae0d1de3a 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html @@ -24,7 +24,8 @@ <meta name="variant" content="?17001-18000"> <meta name="variant" content="?18001-19000"> <meta name="variant" content="?19001-20000"> -<meta name="variant" content="?20001-last"> +<meta name="variant" content="?20001-21000"> +<meta name="variant" content="?21001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/subset-tests.js"></script> @@ -33,6 +34,9 @@ <link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org"> <link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp"> <meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding han characters that are not in the iso-2022-jp encoding."> +</head> +<body> +<div id="log"></div> <script src="../../resources/ranges.js"></script> <script> var errors = true; @@ -47,8 +51,5 @@ function normalizeStr(str) { } </script> <script src="../../resources/encode-href-common.js"></script> -</head> -<body> -<div id="log"></div> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html index 0c3f661941f..a00e4817782 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html @@ -24,7 +24,8 @@ <meta name="variant" content="?17001-18000"> <meta name="variant" content="?18001-19000"> <meta name="variant" content="?19001-20000"> -<meta name="variant" content="?20001-last"> +<meta name="variant" content="?20001-21000"> +<meta name="variant" content="?21001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/subset-tests.js"></script> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html index 0f883a685d4..3b847f51af9 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html @@ -14,7 +14,7 @@ <meta name="variant" content="?7001-8000"> <meta name="variant" content="?8001-9000"> <meta name="variant" content="?9001-10000"> -<meta name="variant" content="?10001-10000"> +<meta name="variant" content="?10001-11000"> <meta name="variant" content="?11001-12000"> <meta name="variant" content="?12001-13000"> <meta name="variant" content="?13001-14000"> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html index 2ee63e5966e..54cc149f95a 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -47,6 +47,6 @@ function expect(result) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-form-common.js"></script> +<script src="../../resources/encode-form-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html index 8d79541b825..8ce4ce67a11 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html @@ -52,9 +52,6 @@ var separator = ","; function expect(result, codepoint) { return "%26%23" + codepoint + "%3B"; } -function normalizeStr(str) { - return str; -} </script> <script src="../../resources/encode-form-common.js"></script> </body> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html index df309c04237..6ba92bb2f3e 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -47,6 +47,6 @@ function expect(result) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-form-common.js"></script> +<script src="../../resources/encode-form-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html index 27b54f7e129..5d897a830ae 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -47,6 +47,6 @@ function expect(result) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-form-common.js"></script> +<script src="../../resources/encode-form-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html index 1160f88568d..999642da9de 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -47,6 +47,6 @@ function expect(result) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-form-common.js"></script> +<script src="../../resources/encode-form-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html index d8f1d801642..2a136a83a9f 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -47,6 +47,6 @@ function expect(result) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-form-common.js"></script> +<script src="../../resources/encode-form-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html index 78b9fe5271a..042cbbab330 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -47,6 +47,6 @@ function expect(result) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-form-common.js"></script> +<script src="../../resources/encode-form-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html index 91ef21373ae..c3889c94406 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html @@ -27,7 +27,7 @@ <meta name="variant" content="?20001-21000"> <meta name="variant" content="?21001-22000"> <meta name="variant" content="?22001-23000"> -<meta name="variant" content="?23001-last"> +<<meta name="variant" content="?23001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/subset-tests.js"></script> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html index a4963fd682a..995b322b100 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html @@ -37,7 +37,7 @@ </head> <body> <div id="log"></div> -<script src="../../ranges.js"></script> +<script src="../../resources/ranges.js"></script> <script> var errors = false; var encoder = euckrEncoder; @@ -46,6 +46,6 @@ function expect(result, codepoint) { return "%" + result.replace(/ /g, "%"); } </script> -<script src="../../encode-href-common.js"></script> +<script src="../../resources/encode-href-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html index 84d8b2dcb36..afa99a4cf58 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html @@ -18,16 +18,7 @@ <meta name="variant" content="?11001-12000"> <meta name="variant" content="?12001-13000"> <meta name="variant" content="?13001-14000"> -<meta name="variant" content="?14001-15000"> -<meta name="variant" content="?15001-16000"> -<meta name="variant" content="?16001-17000"> -<meta name="variant" content="?17001-18000"> -<meta name="variant" content="?18001-19000"> -<meta name="variant" content="?19001-20000"> -<meta name="variant" content="?20001-21000"> -<meta name="variant" content="?21001-22000"> -<meta name="variant" content="?22001-23000"> -<meta name="variant" content="?23001-last"> +<meta name="variant" content="?14001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/subset-tests.js"></script> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html index d8254478786..977d7760e4d 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html @@ -14,7 +14,7 @@ <meta name="variant" content="?7001-8000"> <meta name="variant" content="?8001-9000"> <meta name="variant" content="?9001-10000"> -<meta name="variant" content="?10001-10000"> +<meta name="variant" content="?10001-11000"> <meta name="variant" content="?11001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html index 1a212d63b97..cc7cb222e0d 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html @@ -26,12 +26,12 @@ <script src="../../resources/ranges.js"></script> <script> var errors = true; -var encoder = eucjpEncoder; +var encoder = big5Encoder; var ranges = rangesMisc; function expect(result, codepoint) { return "%26%23" + codepoint + "%3B"; } </script> -<script src="../../resources/encode-form-common.js"></script> +<script src="../../resources/encode-href-common.js"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href.html b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href.html index c7a23d8a931..14e7ef5d530 100644 --- a/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href.html +++ b/tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href.html @@ -1,9 +1,9 @@ <!DOCTYPE html> <html> <head> -<meta name="timeout" content="long"> -<title>Big5 encoding (href)</title> <meta charset="big5"> <!-- test breaks if the server overrides this --> +<title>Big5 encoding (href)</title> +<meta name="timeout" content="long"> <meta name="variant" content="?1-1000"> <meta name="variant" content="?1001-2000"> <meta name="variant" content="?2001-3000"> @@ -11,7 +11,14 @@ <meta name="variant" content="?4001-5000"> <meta name="variant" content="?5001-6000"> <meta name="variant" content="?6001-7000"> -<meta name="variant" content="?7001-last"> +<meta name="variant" content="?7001-8000"> +<meta name="variant" content="?8001-9000"> +<meta name="variant" content="?9001-10000"> +<meta name="variant" content="?10001-11000"> +<meta name="variant" content="?11001-12000"> +<meta name="variant" content="?12001-13000"> +<meta name="variant" content="?13001-14000"> +<meta name="variant" content="?14001-last"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/subset-tests.js"></script> diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-bad-port.html b/tests/wpt/web-platform-tests/fetch/api/request/request-bad-port.html index e7535cf50a5..33610381b6e 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-bad-port.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-bad-port.html @@ -46,7 +46,8 @@ 143, // imap2 179, // bgp 389, // ldap - 465, // smtp+ssl + 427, // afp (alternate) + 465, // smtp (alternate) 512, // print / exec 513, // login 514, // shell @@ -56,12 +57,13 @@ 531, // chat 532, // netnews 540, // uucp + 548, // afp 556, // remotefs 563, // nntp+ssl - 587, // smtp + 587, // smtp (outgoing) 601, // syslog-conn 636, // ldap+ssl - 993, // imap+ssl + 993, // ldap+ssl 995, // pop3+ssl 2049, // nfs 3659, // apple-sasl @@ -72,6 +74,7 @@ 6667, // irc (default) 6668, // irc (alternate) 6669, // irc (alternate) + 6697, // irc+tls ]; BLOCKED_PORTS_LIST.map(function(a){ diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-1.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-1.html deleted file mode 100644 index 69e48f77c01..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-1.html +++ /dev/null @@ -1,10 +0,0 @@ -<script> -onload = function() {opener.next()} -document.write(Math.random()); -</script> - -<form method="POST" action=""> -<input type=hidden name=test value=test> -<input type=submit> -</form> -<button onclick="location.reload()">Reload</button> diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-manual.html index 080545e23d1..95ef6605593 100644 --- a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1.html +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-manual.html @@ -4,7 +4,7 @@ <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> -var win = window.open("reload_post_1-1.html"); +var win = window.open("resources/reload_post_1-1.py"); var t = async_test(); var posted = false; var reloaded = false; diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/reload_post_1-1.py b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/reload_post_1-1.py new file mode 100644 index 00000000000..d2738ac82c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/reload_post_1-1.py @@ -0,0 +1,13 @@ +def main(request, response): + headers = [("Content-Type", "text/html")] + return headers, ''' + <script> + onload = function() {opener.next()} + document.write(Math.random()); + </script> + <form method="POST" action=""> + <input type=hidden name=test value=test> + <input type=submit> + </form> + <button onclick="location.reload()">Reload</button> + ''' diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-same-origin.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-same-origin.html index 327a1f5e867..d1bd00747f9 100644 --- a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-same-origin.html +++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-same-origin.html @@ -3,7 +3,8 @@ <head> <title>Access to sandbox iframe</title> <link rel="author" title="Kinuko Yasuda" href="mailto:kinuko@chromium.org"> - <link rel="help" href="http://www.w3.org/html/wg/drafts/html/master/browsers.html#sandboxing"> + <link rel="help" href="https://html.spec.whatwg.org/multipage/#sandboxed-origin-browsing-context-flag"> + <link rel="help" href="https://html.spec.whatwg.org/multipage/#integration-with-idl"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> @@ -17,9 +18,13 @@ called++; } function loaded() { - assert_equals(document.getElementById('sandboxedframe').contentWindow.document, undefined); - assert_equals(called, 0); - t.done(); + t.step(() => { + assert_throws("SecurityError", () => { + document.getElementById('sandboxedframe').contentWindow.document; + }); + assert_equals(called, 0); + t.done(); + }); } </script> diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/hidden-attr.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/hidden-attr.html index d9143447054..f06c3dc9b4f 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/hidden-attr.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/hidden-attr.html @@ -23,15 +23,16 @@ const expectedDisplay = { 'tbody': 'table-row-group', 'tfoot': 'table-footer-group', 'tr': 'table-row', - 'td': 'table-cell', - 'th': 'table-cell', + 'td': 'none', + 'th': 'none', }; for (const el of document.querySelectorAll("[hidden]")) { test(function() { const style = getComputedStyle(el); assert_equals(style.display, expectedDisplay[el.localName]); if (el instanceof HTMLTableElement || - el instanceof HTMLTableCaptionElement) { + el instanceof HTMLTableCaptionElement || + el instanceof HTMLTableCellElement) { assert_equals(style.visibility, 'visible'); } else { assert_equals(style.visibility, 'collapse'); diff --git a/tests/wpt/web-platform-tests/interfaces/payment-request.idl b/tests/wpt/web-platform-tests/interfaces/payment-request.idl index f925db202a0..3720811db38 100644 --- a/tests/wpt/web-platform-tests/interfaces/payment-request.idl +++ b/tests/wpt/web-platform-tests/interfaces/payment-request.idl @@ -1,131 +1,137 @@ // GENERATED CONTENT - DO NOT EDIT -// Content of this file was automatically extracted from the Payment Request API spec. -// See https://w3c.github.io/payment-request/ +// Content of this file was automatically extracted from the +// "Payment Request API" spec. +// See: https://w3c.github.io/payment-request/ [Constructor(sequence<PaymentMethodData> methodData, PaymentDetailsInit details, optional PaymentOptions options), -SecureContext, Exposed=Window] + SecureContext, + Exposed=Window] interface PaymentRequest : EventTarget { - Promise<PaymentResponse> show(optional Promise<PaymentDetailsUpdate> detailsPromise); - Promise<void> abort(); - Promise<boolean> canMakePayment(); + Promise<PaymentResponse> show(optional Promise<PaymentDetailsUpdate> detailsPromise); + Promise<void> abort(); + Promise<boolean> canMakePayment(); - readonly attribute DOMString id; - readonly attribute PaymentAddress? shippingAddress; - readonly attribute DOMString? shippingOption; - readonly attribute PaymentShippingType? shippingType; + readonly attribute DOMString id; + readonly attribute PaymentAddress? shippingAddress; + readonly attribute DOMString? shippingOption; + readonly attribute PaymentShippingType? shippingType; - attribute EventHandler onshippingaddresschange; + attribute EventHandler onshippingaddresschange; - attribute EventHandler onshippingoptionchange; + attribute EventHandler onshippingoptionchange; }; - dictionary PaymentMethodData { - required DOMString supportedMethods; - object data; + required DOMString supportedMethods; + object data; }; - dictionary PaymentCurrencyAmount { - required DOMString currency; - required DOMString value; + required DOMString currency; + required DOMString value; }; - dictionary PaymentDetailsBase { - sequence<PaymentItem> displayItems; - sequence<PaymentShippingOption> shippingOptions; - sequence<PaymentDetailsModifier> modifiers; + sequence<PaymentItem> displayItems; + sequence<PaymentShippingOption> shippingOptions; + sequence<PaymentDetailsModifier> modifiers; }; - dictionary PaymentDetailsInit : PaymentDetailsBase { - DOMString id; - required PaymentItem total; + DOMString id; + required PaymentItem total; }; - dictionary PaymentDetailsUpdate : PaymentDetailsBase { - DOMString error; - PaymentItem total; + DOMString error; + PaymentItem total; }; - dictionary PaymentDetailsModifier { - required DOMString supportedMethods; - PaymentItem total; - sequence<PaymentItem> additionalDisplayItems; - object data; + required DOMString supportedMethods; + PaymentItem total; + sequence<PaymentItem> additionalDisplayItems; + object data; }; - enum PaymentShippingType { - "shipping", - "delivery", - "pickup" + "shipping", + "delivery", + "pickup" }; - dictionary PaymentOptions { - boolean requestPayerName = false; - boolean requestPayerEmail = false; - boolean requestPayerPhone = false; - boolean requestShipping = false; - PaymentShippingType shippingType = "shipping"; + boolean requestPayerName = false; + boolean requestPayerEmail = false; + boolean requestPayerPhone = false; + boolean requestShipping = false; + PaymentShippingType shippingType = "shipping"; }; - dictionary PaymentItem { - required DOMString label; - required PaymentCurrencyAmount amount; - boolean pending = false; - // Note: type member is "at risk" of being removed! - PaymentItemType type; + required DOMString label; + required PaymentCurrencyAmount amount; + boolean pending = false; + // Note: type member is "at risk" of being removed! + PaymentItemType type; }; - enum PaymentItemType { - "tax" + "tax" }; - -[SecureContext, Exposed=Window] +[SecureContext, + Exposed=(Window)] interface PaymentAddress { - [Default] object toJSON(); - readonly attribute DOMString country; - readonly attribute FrozenArray<DOMString> addressLine; - readonly attribute DOMString region; - readonly attribute DOMString city; - readonly attribute DOMString dependentLocality; - readonly attribute DOMString postalCode; - readonly attribute DOMString sortingCode; - readonly attribute DOMString languageCode; - readonly attribute DOMString organization; - readonly attribute DOMString recipient; - readonly attribute DOMString phone; + [Default] object toJSON(); + readonly attribute DOMString city; + readonly attribute DOMString country; + readonly attribute DOMString dependentLocality; + readonly attribute DOMString languageCode; + readonly attribute DOMString organization; + readonly attribute DOMString phone; + readonly attribute DOMString postalCode; + readonly attribute DOMString recipient; + readonly attribute DOMString region; + readonly attribute DOMString regionCode; + readonly attribute DOMString sortingCode; + readonly attribute FrozenArray<DOMString> addressLine; +}; +dictionary AddressInit { + DOMString country; + sequence<DOMString> addressLine; + DOMString region; + DOMString regionCode; + DOMString city; + DOMString dependentLocality; + DOMString postalCode; + DOMString sortingCode; + DOMString languageCode; + DOMString organization; + DOMString recipient; + DOMString phone; }; - dictionary PaymentShippingOption { - required DOMString id; - required DOMString label; - required PaymentCurrencyAmount amount; - boolean selected = false; + required DOMString id; + required DOMString label; + required PaymentCurrencyAmount amount; + boolean selected = false; }; - enum PaymentComplete { - "fail", - "success", - "unknown" + "fail", + "success", + "unknown" }; - -[SecureContext, Exposed=Window] +[SecureContext, + Exposed=Window] interface PaymentResponse { - [Default] object toJSON(); - - readonly attribute DOMString requestId; - readonly attribute DOMString methodName; - readonly attribute object details; - readonly attribute PaymentAddress? shippingAddress; - readonly attribute DOMString? shippingOption; - readonly attribute DOMString? payerName; - readonly attribute DOMString? payerEmail; - readonly attribute DOMString? payerPhone; - - Promise<void> complete(optional PaymentComplete result = "unknown"); -}; - -[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), SecureContext, Exposed=Window] + [Default] object toJSON(); + + readonly attribute DOMString requestId; + readonly attribute DOMString methodName; + readonly attribute object details; + readonly attribute PaymentAddress? shippingAddress; + readonly attribute DOMString? shippingOption; + readonly attribute DOMString? payerName; + readonly attribute DOMString? payerEmail; + readonly attribute DOMString? payerPhone; + + Promise<void> complete(optional PaymentComplete result = "unknown"); +}; +[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), + SecureContext, + Exposed=Window] interface PaymentRequestUpdateEvent : Event { - void updateWith(Promise<PaymentDetailsUpdate> detailsPromise); + void updateWith(Promise<PaymentDetailsUpdate> detailsPromise); }; - -dictionary PaymentRequestUpdateEventInit : EventInit {}; +dictionary PaymentRequestUpdateEventInit : EventInit { +};
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js b/tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js new file mode 100644 index 00000000000..e492d87d4f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js @@ -0,0 +1,5 @@ +test(() => { + assert_throws(new TypeError(), () => { + new Request("", {importance: 'invalid'}); + }, "a new Request() must throw a TypeError if RequestInit's importance is an invalid value"); +}, "new Request() throws a TypeError if any of RequestInit's members' values are invalid"); diff --git a/tests/wpt/web-platform-tests/tools/ci/check_stability.py b/tests/wpt/web-platform-tests/tools/ci/check_stability.py index d781bae3f9c..1c36153bff5 100644 --- a/tests/wpt/web-platform-tests/tools/ci/check_stability.py +++ b/tests/wpt/web-platform-tests/tools/ci/check_stability.py @@ -20,7 +20,7 @@ from tools.wpt import markdown from tools import localpaths logger = None -stability_run, write_inconsistent, write_results = None, None, None +run_step, write_inconsistent, write_results = None, None, None wptrunner = None def setup_logging(): @@ -35,10 +35,9 @@ def setup_logging(): def do_delayed_imports(): - global stability_run, write_inconsistent, write_results, wptrunner - from tools.wpt.stability import run as stability_run - from tools.wpt.stability import write_inconsistent, write_results + global wptrunner, run_step, write_inconsistent, write_results from wptrunner import wptrunner + from wptrunner.stability import run_step, write_inconsistent, write_results class TravisFold(object): @@ -266,11 +265,15 @@ def run(venv, wpt_args, **kwargs): do_delayed_imports() - wpt_kwargs["stability"] = True wpt_kwargs["prompt"] = False wpt_kwargs["install_browser"] = True wpt_kwargs["install"] = wpt_kwargs["product"].split(":")[0] == "firefox" + wpt_kwargs["pause_after_test"] = False + wpt_kwargs["verify_log_full"] = True + if wpt_kwargs["repeat"] == 1: + wpt_kwargs["repeat"] = 10 + wpt_kwargs = setup_wptrunner(venv, **wpt_kwargs) logger.info("Using binary %s" % wpt_kwargs["binary"]) @@ -279,9 +282,8 @@ def run(venv, wpt_args, **kwargs): with TravisFold("running_tests"): logger.info("Starting tests") - wpt_logger = wptrunner.logger - iterations, results, inconsistent = stability_run(venv, wpt_logger, **wpt_kwargs) + results, inconsistent, iterations = run_step(wpt_logger, wpt_kwargs["repeat"], True, {}, **wpt_kwargs) if results: if inconsistent: diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py index 2c8edbbe9a5..26e01722dfd 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/run.py +++ b/tests/wpt/web-platform-tests/tools/wpt/run.py @@ -49,8 +49,6 @@ def create_parser(): help="Browser to run tests in") parser.add_argument("--yes", "-y", dest="prompt", action="store_false", default=True, help="Don't prompt before installing components") - parser.add_argument("--stability", action="store_true", - help="Stability check tests") parser.add_argument("--install-browser", action="store_true", help="Install the latest development version of the browser") parser._add_container_actions(wptcommandline.create_parser()) @@ -434,7 +432,6 @@ def setup_wptrunner(venv, prompt=True, install=False, **kwargs): def run(venv, **kwargs): #Remove arguments that aren't passed to wptrunner prompt = kwargs.pop("prompt", True) - stability = kwargs.pop("stability", True) install_browser = kwargs.pop("install_browser", False) kwargs = setup_wptrunner(venv, @@ -442,20 +439,7 @@ def run(venv, **kwargs): install=install_browser, **kwargs) - if stability: - import stability - iterations, results, inconsistent = stability.run(venv, logger, **kwargs) - - def log(x): - print(x) - - if inconsistent: - stability.write_inconsistent(log, inconsistent, iterations) - else: - log("All tests stable") - rv = len(inconsistent) > 0 - else: - rv = run_single(venv, **kwargs) > 0 + rv = run_single(venv, **kwargs) > 0 return rv diff --git a/tests/wpt/web-platform-tests/tools/wpt/stability.py b/tests/wpt/web-platform-tests/tools/wpt/stability.py deleted file mode 100644 index b3c85700ec3..00000000000 --- a/tests/wpt/web-platform-tests/tools/wpt/stability.py +++ /dev/null @@ -1,195 +0,0 @@ -import os -import sys -from collections import OrderedDict, defaultdict - -from mozlog import reader -from mozlog.formatters import JSONFormatter, TbplFormatter -from mozlog.handlers import BaseHandler, LogLevelFilter, StreamHandler - -from markdown import markdown_adjust, table -from wptrunner import wptrunner - - -class LogActionFilter(BaseHandler): - - """Handler that filters out messages not of a given set of actions. - - Subclasses BaseHandler. - - :param inner: Handler to use for messages that pass this filter - :param actions: List of actions for which to fire the handler - """ - - def __init__(self, inner, actions): - """Extend BaseHandler and set inner and actions props on self.""" - BaseHandler.__init__(self, inner) - self.inner = inner - self.actions = actions - - def __call__(self, item): - """Invoke handler if action is in list passed as constructor param.""" - if item["action"] in self.actions: - return self.inner(item) - - -class LogHandler(reader.LogHandler): - - """Handle updating test and subtest status in log. - - Subclasses reader.LogHandler. - """ - def __init__(self): - self.results = OrderedDict() - - def find_or_create_test(self, data): - test_name = data["test"] - if self.results.get(test_name): - return self.results[test_name] - - test = { - "subtests": OrderedDict(), - "status": defaultdict(int) - } - self.results[test_name] = test - return test - - def find_or_create_subtest(self, data): - test = self.find_or_create_test(data) - subtest_name = data["subtest"] - - if test["subtests"].get(subtest_name): - return test["subtests"][subtest_name] - - subtest = { - "status": defaultdict(int), - "messages": set() - } - test["subtests"][subtest_name] = subtest - - return subtest - - def test_status(self, data): - subtest = self.find_or_create_subtest(data) - subtest["status"][data["status"]] += 1 - if data.get("message"): - subtest["messages"].add(data["message"]) - - def test_end(self, data): - test = self.find_or_create_test(data) - test["status"][data["status"]] += 1 - - -def is_inconsistent(results_dict, iterations): - """Return whether or not a single test is inconsistent.""" - return len(results_dict) > 1 or sum(results_dict.values()) != iterations - - -def process_results(log, iterations): - """Process test log and return overall results and list of inconsistent tests.""" - inconsistent = [] - handler = LogHandler() - reader.handle_log(reader.read(log), handler) - results = handler.results - for test_name, test in results.iteritems(): - if is_inconsistent(test["status"], iterations): - inconsistent.append((test_name, None, test["status"], [])) - for subtest_name, subtest in test["subtests"].iteritems(): - if is_inconsistent(subtest["status"], iterations): - inconsistent.append((test_name, subtest_name, subtest["status"], subtest["messages"])) - return results, inconsistent - - -def err_string(results_dict, iterations): - """Create and return string with errors from test run.""" - rv = [] - total_results = sum(results_dict.values()) - for key, value in sorted(results_dict.items()): - rv.append("%s%s" % - (key, ": %s/%s" % (value, iterations) if value != iterations else "")) - if total_results < iterations: - rv.append("MISSING: %s/%s" % (iterations - total_results, iterations)) - rv = ", ".join(rv) - if is_inconsistent(results_dict, iterations): - rv = "**%s**" % rv - return rv - - -def write_inconsistent(log, inconsistent, iterations): - """Output inconsistent tests to logger.error.""" - log("## Unstable results ##\n") - strings = [( - "`%s`" % markdown_adjust(test), - ("`%s`" % markdown_adjust(subtest)) if subtest else "", - err_string(results, iterations), - ("`%s`" % markdown_adjust(";".join(messages))) if len(messages) else "") - for test, subtest, results, messages in inconsistent] - table(["Test", "Subtest", "Results", "Messages"], strings, log) - - -def write_results(log, results, iterations, pr_number=None, use_details=False): - log("## All results ##\n") - if use_details: - log("<details>\n") - log("<summary>%i %s ran</summary>\n\n" % (len(results), - "tests" if len(results) > 1 - else "test")) - - for test_name, test in results.iteritems(): - baseurl = "http://w3c-test.org/submissions" - if "https" in os.path.splitext(test_name)[0].split(".")[1:]: - baseurl = "https://w3c-test.org/submissions" - title = test_name - if use_details: - log("<details>\n") - if pr_number: - title = "<a href=\"%s/%s%s\">%s</a>" % (baseurl, pr_number, test_name, title) - log('<summary>%s</summary>\n\n' % title) - else: - log("### %s ###" % title) - strings = [("", err_string(test["status"], iterations), "")] - - strings.extend((( - ("`%s`" % markdown_adjust(subtest_name)) if subtest else "", - err_string(subtest["status"], iterations), - ("`%s`" % markdown_adjust(';'.join(subtest["messages"]))) if len(subtest["messages"]) else "") - for subtest_name, subtest in test["subtests"].items())) - table(["Subtest", "Results", "Messages"], strings, log) - if use_details: - log("</details>\n") - - if use_details: - log("</details>\n") - - -def run(venv, logger, **kwargs): - kwargs["pause_after_test"] = False - if kwargs["repeat"] == 1: - kwargs["repeat"] = 10 - - handler = LogActionFilter( - LogLevelFilter( - StreamHandler( - sys.stdout, - TbplFormatter() - ), - "WARNING"), - ["log", "process_output"]) - - # There is a public API for this in the next mozlog - initial_handlers = logger._state.handlers - logger._state.handlers = [] - - with open("raw.log", "wb") as log: - # Setup logging for wptrunner that keeps process output and - # warning+ level logs only - logger.add_handler(handler) - logger.add_handler(StreamHandler(log, JSONFormatter())) - - wptrunner.run_tests(**kwargs) - - logger._state.handlers = initial_handlers - - with open("raw.log", "rb") as log: - results, inconsistent = process_results(log, kwargs["repeat"]) - - return kwargs["repeat"], results, inconsistent diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py index 709af41bd84..74eb1fe2b2b 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py @@ -19,6 +19,9 @@ from ..executors.executorselenium import (SeleniumTestharnessExecutor, SeleniumRefTestExecutor) here = os.path.split(__file__)[0] +# Number of seconds to wait between polling operations when detecting status of +# Sauce Connect sub-process. +sc_poll_period = 1 __wptrunner__ = {"product": "sauce", @@ -170,31 +173,24 @@ class SauceConnect(): ]) # Timeout config vars - each_sleep_secs = 1 max_wait = 30 - kill_wait = 5 tot_wait = 0 while not os.path.exists('./sauce_is_ready') and self.sc_process.poll() is None: if tot_wait >= max_wait: - self.sc_process.terminate() - while self.sc_process.poll() is None: - time.sleep(each_sleep_secs) - tot_wait += each_sleep_secs - if tot_wait >= (max_wait + kill_wait): - self.sc_process.kill() - break + self.quit() + raise SauceException("Sauce Connect Proxy was not ready after %d seconds" % tot_wait) - time.sleep(each_sleep_secs) - tot_wait += each_sleep_secs + time.sleep(sc_poll_period) + tot_wait += sc_poll_period if self.sc_process.returncode is not None: raise SauceException("Unable to start Sauce Connect Proxy. Process exited with code %s", self.sc_process.returncode) def __exit__(self, exc_type, exc_val, exc_tb): self.env_config = None - self.sc_process.terminate() + self.quit() if self.temp_dir and os.path.exists(self.temp_dir): try: shutil.rmtree(self.temp_dir) @@ -208,6 +204,23 @@ class SauceConnect(): with open(os.path.join(here, 'sauce_setup', file_name), 'rb') as f: requests.post(url, data=f, auth=auth) + def quit(self): + """The Sauce Connect process may be managing an active "tunnel" to the + Sauce Labs service. Issue a request to the process to close any tunnels + and exit. If this does not occur within 5 seconds, force the process to + close.""" + kill_wait = 5 + tot_wait = 0 + self.sc_process.terminate() + + while self.sc_process.poll() is None: + time.sleep(sc_poll_period) + tot_wait += sc_poll_period + + if tot_wait >= kill_wait: + self.sc_process.kill() + break + class SauceException(Exception): pass diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py index e1709c5749a..859f01444d3 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py @@ -181,8 +181,8 @@ def run_step(logger, iterations, restart_after_iteration, kwargs_extras, **kwarg kwargs.update(kwargs_extras) def wrap_handler(x): - x = LogLevelFilter(x, "WARNING") if not kwargs["verify_log_full"]: + x = LogLevelFilter(x, "WARNING") x = LogActionFilter(x, ["log", "process_output"]) return x diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py index db0de8f89d2..b468e42335d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py @@ -65,6 +65,32 @@ def test_sauceconnect_failure_exit(readyfile, returncode): # Given we appear to exit immediately with these mocks, sleep shouldn't be called sleep.assert_not_called() +def test_sauceconnect_cleanup(): + """Ensure that execution pauses when the process is closed while exiting + the context manager. This allow Sauce Connect to close any active + tunnels.""" + with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\ + mock.patch.object(sauce.subprocess, "Popen") as Popen,\ + mock.patch.object(sauce.os.path, "exists") as exists,\ + mock.patch.object(sauce.time, "sleep") as sleep: + Popen.return_value.poll.return_value = True + Popen.return_value.returncode = None + exists.return_value = True + + sauce_connect = sauce.SauceConnect( + sauce_user="aaa", + sauce_key="bbb", + sauce_tunnel_id="ccc", + sauce_connect_binary="ddd") + + env_config = Config(browser_host="example.net") + sauce_connect(None, env_config) + with sauce_connect: + Popen.return_value.poll.return_value = None + sleep.assert_not_called() + + sleep.assert_called() + def test_sauceconnect_failure_never_ready(): with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\ diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_stability.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_stability.py index f2dd012087c..72cff21016a 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_stability.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_stability.py @@ -1,4 +1,9 @@ -from tools.wpt import stability +import sys +from os.path import dirname, join + +sys.path.insert(0, join(dirname(__file__), "..", "..")) + +from wptrunner import stability def test_is_inconsistent(): assert stability.is_inconsistent({"PASS": 10}, 10) is False diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py index c4a01932de4..334df2f1370 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -81,9 +81,13 @@ scheme host and port.""") mode_group.add_argument("--list-tests", action="store_true", default=False, help="List all tests that will run") - mode_group.add_argument("--verify", action="store_true", - default=False, - help="Run a stability check on the selected tests") + stability_group = mode_group.add_mutually_exclusive_group() + stability_group.add_argument("--verify", action="store_true", + default=False, + help="Run a stability check on the selected tests") + stability_group.add_argument("--stability", action="store_true", + default=False, + help=argparse.SUPPRESS) mode_group.add_argument("--verify-log-full", action="store_true", default=False, help="Output per-iteration test results when running verify") diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 3ee4480a530..74f6555b286 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -300,6 +300,14 @@ def run_tests(config, test_paths, product, **kwargs): def check_stability(**kwargs): import stability + if kwargs["stability"]: + logger.warning("--stability is deprecated; please use --verify instead!") + kwargs['verify_max_time'] = None + kwargs['verify_chaos_mode'] = False + kwargs['verify_repeat_loop'] = 0 + kwargs['verify_repeat_restart'] = 10 if kwargs['repeat'] == 1 else kwargs['repeat'] + kwargs['verify_output_results'] = True + return stability.check_stability(logger, max_time=kwargs['verify_max_time'], chaos_mode=kwargs['verify_chaos_mode'], @@ -315,7 +323,7 @@ def start(**kwargs): list_disabled(**kwargs) elif kwargs["list_tests"]: list_tests(**kwargs) - elif kwargs["verify"]: + elif kwargs["verify"] or kwargs["stability"]: check_stability(**kwargs) else: return not run_tests(**kwargs) diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py index 288f066a8ef..75f7c308276 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py @@ -67,7 +67,8 @@ def is_bad_port(port): 143, # imap2 179, # bgp 389, # ldap - 465, # smtp+ssl + 427, # afp (alternate) + 465, # smtp (alternate) 512, # print / exec 513, # login 514, # shell @@ -77,12 +78,13 @@ def is_bad_port(port): 531, # chat 532, # netnews 540, # uucp + 548, # afp 556, # remotefs 563, # nntp+ssl - 587, # smtp + 587, # smtp (outgoing) 601, # syslog-conn 636, # ldap+ssl - 993, # imap+ssl + 993, # ldap+ssl 995, # pop3+ssl 2049, # nfs 3659, # apple-sasl @@ -93,6 +95,7 @@ def is_bad_port(port): 6667, # irc (default) 6668, # irc (alternate) 6669, # irc (alternate) + 6697, # irc+tls ] def get_port(host): diff --git a/tests/wpt/web-platform-tests/websockets/Create-blocked-port.any.js b/tests/wpt/web-platform-tests/websockets/Create-blocked-port.any.js index f0dbc3f5229..0ac5b620170 100644 --- a/tests/wpt/web-platform-tests/websockets/Create-blocked-port.any.js +++ b/tests/wpt/web-platform-tests/websockets/Create-blocked-port.any.js @@ -8,61 +8,63 @@ async_test(t => { // list of bad ports according to // https://fetch.spec.whatwg.org/#port-blocking [ - 1, // tcpmux - 7, // echo - 9, // discard - 11, // systat - 13, // daytime - 15, // netstat - 17, // qotd - 19, // chargen - 20, // ftp-data - 21, // ftp - 22, // ssh - 23, // telnet - 25, // smtp - 37, // time - 42, // name - 43, // nicname - 53, // domain - 77, // priv-rjs - 79, // finger - 87, // ttylink - 95, // supdup - 101, // hostriame - 102, // iso-tsap - 103, // gppitnp - 104, // acr-nema - 109, // pop2 - 110, // pop3 - 111, // sunrpc - 113, // auth - 115, // sftp - 117, // uucp-path - 119, // nntp - 123, // ntp - 135, // loc-srv / epmap - 139, // netbios - 143, // imap2 - 179, // bgp - 389, // ldap - 465, // smtp+ssl - 512, // print / exec - 513, // login - 514, // shell - 515, // printer - 526, // tempo - 530, // courier - 531, // chat - 532, // netnews - 540, // uucp - 556, // remotefs - 563, // nntp+ssl - 587, // smtp - 601, // syslog-conn - 636, // ldap+ssl - 993, // imap+ssl - 995, // pop3+ssl + 1, // tcpmux + 7, // echo + 9, // discard + 11, // systat + 13, // daytime + 15, // netstat + 17, // qotd + 19, // chargen + 20, // ftp-data + 21, // ftp + 22, // ssh + 23, // telnet + 25, // smtp + 37, // time + 42, // name + 43, // nicname + 53, // domain + 77, // priv-rjs + 79, // finger + 87, // ttylink + 95, // supdup + 101, // hostriame + 102, // iso-tsap + 103, // gppitnp + 104, // acr-nema + 109, // pop2 + 110, // pop3 + 111, // sunrpc + 113, // auth + 115, // sftp + 117, // uucp-path + 119, // nntp + 123, // ntp + 135, // loc-srv / epmap + 139, // netbios + 143, // imap2 + 179, // bgp + 389, // ldap + 427, // afp (alternate) + 465, // smtp (alternate) + 512, // print / exec + 513, // login + 514, // shell + 515, // printer + 526, // tempo + 530, // courier + 531, // chat + 532, // netnews + 540, // uucp + 548, // afp + 556, // remotefs + 563, // nntp+ssl + 587, // smtp (outgoing) + 601, // syslog-conn + 636, // ldap+ssl + 993, // ldap+ssl + 995, // pop3+ssl 2049, // nfs 3659, // apple-sasl 4045, // lockd @@ -72,6 +74,7 @@ async_test(t => { 6667, // irc (default) 6668, // irc (alternate) 6669, // irc (alternate) + 6697, // irc+tls ].forEach(blockedPort => { async_test(t => { const ws = CreateWebSocketWithBlockedPort(blockedPort) diff --git a/tests/wpt/web-platform-tests/xhr/event-upload-progress.htm b/tests/wpt/web-platform-tests/xhr/event-upload-progress.htm index e4b24e7cdd5..697d4cbd3f6 100644 --- a/tests/wpt/web-platform-tests/xhr/event-upload-progress.htm +++ b/tests/wpt/web-platform-tests/xhr/event-upload-progress.htm @@ -4,25 +4,30 @@ <title>XMLHttpRequest: upload progress event</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onprogress" data-tested-assertations="../.." /> - <link rel="help" href="https://xhr.spec.whatwg.org/#dom-xmlhttprequest-upload" data-tested-assertations=".." /> - +<script src="/common/get-host-info.sub.js"></script> <div id="log"></div> <script> - var test = async_test(); - test.step(function() { - var client = new XMLHttpRequest(); - client.upload.onprogress = test.step_func(function(e) { - assert_true(e instanceof ProgressEvent); - // This short payload will most likely be sent before the first progress evt - assert_equals(e.loaded, 22); - assert_equals(e.total, 22); - test.done(); - }); - client.onreadystatechange = test.step_func(function() { - if (client.readyState === 4) assert_unreached("onprogress not called."); - }); - client.open("POST", "resources/upload.py"); - client.send("This is a test string."); - }); +const remote = get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/corsenabled.py", + redirect = "resources/redirect.py?code=307&location=" + remote; + +[remote, redirect].forEach(url => { + async_test(test => { + const client = new XMLHttpRequest(); + client.upload.onprogress = test.step_func_done(); + client.onload = test.unreached_func(); + client.open("POST", url); + client.send("On time: " + url); + }, "Upload events registered on time (" + url + ")"); +}); + +[remote, redirect].forEach(url => { + async_test(test => { + const client = new XMLHttpRequest(); + client.onload = test.step_func_done(); + client.open("POST", url); + client.send("Too late: " + url); + client.upload.onloadstart = test.unreached_func(); // registered too late + client.upload.onprogress = test.unreached_func(); // registered too late + }, "Upload events registered too late (" + url + ")"); +}); </script> |