Update web-platform-tests to revision 1a7f5f868420607ef13a00c6ec14fd9e0310e7c0

This commit is contained in:
WPT Sync Bot 2020-02-27 08:20:16 +00:00
parent 412eccddcc
commit 8fcaceef00
87 changed files with 2034 additions and 172 deletions

View file

@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL
expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT

View file

@ -23366,7 +23366,7 @@
},
"web-nfc": {
"NDEFReader-document-hidden-manual.https.html": [
"9cf42e83bf306b5272fd753461fb78c3c9a4992f",
"10ce53e4a4f40bd0dfae074bf854f3491ea964a6",
[
null,
{}
@ -24335,6 +24335,19 @@
]
},
"content-dpr": {
"content-dpr-various-elements.html": [
"728ef264e9db2231f74459101be07490473fa021",
[
null,
[
[
"/content-dpr/content-dpr-various-elements-ref.html",
"=="
]
],
{}
]
],
"image-pseudo-element-content-dpr.html": [
"7770df39997206261036029734b2304e6be331b2",
[
@ -203162,6 +203175,19 @@
]
]
},
"not-links.html": [
"d49a86fd0ea710d8fd36798e84034f3042e58e81",
[
null,
[
[
"/css/selectors/not-links-ref.html",
"=="
]
],
{}
]
],
"of-type-selectors.xhtml": [
"73ec208b8f219d8d3b74984d65c8e72a997c8470",
[
@ -231108,6 +231134,123 @@
]
],
"reftests": {
"marker-path-001.svg": [
"6eeac7fc8f431bd7949bc998af68b36fdc2e1347",
[
null,
[
[
"/svg/painting/reftests/marker-path-001-ref.svg",
"=="
]
],
{}
]
],
"marker-path-002.svg": [
"7467c7d52331597d6d80cb33b2292804ce58904b",
[
null,
[
[
"/svg/painting/reftests/marker-path-002-ref.svg",
"=="
]
],
{}
]
],
"marker-path-003.svg": [
"a31bf84e52e0f1f36cb42142ff06dcb3ed47f18f",
[
null,
[
[
"/svg/painting/reftests/marker-path-003-ref.svg",
"=="
]
],
{}
]
],
"marker-path-011.svg": [
"b6627f86e8cf4c24a7e6b9da2e125104da7a7336",
[
null,
[
[
"/svg/painting/reftests/marker-path-011-ref.svg",
"=="
]
],
{}
]
],
"marker-path-012.svg": [
"1586951b1f2a53ac08c0fb178947aa57183849ec",
[
null,
[
[
"/svg/painting/reftests/marker-path-012-ref.svg",
"=="
]
],
{}
]
],
"marker-path-013.svg": [
"e7a44351faea715a5ff3c5f3e3a8b127249b0d60",
[
null,
[
[
"/svg/painting/reftests/marker-path-013-ref.svg",
"=="
]
],
{}
]
],
"marker-path-021.svg": [
"db4bc629e245f2a17e540be9bbc205f902ea7561",
[
null,
[
[
"/svg/painting/reftests/marker-path-021-ref.svg",
"=="
]
],
{}
]
],
"marker-path-022.svg": [
"6a2345ab47078a28fad5775518b341c84c726dae",
[
null,
[
[
"/svg/painting/reftests/marker-path-022-ref.svg",
"=="
]
],
{}
]
],
"marker-path-023.svg": [
"56fe216e2ff74c89ad4b93b1c811a67516dec724",
[
null,
[
[
"/svg/painting/reftests/marker-path-023-ref.svg",
"=="
]
],
{}
]
],
"marker-units-strokewidth-non-scaling-stroke.svg": [
"116c61c45ebfa7d2725df78f3a920fc3c24c7165",
[
@ -231998,6 +232141,19 @@
{}
]
],
"use-inheritance-001.svg": [
"5e375b94cd6c15f4ded39f351ce91d67e94b74bd",
[
null,
[
[
"/svg/struct/reftests/reference/green-100x100.svg",
"=="
]
],
{}
]
],
"use-svg-dimensions-override-001.svg": [
"c658adce80f82d5ce6457101ecd3b3d3f562ddd9",
[
@ -251488,51 +251644,51 @@
],
"presentation-role": {
"497.html": [
"5efa4ab7798027c065871027d247252784bff3ba",
"a97df5db893b1e01b9df4abf78791573dc223c5a",
[]
],
"498.html": [
"834ba206d70077e3e2d06e7a45e8a5dfb833c62a",
"0a910a18fe3c712dcba762aea2f623f5d3afdb0d",
[]
],
"499.html": [
"ad2dee407edc0344918b1f73918e10ff8f34e196",
"3f751df39bc9bc192e0d5aac2dd5ecb31ba1292b",
[]
],
"500.html": [
"578e7a2db72474779d7256550f99f9b13829f3aa",
"0ff6cd807a791569fad8f37c9aa3315e1bfbe901",
[]
],
"501.html": [
"77cfc2ede08a01fe25d56edd39d2c0f90fb8d4c1",
"bdad37ed22eced067c49144b701efe5d0cac5ae1",
[]
],
"502.html": [
"ae8c74d5c78911d27b8c7e83dcc7e8f76e3c4669",
"d52afe008efc0f7be01f680d35cc9216d25b37f3",
[]
],
"503.html": [
"3859142529adc3fc8a9a0d74c0714d1223efa719",
"6157cd2fcda6eb5c3984f95a9bfd4f66020ceab9",
[]
],
"504.html": [
"ea19a43595765c73f6fe25a99ab9dde6276b50b4",
"c96550bc842a419b47323a2c245eb8324a794779",
[]
],
"505.html": [
"163156413011faa0a5b90e3971001f6c122fa179",
"e4665cb1b18f4eaae6221b8176a2d9fbf6d21883",
[]
],
"506.html": [
"495763d77999690ea590efd500f9d5191964bc46",
"f92881a1409c004708fa5921a616c2e6fe30d659",
[]
],
"507.html": [
"09e6859655e5f9c5cf198432215e916f20e7f3a0",
"a88438ec16ce54c66068d8bbe223fca187ce1ea4",
[]
],
"509.html": [
"9780ce2ac4e291540f5b561f7ed82d60c7f041c7",
"4450eb332fa30387f3d209248806af3ed0c55416",
[]
],
"510.html": [
@ -258441,6 +258597,10 @@
}
},
"content-dpr": {
"content-dpr-various-elements-ref.html": [
"9a7e10e51b06ab6a4c2453b8f048cfd8709bd471",
[]
],
"image-pseudo-element-content-dpr-ref.html": [
"baa25ac87c8f96ca630d2a6b508d6f3649fb8bb8",
[]
@ -304752,6 +304912,10 @@
[]
]
},
"not-links-ref.html": [
"1efe5943f4e33eb0046fa89dfac8a97eeff3da85",
[]
],
"of-type-selectors-ref.xhtml": [
"ae866213df0112292c3bade7c48ad2d27f9a14f8",
[]
@ -312364,7 +312528,7 @@
[]
],
"redirect.py": [
"eb5c98dd52ff8bc373bfcae42b1b517bd9a2158f",
"05129c515ad9433b68a69e43c58059c6c7faa3ba",
[]
],
"sandboxed-iframe.html": [
@ -312396,7 +312560,7 @@
[]
],
"trickle.py": [
"e2c9beec1e077c67b0d83202ba644c018cbace94",
"57c9407dc4b2db368b87930163efd6f36b49e849",
[]
],
"utils.js": [
@ -315253,6 +315417,14 @@
"30ddeac2e7a3596de3910def1a7066e817873cbe",
[]
],
"require-corp-sw.js": [
"3e2f069ded033f33528c8f850d330c5b4e84e46c",
[]
],
"require-corp-sw.js.headers": [
"6604450991a122e3e241e40b1b9e0516c525389d",
[]
],
"script-factory.js": [
"9db755226020479fd87e87f42ea622c999b38f7d",
[]
@ -319729,7 +319901,7 @@
[]
],
"resolve-url.js": [
"cbe97edbbb3caf35f49d4f4859a263e1060d05b8",
"cac16d0b492f2362b49625a9961dc6608104d8bf",
[]
],
"resource.py": [
@ -337423,7 +337595,7 @@
[]
],
"nfc-mock.js": [
"ce1ad8e98b35bde2845354459026692e9400216a",
"7832a8231efb01f277960afc91adf01cfe3e3ac6",
[]
],
"sensor.mojom.js": [
@ -341467,6 +341639,42 @@
[]
],
"reftests": {
"marker-path-001-ref.svg": [
"8f766668e6de36479666f3f27fa8eed317e5dfe8",
[]
],
"marker-path-002-ref.svg": [
"c9ee76915bf4156d56be4b6e6c4479c602da182d",
[]
],
"marker-path-003-ref.svg": [
"3ba459c7002ad3714e2216ed25d95bbff04bc441",
[]
],
"marker-path-011-ref.svg": [
"4d6cc760548f2e05a9fa3f8dc2eb8c5f4b889d23",
[]
],
"marker-path-012-ref.svg": [
"ad44874cdadc59204c5c724ea157a3b3da570b38",
[]
],
"marker-path-013-ref.svg": [
"e03fc4827ed92502506c01505979cdceb71aef5e",
[]
],
"marker-path-021-ref.svg": [
"b452ca7325669a972cc913524ca5c27b5870564a",
[]
],
"marker-path-022-ref.svg": [
"2b808f02f0988ab49a8bd6a45af9127910d198cf",
[]
],
"marker-path-023-ref.svg": [
"a8e764442bb7dee2ce259082cf7cc0c8d1e143e0",
[]
],
"markers-orient-001-ref.svg": [
"871003f3a2303404696d467a7cfaad729b811206",
[]
@ -342669,7 +342877,7 @@
[]
],
"serve.py": [
"f63bdcca5b00520334d99334a74e748544fc45e1",
"e4f0d5efaee37170a9c03a208924e483b2a4608a",
[]
],
"test_functional.py": [
@ -347299,7 +347507,7 @@
[]
],
"testfiles.py": [
"a9a8fe87ba50582d4cd15a6a233a372119ad265c",
"f2960e8f51e445e3f6f53ba8e7c0145aa5072038",
[]
],
"tests": {
@ -348390,7 +348598,7 @@
[]
],
"server.py": [
"c037732a6baef31d58b3dff927b074dfcfabb4ff",
"9e842802fc0f1b273cd78313275e0bf78dbcaf64",
[]
],
"sslutils": {
@ -353682,10 +353890,6 @@
"2db48544a2d7d7f55201043e73297283cd99c263",
[]
],
"returns-same-object.js": [
"c004d8f7e564e2c43860d6f7da6d1cedffc5a9df",
[]
],
"setting-members.js": [
"4c5c8a35ae88ce2d65b1426fdf37230fa261039c",
[]
@ -353841,6 +354045,10 @@
"527702f551174f8f2578fce16c7854351126e3a5",
[]
],
"dynamic-import-data-url-block-cross-origin.js": [
"caa15319c55c0ff2302df96391002461f7b4207c",
[]
],
"dynamic-import-given-url-worker.js": [
"55102759352c5564e832e37bb8c7f0e7bd007f4d",
[]
@ -353865,6 +354073,10 @@
"56f8a6ffe822ecb8fa0d042cc4c246a3c623f8c6",
[]
],
"dynamic-import-script-block-cross-origin.js": [
"52ec5306635916b5db6cf10de27bc9e171aad529",
[]
],
"dynamic-import-worker.js": [
"2e756fe055e9e9ec815031483b02dc286918ca2c",
[]
@ -353877,6 +354089,10 @@
"60080d4292a8033e9824a289eef85574cc6a3a81",
[]
],
"export-block-cross-origin.js": [
"a4b513d280e9eddc105c62cadd6894ac829a705d",
[]
],
"export-credentials.py": [
"be6d2ff2fc17b94d69548746cd25d6b6c471cb0c",
[]
@ -353957,6 +354173,10 @@
"2d857a2e90a11af9f52e5d59d15ee30d225deeaf",
[]
],
"static-import-data-url-block-cross-origin.js": [
"833348d66cce77334e10a214d6299d3b0dad085c",
[]
],
"static-import-non-existent-script-worker.js": [
"16f70e9daf4909605746c6614a509afb3cf71ed1",
[]
@ -353981,6 +354201,10 @@
"ffcab9e45fdfec17bb2db64f0d4dba3d89ed8308",
[]
],
"static-import-script-block-cross-origin.js": [
"82be8e7ce72edab7050b14cccc658ff39ddfe632",
[]
],
"static-import-worker.js": [
"19a347999d386fd4df8dc831c6d164b27630ef7a",
[]
@ -377220,7 +377444,7 @@
},
"content-dpr": {
"image-with-dpr-header.html": [
"6c4e60844763469bbe21990879191eac0f296230",
"bfa1509d46455945acb9b31d6789726b2f860c84",
[
null,
{}
@ -405732,7 +405956,7 @@
]
],
"focus-visible-010.html": [
"eb01204b29c8e30b651b083459c01983b99dd70d",
"00cd7f0b665d90a82b9939b5451b1e10cf89e5ee",
[
null,
{}
@ -428317,6 +428541,13 @@
{}
]
],
"anchor-jsurl-form-submit.html": [
"b0534cd52e51e7f13ee42a2ae6e1602d3071d270",
[
null,
{}
]
],
"child_navigates_parent_location.html": [
"9111232e26e7de672b9e4df4b47b1c408338ae1c",
[
@ -430742,6 +430973,13 @@
{}
]
],
"require-corp-sw.https.html": [
"690ea6314f5c28c1bd8b58cb0d2350831361314f",
[
null,
{}
]
],
"require-corp.https.html": [
"6f799b6e4086c1e73654b694174cacc496b2582d",
[
@ -432568,7 +432806,7 @@
]
],
"utf-16be.html": [
"ae28fb6d6a7c08ff3ccc5353139e2842492d9950",
"db15896c86c1dfdec07f04ca7f923141ab1d2dfe",
[
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=appcache",
{
@ -432670,16 +432908,10 @@
{
"timeout": "long"
}
],
[
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=xmldocument",
{
"timeout": "long"
}
]
],
"utf-16le.html": [
"1d0bb574a77bb9a78cba3a8bb4a869ea780944a4",
"1a3e4926b466f5ec6b3ee10938a5bc15d884722f",
[
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=appcache",
{
@ -432781,16 +433013,10 @@
{
"timeout": "long"
}
],
[
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=xmldocument",
{
"timeout": "long"
}
]
],
"utf-8.html": [
"c521c9dc398b4c200bc357d4a66c55efd38f7ae9",
"7434dc9176c9f8695a4cf89e2cbec5a7d2ead6f3",
[
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=appcache",
{
@ -432892,16 +433118,10 @@
{
"timeout": "long"
}
],
[
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=xmldocument",
{
"timeout": "long"
}
]
],
"windows-1251.html": [
"e80e12403aedfdddfd1aa73ed4057316a4e5a931",
"1c8ade458826b3a7d8076003b28ea65ba7aa363d",
[
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=appcache",
{
@ -433003,16 +433223,10 @@
{
"timeout": "long"
}
],
[
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=xmldocument",
{
"timeout": "long"
}
]
],
"windows-1252.html": [
"c2c6b0adeb13df97352f37ccfef9bd6b1fce9e63",
"5cefb612eafcd78f477a9464fa6f5aa940508f20",
[
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=appcache",
{
@ -433114,12 +433328,6 @@
{
"timeout": "long"
}
],
[
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=xmldocument",
{
"timeout": "long"
}
]
]
}
@ -438666,7 +438874,7 @@
]
],
"object-attributes.html": [
"30fdcf520b8b519ab58187f40fd460454ffb39a3",
"c630d8055c60c3891a008281878466b86c1eef11",
[
null,
{}
@ -547143,7 +547351,7 @@
]
],
"commitStyles.html": [
"ca7d6410d0aa9cd02431cb6f8aab427f941e5cc7",
"abda8f10e59febf1cfc3654d4f37c60ccf1e79fa",
[
null,
{}
@ -548630,7 +548838,7 @@
]
],
"NDEFReader_scan.https.html": [
"6e66b7d4673d22d8863cabea57d802e92251d3b9",
"581412ea35d5d1e25dcc638380aa7fac540c7b9e",
[
null,
{}
@ -548665,7 +548873,7 @@
]
],
"NDEFWriter_write.https.html": [
"1cca68c4a9676d7d988f6b46bbba0250ccae40bd",
"4ca7faa12bcde0174153953ef351c7ba094caac5",
[
null,
{}
@ -560068,11 +560276,40 @@
{}
]
],
"returns-same-object.html": [
"b69ea3aa05828c398cc1bc63f677930f9ee70ce0",
"returns-same-object.any.js": [
"ba9be9ce8a8534bfc17aa20f1df119ce4efad934",
[
null,
{}
"workers/interfaces/WorkerGlobalScope/location/returns-same-object.any.serviceworker.html",
{
"script_metadata": [
[
"global",
"!default,worker"
]
]
}
],
[
"workers/interfaces/WorkerGlobalScope/location/returns-same-object.any.sharedworker.html",
{
"script_metadata": [
[
"global",
"!default,worker"
]
]
}
],
[
"workers/interfaces/WorkerGlobalScope/location/returns-same-object.any.worker.html",
{
"script_metadata": [
[
"global",
"!default,worker"
]
]
}
]
],
"setting-members.html": [
@ -560483,6 +560720,13 @@
{}
]
],
"shared-worker-import-data-url-cross-origin.html": [
"3f22c5094d1b8c167d76af14bdce1dc912451f43",
[
null,
{}
]
],
"shared-worker-import-data-url.any.js": [
"81df965b9e1276746c001350658c5ea80334b736",
[

View file

@ -0,0 +1,4 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -8,6 +8,3 @@
[throws if handleEvent is thruthy and not callable]
expected: FAIL
[looks up handleEvent method on every event dispatch]
expected: FAIL

View file

@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized]
expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -21,3 +21,6 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -2,3 +2,6 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Programmatic focus on page load bshould match :focus-visible]
expected: FAIL
[Programmatic focus on page load should match :focus-visible]
expected: FAIL

View file

@ -312,21 +312,24 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<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/plain */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -53,9 +53,6 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL

View file

@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -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

View file

@ -4,7 +4,7 @@
expected: FAIL
[Element with tabindex should support autofocus]
expected: TIMEOUT
expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN
expected: TIMEOUT

View file

@ -9,3 +9,6 @@
[object.height]
expected: FAIL
[object.contentWindow.name]
expected: FAIL

View file

@ -14,3 +14,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44059 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 29020.\n\t[29020\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42286 more errors.\n\tMax AbsError of 1.9962286949157715e+0 at index of 12332.\n\t[12332\]\t9.9879217147827148e-1\t-9.9743652343750000e-1\t1.9962286949157715e+0\t2.0013591321441684e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -134,3 +134,9 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[19030\]\t-7.1927757971934625e-8\t-7.3546999692916870e-1\t7.3546992500141073e-1\t9.9999990220164214e-1\t3.8985999999999999e-3\n\t[19031\]\t-3.6017334461212158e-1\t-6.9157749414443970e-1\t3.3140414953231812e-1\t4.7920030992665957e-1\t3.8985999999999999e-3\n\t[38059\]\t-1.5020843591173616e-7\t-9.8956179618835449e-1\t9.8956164597991858e-1\t9.9999984820711907e-1\t3.8985999999999999e-3\n\t[38060\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.8956164597991858e-1 at index of 38059.\n\tMax RelError of 9.9999990220164214e-1 at index of 19030.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[19030\]\t-2.2063343510520240e+31\t-7.3546999692916870e-1\t2.2063343510520240e+31\t2.9998971545599442e+31\t3.8985999999999999e-3\n\t[19031\]\t-3.6017334461212158e-1\t-6.9157749414443970e-1\t3.3140414953231812e-1\t4.7920030992665957e-1\t3.8985999999999999e-3\n\t[38059\]\t-5.1072609003262559e+31\t-9.8956179618835449e-1\t5.1072609003262559e+31\t5.1611338675347697e+31\t3.8985999999999999e-3\n\t[38060\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 5.1072609003262559e+31 at index of 38059.\n\tMax RelError of 5.1611338675347697e+31 at index of 38059.\n]
expected: FAIL
[X SNR (-591.4728047569859 dB) is not greater than or equal to 65.737. Got -591.4728047569859.]
expected: FAIL

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -0,0 +1,7 @@
[returns-same-object.any.serviceworker.html]
expected: ERROR
[returns-same-object.any.sharedworker.html]
expected: ERROR
[returns-same-object.any.worker.html]

View file

@ -5,7 +5,7 @@
<title>Test 497 Image element with role="presentation" but with a reference to a description </title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-describedby="foo"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-describedby="foo"/>
<p id="foo">
This is an image.
</p>

View file

@ -5,7 +5,7 @@
<title>Test 498 Image element with role="presentation" but aria-disabled="true" </title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-disabled="true"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-disabled="true"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 499 Image element with role="presentation" but aria-dropeffect="move" </title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-dropeffect="move"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-dropeffect="move"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 500 Image element with role="presentation" but with a valid aria-flowto attribute</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-flowto="test2"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-flowto="test2"/>
<div role="img" id="test2">
</div>
</body>

View file

@ -5,7 +5,7 @@
<title>Test 501 Image element with role="presentation" but with aria-grabbed="true"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-grabbed="true"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-grabbed="true"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 502 Image element with role="presentation" but with aria-haspopup="true"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-haspopup="true"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-haspopup="true"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 503 Image element with role="presentation" but with aria-hidden="true"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-hidden="true"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-hidden="true"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 504 Image element with role="presentation" but with aria-invalid="true"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-invalid="true"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-invalid="true"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 505 Image element with role="presentation" but with aria-label="test"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-label="test"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-label="test"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 506 Image element with role="presentation" but with a valid aria-labelledby attribute</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-labelledby="test2"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-labelledby="test2"/>
<div id="test2">
test_label
</div>

View file

@ -5,7 +5,7 @@
<title>Test 507 Image element with role="presentation" but with aria-live="assertive"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-live="assertive"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-live="assertive"/>
</body>
</html>

View file

@ -5,7 +5,7 @@
<title>Test 509 Image element with role="presentation" but with aria-relevant="text"</title>
</head>
<body>
<img src="foo.jpg" alt="test1" width="40" height="40" role="presentation" aria-live="polite" aria-relevant="text"/>
<img src="foo.jpg" alt="" width="40" height="40" role="presentation" aria-live="polite" aria-relevant="text"/>
</body>
</html>

View file

@ -0,0 +1,48 @@
<html>
<head>
<title>Content-DPR: various elements</title>
<link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
<meta name="assert" content="Assert that content-dpr is taken into account for images in all relevant elements (input/canvas/svg/video-poster)">
<style>
.row {
display: flex;
}
.row > * {
object-fit: none;
object-position: top left;
margin: 5px;
width: 100px;
height: 100px;
background: yellow;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", () => {
const canvas = document.getElementById('canvas')
const image = new Image()
image.onload = () => {
const ctx = canvas.getContext('2d')
ctx.drawImage(image, 0, 0, 50, 50)
}
image.src = "resources/square.png"
});
</script>
</head>
<body>
<p>There following green boxes should all be 50px by 50px (cover 25% of the yellow boxes)</p>
<div class="row">
<div>
<img src="resources/square.png" width="50" height="50" />
</div>
<div>
<video poster="resources/square.png" width="50" height="50"></video>
</div>
<svg xmlns="http://www.w3.org/2000/svg" ><image href="resources/square.png" width="50" height="50" /></svg>
<div>
<input type="image" src="resources/square.png" width="50" height="50" />
</div>
<canvas id="canvas" width="100" height="100">
</div>
</body>
</html>

View file

@ -0,0 +1,47 @@
<html>
<head>
<title>Content-DPR: various elements</title>
<link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
<link rel="match" href="content-dpr-various-elements-ref.html" />
<meta name="assert" content="Assert that content-dpr is taken into account for images in all relevant elements (input/canvas/svg/video-poster)">
<style>
.row {
display: flex;
}
.row > * {
object-fit: none;
object-position: top left;
margin: 5px;
width: 100px;
height: 100px;
background: yellow;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", () => {
const canvas = document.getElementById('canvas')
const image = new Image()
image.onload = () => {
const ctx = canvas.getContext('2d')
ctx.drawImage(image, 0, 0)
}
image.src = "resources/dpr.py?name=square.png&mimeType=image/png&dpr=2&cacheKiller=canvas"
});
</script>
</head>
<body>
<p>There following green boxes should all be 50px by 50px (cover 25% of the yellow boxes)</p>
<div class="row">
<div>
<img src="resources/square.png" width="50" height="50" />
</div>
<video poster="resources/dpr.py?name=square.png&mimeType=image/png&dpr=2&cacheKiller=2"></video>
<svg xmlns="http://www.w3.org/2000/svg" ><image href="resources/dpr.py?name=square.png&mimeType=image/png&dpr=2&cacheKiller=3" /></svg>
<div>
<input type="image" src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=2&cacheKiller=4" />
</div>
<canvas id="canvas" width="100" height="100">
</div>
</body>
</html>

View file

@ -7,6 +7,8 @@
<img id="smaller_than_one" src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=0.5">
<img id="srcset" srcset="resources/square.png 4x">
<img id="invalid" src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=xx">
<img id="invalid_negative" src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=-2">
<img id="invalid_zero" src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=0">
<img id="header_and_srcset_invalid" srcset="resources/dpr.py?name=square.png&mimeType=image/png&dpr=xx 4x">
<img id="header_and_srcset_valid" srcset="resources/dpr.py?name=square.png&mimeType=image/png&dpr=4.0 2x">
<img id="explicit_width" src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=4.0" width="100" height="100">
@ -21,6 +23,8 @@
assert_equals(document.getElementById("smaller_than_one").naturalWidth, 200, "Smaller than one Content-DPR header value")
assert_equals(document.getElementById("srcset").naturalWidth, 25, "srcset")
assert_equals(document.getElementById("invalid").naturalWidth, 100, "Invalid Content-DPR header value")
assert_equals(document.getElementById("invalid_negative").naturalWidth, 100, "Negative Content-DPR header value")
assert_equals(document.getElementById("invalid_zero").naturalWidth, 100, "Zero Content-DPR header value")
assert_equals(document.getElementById("header_and_srcset_invalid").naturalWidth, 25, "Invalid Content-DPR header value with valid srcset")
assert_equals(document.getElementById("header_and_srcset_valid").naturalWidth, 25, "Value Content-DPR header value and srcset")
assert_equals(document.getElementById("explicit_width").naturalWidth, 25, "Explicit width attribute")

View file

@ -35,7 +35,7 @@
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
t.done();
}));
}, "Programmatic focus on page load bshould match :focus-visible");
}, "Programmatic focus on page load should match :focus-visible");
</script>
</body>
</html>

