mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Update web-platform-tests to revision 2a73e37c60b18846d9d2798c845242f209d74644
This commit is contained in:
parent
c6192dc286
commit
41b281893f
62 changed files with 2230 additions and 174 deletions
|
@ -2,6 +2,9 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-with-fetch.any.html]
|
||||
[Revoke blob URL after creating Request, will fetch]
|
||||
|
|
|
@ -20399,6 +20399,42 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"compat/webkit-box-horizontal-reverse-variants.html": [
|
||||
[
|
||||
"compat/webkit-box-horizontal-reverse-variants.html",
|
||||
[
|
||||
[
|
||||
"/compat/webkit-box-horizontal-reverse-variants-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"compat/webkit-box-horizontal-rtl-variants.html": [
|
||||
[
|
||||
"compat/webkit-box-horizontal-rtl-variants.html",
|
||||
[
|
||||
[
|
||||
"/compat/webkit-box-horizontal-rtl-variants-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"compat/webkit-box-rtl-flex.html": [
|
||||
[
|
||||
"compat/webkit-box-rtl-flex.html",
|
||||
[
|
||||
[
|
||||
"/compat/webkit-box-rtl-flex-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"compat/webkit-linear-gradient-diff-unprefixed.html": [
|
||||
[
|
||||
"compat/webkit-linear-gradient-diff-unprefixed.html",
|
||||
|
@ -206867,6 +206903,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/rendering/the-details-element/summary-display-list-item.html": [
|
||||
[
|
||||
"html/rendering/the-details-element/summary-display-list-item.html",
|
||||
[
|
||||
[
|
||||
"/html/rendering/the-details-element/summary-display-list-item-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/rendering/widgets/button-layout/anonymous-button-content-box.html": [
|
||||
[
|
||||
"html/rendering/widgets/button-layout/anonymous-button-content-box.html",
|
||||
|
@ -218528,6 +218576,15 @@
|
|||
"compat/webkit-box-fieldset-ref.html": [
|
||||
[]
|
||||
],
|
||||
"compat/webkit-box-horizontal-reverse-variants-ref.html": [
|
||||
[]
|
||||
],
|
||||
"compat/webkit-box-horizontal-rtl-variants-ref.html": [
|
||||
[]
|
||||
],
|
||||
"compat/webkit-box-rtl-flex-ref.html": [
|
||||
[]
|
||||
],
|
||||
"compat/webkit-linear-gradient-diff-unprefixed-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -247355,6 +247412,9 @@
|
|||
"css/css-animations/animationevent-interface.js": [
|
||||
[]
|
||||
],
|
||||
"css/css-animations/support/empty-sheet.css": [
|
||||
[]
|
||||
],
|
||||
"css/css-animations/support/testcommon.js": [
|
||||
[]
|
||||
],
|
||||
|
@ -276905,6 +276965,9 @@
|
|||
"html/rendering/the-details-element/single-summary.html": [
|
||||
[]
|
||||
],
|
||||
"html/rendering/the-details-element/summary-display-list-item-ref.html": [
|
||||
[]
|
||||
],
|
||||
"html/rendering/widgets/button-layout/anonymous-button-content-box-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -284861,6 +284924,9 @@
|
|||
"resources/test/tests/functional/api-tests-3.html": [
|
||||
[]
|
||||
],
|
||||
"resources/test/tests/functional/assert-array-equals.html": [
|
||||
[]
|
||||
],
|
||||
"resources/test/tests/functional/force_timeout.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -321851,6 +321917,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-animations/animation-before-initial-box-construction-001.html": [
|
||||
[
|
||||
"css/css-animations/animation-before-initial-box-construction-001.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-animations/animation-iteration-count-calc.html": [
|
||||
[
|
||||
"css/css-animations/animation-iteration-count-calc.html",
|
||||
|
@ -325407,6 +325479,24 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [
|
||||
[
|
||||
"css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [
|
||||
[
|
||||
"css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content-distribution.html": [
|
||||
[
|
||||
"css/css-grid/alignment/grid-align-content-distribution.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content.html": [
|
||||
[
|
||||
"css/css-grid/alignment/grid-align-content.html",
|
||||
|
@ -361856,6 +361946,14 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/cross-origin-opener-policy/coop-navigated-history-popup.https.html": [
|
||||
[
|
||||
"html/cross-origin-opener-policy/coop-navigated-history-popup.https.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/cross-origin-opener-policy/coop-navigated-popup.https.html": [
|
||||
[
|
||||
"html/cross-origin-opener-policy/coop-navigated-popup.https.html",
|
||||
|
@ -467883,7 +467981,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html": [
|
||||
"94fc0d1c57ac6cab4e5f637584d5e1d9db7e1a5c",
|
||||
"0a4f91d085d60523d49b190d3064aad222cc56d3",
|
||||
"testharness"
|
||||
],
|
||||
"2dcontext/imagebitmap/common.sub.js": [
|
||||
|
@ -476926,6 +477024,22 @@
|
|||
"c3a2e64c114ef78507213ab95f5cde91cac3bbbe",
|
||||
"reftest"
|
||||
],
|
||||
"compat/webkit-box-horizontal-reverse-variants-ref.html": [
|
||||
"72d0b2c6f6851764453f79cf71fc19be73bcb0e8",
|
||||
"support"
|
||||
],
|
||||
"compat/webkit-box-horizontal-reverse-variants.html": [
|
||||
"09dba694f260c6e5536663cac6151427a49d6dc5",
|
||||
"reftest"
|
||||
],
|
||||
"compat/webkit-box-horizontal-rtl-variants-ref.html": [
|
||||
"42321c506979b2ec08814cf024dc95da24f3d6d2",
|
||||
"support"
|
||||
],
|
||||
"compat/webkit-box-horizontal-rtl-variants.html": [
|
||||
"085a5899bc8e78214d57e691b0e5c3b3fc2904aa",
|
||||
"reftest"
|
||||
],
|
||||
"compat/webkit-box-ignore-box-pack.html": [
|
||||
"80b52fbf1fe13a7c9ec5288f301194e40a381430",
|
||||
"testharness"
|
||||
|
@ -476934,6 +477048,14 @@
|
|||
"30c243b301fbafc55a03aae0286ba4c2b1983da1",
|
||||
"testharness"
|
||||
],
|
||||
"compat/webkit-box-rtl-flex-ref.html": [
|
||||
"10b9eb73fd9017746116e55d42df434ba33fec1e",
|
||||
"support"
|
||||
],
|
||||
"compat/webkit-box-rtl-flex.html": [
|
||||
"d20b3a0a9dbab237a799f62504b9b1ea7b90a564",
|
||||
"reftest"
|
||||
],
|
||||
"compat/webkit-box-vertically-centered.html": [
|
||||
"4932274e906172f37ceed65067141817aa1b26ab",
|
||||
"testharness"
|
||||
|
@ -497883,7 +498005,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"cookies/http-state/general-tests.html": [
|
||||
"d80527f9b0aa22c0611edff546d5663198a412bb",
|
||||
"f563bf7c68d662be8182ade0b4fd1629295df754",
|
||||
"testharness"
|
||||
],
|
||||
"cookies/http-state/mozilla-tests.html": [
|
||||
|
@ -497951,7 +498073,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0004-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"5ab27668fdbdd021d29abbda3acd08e94aa92b0b",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0004-test": [
|
||||
|
@ -498087,7 +498209,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0021-expected": [
|
||||
"a43cb004436a02f18cda39625fc2126f373dd7ae",
|
||||
"445a5929e81e05151a90913c6ef2597a1aafd3e8",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0021-test": [
|
||||
|
@ -498103,7 +498225,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0023-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"5ab27668fdbdd021d29abbda3acd08e94aa92b0b",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0023-test": [
|
||||
|
@ -498111,7 +498233,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0024-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"5ab27668fdbdd021d29abbda3acd08e94aa92b0b",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0024-test": [
|
||||
|
@ -498119,7 +498241,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0025-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"5ab27668fdbdd021d29abbda3acd08e94aa92b0b",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0025-test": [
|
||||
|
@ -498127,7 +498249,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0026-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"5ab27668fdbdd021d29abbda3acd08e94aa92b0b",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0026-test": [
|
||||
|
@ -498135,7 +498257,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0027-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"973d3847c04c2243d89086aa490a5e54f2d41f10",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0027-test": [
|
||||
|
@ -498143,7 +498265,7 @@
|
|||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0028-expected": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"5ab27668fdbdd021d29abbda3acd08e94aa92b0b",
|
||||
"support"
|
||||
],
|
||||
"cookies/http-state/resources/test-files/0028-test": [
|
||||
|
@ -560922,6 +561044,10 @@
|
|||
"3ef19970007d4bb6a889f9601bc7c910f619f841",
|
||||
"support"
|
||||
],
|
||||
"css/css-animations/animation-before-initial-box-construction-001.html": [
|
||||
"558c5ea18699f3856c7d34b976f920b1fd7fd5b0",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-animations/animation-common-ref.html": [
|
||||
"ddc7da67ddf5fed83e653d1130a65f5c1e3a6dec",
|
||||
"support"
|
||||
|
@ -561410,6 +561536,10 @@
|
|||
"792fda33ed8b0bacf355e62066ec05d54cc5c729",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-animations/support/empty-sheet.css": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
"support"
|
||||
],
|
||||
"css/css-animations/support/testcommon.js": [
|
||||
"b4fde4b967de2eb67cb3e0819c3a896375e861f9",
|
||||
"support"
|
||||
|
@ -582706,6 +582836,18 @@
|
|||
"d45df4bc2231cbda5dee1bafc3f386f008024d79",
|
||||
"support"
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [
|
||||
"8217f4dd2c3cfd031aece87d54a78d5bcec640ca",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [
|
||||
"096e3fd6910a09ba5097b66acdb1dcf8a6d5326e",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content-distribution.html": [
|
||||
"7b66ddb995191c67278d861aa6cb6a637bc6adaf",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/alignment/grid-align-content.html": [
|
||||
"fb3f7007ee19189a09de9c1f786176c317b7ee14",
|
||||
"testharness"
|
||||
|
@ -654318,6 +654460,10 @@
|
|||
"63b60e490f47f4db77d33d7a4ca2f5b9a4181de8",
|
||||
"support"
|
||||
],
|
||||
"html/cross-origin-opener-policy/coop-navigated-history-popup.https.html": [
|
||||
"bd1cabafd4164e51804b0760dbf45885f3df3520",
|
||||
"testharness"
|
||||
],
|
||||
"html/cross-origin-opener-policy/coop-navigated-popup.https.html": [
|
||||
"3c6019ace0b308562cca08d6d6bfd6484882e1db",
|
||||
"testharness"
|
||||
|
@ -654519,11 +654665,11 @@
|
|||
"support"
|
||||
],
|
||||
"html/cross-origin-opener-policy/resources/common.js": [
|
||||
"53b80bb6e998e6f93a46176b58be4c016275ce0f",
|
||||
"477bc6c948f29cc18dc987e828eb5799b4a946ab",
|
||||
"support"
|
||||
],
|
||||
"html/cross-origin-opener-policy/resources/coop-coep.py": [
|
||||
"8691e1b59d3134ef210259ed9501d123c002f88c",
|
||||
"e6f655ab728107e4bac31cd7748711f719b01bd3",
|
||||
"support"
|
||||
],
|
||||
"html/cross-origin-opener-policy/resources/postback.html": [
|
||||
|
@ -661522,6 +661668,14 @@
|
|||
"1f09e7e75f9126982a07902ae0693f9ea2fd5823",
|
||||
"support"
|
||||
],
|
||||
"html/rendering/the-details-element/summary-display-list-item-ref.html": [
|
||||
"31e98d3fdca8fff9fe88929c8075643fca3abb40",
|
||||
"support"
|
||||
],
|
||||
"html/rendering/the-details-element/summary-display-list-item.html": [
|
||||
"c2e96e987ea943e29626e0cfd013ef6d6cae3bbc",
|
||||
"reftest"
|
||||
],
|
||||
"html/rendering/unmapped-attributes.html": [
|
||||
"3f457eb492f0b72b2a9c5891e8784d0b69958b38",
|
||||
"testharness"
|
||||
|
@ -673435,7 +673589,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/reporting.idl": [
|
||||
"f5370e8f1e656acf7409dbda907ee9672d5e8ed1",
|
||||
"d42f0bac59c2fa6d8f94402f7b6e1e29de379123",
|
||||
"support"
|
||||
],
|
||||
"interfaces/requestidlecallback.idl": [
|
||||
|
@ -673551,7 +673705,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webauthn.idl": [
|
||||
"29025f35eecb5c82b33ffcc7039c4a99f081f4e3",
|
||||
"56c2856b19a76d85a0b0495d620c025247ad3f42",
|
||||
"support"
|
||||
],
|
||||
"interfaces/webdriver.idl": [
|
||||
|
@ -673583,7 +673737,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webrtc.idl": [
|
||||
"badbe4df1dccd4113cb76e47f4a842f20d0d8963",
|
||||
"053afdcb13587543e7da6140e72101f3892a05a0",
|
||||
"support"
|
||||
],
|
||||
"interfaces/webusb.idl": [
|
||||
|
@ -674371,7 +674525,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"lint.whitelist": [
|
||||
"353922a456c4dbeacd2ab6d651b64be00c9a4903",
|
||||
"425730feea72429b66926298d3716b8164648211",
|
||||
"support"
|
||||
],
|
||||
"loading/lazyload/META.yml": [
|
||||
|
@ -702511,7 +702665,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/test/conftest.py": [
|
||||
"4caa7943fb7ba125e5c51437e7a70aecbd3989dd",
|
||||
"857f1b41bcb11c422d6603e79d8c98a6b1dfbb07",
|
||||
"support"
|
||||
],
|
||||
"resources/test/harness.html": [
|
||||
|
@ -702582,6 +702736,10 @@
|
|||
"d32b4d8bc7ddfef398d769f73478e0f3f075f871",
|
||||
"support"
|
||||
],
|
||||
"resources/test/tests/functional/assert-array-equals.html": [
|
||||
"d56419d1f313f34674d778236c5f6e74b5260def",
|
||||
"support"
|
||||
],
|
||||
"resources/test/tests/functional/force_timeout.html": [
|
||||
"a43759530ad8cd7e6bc61fe367db34bbf7a32e15",
|
||||
"support"
|
||||
|
@ -702851,7 +703009,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/test/variants.js": [
|
||||
"eebac6f7d14c2f8ee4b4eead727081a5e494cee4",
|
||||
"c40085a329f7ad5fbb34ed842542db29c2bc3734",
|
||||
"support"
|
||||
],
|
||||
"resources/test/wptserver.py": [
|
||||
|
@ -702879,7 +703037,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/testharness.js": [
|
||||
"f289e7797201d7d9fa569c2864649571bd50b54c",
|
||||
"2c3664dfa6ab5518019dc6f2c27e275bb6a62a16",
|
||||
"support"
|
||||
],
|
||||
"resources/testharness.js.headers": [
|
||||
|
@ -713459,7 +713617,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/ci/azure/install_chrome.yml": [
|
||||
"6bd5c2334ad4e3e4d5d6faaf8005f4e0b44cf1fe",
|
||||
"fd650e80aaad309c8e983274d2b823bba91b1fb1",
|
||||
"support"
|
||||
],
|
||||
"tools/ci/azure/install_edge.yml": [
|
||||
|
@ -713487,7 +713645,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/ci/azure/safari-technology-preview.rb": [
|
||||
"a3772b75e462194eb0de5ea2c7532a8248ec3d79",
|
||||
"2d4912abbff674291e4e9497b0a37b6c6a9989c8",
|
||||
"support"
|
||||
],
|
||||
"tools/ci/azure/system_info.yml": [
|
||||
|
@ -718351,7 +718509,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/webdriver/webdriver/client.py": [
|
||||
"0c5bbff5629868fdc48a1a41cf882fabe5617c1b",
|
||||
"cf4c5fd35fd98bb54ba248d1c1c31590310727ed",
|
||||
"support"
|
||||
],
|
||||
"tools/webdriver/webdriver/error.py": [
|
||||
|
@ -727775,15 +727933,15 @@
|
|||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_element_screenshot/__init__.py": [
|
||||
"9de8792460797f4a31ee50d112c7132a2c2714ad",
|
||||
"9a82cc48eab7993dcd6588d89b5aae9ed4ebfc82",
|
||||
"support"
|
||||
],
|
||||
"webdriver/tests/take_element_screenshot/iframe.py": [
|
||||
"242122f0b5e7359c364a8aa1da345fc3da15acf1",
|
||||
"83f55deff753a4525839d3c0675acfb459f64395",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_element_screenshot/screenshot.py": [
|
||||
"fd460b656ae307a289174f9180ecc9ed23f0da07",
|
||||
"50d33a266db75f0fc918ac5fa6d1edc6e548385f",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_element_screenshot/user_prompts.py": [
|
||||
|
@ -727791,11 +727949,11 @@
|
|||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_screenshot/__init__.py": [
|
||||
"c07f8d167030d03abbb263ef08d8846bb7a71eba",
|
||||
"f3001d946df56e58c4e3fa1319db12bf29f3e341",
|
||||
"support"
|
||||
],
|
||||
"webdriver/tests/take_screenshot/iframe.py": [
|
||||
"66df6ec94935554340f916e4c2d9bb88012de1b5",
|
||||
"601c039d56de0aa2937ac73675ba59792cbdcd17",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_screenshot/screenshot.py": [
|
||||
|
|
2
tests/wpt/metadata/css/CSS2/ui/outline-width-013.xht.ini
Normal file
2
tests/wpt/metadata/css/CSS2/ui/outline-width-013.xht.ini
Normal file
|
@ -0,0 +1,2 @@
|
|||
[outline-width-013.xht]
|
||||
expected: FAIL
|
|
@ -0,0 +1,5 @@
|
|||
[animation-before-initial-box-construction-001.html]
|
||||
expected: ERROR
|
||||
[animations started before initial-containing-block creation properly function]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[listeners are called when <iframe> is resized]
|
||||
expected: FAIL
|
||||
|
||||
[listeners are called correct number of times]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
[elementsFromPoint on inner documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -321,6 +321,15 @@
|
|||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Embedded credentials are treated as network errors in frames.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Embedded credentials are treated as network errors in new windows.]
|
||||
expected: FAIL
|
||||
|
@ -13,9 +13,3 @@
|
|||
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Embedded credentials matching the top-level are not treated as network errors for relative URLs.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,4 @@
|
|||
[skip-document-with-fragment.html]
|
||||
expected: TIMEOUT
|
||||
[Autofocus elements in iframed documents with URL fragments should be skipped.]
|
||||
expected: FAIL
|
||||
|
||||
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[summary-display-list-item.html]
|
||||
expected: FAIL
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[iframe_005.html]
|
||||
[document.write external script into iframe write back into parent]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[crossorigin-sandwich-TAO.sub.html]
|
||||
expected: ERROR
|
||||
[There should be one entry.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
[test_source_origin[same_origin\]]
|
||||
expected: FAIL
|
||||
|
||||
[test_frame_element]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[iframe.py]
|
||||
[test_source_origin[cross_origin\]]
|
||||
expected: FAIL
|
||||
|
||||
[test_source_origin[same_origin\]]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[005.html]
|
||||
expected: ERROR
|
||||
[dedicated worker in shared worker in dedicated worker]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -55,5 +55,5 @@ video.preload = "auto";
|
|||
video.oncanplaythrough = t.step_func(function() {
|
||||
return generateTest();
|
||||
});
|
||||
video.src = "/media/video.ogv";
|
||||
video.src = '/media/counting.' + (video.canPlayType('video/ogg') ? 'ogv' : 'mp4');
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
.flexbox {
|
||||
width: 300px;
|
||||
display: flex;
|
||||
border-style: solid;
|
||||
border-width: 1px 2px 1px 4px;
|
||||
}
|
||||
|
||||
.reverse {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.redbox {
|
||||
background: red;
|
||||
width: 100px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.greenbox {
|
||||
background: green;
|
||||
width: 100px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
<p>Exercises -webkit-box with various box-pack settings when direction is
|
||||
reverse. In all cases the order of letters in the boxes should be
|
||||
alphabetized left to right.
|
||||
<p>Start. Boxes should be aligned to left side.
|
||||
<div class="flexbox reverse" style="justify-content: flex-end;">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Centered. Boxes should be centered.
|
||||
<div class="flexbox reverse" style="justify-content: center;">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>End. Boxes should be aligned to right side.
|
||||
<div class="flexbox reverse">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Start, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="flexbox">
|
||||
<div class="greenbox">A</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">D</div>
|
||||
</div>
|
||||
|
||||
<p>Center, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="flexbox">
|
||||
<div class="greenbox">A</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">D</div>
|
||||
</div>
|
||||
|
||||
<p>End, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="flexbox">
|
||||
<div class="greenbox">A</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">D</div>
|
||||
</div>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://crbug.com/1034461">
|
||||
<link rel="match" href="webkit-box-horizontal-reverse-variants-ref.html">
|
||||
<style>
|
||||
.webkitbox {
|
||||
width: 300px;
|
||||
display: -webkit-box;
|
||||
-webkit-box-direction: reverse;
|
||||
border-style: solid;
|
||||
border-width: 1px 2px 1px 4px;
|
||||
}
|
||||
|
||||
.redbox {
|
||||
background: red;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.greenbox {
|
||||
background: green;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<p>Exercises -webkit-box with various box-pack settings when direction is
|
||||
reverse. In all cases the order of letters in the boxes should be
|
||||
alphabetized left to right.
|
||||
<p>Start. Boxes should be aligned to left side.
|
||||
<div class="webkitbox">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Centered. Boxes should be centered.
|
||||
<div class="webkitbox" style="-webkit-box-pack: center">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>End. Boxes should be aligned to right side.
|
||||
<div class="webkitbox" style="-webkit-box-pack: end">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Start, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="webkitbox">
|
||||
<div class="redbox">D</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Center, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="webkitbox" style="-webkit-box-pack: center">
|
||||
<div class="redbox">D</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>End, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="webkitbox" style="-webkit-box-pack: end">
|
||||
<div class="redbox">D</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
.flexbox {
|
||||
width: 300px;
|
||||
display: flex;
|
||||
border-style: solid;
|
||||
border-width: 1px 2px 1px 4px;
|
||||
}
|
||||
|
||||
.rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.redbox {
|
||||
background: red;
|
||||
width: 100px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.greenbox {
|
||||
background: green;
|
||||
width: 100px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
<p>Exercises -webkit-box with various box-pack settings when rtl. In all cases
|
||||
the order of letters in the boxes should be alphabetized left to right.
|
||||
<p>Start. Boxes should be aligned to right side.
|
||||
<div class="flexbox rtl">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Centered. Boxes should be centered.
|
||||
<div class="flexbox rtl" style="justify-content: center;">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>End. Boxes should be aligned to left side.
|
||||
<div class="flexbox rtl" style="justify-content: flex-end;">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Start, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="flexbox">
|
||||
<div class="greenbox rtl">A</div>
|
||||
<div class="redbox rtl">B</div>
|
||||
<div class="greenbox rtl">C</div>
|
||||
<div class="redbox rtl">D</div>
|
||||
</div>
|
||||
|
||||
<p>Center, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="flexbox">
|
||||
<div class="greenbox rtl">A</div>
|
||||
<div class="redbox rtl">B</div>
|
||||
<div class="greenbox rtl">C</div>
|
||||
<div class="redbox rtl">D</div>
|
||||
</div>
|
||||
|
||||
<p>End, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="flexbox">
|
||||
<div class="greenbox rtl">A</div>
|
||||
<div class="redbox rtl">B</div>
|
||||
<div class="greenbox rtl">C</div>
|
||||
<div class="redbox rtl">D</div>
|
||||
</div>
|
|
@ -0,0 +1,69 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://crbug.com/1034461">
|
||||
<link rel="match" href="webkit-box-horizontal-rtl-variants-ref.html">
|
||||
<style>
|
||||
.webkitbox {
|
||||
width: 300px;
|
||||
display: -webkit-box;
|
||||
direction: rtl;
|
||||
border-style: solid;
|
||||
border-width: 1px 2px 1px 4px;
|
||||
}
|
||||
|
||||
.redbox {
|
||||
background: red;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.greenbox {
|
||||
background: green;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<p>Exercises -webkit-box with various box-pack settings when rtl. In all cases
|
||||
the order of letters in the boxes should be alphabetized left to right.
|
||||
<p>Start. Boxes should be aligned to right side.
|
||||
<div class="webkitbox">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Centered. Boxes should be centered.
|
||||
<div class="webkitbox" style="-webkit-box-pack: center">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>End. Boxes should be aligned to left side.
|
||||
<div class="webkitbox" style="-webkit-box-pack: end">
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Start, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="webkitbox">
|
||||
<div class="redbox">D</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>Center, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="webkitbox" style="-webkit-box-pack: center">
|
||||
<div class="redbox">D</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
||||
|
||||
<p>End, content too big. Boxes should start at left edge and extend
|
||||
outside border.
|
||||
<div class="webkitbox" style="-webkit-box-pack: end">
|
||||
<div class="redbox">D</div>
|
||||
<div class="greenbox">C</div>
|
||||
<div class="redbox">B</div>
|
||||
<div class="greenbox">A</div>
|
||||
</div>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
#flexbox {
|
||||
width: 500px;
|
||||
display: flex;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
#redbox {
|
||||
background: red;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
#greenbox {
|
||||
background: green;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
</style>
|
||||
<p>There should be a green box followed by a red box, both on the same line.
|
||||
<div id="flexbox">
|
||||
<div id="redbox">A</div>
|
||||
<div id="greenbox">B</div>
|
||||
</div>
|
26
tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex.html
Normal file
26
tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex.html
Normal file
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://crbug.com/1034461">
|
||||
<link rel="match" href="webkit-box-rtl-flex-ref.html">
|
||||
<style>
|
||||
#webkitbox {
|
||||
width: 500px;
|
||||
display: -webkit-box;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
#redbox {
|
||||
background: red;
|
||||
-webkit-box-flex: 1;
|
||||
}
|
||||
|
||||
#greenbox {
|
||||
background: green;
|
||||
-webkit-box-flex: 1;
|
||||
}
|
||||
|
||||
</style>
|
||||
<p>There should be a green box followed by a red box, both on the same line.
|
||||
<div id="webkitbox">
|
||||
<div id="redbox">A</div>
|
||||
<div id="greenbox">B</div>
|
||||
</div>
|
|
@ -24,7 +24,7 @@
|
|||
{file: "0001", name: "Set cookie."},
|
||||
{file: "0002", name: "Set cookie with future expiration."},
|
||||
{file: "0003", name: "Set expired cookie along with valid cookie."},
|
||||
{file: "0004", name: "Ignore cookie without key."},
|
||||
{file: "0004", name: "Set nameless cookie."},
|
||||
{file: "0005", name: "Set cookie with age."},
|
||||
{file: "0006", name: "Set no cookie with max-age=0."},
|
||||
{file: "0007", name: "Set cookie with version=1."},
|
||||
|
@ -41,15 +41,15 @@
|
|||
{file: "0017", name: "Keep order if comma-separated."},
|
||||
{file: "0018", name: "Ignore keys after semicolon."},
|
||||
{file: "0019", name: "Ignore attributes after semicolon."},
|
||||
{file: "0020", name: "Ignore cookies without key and value."},
|
||||
{file: "0021", name: "Ignore cookie without key in all 'Set-Cookie'."},
|
||||
{file: "0022", name: "Set cookie without value in all 'Set-Cookie'."},
|
||||
{file: "0023", name: "Ignore cookies without '=' in all 'Set-Cookie'."},
|
||||
{file: "0024", name: "Ignore malformed cookies in all 'Set-Cookie'."},
|
||||
{file: "0025", name: "Ignore cookies with ';' in all 'Set-Cookie'."},
|
||||
{file: "0026", name: "Ignore malformed cookies in all 'Set-Cookie' v2."},
|
||||
{file: "0027", name: "Ignore malformed cookies in all 'Set-Cookie' v3."},
|
||||
{file: "0028", name: "Ignore malformed cookies in all 'Set-Cookie' v4."},
|
||||
{file: "0020", name: "Ignore `Set-Cookie: =`."},
|
||||
{file: "0021", name: "Set nameless cookie, given `Set-Cookie: =x`"},
|
||||
{file: "0022", name: "Set valueless cookie, given `Set-Cookie: x=`"},
|
||||
{file: "0023", name: "Ignore empty cookie string."},
|
||||
{file: "0024", name: "Ignore `Set-Cookie: =` with other `Set-Cookie` headers."},
|
||||
{file: "0025", name: "Ignore name- and value-less `Set-Cookie: ; bar`."},
|
||||
{file: "0026", name: "Ignore name- and value-less `Set-Cookie: `."},
|
||||
{file: "0027", name: "Overwrite nameless cookie."},
|
||||
{file: "0028", name: "Ignore name- and value-less `Set-Cookie: \t"},
|
||||
];
|
||||
|
||||
for (const i in TEST_CASES) {
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Cookie: foo
|
|
@ -1 +1 @@
|
|||
Cookie: a=b; c=d
|
||||
Cookie: a=b; x; c=d
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Cookie: foo
|
|
@ -0,0 +1 @@
|
|||
Cookie: foo
|
|
@ -0,0 +1 @@
|
|||
Cookie: foo
|
|
@ -0,0 +1 @@
|
|||
Cookie: foo
|
|
@ -0,0 +1 @@
|
|||
Cookie: bar
|
|
@ -0,0 +1 @@
|
|||
Cookie: foo
|
|
@ -0,0 +1,53 @@
|
|||
<!doctype html>
|
||||
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||
<link rel="author" href="mailto:https://mozilla.org" title="Mozilla">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605610">
|
||||
<link rel="help" href="https://drafts.csswg.org/web-animations/#extensions-to-the-element-interface">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
let t = async_test("animations started before initial-containing-block creation properly function");
|
||||
let loaded = false;
|
||||
let finished = false;
|
||||
let span;
|
||||
|
||||
function check() {
|
||||
if (!loaded || !finished)
|
||||
return;
|
||||
|
||||
assert_equals(getComputedStyle(span).opacity, "1", "Animation should be properly finished");
|
||||
t.done();
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
span = document.createElement("span");
|
||||
span.id = "myspan";
|
||||
span.innerHTML = `Some content`;
|
||||
document.body.appendChild(span);
|
||||
|
||||
let anim = span.animate([
|
||||
{
|
||||
opacity: "0",
|
||||
},
|
||||
{
|
||||
opacity: "1",
|
||||
},
|
||||
], {
|
||||
duration: 300,
|
||||
});
|
||||
|
||||
anim.finished.then(t.step_func(function() {
|
||||
finished = true;
|
||||
check();
|
||||
}));
|
||||
});
|
||||
|
||||
window.addEventListener("load", t.step_func(function() {
|
||||
loaded = true;
|
||||
check();
|
||||
}));
|
||||
</script>
|
||||
<!-- It is important that there are no more script after this stylesheet -->
|
||||
<link rel="stylesheet" href="empty-sheet.css?pipe=trickle(d2)">
|
||||
<body>
|
||||
</body>
|
|
@ -0,0 +1,358 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Test: aligned content distribution for vertical lr</title>
|
||||
<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values">
|
||||
<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values for the vertical-lr writing mode.">
|
||||
<meta name="flags" content="ahem">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<link rel="stylesheet" href="/css/support/grid.css">
|
||||
|
||||
<style>
|
||||
|
||||
.grid {
|
||||
grid-auto-columns: 20px;
|
||||
grid-auto-rows: 40px;
|
||||
position: relative;
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.stretchedGrid {
|
||||
grid-auto-rows: auto;
|
||||
}
|
||||
|
||||
.thirdRowFirstColumn {
|
||||
background-color: green;
|
||||
grid-column: 1;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.fourthRowFirstColumn {
|
||||
background-color: deepskyblue;
|
||||
grid-column: 1;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.fourthRowSecondColumn {
|
||||
background-color: maroon;
|
||||
grid-column: 2;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.thirdRowFirstColumn {
|
||||
background-color: green;
|
||||
grid-column: 1;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.fourthRowFirstColumn {
|
||||
background-color: deepskyblue;
|
||||
grid-column: 1;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.fourthRowSecondColumn {
|
||||
background-color: maroon;
|
||||
grid-column: 2;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/check-layout-th.js"></script>
|
||||
|
||||
<body onload="checkLayout('.grid')">
|
||||
|
||||
<p>This test checks that the align-content property is applied correctly when using content-distribution values in vertical-lr writing mode.</p>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="80" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="80" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="280" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="280" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="107" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="107" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="253" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="253" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="47" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="47" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="313" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="313" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="70" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="70" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="290" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="290" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="120" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="120" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="240" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="240" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="30" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="130" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="130" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="230" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="230" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="330" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="330" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="48" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="48" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="136" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="136" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="224" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="224" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="312" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="312" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="300" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="300" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RTL direction. -->
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="80" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="80" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="280" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="280" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="107" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="107" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="253" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="253" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="47" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="47" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="313" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="313" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="70" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="70" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="290" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="290" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="120" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="120" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="240" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="240" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="30" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="130" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="130" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="230" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="230" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="330" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="330" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="48" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="48" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="136" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="136" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="224" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="224" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="312" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="312" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="300" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="300" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
|
@ -0,0 +1,358 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Test: aligned content distribution for vertical rl</title>
|
||||
<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values">
|
||||
<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values for the vertical-rl writing mode.">
|
||||
<meta name="flags" content="ahem">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<link rel="stylesheet" href="/css/support/grid.css">
|
||||
|
||||
<style>
|
||||
|
||||
.grid {
|
||||
grid-auto-columns: 20px;
|
||||
grid-auto-rows: 40px;
|
||||
position: relative;
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.stretchedGrid {
|
||||
grid-auto-rows: auto;
|
||||
}
|
||||
|
||||
.thirdRowFirstColumn {
|
||||
background-color: green;
|
||||
grid-column: 1;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.fourthRowFirstColumn {
|
||||
background-color: deepskyblue;
|
||||
grid-column: 1;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.fourthRowSecondColumn {
|
||||
background-color: maroon;
|
||||
grid-column: 2;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.thirdRowFirstColumn {
|
||||
background-color: green;
|
||||
grid-column: 1;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.fourthRowFirstColumn {
|
||||
background-color: deepskyblue;
|
||||
grid-column: 1;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.fourthRowSecondColumn {
|
||||
background-color: maroon;
|
||||
grid-column: 2;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/check-layout-th.js"></script>
|
||||
|
||||
<body onload="checkLayout('.grid')">
|
||||
|
||||
<p>This test checks that the align-content property is applied correctly when using content-distribution values for vertical-rl mode.</p>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="280" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="280" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="80" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="80" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="253" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="253" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="107" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="107" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="313" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="313" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="47" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="47" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="290" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="290" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="70" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="70" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="240" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="240" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="120" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="120" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="330" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="330" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="230" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="230" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="130" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="130" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="30" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="30" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="312" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="312" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="224" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="224" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="136" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="136" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="48" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="48" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="300" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="300" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RTL direction. -->
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="280" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="280" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="80" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="80" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="253" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="253" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="107" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="107" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="313" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="313" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="47" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="47" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="290" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="290" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="70" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="70" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="240" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="240" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="120" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="120" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="330" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="330" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="230" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="230" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="130" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="130" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="30" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="30" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="312" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="312" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="224" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="224" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="136" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="136" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="48" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="48" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="300" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="300" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="100" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="100" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
|
@ -0,0 +1,358 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Test: aligned content distribution</title>
|
||||
<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values">
|
||||
<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values.">
|
||||
<meta name="flags" content="ahem">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<link rel="stylesheet" href="/css/support/grid.css">
|
||||
|
||||
<style>
|
||||
|
||||
.grid {
|
||||
grid-auto-columns: 20px;
|
||||
grid-auto-rows: 40px;
|
||||
position: relative;
|
||||
width: 200px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.stretchedGrid {
|
||||
grid-auto-rows: auto;
|
||||
}
|
||||
|
||||
.thirdRowFirstColumn {
|
||||
background-color: green;
|
||||
grid-column: 1;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.fourthRowFirstColumn {
|
||||
background-color: deepskyblue;
|
||||
grid-column: 1;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.fourthRowSecondColumn {
|
||||
background-color: maroon;
|
||||
grid-column: 2;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.thirdRowFirstColumn {
|
||||
background-color: green;
|
||||
grid-column: 1;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.fourthRowFirstColumn {
|
||||
background-color: deepskyblue;
|
||||
grid-column: 1;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
.fourthRowSecondColumn {
|
||||
background-color: maroon;
|
||||
grid-column: 2;
|
||||
grid-row: 4;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/check-layout-th.js"></script>
|
||||
|
||||
<body onload="checkLayout('.grid')">
|
||||
|
||||
<p>This test checks that the align-content property is applied correctly when using content-distribution values.</p>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: LTR | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RTL direction. -->
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-between'</p>
|
||||
<div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-around'</p>
|
||||
<div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'space-evenly'</p>
|
||||
<div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="position: relative">
|
||||
<p>direction: RTL | align-content: 'stretch'</p>
|
||||
<div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300">
|
||||
<div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div>
|
||||
<div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
|
@ -0,0 +1,18 @@
|
|||
<!doctype html>
|
||||
<title>Cross-Origin-Opener-Policy: a navigating popup that then goes back in history</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<script src="resources/common.js"></script>
|
||||
<script>
|
||||
const title = `Popup navigating to other origin with COOP: same-origin and back in history`;
|
||||
const channel = title.replace(/ /g,"-");
|
||||
const opener = false;
|
||||
const openerDOMAccess = false;
|
||||
const navigateURL = `${CROSS_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=same-origin&coep=&navHistory=-1`;
|
||||
|
||||
async_test(t => {
|
||||
url_test(t, `${SAME_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=&coep=&navigate=${encodeURIComponent(navigateURL)}&avoidBackAndForth=1&channel=${channel}`, channel, opener, openerDOMAccess);
|
||||
}, title);
|
||||
</script>
|
|
@ -2,12 +2,16 @@ const SAME_ORIGIN = {origin: get_host_info().HTTPS_ORIGIN, name: "SAME_ORIGIN"};
|
|||
const SAME_SITE = {origin: get_host_info().HTTPS_REMOTE_ORIGIN, name: "SAME_SITE"};
|
||||
const CROSS_ORIGIN = {origin: get_host_info().HTTPS_NOTSAMESITE_ORIGIN, name: "CROSS_ORIGIN"}
|
||||
|
||||
function url_test(t, url, channelName, hasOpener) {
|
||||
function url_test(t, url, channelName, hasOpener, openerDOMAccess) {
|
||||
const bc = new BroadcastChannel(channelName);
|
||||
bc.onmessage = t.step_func_done(event => {
|
||||
const payload = event.data;
|
||||
assert_equals(payload.name, hasOpener ? channelName : "");
|
||||
assert_equals(payload.opener, hasOpener);
|
||||
assert_equals(payload.name, hasOpener ? channelName : "", 'name');
|
||||
assert_equals(payload.opener, hasOpener, 'opener');
|
||||
// TODO(zcorpan): add openerDOMAccess expectations to all tests
|
||||
if (openerDOMAccess !== undefined) {
|
||||
assert_equals(payload.openerDOMAccess, openerDOMAccess, 'openerDOMAccess');
|
||||
}
|
||||
});
|
||||
|
||||
const w = window.open(url, channelName);
|
||||
|
@ -17,8 +21,8 @@ function url_test(t, url, channelName, hasOpener) {
|
|||
t.add_cleanup(() => w.close());
|
||||
}
|
||||
|
||||
function coop_coep_test(t, host, coop, coep, channelName, hasOpener) {
|
||||
url_test(t, `${host.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${encodeURIComponent(coop)}&coep=${coep}&channel=${channelName}`, channelName, hasOpener);
|
||||
function coop_coep_test(t, host, coop, coep, channelName, hasOpener, openerDOMAccess) {
|
||||
url_test(t, `${host.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${encodeURIComponent(coop)}&coep=${coep}&channel=${channelName}`, channelName, hasOpener, openerDOMAccess);
|
||||
}
|
||||
|
||||
function coop_test(t, host, coop, channelName, hasOpener) {
|
||||
|
|
|
@ -21,13 +21,38 @@ def main(request, response):
|
|||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<iframe></iframe>
|
||||
<script>
|
||||
const navigate = new URL(location).searchParams.get("navigate");
|
||||
if (navigate !== null) {
|
||||
self.location = navigate;
|
||||
const params = new URL(location).searchParams;
|
||||
const navHistory = params.get("navHistory");
|
||||
const avoidBackAndForth = params.get("avoidBackAndForth");
|
||||
const navigate = params.get("navigate");
|
||||
// Need to wait until the page is fully loaded before navigating
|
||||
// so that it creates a history entry properly.
|
||||
const fullyLoaded = new Promise((resolve, reject) => {
|
||||
addEventListener('load', () => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
if (navHistory !== null) {
|
||||
fullyLoaded.then(() => {
|
||||
history.go(Number(navHistory));
|
||||
});
|
||||
} else if (navigate !== null && (history.length === 1 || !avoidBackAndForth)) {
|
||||
fullyLoaded.then(() => {
|
||||
self.location = navigate;
|
||||
});
|
||||
} else {
|
||||
let openerDOMAccessAllowed = false;
|
||||
try {
|
||||
openerDOMAccessAllowed = !!self.opener.document.URL;
|
||||
} catch(ex) {
|
||||
}
|
||||
const iframe = document.querySelector("iframe");
|
||||
iframe.onload = () => {
|
||||
const payload = { name: self.name, opener: !!self.opener };
|
||||
const payload = { name: self.name, opener: !!self.opener, openerDOMAccess: openerDOMAccessAllowed };
|
||||
iframe.contentWindow.postMessage(payload, "*");
|
||||
};
|
||||
const channelName = new URL(location).searchParams.get("channel");
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Reference: summary with 'display: list-item'</title>
|
||||
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
||||
<style>
|
||||
details {
|
||||
margin-left: 50px;
|
||||
}
|
||||
.inside {
|
||||
list-style-position: inside;
|
||||
}
|
||||
</style>
|
||||
<details>
|
||||
<summary>summary</summary>
|
||||
content
|
||||
</details>
|
||||
<details>
|
||||
<summary class="inside">summary</summary>
|
||||
content
|
||||
</details>
|
||||
<details open>
|
||||
<summary>summary</summary>
|
||||
content
|
||||
</details>
|
||||
<details open>
|
||||
<summary class="inside">summary</summary>
|
||||
content
|
||||
</details>
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test: summary with 'display: list-item'</title>
|
||||
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
||||
<link rel="match" href="summary-display-list-item-ref.html">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#the-details-and-summary-elements">
|
||||
<meta name="assert" content="Checks that styling a <summary> with 'display: list-item' has no effect since it should already be a list item by default.">
|
||||
<style>
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
details {
|
||||
margin-left: 50px;
|
||||
}
|
||||
.inside {
|
||||
list-style-position: inside;
|
||||
}
|
||||
</style>
|
||||
<details>
|
||||
<summary>summary</summary>
|
||||
content
|
||||
</details>
|
||||
<details>
|
||||
<summary class="inside">summary</summary>
|
||||
content
|
||||
</details>
|
||||
<details open>
|
||||
<summary>summary</summary>
|
||||
content
|
||||
</details>
|
||||
<details open>
|
||||
<summary class="inside">summary</summary>
|
||||
content
|
||||
</details>
|
|
@ -33,33 +33,6 @@ dictionary ReportingObserverOptions {
|
|||
|
||||
typedef sequence<Report> ReportList;
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface DeprecationReportBody : ReportBody {
|
||||
[Default] object toJSON();
|
||||
readonly attribute DOMString id;
|
||||
readonly attribute Date? anticipatedRemoval;
|
||||
readonly attribute DOMString message;
|
||||
readonly attribute DOMString? sourceFile;
|
||||
readonly attribute unsigned long? lineNumber;
|
||||
readonly attribute unsigned long? columnNumber;
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface InterventionReportBody : ReportBody {
|
||||
[Default] object toJSON();
|
||||
readonly attribute DOMString id;
|
||||
readonly attribute DOMString message;
|
||||
readonly attribute DOMString? sourceFile;
|
||||
readonly attribute unsigned long? lineNumber;
|
||||
readonly attribute unsigned long? columnNumber;
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface CrashReportBody : ReportBody {
|
||||
[Default] object toJSON();
|
||||
readonly attribute DOMString? reason;
|
||||
};
|
||||
|
||||
dictionary GenerateTestReportParameters {
|
||||
required DOMString message;
|
||||
DOMString group = "default";
|
||||
|
|
|
@ -236,10 +236,10 @@ partial dictionary AuthenticationExtensionsClientOutputs {
|
|||
UvmEntries uvm;
|
||||
};
|
||||
|
||||
dictionary authenticatorBiometricPerfBounds{
|
||||
dictionary AuthenticatorBiometricPerfBounds {
|
||||
float FAR;
|
||||
float FRR;
|
||||
};
|
||||
};
|
||||
|
||||
partial dictionary AuthenticationExtensionsClientInputs {
|
||||
boolean credProps;
|
||||
|
|
|
@ -588,7 +588,6 @@ interface RTCError : DOMException {
|
|||
constructor(RTCErrorInit init, optional DOMString message = "");
|
||||
readonly attribute RTCErrorDetailType errorDetail;
|
||||
readonly attribute long? sdpLineNumber;
|
||||
readonly attribute long? httpRequestStatusCode;
|
||||
readonly attribute long? sctpCauseCode;
|
||||
readonly attribute unsigned long? receivedAlert;
|
||||
readonly attribute unsigned long? sentAlert;
|
||||
|
@ -597,7 +596,6 @@ interface RTCError : DOMException {
|
|||
dictionary RTCErrorInit {
|
||||
required RTCErrorDetailType errorDetail;
|
||||
long sdpLineNumber;
|
||||
long httpRequestStatusCode;
|
||||
long sctpCauseCode;
|
||||
unsigned long receivedAlert;
|
||||
unsigned long sentAlert;
|
||||
|
|
|
@ -99,6 +99,7 @@ TRAILING WHITESPACE: cookies/http-state/resources/test-files/*
|
|||
# Intentional use of print statements
|
||||
PRINT STATEMENT: dom/nodes/Document-createElement-namespace-tests/generate.py
|
||||
PRINT STATEMENT: encrypted-media/polyfill/make-polyfill-tests.py
|
||||
PRINT STATEMENT: resources/test/conftest.py
|
||||
PRINT STATEMENT: webdriver/tests/support/helpers.py
|
||||
|
||||
# semi-legitimate use of console.*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import io
|
||||
import copy
|
||||
import json
|
||||
import os
|
||||
import ssl
|
||||
|
@ -16,6 +16,7 @@ HERE = os.path.dirname(os.path.abspath(__file__))
|
|||
WPT_ROOT = os.path.normpath(os.path.join(HERE, '..', '..'))
|
||||
HARNESS = os.path.join(HERE, 'harness.html')
|
||||
TEST_TYPES = ('functional', 'unit')
|
||||
DEFAULT_VARIANTS = ["?default"]
|
||||
|
||||
|
||||
def pytest_addoption(parser):
|
||||
|
@ -108,14 +109,15 @@ class HTMLItem(pytest.Item, pytest.Collector):
|
|||
raise ValueError('Could not resolve path "%s" from %s' % (src, filename))
|
||||
|
||||
if not name:
|
||||
raise ValueError('No name found in file: %s' % filename)
|
||||
raise ValueError('No name found in %s add a <title> element' % filename)
|
||||
elif self.type == 'functional':
|
||||
if not self.expected:
|
||||
raise ValueError('Functional tests must specify expected report data')
|
||||
if not includes_variants_script:
|
||||
raise ValueError('No variants script found in file: %s' % filename)
|
||||
raise ValueError('No variants script found in file %s add '
|
||||
'\'<script src="../../variants.js"></script>\'' % filename)
|
||||
if len(self.variants) == 0:
|
||||
raise ValueError('No test variants specified in file %s' % filename)
|
||||
self.variants = DEFAULT_VARIANTS
|
||||
elif self.type == 'unit' and self.expected:
|
||||
raise ValueError('Unit tests must not specify expected report data')
|
||||
|
||||
|
@ -153,7 +155,9 @@ class HTMLItem(pytest.Item, pytest.Collector):
|
|||
'runTest("%s", "foo", arguments[0])' % self.url
|
||||
)
|
||||
|
||||
summarized = self._summarize(actual)
|
||||
summarized = self._summarize(copy.deepcopy(actual))
|
||||
|
||||
print(json.dumps(summarized, indent=2))
|
||||
|
||||
assert summarized[u'summarized_status'][u'status_string'] == u'OK', summarized[u'summarized_status'][u'message']
|
||||
for test in summarized[u'summarized_tests']:
|
||||
|
@ -173,12 +177,15 @@ class HTMLItem(pytest.Item, pytest.Collector):
|
|||
test_url = self.url + variant
|
||||
actual = driver.execute_async_script('runTest("%s", "foo", arguments[0])' % test_url)
|
||||
|
||||
summarized = self._summarize(copy.deepcopy(actual))
|
||||
|
||||
print(json.dumps(summarized, indent=2))
|
||||
|
||||
# Test object ordering is not guaranteed. This weak assertion verifies
|
||||
# that the indices are unique and sequential
|
||||
indices = [test_obj.get('index') for test_obj in actual['tests']]
|
||||
self._assert_sequence(indices)
|
||||
|
||||
summarized = self._summarize(actual)
|
||||
self.expected[u'summarized_tests'].sort(key=lambda test_obj: test_obj.get('name'))
|
||||
|
||||
assert summarized == self.expected
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
<!DOCTYPE HTML>
|
||||
<title>assert_array_equals</title>
|
||||
<script src="../../variants.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
test(() => {
|
||||
assert_array_equals([], []);
|
||||
}, "empty and equal");
|
||||
test(() => {
|
||||
assert_array_equals([1], [1]);
|
||||
}, "non-empty and equal");
|
||||
test(() => {
|
||||
assert_array_equals([], [1]);
|
||||
}, "length differs");
|
||||
test(() => {
|
||||
assert_array_equals([1], [,]);
|
||||
}, "property is present");
|
||||
test(() => {
|
||||
assert_array_equals([,], [1]);
|
||||
}, "property is missing");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], ["x",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]);
|
||||
}, "property 0 differs");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], [0,1,2,3,4,"x",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]);
|
||||
}, "property 5 differs");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "lengths differ and input array beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "lengths differ and expected array beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "property 0 is present and arrays are beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "property 0 is missing and arrays are beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,,19,20,21]);
|
||||
}, "property 18 is present and arrays are beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "property 18 is missing and arrays are beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], ["x",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "property 0 differs and arrays are beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,"x",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]);
|
||||
}, "property 5 differs and arrays are beyond display limit");
|
||||
test(() => {
|
||||
assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26], [0,1,2,3,4,5,6,7,8,9,10,11,"x",13,14,15,16,17,18,19,20,21,22,23,24,25,26]);
|
||||
}, "property 5 differs and arrays are beyond display limit on both sides");
|
||||
</script>
|
||||
<script type="text/json" id="expected">
|
||||
{
|
||||
"type": "complete",
|
||||
"summarized_status": {
|
||||
"message": null,
|
||||
"status_string": "OK"
|
||||
},
|
||||
"summarized_tests": [
|
||||
{
|
||||
"name": "empty and equal",
|
||||
"message": null,
|
||||
"properties": {},
|
||||
"status_string": "PASS"
|
||||
},
|
||||
{
|
||||
"name": "length differs",
|
||||
"message": "assert_array_equals: lengths differ, expected array [1] length 1, got [] length 0",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "lengths differ and expected array beyond display limit",
|
||||
"message": "assert_array_equals: lengths differ, expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 22, got [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 21",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "lengths differ and input array beyond display limit",
|
||||
"message": "assert_array_equals: lengths differ, expected array [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 21, got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 22",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "non-empty and equal",
|
||||
"message": null,
|
||||
"properties": {},
|
||||
"status_string": "PASS"
|
||||
},
|
||||
{
|
||||
"name": "property 0 differs",
|
||||
"message": "assert_array_equals: expected property 0 to be \"x\" but got 0 (expected array [\"x\", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 0 differs and arrays are beyond display limit",
|
||||
"message": "assert_array_equals: expected property 0 to be \"x\" but got 0 (expected array [\"x\", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 0 is missing and arrays are beyond display limit",
|
||||
"message": "assert_array_equals: expected property 0 to be \"present\" but was \"missing\" (expected array [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 0 is present and arrays are beyond display limit",
|
||||
"message": "assert_array_equals: expected property 0 to be \"missing\" but was \"present\" (expected array [, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 18 is missing and arrays are beyond display limit",
|
||||
"message": "assert_array_equals: expected property 18 to be \"present\" but was \"missing\" (expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, , 19, 20, 21])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 18 is present and arrays are beyond display limit",
|
||||
"message": "assert_array_equals: expected property 18 to be \"missing\" but was \"present\" (expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, , 19, 20, 21] got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 5 differs",
|
||||
"message": "assert_array_equals: expected property 5 to be \"x\" but got 5 (expected array [0, 1, 2, 3, 4, \"x\", 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 5 differs and arrays are beyond display limit",
|
||||
"message": "assert_array_equals: expected property 5 to be \"x\" but got 5 (expected array [0, 1, 2, 3, 4, \"x\", 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property 5 differs and arrays are beyond display limit on both sides",
|
||||
"message": "assert_array_equals: expected property 12 to be \"x\" but got 12 (expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, \"x\", 13, 14, 15, 16, 17, 18, 19, 20, 21, \u2026] got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, \u2026])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property is missing",
|
||||
"message": "assert_array_equals: expected property 0 to be \"present\" but was \"missing\" (expected array [1] got [])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
},
|
||||
{
|
||||
"name": "property is present",
|
||||
"message": "assert_array_equals: expected property 0 to be \"missing\" but was \"present\" (expected array [] got [1])",
|
||||
"properties": {},
|
||||
"status_string": "FAIL"
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
|
@ -1,5 +1,7 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
// NOTE: When new default variants are added DEFAULT_VARIANTS in conftest.py
|
||||
// must also be updated
|
||||
var variants = {
|
||||
/**
|
||||
* Tests are executed in the absence of the global Promise constructor by
|
||||
|
|
|
@ -1006,7 +1006,15 @@ policies and contribution forms [3].
|
|||
seen.push(val);
|
||||
}
|
||||
if (Array.isArray(val)) {
|
||||
return "[" + val.map(function(x) {return format_value(x, seen);}).join(", ") + "]";
|
||||
let output = "[";
|
||||
if (val.beginEllipsis !== undefined) {
|
||||
output += "…, ";
|
||||
}
|
||||
output += val.map(function(x) {return format_value(x, seen);}).join(", ");
|
||||
if (val.endEllipsis !== undefined) {
|
||||
output += ", …";
|
||||
}
|
||||
return output + "]";
|
||||
}
|
||||
|
||||
switch (typeof val) {
|
||||
|
@ -1178,25 +1186,57 @@ policies and contribution forms [3].
|
|||
|
||||
function assert_array_equals(actual, expected, description)
|
||||
{
|
||||
const max_array_length = 20;
|
||||
function shorten_array(arr, offset = 0) {
|
||||
// Make ", …" only show up when it would likely reduce the length, not accounting for
|
||||
// fonts.
|
||||
if (arr.length < max_array_length + 2) {
|
||||
return arr;
|
||||
}
|
||||
// By default we want half the elements after the offset and half before
|
||||
// But if that takes us past the end of the array, we have more before, and
|
||||
// if it takes us before the start we have more after.
|
||||
const length_after_offset = Math.floor(max_array_length / 2);
|
||||
let upper_bound = Math.min(length_after_offset + offset, arr.length);
|
||||
const lower_bound = Math.max(upper_bound - max_array_length, 0);
|
||||
|
||||
if (lower_bound === 0) {
|
||||
upper_bound = max_array_length;
|
||||
}
|
||||
|
||||
const output = arr.slice(lower_bound, upper_bound);
|
||||
if (lower_bound > 0) {
|
||||
output.beginEllipsis = true;
|
||||
}
|
||||
if (upper_bound < arr.length) {
|
||||
output.endEllipsis = true;
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
assert(typeof actual === "object" && actual !== null && "length" in actual,
|
||||
"assert_array_equals", description,
|
||||
"value is ${actual}, expected array",
|
||||
{actual:actual});
|
||||
assert(actual.length === expected.length,
|
||||
"assert_array_equals", description,
|
||||
"lengths differ, expected ${expected} got ${actual}",
|
||||
{expected:expected.length, actual:actual.length});
|
||||
"lengths differ, expected array ${expected} length ${expectedLength}, got ${actual} length ${actualLength}",
|
||||
{expected:shorten_array(expected, expected.length - 1), expectedLength:expected.length,
|
||||
actual:shorten_array(actual, actual.length - 1), actualLength:actual.length
|
||||
});
|
||||
|
||||
for (var i = 0; i < actual.length; i++) {
|
||||
assert(actual.hasOwnProperty(i) === expected.hasOwnProperty(i),
|
||||
"assert_array_equals", description,
|
||||
"property ${i}, property expected to be ${expected} but was ${actual}",
|
||||
"expected property ${i} to be ${expected} but was ${actual} (expected array ${arrayExpected} got ${arrayActual})",
|
||||
{i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing",
|
||||
actual:actual.hasOwnProperty(i) ? "present" : "missing"});
|
||||
actual:actual.hasOwnProperty(i) ? "present" : "missing",
|
||||
arrayExpected:shorten_array(expected, i), arrayActual:shorten_array(actual, i)});
|
||||
assert(same_value(expected[i], actual[i]),
|
||||
"assert_array_equals", description,
|
||||
"property ${i}, expected ${expected} but got ${actual}",
|
||||
{i:i, expected:expected[i], actual:actual[i]});
|
||||
"expected property ${i} to be ${expected} but got ${actual} (expected array ${arrayExpected} got ${arrayActual})",
|
||||
{i:i, expected:expected[i], actual:actual[i],
|
||||
arrayExpected:shorten_array(expected, i), arrayActual:shorten_array(actual, i)});
|
||||
}
|
||||
}
|
||||
expose(assert_array_equals, "assert_array_equals");
|
||||
|
@ -1216,7 +1256,7 @@ policies and contribution forms [3].
|
|||
"assert_array_approx_equals", description,
|
||||
"property ${i}, property expected to be ${expected} but was ${actual}",
|
||||
{i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing",
|
||||
actual:actual.hasOwnProperty(i) ? "present" : "missing"});
|
||||
actual:actual.hasOwnProperty(i) ? "present" : "missing"});
|
||||
assert(typeof actual[i] === "number",
|
||||
"assert_array_approx_equals", description,
|
||||
"property ${i}, expected a number but got a ${type_actual}",
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
steps:
|
||||
# This is equivalent to `Homebrew/homebrew-cask-versions/google-chrome-dev`,
|
||||
# but the raw URL is used to bypass caching.
|
||||
- script: HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb
|
||||
# The conflicting google-chrome and chromedriver casks are first uninstalled.
|
||||
# The raw google-chrome-dev cask URL is used to bypass caching.
|
||||
- script: |
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall google-chrome || true
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall chromedriver || true
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb
|
||||
displayName: 'Install Chrome Dev'
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin'))
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
cask 'safari-technology-preview' do
|
||||
if MacOS.version <= :mojave
|
||||
version '97,061-62396-20191217-bcf15e6a-ba77-4912-bd7a-5c136c6a9bb0'
|
||||
sha256 '75678852258e1869daf69e853b345556fea05adcd5d71530501c3be584212830'
|
||||
version '98,061-66319-20200108-e9d7f579-fba9-46c9-97fc-9445bed56df0'
|
||||
sha256 '860305b6e60915a71a15fa6267c549e635a415db66c220d1deee6e482a50299c'
|
||||
else
|
||||
version '97,061-62395-20191217-fd754f32-1f09-4449-8aab-ebb9ba1ab1c4'
|
||||
sha256 'bfce6e57c4aad6b0423cabc54176de1e3115c656496a5a28dd91a7b78e16bf58'
|
||||
version '98,061-66316-20200108-559ee008-6ff9-4219-8256-3c0464bbe29b'
|
||||
sha256 '9bac3e5e278adfe817db69b976d4be0903d9903ae48d3d7d3744626b5c178f03'
|
||||
end
|
||||
|
||||
url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
|
||||
|
|
|
@ -737,6 +737,10 @@ class Element(object):
|
|||
def selected(self):
|
||||
return self.send_element_command("GET", "selected")
|
||||
|
||||
@command
|
||||
def screenshot(self):
|
||||
return self.send_element_command("GET", "screenshot")
|
||||
|
||||
@command
|
||||
def attribute(self, name):
|
||||
return self.send_element_command("GET", "attribute/%s" % name)
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
def element_rect(session, element):
|
||||
return session.execute_script("""
|
||||
let {devicePixelRatio} = window;
|
||||
let {left, top, width, height} = arguments[0].getBoundingClientRect();
|
||||
def element_dimensions(session, element):
|
||||
return tuple(session.execute_script("""
|
||||
const {devicePixelRatio} = window;
|
||||
let {width, height} = arguments[0].getBoundingClientRect();
|
||||
|
||||
return {
|
||||
x: Math.floor((left + window.pageXOffset) * devicePixelRatio),
|
||||
y: Math.floor((top + window.pageYOffset) * devicePixelRatio),
|
||||
width: Math.floor(width * devicePixelRatio),
|
||||
height: Math.floor(height * devicePixelRatio),
|
||||
};
|
||||
""", args=(element,))
|
||||
return [
|
||||
Math.floor(width * devicePixelRatio),
|
||||
Math.floor(height * devicePixelRatio),
|
||||
];
|
||||
""", args=(element,)))
|
||||
|
|
|
@ -4,21 +4,58 @@ from tests.support.asserts import assert_success
|
|||
from tests.support.image import png_dimensions
|
||||
from tests.support.inline import iframe, inline
|
||||
|
||||
from . import element_rect
|
||||
from . import element_dimensions
|
||||
|
||||
DEFAULT_CONTENT = "<div id='content'>Lorem ipsum dolor sit amet.</div>"
|
||||
|
||||
DEFAULT_CSS_STYLE = """
|
||||
REFERENCE_CONTENT = "<div id='outer'>{}</div>".format(DEFAULT_CONTENT)
|
||||
REFERENCE_STYLE = """
|
||||
<style>
|
||||
div, iframe {
|
||||
#outer {
|
||||
display: block;
|
||||
border: 1px solid blue;
|
||||
width: 10em;
|
||||
height: 10em;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
#content {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
"""
|
||||
|
||||
DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet.</div>"
|
||||
OUTER_IFRAME_STYLE = """
|
||||
<style>
|
||||
iframe {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
"""
|
||||
|
||||
INNER_IFRAME_STYLE = """
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
div {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
"""
|
||||
|
||||
|
||||
def take_element_screenshot(session, element_id):
|
||||
|
@ -31,24 +68,55 @@ def take_element_screenshot(session, element_id):
|
|||
)
|
||||
|
||||
|
||||
def test_frame_element(session):
|
||||
# Create a reference element which looks exactly like the frame's content
|
||||
session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
|
||||
|
||||
# Capture the inner content as reference image
|
||||
ref_el = session.find.css("#content", all=False)
|
||||
ref_screenshot = ref_el.screenshot()
|
||||
ref_dimensions = element_dimensions(session, ref_el)
|
||||
|
||||
assert png_dimensions(ref_screenshot) == ref_dimensions
|
||||
|
||||
# Capture the frame's element
|
||||
iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
|
||||
session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content)))
|
||||
|
||||
frame = session.find.css("iframe", all=False)
|
||||
session.switch_frame(frame)
|
||||
div = session.find.css("div", all=False)
|
||||
div_dimensions = element_dimensions(session, div)
|
||||
assert div_dimensions == ref_dimensions
|
||||
|
||||
response = take_element_screenshot(session, div.id)
|
||||
div_screenshot = assert_success(response)
|
||||
|
||||
assert png_dimensions(div_screenshot) == ref_dimensions
|
||||
assert div_screenshot == ref_screenshot
|
||||
|
||||
|
||||
@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
|
||||
def test_source_origin(session, url, domain):
|
||||
session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT))
|
||||
element = session.find.css("div", all=False)
|
||||
rect = element_rect(session, element)
|
||||
# Create a reference element which looks exactly like the iframe
|
||||
session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
|
||||
|
||||
response = take_element_screenshot(session, element.id)
|
||||
div = session.find.css("div", all=False)
|
||||
div_dimensions = element_dimensions(session, div)
|
||||
|
||||
response = take_element_screenshot(session, div.id)
|
||||
reference_screenshot = assert_success(response)
|
||||
assert png_dimensions(reference_screenshot) == (rect["width"], rect["height"])
|
||||
assert png_dimensions(reference_screenshot) == div_dimensions
|
||||
|
||||
iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
|
||||
iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
|
||||
session.url = inline("""{0}{1}""".format(
|
||||
DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
|
||||
OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain)))
|
||||
|
||||
frame_element = session.find.css("iframe", all=False)
|
||||
frame_rect = element_rect(session, frame_element)
|
||||
frame_dimensions = element_dimensions(session, frame_element)
|
||||
|
||||
response = take_element_screenshot(session, frame_element.id)
|
||||
screenshot = assert_success(response)
|
||||
assert png_dimensions(screenshot) == (frame_rect["width"], frame_rect["height"])
|
||||
assert png_dimensions(screenshot) == frame_dimensions
|
||||
|
||||
assert screenshot == reference_screenshot
|
||||
|
|
|
@ -2,7 +2,7 @@ from tests.support.asserts import assert_error, assert_success
|
|||
from tests.support.image import png_dimensions
|
||||
from tests.support.inline import inline
|
||||
|
||||
from . import element_rect
|
||||
from . import element_dimensions
|
||||
|
||||
|
||||
def take_element_screenshot(session, element_id):
|
||||
|
@ -32,9 +32,8 @@ def test_stale(session):
|
|||
def test_format_and_dimensions(session):
|
||||
session.url = inline("<input>")
|
||||
element = session.find.css("input", all=False)
|
||||
rect = element_rect(session, element)
|
||||
|
||||
response = take_element_screenshot(session, element.id)
|
||||
screenshot = assert_success(response)
|
||||
|
||||
assert png_dimensions(screenshot) == (rect["width"], rect["height"])
|
||||
assert png_dimensions(screenshot) == element_dimensions(session, element)
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
def element_dimensions(session, element):
|
||||
return tuple(session.execute_script("""
|
||||
const {devicePixelRatio} = window;
|
||||
let {width, height} = arguments[0].getBoundingClientRect();
|
||||
|
||||
return [
|
||||
Math.floor(width * devicePixelRatio),
|
||||
Math.floor(height * devicePixelRatio),
|
||||
];
|
||||
""", args=(element,)))
|
||||
|
||||
|
||||
def viewport_dimensions(session):
|
||||
return tuple(session.execute_script("""
|
||||
let {devicePixelRatio, innerHeight, innerWidth} = window;
|
||||
const {devicePixelRatio, innerHeight, innerWidth} = window;
|
||||
|
||||
return [
|
||||
Math.floor(innerWidth * devicePixelRatio),
|
||||
|
|
|
@ -4,21 +4,58 @@ from tests.support.asserts import assert_success
|
|||
from tests.support.image import png_dimensions
|
||||
from tests.support.inline import iframe, inline
|
||||
|
||||
from . import viewport_dimensions
|
||||
from . import element_dimensions, viewport_dimensions
|
||||
|
||||
DEFAULT_CONTENT = "<div id='content'>Lorem ipsum dolor sit amet.</div>"
|
||||
|
||||
DEFAULT_CSS_STYLE = """
|
||||
REFERENCE_CONTENT = "<div id='outer'>{}</div>".format(DEFAULT_CONTENT)
|
||||
REFERENCE_STYLE = """
|
||||
<style>
|
||||
div, iframe {
|
||||
#outer {
|
||||
display: block;
|
||||
border: 1px solid blue;
|
||||
width: 10em;
|
||||
height: 10em;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
#content {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
"""
|
||||
|
||||
DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet.</div>"
|
||||
OUTER_IFRAME_STYLE = """
|
||||
<style>
|
||||
iframe {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
"""
|
||||
|
||||
INNER_IFRAME_STYLE = """
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
div {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
"""
|
||||
|
||||
|
||||
def take_screenshot(session):
|
||||
|
@ -27,8 +64,8 @@ def take_screenshot(session):
|
|||
|
||||
|
||||
def test_always_captures_top_browsing_context(session):
|
||||
iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
|
||||
session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, iframe(iframe_content)))
|
||||
iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
|
||||
session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content)))
|
||||
|
||||
response = take_screenshot(session)
|
||||
reference_screenshot = assert_success(response)
|
||||
|
@ -40,20 +77,21 @@ def test_always_captures_top_browsing_context(session):
|
|||
response = take_screenshot(session)
|
||||
screenshot = assert_success(response)
|
||||
|
||||
assert png_dimensions(screenshot) == png_dimensions(reference_screenshot)
|
||||
assert screenshot == reference_screenshot
|
||||
|
||||
|
||||
@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
|
||||
def test_source_origin(session, url, domain):
|
||||
session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT))
|
||||
def test_source_origin(session, domain):
|
||||
session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
|
||||
|
||||
response = take_screenshot(session)
|
||||
reference_screenshot = assert_success(response)
|
||||
assert png_dimensions(reference_screenshot) == viewport_dimensions(session)
|
||||
|
||||
iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
|
||||
iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
|
||||
session.url = inline("""{0}{1}""".format(
|
||||
DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
|
||||
OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain)))
|
||||
|
||||
response = take_screenshot(session)
|
||||
screenshot = assert_success(response)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue