aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock132
-rw-r--r--components/gfx/Cargo.toml2
-rw-r--r--components/gfx/font.rs4
-rw-r--r--components/layout/Cargo.toml2
-rw-r--r--components/layout/display_list/builder.rs123
-rw-r--r--components/layout/display_list/items.rs56
-rw-r--r--components/layout/display_list/webrender_helpers.rs25
-rw-r--r--components/layout/fragment.rs6
-rw-r--r--components/layout/text.rs4
-rw-r--r--components/style/Cargo.toml4
-rw-r--r--components/style/values/computed/length.rs10
-rw-r--r--python/mach_bootstrap.py19
-rw-r--r--python/servo/bootstrap_commands.py10
-rw-r--r--tests/wpt/metadata/MANIFEST.json797
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-bad-port.html.ini89
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-same-origin.html.ini6
-rw-r--r--tests/wpt/metadata/xhr/event-upload-progress.htm.ini7
-rw-r--r--tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/support.js8
-rw-r--r--tests/wpt/web-platform-tests/common/subset-tests.js32
-rw-r--r--tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html26
-rw-r--r--tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html (renamed from tests/wpt/web-platform-tests/console/console-format-specifier-symbol-manual.html)4
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/available-001.xht1
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/available-002.xht30
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/directory-knowntags-001-ref.xht (renamed from tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-001-ref.xht)13
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/directory-knowntags-001.xht (renamed from tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-001.xht)17
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001-ref.xht32
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-compression-001.xht37
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004-ref.xht32
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-uniqueid-004.xht37
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005-ref.xht32
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-schema-vendor-005.xht37
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/available-001a.xht4
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/available-001b.xht4
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/available-002.woff2bin0 -> 1868 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/available-002a.xht33
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/available-002b.xht33
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/directory-knowntags-001.woff2bin0 -> 1504 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-compression-001.woff2bin4950 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2bin1426 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2bin1426 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2bin1047 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2bin1081 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/support/tabledata-glyf-origlength-003.woff2bin0 -> 1496 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003-ref.xht (renamed from tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-002-ref.xht)13
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003.xht (renamed from tests/wpt/web-platform-tests/css/WOFF2/metadatadisplay-metaOrigLength-002.xht)17
-rw-r--r--tests/wpt/web-platform-tests/css/WOFF2/testcaseindex.xht209
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-001.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-003.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-004.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-005.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-008.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-009.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-010.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-011.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-012.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-013.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-014.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flexbox_quirks_body.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox_quirks_body-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-border-color.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-border-style.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-border-width.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-inset.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-margin.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-padding.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-box-size.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/resources/test-box-properties.js252
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/column-count-used-001.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/float-in-htb-in-vrl.html13
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/Document-createElement.html13
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html2
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html2
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html3
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html3
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html2
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html3
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html2
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html11
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html2
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href.html13
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/request-bad-port.html9
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-1.html10
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1-manual.html (renamed from tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/reload_post_1.html)2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/reload_post_1-1.py13
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-same-origin.html13
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/hidden-attr.html7
-rw-r--r--tests/wpt/web-platform-tests/interfaces/payment-request.idl194
-rw-r--r--tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js5
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/check_stability.py16
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py18
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/stability.py195
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py37
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py26
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_stability.py (renamed from tests/wpt/web-platform-tests/tools/wpt/tests/test_stability.py)7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py10
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py10
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py9
-rw-r--r--tests/wpt/web-platform-tests/websockets/Create-blocked-port.any.js113
-rw-r--r--tests/wpt/web-platform-tests/xhr/event-upload-progress.htm43
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
new file mode 100644
index 00000000000..eb4f7821863
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/WOFF2/support/available-002.woff2
Binary files differ
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
new file mode 100644
index 00000000000..4995d9cba74
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/WOFF2/support/directory-knowntags-001.woff2
Binary files differ
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
deleted file mode 100644
index 38eab419ba2..00000000000
--- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-compression-001.woff2
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 12f1a96138f..00000000000
--- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-001.woff2
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index cc62a109028..00000000000
--- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-metaOrigLength-002.woff2
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index f0eaee134f3..00000000000
--- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-uniqueid-004.woff2
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index f34bb90d56f..00000000000
--- a/tests/wpt/web-platform-tests/css/WOFF2/support/metadatadisplay-schema-vendor-005.woff2
+++ /dev/null
Binary files differ
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
new file mode 100644
index 00000000000..9bd964d202b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/WOFF2/support/tabledata-glyf-origlength-003.woff2
Binary files differ
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>