View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<title>Test that *:not(:link):not(:visited) does not match links</title>
<body>
<a href="#">Unvisited</a>
<a href="">Visited</a>
<span style="background-color: green">Green</span>
<p>
Only "Green" should have a green background.
</p>
</body>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<title>Test that *:not(:link):not(:visited) does not match links</title>
<link rel="match" href="not-links-ref.html">
<link rel="help" href="https://drafts.csswg.org/selectors-4/#negation">
<style>
body > *:not(:link):not(:visited) {
background-color: green;
}
</style>
<body>
<a href="#">Unvisited</a>
<a href="">Visited</a>
<span>Green</span>
<p style="background-color: initial">
Only "Green" should have a green background.
</p>
</body>

View file

@ -1,7 +1,7 @@
from urllib import urlencode
from urlparse import urlparse
import time
from six.moves.urllib.parse import urlencode, urlparse
def main(request, response):
stashed_data = {'count': 0, 'preflight': "0"}
status = 302

View file

@ -1,5 +1,7 @@
import time
from six.moves import xrange
def main(request, response):
delay = float(request.GET.first("ms", 500)) / 1E3
count = int(request.GET.first("count", 50))

View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
<link rel="help" href="https://html.spec.whatwg.org/C/#following-hyperlinks">
<title>Anchor element with onclick form submission and href to javascript: url</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<!-- When an anchor element has an onclick handler which submits a form,
the anchor's navigation should occur instead of the form's navigation.
However, if the anchor has an href which returns undefined, then the form
should be submitted. -->
<iframe name="test"></iframe>
<form target="test" action="form.html"></form>
<a id="anchor" target="test" onclick="document.forms[0].submit()" href="javascript:void(0)">Test</a>
<script>
async_test(t => {
const anchor = document.getElementById('anchor');
t.step(() => anchor.click());
window.onmessage = t.step_func(event => {
if (typeof event.data === 'string' && event.data.includes('navigation')) {
assert_equals(event.data, 'form navigation');
t.done();
}
});
});
</script>

View file

@ -0,0 +1,37 @@
<!doctype html>
<title>Cross Origin Embedder Policy: requests initiated from a service worker with 'require-corp'</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
<script>
'use strict';
const SCRIPT = 'resources/require-corp-sw.js';
const SCOPE = 'resources/in-scope';
let worker = null;
promise_test(async t => {
const registration =
await service_worker_unregister_and_register(t, SCRIPT, SCOPE);
promise_test(async t => registration.unregister(), 'Clean up global state');
worker = registration.installing;
await wait_for_state(t, worker, 'activated');
}, 'Set up global state');
promise_test(async t => {
const p = new Promise(resolve =>
navigator.serviceWorker.addEventListener('message', resolve,
{once: true}));
worker.postMessage('WithCorp');
assert_equals((await p).data, 'opaque');
}, "fetch() to 'CORP: cross-origin' response should succeed.");
promise_test(async t => {
const p = new Promise(resolve =>
navigator.serviceWorker.addEventListener('message', resolve,
{once: true}));
worker.postMessage('WithoutCorp');
assert_equals((await p).data, 'TypeError: Failed to fetch');
}, "fetch() to no CORP response should not succeed.");
</script>

View file

@ -0,0 +1,27 @@
// Service worker with 'COEP: require-corp' response header.
// This service worker issues a network request for a resource with or without
// CORP response header.
importScripts("/common/get-host-info.sub.js");
self.addEventListener('message', e => {
e.waitUntil((async () => {
let result;
try {
let url;
if (e.data === 'WithCorp') {
url = get_host_info().HTTPS_REMOTE_ORIGIN +
'/html/cross-origin-embedder-policy/resources/' +
'nothing-cross-origin-corp.txt';
} else if (e.data === 'WithoutCorp') {
url = get_host_info().HTTPS_REMOTE_ORIGIN + '/common/blank.html';
}
const response = await fetch(url, { mode: 'no-cors' });
result = response.type;
} catch (error) {
result = `${error.name}: ${error.message}`;
} finally {
e.source.postMessage(result);
}
})());
});

View file

@ -0,0 +1 @@
Cross-Origin-Embedder-Policy: require-corp

View file

@ -353,16 +353,6 @@ onload = function() {
}, 'EventSource#url',
{help:'https://html.spec.whatwg.org/multipage/#dom-eventsource'});
// XMLDocument#load()
subsetTestByKey('xmldocument', async_test, function() {
var doc = document.implementation.createDocument(null, "x");
doc.load(input_url_svg);
doc.onload = this.step_func_done(function() {
assert_equals(doc.documentElement.textContent, expected_current);
});
}, 'XMLDocument#load()',
{help:'https://html.spec.whatwg.org/multipage/#dom-xmldocument-load'});
// window.open
subsetTestByKey('window-open', async_test, function() {
var id = 'test_window_open';

View file

@ -8,7 +8,6 @@
<meta name="variant" content="?include=base-href">
<meta name="variant" content="?include=workers">
<meta name="variant" content="?include=eventsource">
<meta name="variant" content="?include=xmldocument">
<meta name="variant" content="?include=window-open">
<meta name="variant" content="?include=hyperlink-search">
<meta name="variant" content="?include=history">

View file

@ -8,7 +8,6 @@
<meta name="variant" content="?include=base-href">
<meta name="variant" content="?include=workers">
<meta name="variant" content="?include=eventsource">
<meta name="variant" content="?include=xmldocument">
<meta name="variant" content="?include=window-open">
<meta name="variant" content="?include=hyperlink-search">
<meta name="variant" content="?include=history">

View file

@ -8,7 +8,6 @@
<meta name="variant" content="?include=base-href">
<meta name="variant" content="?include=workers">
<meta name="variant" content="?include=eventsource">
<meta name="variant" content="?include=xmldocument">
<meta name="variant" content="?include=window-open">
<meta name="variant" content="?include=hyperlink-search">
<meta name="variant" content="?include=history">

View file

@ -7,34 +7,44 @@
<body onload="on_load()">
<div id="log"></div>
<form>
<object id="obj1" data="blue.html" name="o" height="50" width="100"></object>
<object id="obj1" data="/common/blank.html" name="o" height="50" width="100"></object>
<object id="obj2" name="p" type="image/png"></object>
<object id="obj3" data="missing.html" name="o3" height="50" width="100"></object>
</form>
<script>
var obj1;
var obj2;
var obj3;
var t1 = async_test("object.contentWindow");
var t2 = async_test("object.contentWindow.name");
var t3 = async_test("object.width");
var t4 = async_test("object.height");
setup(function() {
obj1 = document.getElementById("obj1");
obj2 = document.getElementById("obj2");
obj3 = document.getElementById("obj3");
});
function on_load () {
t1.step(function() {
assert_equals(obj1.contentWindow.name, "o", "The contentWindow's name of the object element should be 'o'.");
assert_not_equals(obj1.contentWindow, null, "The contentWindow of the object element should not be null.");
assert_equals(obj2.contentWindow, null, "The contentWindow of the object element should be null when it type attribute starts with 'image/'.");
obj1.setAttribute("name", "o1");
assert_equals(obj1.name, "o1", "The name of the object element should be 'o1'.");
assert_equals(obj1.contentWindow.name, "o1", "The contentWindow's name of the object element should be 'o1'.");
obj1.removeAttribute("name");
assert_equals(obj1.name, "", "The name of the object element should be empty string.");
assert_equals(obj1.contentWindow.name, "", "The contentWindow's name of the object element should be empty string.");
assert_equals(obj3.contentWindow, null, "The contentWindow of the object element should be null as it is showing fallback content.");
});
t1.done()
t2.step(function() {
assert_equals(obj1.contentWindow.name, "o", "The contentWindow's name of the object element should be 'o'.");
obj1.setAttribute("name", "o1");
assert_equals(obj1.name, "o1", "The name of the object element should be 'o1'.");
assert_equals(obj1.contentWindow.name, "o", "The contentWindow's name of the object element should still be 'o'.");
obj1.removeAttribute("name");
assert_equals(obj1.name, "", "The name of the object element should be empty string.");
assert_equals(obj1.contentWindow.name, "o", "The contentWindow's name of the object element should still be 'o'.");
});
t2.done()
t3.step(function() {
assert_equals(getComputedStyle(obj1, null)["width"], "100px", "The width should be 100px.");
});

View file

@ -144,8 +144,13 @@ var WebNFCTest = (() => {
this.bindingSet_ = new mojo.BindingSet(device.mojom.NFC);
this.interceptor_ = new MojoInterfaceInterceptor(device.mojom.NFC.name);
this.interceptor_.oninterfacerequest =
e => this.bindingSet_.addBinding(this, e.handle);
this.interceptor_.oninterfacerequest = e => {
if (this.should_close_pipe_on_request_)
e.handle.close();
else
this.bindingSet_.addBinding(this, e.handle);
}
this.interceptor_.start();
this.hw_status_ = NFCHWStatus.ENABLED;
@ -159,6 +164,7 @@ var WebNFCTest = (() => {
this.operations_suspended_ = false;
this.is_formatted_tag_ = false;
this.data_transfer_failed_ = false;
this.should_close_pipe_on_request_ = false;
}
// NFC delegate functions.
@ -278,6 +284,7 @@ var WebNFCTest = (() => {
this.cancelPendingPushOperation();
this.is_formatted_tag_ = false;
this.data_transfer_failed_ = false;
this.should_close_pipe_on_request_ = false;
}
cancelPendingPushOperation() {
@ -360,6 +367,10 @@ var WebNFCTest = (() => {
simulateDataTransferFails() {
this.data_transfer_failed_ = true;
}
simulateClosedPipe() {
this.should_close_pipe_on_request_ = true;
}
}
let testInternal = {

View file

@ -0,0 +1,91 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Path (Linear).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<path id="PStart" transform="matrix(2,0,0,2,0,-10)" d="M 0 0 L 10 5 L 0 10 z" fill="green"/>
<path id="PMid" transform="matrix(2,0,0,2,0,-10)" d="M 0 0 L 10 5 L 0 10 z" fill="orange"/>
<path id="PEnd" transform="matrix(2,0,0,2,0,-10)" d="M 0 0 L 10 5 L 0 10 z" fill="blue"/>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 50,120 50,0 50,0 50,0"/>
<path d="m 50,140 50,20 50,-20 50,20"/>
<path d="m 50,200 l 50,0 l 50,0 l 50,0"/>
<path d="m 50,220 l 50,20 l 50,-20 l 50,20"/>
<path d="m 50,280 h 50 v 50 h 50"/>
<path d="M 290,120 340,120 390,120 440,120"/>
<path d="M 290,140 340,160 390,140 440,160"/>
<path d="M 290,200 L 340,200 L 390,200 L 440,200"/>
<path d="M 290,220 L 340,240 L 390,220 L 440,240"/>
<path d="M 290,280 H 340 V 330 H 390"/>
<g id="ref" style="stroke:none">
<g id="linear">
<use xlink:href="#PStart" transform="translate(50,120)"/>
<use xlink:href="#PMid" transform="translate(100,120)"/>
<use xlink:href="#PMid" transform="translate(150,120)"/>
<use xlink:href="#PEnd" transform="translate(200,120)"/>
</g>
<g id="zigzag">
<path d="m 50,140 50,20" style="marker-start:url(#Start)"/>
<path d="m 50,160 50,0 50,0" style="marker-mid:url(#Mid)"/>
<path d="m 100,140 50,0 50,0" style="marker-mid:url(#Mid)"/>
<path d="m 150,140 50,20" style="marker-end:url(#End)"/>
</g>
<g id="step">
<path d="m 50,280 50,0" style="marker-start:url(#Start)"/>
<path d="m 50,230 50,50 50,50" style="marker-mid:url(#Mid)"/>
<path d="m 50,280 50,50 50,50" style="marker-mid:url(#Mid)"/>
<path d="m 100,330 50,0" style="marker-end:url(#End)"/>
</g>
<use xlink:href="#linear" transform="translate(0,80)"/>
<use xlink:href="#zigzag" transform="translate(0,80)"/>
</g>
<use xlink:href="#ref" transform="translate(240,0)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,64 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Path (Linear).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-001-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2;marker-start:url(#Start);marker-mid:url(#Mid);marker-end:url(#End)">
<path d="m 50,120 50,0 50,0 50,0"/>
<path d="m 50,140 50,20 50,-20 50,20"/>
<path d="m 50,200 l 50,0 l 50,0 l 50,0"/>
<path d="m 50,220 l 50,20 l 50,-20 l 50,20"/>
<path d="m 50,280 h 50 v 50 h 50"/>
<path d="M 290,120 340,120 390,120 440,120"/>
<path d="M 290,140 340,160 390,140 440,160"/>
<path d="M 290,200 L 340,200 L 390,200 L 440,200"/>
<path d="M 290,220 L 340,240 L 390,220 L 440,240"/>
<path d="M 290,280 H 340 V 330 H 390"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,78 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Path (Bezier).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 50,120 c 20,20 30,-20 50,0 c 20,20 30,-20 50,0 c 20,20 30,-20 50,0"/>
<path d="m 50,150 c 20,20 30,-20 50,0 s 30,-20 50,0 s 30,-20 50,0"/>
<path d="m 50,240 q 25,25 50,0 q 25,-25 50,0 q 25,25 50,0"/>
<path d="m 50,270 q 25,25 50,0 t 50,0 t 50,0"/>
<path d="M 290,120 C 310,140 320,100, 340,120 C 360,140 370,100 390,120 C 410,140 420,100 440,120"/>
<path d="M 290,150 C 310,170 320,130, 340,150 S 370,130 390,150 S 420,130 440,150"/>
<path d="M 290,240 Q 315,265 340,240 Q 365,215 390,240 Q 415,265 440,240"/>
<path d="M 290,270 Q 315,295 340,270 T 390,270 T 440,270"/>
<g id="cubic">
<path d="m 50,120 20,20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,120 20,20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,120 20,20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,120 20,20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#cubic" transform="translate(240, 0)"/>
<use xlink:href="#cubic" transform="translate( 0, 30)"/>
<use xlink:href="#cubic" transform="translate(240, 30)"/>
<g id="quadratic">
<path d="m 50,240 20, 20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,240 20,-20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,240 20, 20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,240 20,-20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#quadratic" transform="translate(240, 0)"/>
<use xlink:href="#quadratic" transform="translate( 0, 30)"/>
<use xlink:href="#quadratic" transform="translate(240, 30)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1,60 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Path (Bezier).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-002-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2;marker-start:url(#Start);marker-mid:url(#Mid);marker-end:url(#End)">
<path d="m 50,120 c 20,20 30,-20 50,0 c 20,20 30,-20 50,0 c 20,20 30,-20 50,0"/>
<path d="m 50,150 c 20,20 30,-20 50,0 s 30,-20 50,0 s 30,-20 50,0"/>
<path d="m 50,240 q 25,25 50,0 q 25,-25 50,0 q 25,25 50,0"/>
<path d="m 50,270 q 25,25 50,0 t 50,0 t 50,0"/>
<path d="M 290,120 C 310,140 320,100, 340,120 C 360,140 370,100 390,120 C 410,140 420,100 440,120"/>
<path d="M 290,150 C 310,170 320,130, 340,150 S 370,130 390,150 S 420,130 440,150"/>
<path d="M 290,240 Q 315,265 340,240 Q 365,215 390,240 Q 415,265 440,240"/>
<path d="M 290,270 Q 315,295 340,270 T 390,270 T 440,270"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,70 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Path (Arc).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 50,120 a 30,20 90 0 0 50,0 a 30,20 90 0 1 50,0 a 30,20 90 0 0 50,0"/>
<path d="m 50,240 a 30,20 90 0 1 50,0 a 30,20 90 0 0 50,0 a 30,20 90 0 1 50,0"/>
<path d="M 290,120 A 30,20 90 0 0 340,120 A 30,20 90 0 1 390,120 A 30,20 90 0 0 440,120"/>
<path d="M 290,240 A 30,20 90 0 1 340,240 A 30,20 90 0 0 390,240 A 30,20 90 0 1 440,240"/>
<g id="down">
<path d="m 50,120 0, 20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,120 0,-20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,120 0, 20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,120 0,-20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#down" transform="translate(240, 0)"/>
<g id="up">
<path d="m 50,240 0,-20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,240 0, 20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,240 0,-20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,240 0, 20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#up" transform="translate(240, 0)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,56 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Path (Arc).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-003-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2;marker-start:url(#Start);marker-mid:url(#Mid);marker-end:url(#End)">
<path d="m 50,120 a 30,20 90 0 0 50,0 a 30,20 90 0 1 50,0 a 30,20 90 0 0 50,0"/>
<path d="m 50,240 a 30,20 90 0 1 50,0 a 30,20 90 0 0 50,0 a 30,20 90 0 1 50,0"/>
<path d="M 290,120 A 30,20 90 0 0 340,120 A 30,20 90 0 1 390,120 A 30,20 90 0 0 440,120"/>
<path d="M 290,240 A 30,20 90 0 1 340,240 A 30,20 90 0 0 390,240 A 30,20 90 0 1 440,240"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,83 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Sub-Path (Linear).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 50,120 50,0 m 50,0 50,0"/>
<path d="m 50,140 50,20 m 50,-20 50,20"/>
<path d="m 50,200 l 50,0 m 50,0 l 50,0"/>
<path d="m 50,220 l 50,20 m 50,-20 l 50,20"/>
<path d="m 50,280 h 50 m 0,50 h 50"/>
<path d="M 290,120 340,120 M 390,120 440,120"/>
<path d="M 290,140 340,160 M 390,140 440,160"/>
<path d="M 290,200 L 340,200 M 390,200 L 440,200"/>
<path d="M 290,220 L 340,240 M 390,220 L 440,240"/>
<path d="M 290,280 H 340 M 340,330 H 390"/>
<g id="linear">
<path d="m 50,120 50,0" style="stroke:none;marker-start:url(#Start);marker-end:url(#Mid)"/>
<path d="m 150,120 50,0" style="stroke:none;marker-start:url(#Mid); marker-end:url(#End)"/>
</g>
<use xlink:href="#linear" transform="translate(240, 0)"/>
<use xlink:href="#linear" transform="translate( 0, 80)"/>
<use xlink:href="#linear" transform="translate(240, 80)"/>
<g id="zigzag">
<path d="m 50,140 50,20" style="stroke:none;marker-start:url(#Start);marker-end:url(#Mid)"/>
<path d="m 150,140 50,20" style="stroke:none;marker-start:url(#Mid); marker-end:url(#End)"/>
</g>
<use xlink:href="#zigzag" transform="translate(240, 0)"/>
<use xlink:href="#zigzag" transform="translate( 0, 80)"/>
<use xlink:href="#zigzag" transform="translate(240, 80)"/>
<g id="step">
<path d="m 50,280 50,0" style="stroke:none;marker-start:url(#Start);marker-end:url(#Mid)"/>
<path d="m 100,330 50,0" style="stroke:none;marker-start:url(#Mid); marker-end:url(#End)"/>
</g>
<use xlink:href="#step" transform="translate(240, 0)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,64 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Sub-Path (Linear).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-011-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2;marker-start:url(#Start);marker-mid:url(#Mid);marker-end:url(#End)">
<path d="m 50,120 50,0 m 50,0 50,0"/>
<path d="m 50,140 50,20 m 50,-20 50,20"/>
<path d="m 50,200 l 50,0 m 50,0 l 50,0"/>
<path d="m 50,220 l 50,20 m 50,-20 l 50,20"/>
<path d="m 50,280 h 50 m 0,50 h 50"/>
<path d="M 290,120 340,120 M 390,120 440,120"/>
<path d="M 290,140 340,160 M 390,140 440,160"/>
<path d="M 290,200 L 340,200 M 390,200 L 440,200"/>
<path d="M 290,220 L 340,240 M 390,220 L 440,240"/>
<path d="M 290,280 H 340 M 340,330 H 390"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,70 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Sub-Path (Bezier).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 50,120 c 20,20 30,-20 50,0 m 50,0 c 20,20 30,-20 50,0"/>
<path d="m 50,240 q 25,25 50,0 m 50,0 q 25,25 50,0"/>
<path d="M 290,120 C 310,140 320,100, 340,120 M 390,120 C 410,140 420,100 440,120"/>
<path d="M 290,240 Q 315,265 340,240 M 390,240 Q 415,265 440,240"/>
<g id="cubic">
<path d="m 50,120 20,20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,120 20,20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,120 20,20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,120 20,20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#cubic" transform="translate(240, 0)"/>
<g id="quadratic">
<path d="m 50,240 20, 20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,240 20,-20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,240 20, 20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,240 20,-20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#quadratic" transform="translate(240, 0)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,56 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Sub-Path (Bezier).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-012-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2;marker-start:url(#Start);marker-mid:url(#Mid);marker-end:url(#End)">
<path d="m 50,120 c 20,20 30,-20 50,0 m 50,0 c 20,20 30,-20 50,0"/>
<path d="m 50,240 q 25,25 50,0 m 50,0 q 25,25 50,0"/>
<path d="M 290,120 C 310,140 320,100, 340,120 M 390,120 C 410,140 420,100 440,120"/>
<path d="M 290,240 Q 315,265 340,240 M 390,240 Q 415,265 440,240"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,70 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Sub-Path (Arc).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 50,120 a 30,20 90 0 0 50,0 m 50,0 a 30,20 90 0 0 50,0"/>
<path d="m 50,240 a 30,20 90 0 1 50,0 m 50,0 a 30,20 90 0 1 50,0"/>
<path d="M 290,120 A 30,20 90 0 0 340,120 M 390,120 A 30,20 90 0 0 440,120"/>
<path d="M 290,240 A 30,20 90 0 1 340,240 M 390,240 A 30,20 90 0 1 440,240"/>
<g id="down">
<path d="m 50,120 0, 20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,120 0,-20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,120 0, 20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,120 0,-20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#down" transform="translate(240, 0)"/>
<g id="up">
<path d="m 50,240 0,-20" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 100,240 0, 20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 150,240 0,-20" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,240 0, 20" style="stroke:none;marker-start:url(#End)"/>
</g>
<use xlink:href="#up" transform="translate(240, 0)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,56 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Sub-Path (Arc).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-013-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2;marker-start:url(#Start);marker-mid:url(#Mid);marker-end:url(#End)">
<path d="m 50,120 a 30,20 90 0 0 50,0 m 50,0 a 30,20 90 0 0 50,0"/>
<path d="m 50,240 a 30,20 90 0 1 50,0 m 50,0 a 30,20 90 0 1 50,0"/>
<path d="M 290,120 A 30,20 90 0 0 340,120 M 390,120 A 30,20 90 0 0 440,120"/>
<path d="M 290,240 A 30,20 90 0 1 340,240 M 390,240 A 30,20 90 0 1 440,240"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,75 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Closed Sub-Path (Linear).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 120,100 -40,40 40,40 40,-40 z" />
<path d="m 240,100 -40,40 40,40 40,-40 z" />
<path d="m 360,100 -40,40 40,40 40,-40 z" />
<path d="m 60,200 -40,40 40,40 40,-40 z m 60,60 -40,40 40,40 40,-40 z" />
<path d="m 200,200 -40,40 40,40 40,-40 z m 60,60 -40,40 40,40 40,-40 z" />
<path d="m 340,200 -40,40 40,40 40,-40 z m 60,60 -40,40 40,40 40,-40 z" />
<!-- Arrows -->
<path d="m 120,100 -40, 0" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 200,140 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 240,180 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 280,140 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 360,100 -40, 0" style="stroke:none;marker-start:url(#End)"/>
<path d="m 60,200 -40, 0" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 160,240 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,280 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 240,240 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,200 -40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 220,300 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 260,340 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 300,300 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 260,260 -40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 400,260 -40, 0" style="stroke:none;marker-start:url(#End)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,56 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Closed Sub-Path (Linear).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-021-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2">
<path d="m 120,100 -40,40 40,40 40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 240,100 -40,40 40,40 40,-40 z" style="marker-mid:url(#Mid)" />
<path d="m 360,100 -40,40 40,40 40,-40 z" style="marker-end:url(#End)" />
<path d="m 60,200 -40,40 40,40 40,-40 z m 60,60 -40,40 40,40 40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 200,200 -40,40 40,40 40,-40 z m 60,60 -40,40 40,40 40,-40 z" style="marker-mid:url(#Mid)" />
<path d="m 340,200 -40,40 40,40 40,-40 z m 60,60 -40,40 40,40 40,-40 z" style="marker-end:url(#End)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,75 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Closed Sub-Path (Bezier).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 120,100 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 240,100 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 360,100 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-end:url(#End)"/>
<path d="m 60,200 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z m 60,60 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 200,200 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z m 60,60 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 340,200 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z m 60,60 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-end:url(#End)"/>
<!-- Arrows -->
<path d="m 120,100 -40, 0" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 200,140 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 240,180 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 280,140 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 360,100 -40, 0" style="stroke:none;marker-start:url(#End)"/>
<path d="m 60,200 -40, 0" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 160,240 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,280 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 240,240 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,200 -40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 220,300 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 260,340 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 300,300 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 260,260 -40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 400,260 -40, 0" style="stroke:none;marker-start:url(#End)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1,56 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Closed Sub-Path (Bezier).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-022-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2">
<path d="m 120,100 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 240,100 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 360,100 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-end:url(#End)"/>
<path d="m 60,200 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z m 60,60 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 200,200 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z m 60,60 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 340,200 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z m 60,60 c -40,0 -40,0 -40,40 c 0,40 0,40 40,40 c 40,0 40,0 40,-40 c 0,-40 0,-40 -40,-40 z" style="marker-end:url(#End)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,75 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Closed Sub-Path (Arc).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-reference" style="fill:none;stroke:black;stroke-width:2">
<path d="m 120,100 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 240,100 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 360,100 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-end:url(#End)"/>
<path d="m 60,200 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z m 60,60 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 200,200 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z m 60,60 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 340,200 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z m 60,60 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-end:url(#End)"/>
<!-- Arrows -->
<path d="m 120,100 -40, 0" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 200,140 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 240,180 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 280,140 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 360,100 -40, 0" style="stroke:none;marker-start:url(#End)"/>
<path d="m 60,200 -40, 0" style="stroke:none;marker-start:url(#Start)"/>
<path d="m 160,240 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,280 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 240,240 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 200,200 -40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 220,300 0, 40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 260,340 40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 300,300 0,-40" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 260,260 -40, 0" style="stroke:none;marker-start:url(#Mid)"/>
<path d="m 400,260 -40, 0" style="stroke:none;marker-start:url(#End)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -0,0 +1,58 @@
<svg id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<g id="testmeta">
<title>Markers on Closed Sub-Path (Arc).</title>
<html:link rel="author"
title="Tavmjong Bah"
href="http://tavmjong.free.fr"/>
<html:link rel="help"
href="https://www.w3.org/TR/SVG2/painting.html#Markers"/>
<html:link rel="match" href="marker-path-023-ref.svg" />
</g>
<defs>
<marker id="Start"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="green">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="Mid"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="orange">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="End"
viewBox="0 0 10 10" refX="0" refY="5"
markerUnits="strokeWidth"
markerWidth="12"
markerHeight="9"
orient="auto"
fill="blue">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</defs>
<g id="test-body-content" style="fill:none;stroke:black;stroke-width:2">
<path d="m 120,100 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 240,100 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 360,100 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-end:url(#End)"/>
<path d="m 60,200 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z m 60,60 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-start:url(#Start)"/>
<path d="m 200,200 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z m 60,60 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-mid:url(#Mid)"/>
<path d="m 340,200 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z m 60,60 a 40,40 0 0 0 -40,40 a 40,40 0 0 0 40,40 a 40,40 0 0 0 40,-40 a 40,40 0 0 0 -40,-40 z" style="marker-end:url(#End)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,35 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Use property inheritance in SVG2</title>
<metadata>
<h:link rel="help" href="https://svgwg.org/svg2-draft/struct.html#UseStyleInheritance"/>
<h:link rel="match" href="reference/green-100x100.svg"/>
<h:link rel="author" title="Mike Bremford" href="http://bfo.com"/>
</metadata>
<style>
use rect { stroke: red }
.container rect { fill: red; stroke: red }
rect { stroke-width: 40px; stroke: green }
rect:root { opacity: 0 }
</style>
<defs>
<g class="container">
<rect id="r" x="20" y="20" width="60" height="60" style="fill-opacity:1"/>
</g>
</defs>
<g>
<use href="#r" xlink:href="#r" style="fill: green; fill-opacity:0"/>
</g>
<!--
This presume the SVG2 use inheritance rules, in SVG1 it will display as red.
1. The "rect" cloned by the "use" element is in a shadow DOM, so it DOES NOT
inherit the stroke from the "use rect" or ".container rect" style rules.
2. The cloned "rect" DOES get the rules set by the "rect" style rule, as that
still matches elements in the shadow DOM.
3. The "rect" DOES inherit "fill: green" from the <use>
4. The "rect"'s own "fill-opacity: 1" overrides the "fill-opacity: 0" inherited
from the "use" element.
5. Even though "rect" is considered to have no parent, it is not a root element
so does not match the rect:root style rule
-->
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -35,7 +35,7 @@ from mod_pywebsocket import standalone as pywebsocket
EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains "
"are mapped to a loopback device in /etc/hosts. "
"See https://github.com/web-platform-tests/wpt#running-the-tests "
"See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup "
"for instructions.")

View file

@ -278,8 +278,8 @@ def affected_testfiles(files_changed, # type: Iterable[Text]
full_path = os.path.join(wpt_root, repo_path[1:].replace("/", os.path.sep))
nontest_changed_paths.add((full_path, repo_path))
interface_name = lambda x: os.path.splitext(os.path.basename(x))[0]
interfaces_changed_names = map(interface_name, interfaces_changed)
interfaces_changed_names = [os.path.splitext(os.path.basename(interface))[0]
for interface in interfaces_changed]
def affected_by_wdspec(test):
# type: (str) -> bool
@ -299,7 +299,7 @@ def affected_testfiles(files_changed, # type: Iterable[Text]
def affected_by_interfaces(file_contents):
# type: (Union[bytes, Text]) -> bool
if len(interfaces_changed) > 0:
if len(interfaces_changed_names) > 0:
if 'idlharness.js' in file_contents:
for interface in interfaces_changed_names:
regex = '[\'"]' + interface + '(\\.idl)?[\'"]'

View file

@ -65,9 +65,9 @@ handler returns, or for directly writing to the output stream.
EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains "
"are mapped to a loopback device in /etc/hosts. "
"See https://github.com/web-platform-tests/wpt#running-the-tests "
"for instructions.")
"are mapped to a loopback device in /etc/hosts. "
"See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup "
"for instructions.")
class RequestRewriter(object):

View file

@ -166,6 +166,18 @@ test(t => {
assert_numeric_style_equals(getComputedStyle(div).width, 100);
}, 'Commits em units as pixel values');
test(t => {
const div = createDiv(t);
const animation = div.animate(
{ transform: 'translate(20px, 20px)' },
{ duration: 1, fill: 'forwards' }
);
animation.finish();
animation.commitStyles();
animation.cancel();
assert_equals(getComputedStyle(div).transform, 'matrix(1, 0, 0, 1, 20, 20)');
}, 'Commits transforms');
promise_test(async t => {
const div = createDiv(t);
div.style.opacity = '0.1';

View file

@ -5,9 +5,11 @@
<link rel="help" href="https://w3c.github.io/web-nfc/#visible-document">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/nfc-helpers.js"></script>
<script>
promise_test(async t => {
nfc_test(async (t, mockNFC) => {
mockNFC.simulateClosedPipe();
const reader = new NDEFReader();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
const promise = readerWatcher.wait_for("reading").then(event => {

View file

@ -47,7 +47,8 @@ promise_test(async t => {
// We do not provide NFC mock here to simulate that there has no available
// implementation for NFC Mojo interface.
promise_test(async t => {
nfc_test(async (t, mockNFC) => {
mockNFC.simulateClosedPipe();
if (window.testRunner) {
window.testRunner.setPermission('nfc', 'granted',
location.origin, location.origin);

View file

@ -156,7 +156,8 @@ promise_test(async t => {
// We do not provide NFC mock here to simulate that there has no available
// implementation for NFC Mojo interface.
promise_test(async t => {
nfc_test(async (t, mockNFC) => {
mockNFC.simulateClosedPipe();
if (window.testRunner) {
// Deny nfc permissions for Chromium testrunner.
window.testRunner.setPermission('nfc', 'granted',

View file

@ -0,0 +1,5 @@
// META: global=!default,worker
test(function() {
assert_equals(location, location);
}, 'location === location');

View file

@ -1,14 +0,0 @@
<!doctype html>
<title>location === location</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
async_test(function() {
var worker = new Worker('returns-same-object.js');
worker.onmessage = this.step_func(function(e) {
assert_true(e.data);
this.done();
});
});
</script>

View file

@ -0,0 +1,24 @@
const sourcePromise = new Promise(resolve => {
if ('DedicatedWorkerGlobalScope' in self &&
self instanceof DedicatedWorkerGlobalScope) {
self.onmessage = e => {
resolve(e.target);
};
} else if (
'SharedWorkerGlobalScope' in self &&
self instanceof SharedWorkerGlobalScope) {
self.onconnect = e => {
resolve(e.ports[0]);
};
}
});
const importedModulesPromise =
import("data:text/javascript, export const importedModules = ['export-block-cross-origin.js'];")
.then(module => module.importedModules)
.catch(() => ['ERROR']);
Promise.all([sourcePromise, importedModulesPromise]).then(results => {
const [source, importedModules] = results;
source.postMessage(importedModules);
});

View file

@ -0,0 +1,24 @@
const sourcePromise = new Promise(resolve => {
if ('DedicatedWorkerGlobalScope' in self &&
self instanceof DedicatedWorkerGlobalScope) {
self.onmessage = e => {
resolve(e.target);
};
} else if (
'SharedWorkerGlobalScope' in self &&
self instanceof SharedWorkerGlobalScope) {
self.onconnect = e => {
resolve(e.ports[0]);
};
}
});
const importedModulesPromise =
import('./export-block-cross-origin.js')
.then(module => module.importedModules)
.catch(() => ['ERROR']);
Promise.all([sourcePromise, importedModulesPromise]).then(results => {
const [source, importedModules] = results;
source.postMessage(importedModules);
});

View file

@ -0,0 +1 @@
export const importedModules = ['export-block-cross-origin.js'];

View file

@ -0,0 +1,14 @@
import * as module from "data:text/javascript, export const importedModules = ['export-block-cross-origin.js'];";
if ('DedicatedWorkerGlobalScope' in self &&
self instanceof DedicatedWorkerGlobalScope) {
self.onmessage = e => {
e.target.postMessage(module.importedModules);
};
} else if (
'SharedWorkerGlobalScope' in self &&
self instanceof SharedWorkerGlobalScope) {
self.onconnect = e => {
e.ports[0].postMessage(module.importedModules);
};
}

View file

@ -0,0 +1,14 @@
import * as module from './export-block-cross-origin.js';
if ('DedicatedWorkerGlobalScope' in self &&
self instanceof DedicatedWorkerGlobalScope) {
self.onmessage = e => {
e.target.postMessage(module.importedModules);
};
} else if (
'SharedWorkerGlobalScope' in self &&
self instanceof SharedWorkerGlobalScope) {
self.onconnect = e => {
e.ports[0].postMessage(module.importedModules);
};
}

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<title>SharedWorker: ES modules for data URL workers</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
const import_from_data_url_worker_test = (importType, isDataURL, expectation) => {
promise_test(async () => {
const importURL = new URL(`resources/${importType}-import-` +
`${isDataURL ? 'data-url' : 'script'}-block-cross-origin.js`,
location.href) + '?pipe=header(Access-Control-Allow-Origin, *)';
const dataURL = `data:text/javascript,import "${importURL}";`;
const worker = new SharedWorker(dataURL, { type: 'module' });
worker.port.postMessage('Send message for tests from main script.');
const msgEvent =
await new Promise(resolve => worker.port.onmessage = resolve);
assert_array_equals(msgEvent.data,
expectation === 'blocked' ? ['ERROR']
: ['export-block-cross-origin.js']);
}, `${importType} import ${isDataURL ? 'data url' : 'script'} from data: ` +
`URL should be ${expectation}.`);
}
// Static import should obey the outside settings.
// SecurityOrigin of the outside settings is decided by Window.
import_from_data_url_worker_test('static', true, 'allowed');
import_from_data_url_worker_test('static', false, 'allowed');
// Dynamic import should obey the inside settings.
// SecurityOrigin of the inside settings is a unique opaque origin.
//
// Data url script is cross-origin to the inside settings' SecurityOrigin, but
// dynamic importing it is allowed.
// https://fetch.spec.whatwg.org/#concept-main-fetch
// Step 5: requests current URLs scheme is "data" [spec text]
import_from_data_url_worker_test('dynamic', true, 'allowed');
// Non-data url script is cross-origin to the inside settings' SecurityOrigin.
// It should be blocked.
import_from_data_url_worker_test('dynamic', false, 'blocked');
</script>