diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-11-17 15:12:16 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-17 15:12:16 -0500 |
commit | d1db623dfc918796ebdfd213f00690cead4cd91a (patch) | |
tree | ee7a23b376fe0eb3677db59af1e6c2cd1a14092a /tests | |
parent | a7008d1cf71c6bcdf49ce41d45178a413199c837 (diff) | |
parent | e6e440683de2c29d482c3009a398c8b34edec7d9 (diff) | |
download | servo-d1db623dfc918796ebdfd213f00690cead4cd91a.tar.gz servo-d1db623dfc918796ebdfd213f00690cead4cd91a.zip |
Auto merge of #24761 - servo-wpt-sync:wpt_update_17-11-2019, r=jdm
Sync WPT with upstream (17-11-2019)
Automated downstream sync of changes from upstream as of 17-11-2019.
[no-wpt-sync]
r? @servo-wpt-sync
Diffstat (limited to 'tests')
391 files changed, 5972 insertions, 7614 deletions
diff --git a/tests/wpt/metadata/2dcontext/transformations/2d.transformation.getTransform.html.ini b/tests/wpt/metadata/2dcontext/transformations/2d.transformation.getTransform.html.ini new file mode 100644 index 00000000000..d6535d8729e --- /dev/null +++ b/tests/wpt/metadata/2dcontext/transformations/2d.transformation.getTransform.html.ini @@ -0,0 +1,4 @@ +[2d.transformation.getTransform.html] + [This test ensures that getTransform works correctly.] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 6a3af4e2ece..3b874fc1748 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -14,9 +14,6 @@ [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] [Untitled] @@ -37,3 +34,6 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL + [Revoke blob URL after calling fetch, fetch should succeed] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 2d83d384e56..100907ddf92 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -13987,12 +13987,6 @@ {} ] ], - "input-events/input-events-typing-manual.html": [ - [ - "input-events/input-events-typing-manual.html", - {} - ] - ], "mediacapture-depth/dictionary-manual.https.html": [ [ "mediacapture-depth/dictionary-manual.https.html", @@ -105165,6 +105159,18 @@ {} ] ], + "css/css-align/baseline-rules/synthesized-baseline-table-cell-001.html": [ + [ + "css/css-align/baseline-rules/synthesized-baseline-table-cell-001.html", + [ + [ + "/css/css-align/baseline-rules/synthesized-baseline-table-cell-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-align/content-distribution/place-content-shorthand-007.html": [ [ "css/css-align/content-distribution/place-content-shorthand-007.html", @@ -127687,6 +127693,18 @@ {} ] ], + "css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html": [ + [ + "css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html", + [ + [ + "/css/css-grid/reference/grid-support-grid-auto-columns-rows-003-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-grid/layout-algorithm/grid-layout-free-space-unit.html": [ [ "css/css-grid/layout-algorithm/grid-layout-free-space-unit.html", @@ -132523,6 +132541,42 @@ {} ] ], + "css/css-masking/mask-image/mask-image-data-url-image.html": [ + [ + "css/css-masking/mask-image/mask-image-data-url-image.html", + [ + [ + "/css/css-masking/mask-image/reference/mask-image-data-url-image-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-masking/mask-image/mask-image-ib-split-2.html": [ + [ + "css/css-masking/mask-image/mask-image-ib-split-2.html", + [ + [ + "/css/css-masking/mask-image/reference/mask-image-ib-split-2-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-masking/mask-image/mask-image-ib-split.html": [ + [ + "css/css-masking/mask-image/mask-image-ib-split.html", + [ + [ + "/css/css-masking/mask-image/reference/mask-image-ib-split-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-masking/mask-image/mask-image-url-image-hash.html": [ [ "css/css-masking/mask-image/mask-image-url-image-hash.html", @@ -137335,6 +137389,18 @@ {} ] ], + "css/css-position/position-absolute-dynamic-relayout-002.html": [ + [ + "css/css-position/position-absolute-dynamic-relayout-002.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-position/position-absolute-dynamic-static-position-floats-001.html": [ [ "css/css-position/position-absolute-dynamic-static-position-floats-001.html", @@ -138355,6 +138421,42 @@ {} ] ], + "css/css-pseudo/first-letter-exclude-block-child-marker.html": [ + [ + "css/css-pseudo/first-letter-exclude-block-child-marker.html", + [ + [ + "/css/css-pseudo/first-letter-exclude-block-child-marker-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/first-letter-exclude-inline-child-marker.html": [ + [ + "css/css-pseudo/first-letter-exclude-inline-child-marker.html", + [ + [ + "/css/css-pseudo/first-letter-exclude-inline-child-marker-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/first-letter-exclude-inline-marker.html": [ + [ + "css/css-pseudo/first-letter-exclude-inline-marker.html", + [ + [ + "/css/css-pseudo/first-letter-exclude-inline-marker-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-pseudo/first-letter-list-item-dynamic-001.html": [ [ "css/css-pseudo/first-letter-list-item-dynamic-001.html", @@ -138391,6 +138493,18 @@ {} ] ], + "css/css-pseudo/first-letter-skip-marker.html": [ + [ + "css/css-pseudo/first-letter-skip-marker.html", + [ + [ + "/css/css-pseudo/first-letter-skip-marker-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-pseudo/first-letter-width.html": [ [ "css/css-pseudo/first-letter-width.html", @@ -141887,6 +142001,18 @@ {} ] ], + "css/css-scroll-anchoring/nested-overflow-subtree-layout.html": [ + [ + "css/css-scroll-anchoring/nested-overflow-subtree-layout.html", + [ + [ + "/css/css-scroll-anchoring/nested-overflow-subtree-layout-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-scroll-snap/scroll-target-align-001.html": [ [ "css/css-scroll-snap/scroll-target-align-001.html", @@ -208617,6 +208743,102 @@ {} ] ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_urls.html": [ + [ + "webvtt/rendering/cues-with-video/processing-model/embedded_style_urls.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls-ref.html", + "==" + ] + ], + {} + ] + ], "webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html": [ [ "webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html", @@ -214827,411 +215049,6 @@ "annotation-vocab/tools/anno.jsonld": [ [] ], - "annotation-vocab/tools/ruby-rdf/Gemfile": [ - [] - ], - "annotation-vocab/tools/ruby-rdf/Gemfile.lock": [ - [] - ], - "annotation-vocab/tools/ruby-rdf/README.md": [ - [] - ], - "annotation-vocab/tools/ruby-rdf/RESULTS.md": [ - [] - ], - "annotation-vocab/tools/ruby-rdf/Rakefile": [ - [] - ], - "annotation-vocab/tools/ruby-rdf/annotation-vocab_spec.rb": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno1.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno1.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno10.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno10.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno11.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno11.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno12.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno12.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno13.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno13.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno14.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno14.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno15.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno15.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno16.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno16.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno17.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno17.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno18.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno18.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno19.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno19.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno2.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno2.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno20.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno20.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno21.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno21.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno22.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno22.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno23.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno23.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno24.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno24.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno25.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno25.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno26.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno26.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno27.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno27.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno28.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno28.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno29.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno29.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno3.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno3.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno30.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno30.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno31.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno31.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno32.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno32.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno33.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno33.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno34.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno34.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno35.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno35.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno36.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno36.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno37.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno37.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno38.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno38.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno39.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno39.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno4.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno4.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno40.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno40.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno41-example44.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno41-example44.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno5.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno5.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno6.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno6.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno7.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno7.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno8.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno8.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno9.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/anno9.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/collection1.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/collection1.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/example41.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/example41.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/example42.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/example42.nt": [ - [] - ], - "annotation-vocab/tools/samples/correct/example43.json": [ - [] - ], - "annotation-vocab/tools/samples/correct/example43.nt": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno1.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno10.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno11.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno12.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno13.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno14.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno15.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno16.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno17.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno18.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno19.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno2.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno20.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno21.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno22.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno23.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno24.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno25.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno26.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno27.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno28.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno29.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno3.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno30.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno31.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno32.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno33.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno34.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno35.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno36.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno37.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno38.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno39.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno4.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno5.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno6.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno7.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno8.json": [ - [] - ], - "annotation-vocab/tools/samples/incorrect/anno9.json": [ - [] - ], "annotation-vocab/tools/vocab_tester.py": [ [] ], @@ -215409,9 +215226,6 @@ "bluetooth/script-tests/service/service-is-removed.js": [ [] ], - "check_stability.ini": [ - [] - ], "clear-site-data/META.yml": [ [] ], @@ -244557,6 +244371,9 @@ "css/css-align/baseline-rules/grid-item-input-type-text-ref.html": [ [] ], + "css/css-align/baseline-rules/synthesized-baseline-table-cell-001-ref.html": [ + [] + ], "css/css-align/content-distribution/place-content-shorthand-007-ref.html": [ [] ], @@ -252483,6 +252300,9 @@ "css/css-grid/reference/grid-support-grid-auto-columns-rows-002-ref.html": [ [] ], + "css/css-grid/reference/grid-support-grid-auto-columns-rows-003-ref.html": [ + [] + ], "css/css-grid/reference/grid-text-green-margin-no-collapse-ref.html": [ [] ], @@ -253179,6 +252999,18 @@ "css/css-masking/clip/reference/clip-vertical-stripe-ref.html": [ [] ], + "css/css-masking/mask-image/reference/1x1-black-30-alpha.png": [ + [] + ], + "css/css-masking/mask-image/reference/mask-image-data-url-image-ref.html": [ + [] + ], + "css/css-masking/mask-image/reference/mask-image-ib-split-2-ref.html": [ + [] + ], + "css/css-masking/mask-image/reference/mask-image-ib-split-ref.html": [ + [] + ], "css/css-masking/mask-image/reference/mask-image-ref.html": [ [] ], @@ -254334,6 +254166,15 @@ "css/css-pseudo/first-letter-block-to-inline-ref.html": [ [] ], + "css/css-pseudo/first-letter-exclude-block-child-marker-ref.html": [ + [] + ], + "css/css-pseudo/first-letter-exclude-inline-child-marker-ref.html": [ + [] + ], + "css/css-pseudo/first-letter-exclude-inline-marker-ref.html": [ + [] + ], "css/css-pseudo/first-letter-list-item-dynamic-001-ref.html": [ [] ], @@ -254343,6 +254184,9 @@ "css/css-pseudo/first-letter-opacity-float-001-ref.html": [ [] ], + "css/css-pseudo/first-letter-skip-marker-ref.html": [ + [] + ], "css/css-pseudo/first-letter-width-ref.html": [ [] ], @@ -255147,6 +254991,9 @@ "css/css-scroll-anchoring/README.md": [ [] ], + "css/css-scroll-anchoring/nested-overflow-subtree-layout-ref.html": [ + [] + ], "css/css-scroll-snap/META.yml": [ [] ], @@ -265875,6 +265722,9 @@ "docs/README.md": [ [] ], + "docs/__init__.py": [ + [] + ], "docs/admin/index.md": [ [] ], @@ -265992,6 +265842,9 @@ "docs/test-suite-design.md": [ [] ], + "docs/wpt_lint_rules.py": [ + [] + ], "docs/writing-tests/ahem.md": [ [] ], @@ -267810,6 +267663,9 @@ "feature-policy/resources/feature-policy-picture-in-picture.html": [ [] ], + "feature-policy/resources/feature-policy-report-json.js": [ + [] + ], "feature-policy/resources/feature-policy-serial-worker.html": [ [] ], @@ -268221,6 +268077,9 @@ "fetch/http-cache/resources/securedimage.py": [ [] ], + "fetch/http-cache/resources/split-origin-popup.html": [ + [] + ], "fetch/metadata/README.md": [ [] ], @@ -269676,6 +269535,9 @@ "html/browsers/sandboxing/noscript-iframe.html": [ [] ], + "html/browsers/sandboxing/resources/post-done-to-opener.html": [ + [] + ], "html/browsers/sandboxing/sandbox-new-execution-context-iframe.html": [ [] ], @@ -273180,6 +273042,9 @@ "html/interaction/focus/the-autofocus-attribute/resources/grand-child-autofocus.html": [ [] ], + "html/interaction/focus/the-autofocus-attribute/resources/imagemap.html": [ + [] + ], "html/interaction/focus/the-autofocus-attribute/resources/moving-autofocus-to-parent.html": [ [] ], @@ -276078,6 +275943,9 @@ "input-events/META.yml": [ [] ], + "installedapp/resources/iframe.html": [ + [] + ], "interfaces/BackgroundSync.idl": [ [] ], @@ -278082,6 +277950,9 @@ "native-file-system/resources/native-fs-test-helpers.js": [ [] ], + "native-file-system/resources/opaque-origin-sandbox.html": [ + [] + ], "native-file-system/resources/sandboxed-fs-test-helpers.js": [ [] ], @@ -284514,6 +284385,9 @@ "tools/manifest/sourcefile.py": [ [] ], + "tools/manifest/testpaths.py": [ + [] + ], "tools/manifest/tests/__init__.py": [ [] ], @@ -288339,6 +288213,9 @@ "tools/wptrunner/wptrunner/tests/browsers/test_sauce.py": [ [] ], + "tools/wptrunner/wptrunner/tests/browsers/test_webkitgtk.py": [ + [] + ], "tools/wptrunner/wptrunner/tests/test_expectedtree.py": [ [] ], @@ -288744,6 +288621,9 @@ "trusted-types/support/worker.js": [ [] ], + "trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers": [ + [] + ], "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [ [] ], @@ -290838,6 +290718,9 @@ "webvtt/rendering/cues-with-video/processing-model/audio_has_no_subtitles-ref.html": [ [] ], + "webvtt/rendering/cues-with-video/processing-model/background.png": [ + [] + ], "webvtt/rendering/cues-with-video/processing-model/basic-ref.html": [ [] ], @@ -290901,6 +290784,30 @@ "webvtt/rendering/cues-with-video/processing-model/dom_override_remove_cue_while_paused-ref.html": [ [] ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_urls-ref.html": [ + [] + ], "webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition-ref.html": [ [] ], @@ -291639,6 +291546,45 @@ "webvtt/rendering/cues-with-video/processing-model/support/decode_escaped_entities.vtt": [ [] ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_cascade_priority.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_imports_blocked.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_invalid_format.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe-ref.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe.html": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks1.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks2.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_selectors.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_urls.vtt": [ + [] + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_without_style.vtt": [ + [] + ], "webvtt/rendering/cues-with-video/processing-model/support/foo.vtt": [ [] ], @@ -291648,6 +291594,9 @@ "webvtt/rendering/cues-with-video/processing-model/support/foo_space_space_bar_LF_baz.vtt": [ [] ], + "webvtt/rendering/cues-with-video/processing-model/support/imported_style.css": [ + [] + ], "webvtt/rendering/cues-with-video/processing-model/support/italic_long.vtt": [ [] ], @@ -291891,6 +291840,9 @@ "workers/constructors/SharedWorker/1": [ [] ], + "workers/constructors/SharedWorker/1.headers": [ + [] + ], "workers/constructors/SharedWorker/connect-event.js": [ [] ], @@ -291912,6 +291864,9 @@ "workers/constructors/SharedWorker/null": [ [] ], + "workers/constructors/SharedWorker/null.headers": [ + [] + ], "workers/constructors/SharedWorker/port-onmessage.js": [ [] ], @@ -291921,18 +291876,27 @@ "workers/constructors/SharedWorker/undefined": [ [] ], + "workers/constructors/SharedWorker/undefined.headers": [ + [] + ], "workers/constructors/SharedWorker/unexpected-global-properties.js": [ [] ], "workers/constructors/Worker/1": [ [] ], + "workers/constructors/Worker/1.headers": [ + [] + ], "workers/constructors/Worker/AbstractWorker.onerror.js": [ [] ], "workers/constructors/Worker/null": [ [] ], + "workers/constructors/Worker/null.headers": [ + [] + ], "workers/constructors/Worker/sample_worker/worker.js": [ [] ], @@ -291942,6 +291906,9 @@ "workers/constructors/Worker/undefined": [ [] ], + "workers/constructors/Worker/undefined.headers": [ + [] + ], "workers/data-url-shared-window.html": [ [] ], @@ -297670,6 +297637,12 @@ {} ] ], + "2dcontext/transformations/2d.transformation.getTransform.html": [ + [ + "2dcontext/transformations/2d.transformation.getTransform.html", + {} + ] + ], "2dcontext/transformations/2d.transformation.order.html": [ [ "2dcontext/transformations/2d.transformation.order.html", @@ -298947,6 +298920,12 @@ {} ] ], + "IndexedDB/idbcursor_continue_delete_objectstore.htm": [ + [ + "IndexedDB/idbcursor_continue_delete_objectstore.htm", + {} + ] + ], "IndexedDB/idbcursor_continue_index.htm": [ [ "IndexedDB/idbcursor_continue_index.htm", @@ -317222,12 +317201,6 @@ {} ] ], - "css/css-animations/CSSPseudoElement-getAnimations.tentative.html": [ - [ - "css/css-animations/CSSPseudoElement-getAnimations.tentative.html", - {} - ] - ], "css/css-animations/Document-getAnimations.tentative.html": [ [ "css/css-animations/Document-getAnimations.tentative.html", @@ -318444,6 +318417,12 @@ {} ] ], + "css/css-break/widows-orphans-005.html": [ + [ + "css/css-break/widows-orphans-005.html", + {} + ] + ], "css/css-cascade/all-prop-initial-xml.html": [ [ "css/css-cascade/all-prop-initial-xml.html", @@ -319616,6 +319595,12 @@ {} ] ], + "css/css-font-loading/empty-family-load.html": [ + [ + "css/css-font-loading/empty-family-load.html", + {} + ] + ], "css/css-font-loading/font-face-reject.html": [ [ "css/css-font-loading/font-face-reject.html", @@ -324246,6 +324231,12 @@ {} ] ], + "css/css-position/position-absolute-crash-chrome-013.html": [ + [ + "css/css-position/position-absolute-crash-chrome-013.html", + {} + ] + ], "css/css-position/position-absolute-dynamic-containing-block.html": [ [ "css/css-position/position-absolute-dynamic-containing-block.html", @@ -325224,6 +325215,12 @@ {} ] ], + "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html": [ + [ + "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html", + {} + ] + ], "css/css-scroll-snap/snap-inline-block.html": [ [ "css/css-scroll-snap/snap-inline-block.html", @@ -329478,12 +329475,6 @@ {} ] ], - "css/css-transitions/CSSPseudoElement-getAnimations.tentative.html": [ - [ - "css/css-transitions/CSSPseudoElement-getAnimations.tentative.html", - {} - ] - ], "css/css-transitions/CSSTransition-canceling.tentative.html": [ [ "css/css-transitions/CSSTransition-canceling.tentative.html", @@ -352500,6 +352491,16 @@ {} ] ], + "fetch/api/response/response-stream-disturbed-by-pipe.any.js": [ + [ + "fetch/api/response/response-stream-disturbed-by-pipe.any.html", + {} + ], + [ + "fetch/api/response/response-stream-disturbed-by-pipe.any.worker.html", + {} + ] + ], "fetch/api/response/response-stream-with-broken-then.any.js": [ [ "fetch/api/response/response-stream-with-broken-then.any.html", @@ -352999,6 +353000,12 @@ } ] ], + "fetch/http-cache/split-cache.tentative.html": [ + [ + "fetch/http-cache/split-cache.tentative.html", + {} + ] + ], "fetch/http-cache/status.html": [ [ "fetch/http-cache/status.html", @@ -355638,6 +355645,12 @@ {} ] ], + "html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html": [ + [ + "html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html", + {} + ] + ], "html/browsers/sandboxing/sandbox-disallow-scripts.html": [ [ "html/browsers/sandboxing/sandbox-disallow-scripts.html", @@ -369944,6 +369957,48 @@ {} ] ], + "input-events/input-events-typing.html": [ + [ + "input-events/input-events-typing.html", + { + "testdriver": true + } + ] + ], + "installedapp/idlharness.https.window.js": [ + [ + "installedapp/idlharness.https.window.html", + { + "script_metadata": [ + [ + "global", + "window" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ] + ] + } + ] + ], + "installedapp/installedapp.https.window.js": [ + [ + "installedapp/installedapp.https.window.html", + { + "script_metadata": [ + [ + "script", + "resources/utils.js" + ] + ] + } + ] + ], "intersection-observer/bounding-box.html": [ [ "intersection-observer/bounding-box.html", @@ -375678,6 +375733,12 @@ } ] ], + "native-file-system/opaque-origin.https.window.js": [ + [ + "native-file-system/opaque-origin.https.window.html", + {} + ] + ], "native-file-system/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.tentative.https.window.js": [ [ "native-file-system/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.tentative.https.window.html", @@ -385763,6 +385824,12 @@ {} ] ], + "offscreen-canvas/transformations/2d.transformation.getTransform.html": [ + [ + "offscreen-canvas/transformations/2d.transformation.getTransform.html", + {} + ] + ], "offscreen-canvas/transformations/2d.transformation.order.html": [ [ "offscreen-canvas/transformations/2d.transformation.order.html", @@ -415728,9 +415795,9 @@ {} ] ], - "trusted-types/TrustedTypePolicy-name.tentative.html": [ + "trusted-types/TrustedTypePolicy-getPolicyNames.tentative.html": [ [ - "trusted-types/TrustedTypePolicy-name.tentative.html", + "trusted-types/TrustedTypePolicy-getPolicyNames.tentative.html", {} ] ], @@ -415814,12 +415881,6 @@ {} ] ], - "trusted-types/block-eval.tentative.html": [ - [ - "trusted-types/block-eval.tentative.html", - {} - ] - ], "trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html": [ [ "trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html", @@ -415880,6 +415941,12 @@ {} ] ], + "trusted-types/csp-block-eval.tentative.html": [ + [ + "trusted-types/csp-block-eval.tentative.html", + {} + ] + ], "trusted-types/default-policy-report-only.tentative.html": [ [ "trusted-types/default-policy-report-only.tentative.html", @@ -415892,6 +415959,36 @@ {} ] ], + "trusted-types/eval-csp-no-tt.tentative.html": [ + [ + "trusted-types/eval-csp-no-tt.tentative.html", + {} + ] + ], + "trusted-types/eval-csp-tt-default-policy.tentative.html": [ + [ + "trusted-types/eval-csp-tt-default-policy.tentative.html", + {} + ] + ], + "trusted-types/eval-csp-tt-no-default-policy.tentative.html": [ + [ + "trusted-types/eval-csp-tt-no-default-policy.tentative.html", + {} + ] + ], + "trusted-types/eval-no-csp-no-tt-default-policy.tentative.html": [ + [ + "trusted-types/eval-no-csp-no-tt-default-policy.tentative.html", + {} + ] + ], + "trusted-types/eval-no-csp-no-tt.tentative.html": [ + [ + "trusted-types/eval-no-csp-no-tt.tentative.html", + {} + ] + ], "trusted-types/eval-with-permissive-csp.tentative.html": [ [ "trusted-types/eval-with-permissive-csp.tentative.html", @@ -415921,6 +416018,24 @@ {} ] ], + "trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html": [ + [ + "trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html", + {} + ] + ], + "trusted-types/trusted-types-duplicate-names-list.tentative.html": [ + [ + "trusted-types/trusted-types-duplicate-names-list.tentative.html", + {} + ] + ], + "trusted-types/trusted-types-duplicate-names.tentative.html": [ + [ + "trusted-types/trusted-types-duplicate-names.tentative.html", + {} + ] + ], "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [ [ "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html", @@ -415963,6 +416078,12 @@ {} ] ], + "trusted-types/tt-block-eval.tentative.html": [ + [ + "trusted-types/tt-block-eval.tentative.html", + {} + ] + ], "uievents/click/auxclick_event.html": [ [ "uievents/click/auxclick_event.html", @@ -415987,6 +416108,14 @@ } ] ], + "uievents/click/click_events_on_input.html": [ + [ + "uievents/click/click_events_on_input.html", + { + "testdriver": true + } + ] + ], "uievents/click/mouse-dblclick-event.html": [ [ "uievents/click/mouse-dblclick-event.html", @@ -421107,6 +421236,66 @@ } ] ], + "wasm/jsapi/constructor/multi-value.any.js": [ + [ + "wasm/jsapi/constructor/multi-value.any.html", + { + "script_metadata": [ + [ + "global", + "jsshell" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ] + ] + } + ], + [ + "wasm/jsapi/constructor/multi-value.any.js", + { + "jsshell": true, + "script_metadata": [ + [ + "global", + "jsshell" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ] + ] + } + ], + [ + "wasm/jsapi/constructor/multi-value.any.worker.html", + { + "script_metadata": [ + [ + "global", + "jsshell" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ] + ] + } + ] + ], "wasm/jsapi/constructor/validate.any.js": [ [ "wasm/jsapi/constructor/validate.any.html", @@ -421411,6 +421600,54 @@ } ] ], + "wasm/jsapi/instance/constructor-caching.any.js": [ + [ + "wasm/jsapi/instance/constructor-caching.any.html", + { + "script_metadata": [ + [ + "global", + "jsshell" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/instance/constructor-caching.any.js", + { + "jsshell": true, + "script_metadata": [ + [ + "global", + "jsshell" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/instance/constructor-caching.any.worker.html", + { + "script_metadata": [ + [ + "global", + "jsshell" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ] + ], "wasm/jsapi/instance/constructor.any.js": [ [ "wasm/jsapi/instance/constructor.any.html", @@ -427196,6 +427433,12 @@ {} ] ], + "webrtc/RTCPeerConnection-addIceCandidate-timing.https.html": [ + [ + "webrtc/RTCPeerConnection-addIceCandidate-timing.https.html", + {} + ] + ], "webrtc/RTCPeerConnection-addIceCandidate.html": [ [ "webrtc/RTCPeerConnection-addIceCandidate.html", @@ -458895,7 +459138,7 @@ "support" ], ".taskcluster.yml": [ - "6de1e280cecdece123b42950a4c0a35cf85f4a5c", + "6bc9253ec2055645981206620ecdee3d1becb792", "support" ], ".well-known/README.md": [ @@ -462974,6 +463217,10 @@ "6d5f8f660fa3fbc8e2b8b8710070241ccde392d0", "support" ], + "2dcontext/transformations/2d.transformation.getTransform.html": [ + "664efd50e63dc0fc9396857d957cee0fe38f6901", + "testharness" + ], "2dcontext/transformations/2d.transformation.order.html": [ "df0ab55f7dc53ee76fee70b00bab17e23f47ce7e", "testharness" @@ -463327,7 +463574,7 @@ "support" ], "BackgroundSync/idlharness.https.any.js": [ - "989139e99041d6ec8dd64181de7a994e4b88112c", + "2c7d25dd3f6dae9fd044a94f1407d57754294195", "testharness" ], "BackgroundSync/periodicsync.https.window.js": [ @@ -463926,6 +464173,10 @@ "cb0859c636e5f9d426f1a553991115561ebb729f", "testharness" ], + "IndexedDB/idbcursor_continue_delete_objectstore.htm": [ + "7cae5fd0e3275fd10450f169ff96dc263cc72be0", + "testharness" + ], "IndexedDB/idbcursor_continue_index.htm": [ "8b0d079a939c14456f95e2e256c49da2fbf1a9aa", "testharness" @@ -465195,7 +465446,7 @@ "support" ], "README.md": [ - "e3ee8551ff48a77652e2a4dc4fbc677e0812c5c5", + "8f755f2ac2fc88e012b32803fc65a68baa538596", "support" ], "WebCryptoAPI/META.yml": [ @@ -468615,553 +468866,13 @@ "support" ], "annotation-vocab/tools/README.md": [ - "ae44a58fa8e60cec0d6b7ab7089e1510870ce61e", + "1bc74ec23d4432a9411a5ece6aeb9591f4e24ea1", "support" ], "annotation-vocab/tools/anno.jsonld": [ "58892919c0bb10fd0ddacefa00f2d88eb4f46818", "support" ], - "annotation-vocab/tools/ruby-rdf/Gemfile": [ - "3a38487801377cee90d8f195cac791065b674001", - "support" - ], - "annotation-vocab/tools/ruby-rdf/Gemfile.lock": [ - "d6cba72f7660b924bbcb7469f7a8de1fa2d3ad21", - "support" - ], - "annotation-vocab/tools/ruby-rdf/README.md": [ - "30f441e63bc22d06188592c1967b135ed3c5402f", - "support" - ], - "annotation-vocab/tools/ruby-rdf/RESULTS.md": [ - "c7932048a95096fe15d8f62f179dc72ee184834e", - "support" - ], - "annotation-vocab/tools/ruby-rdf/Rakefile": [ - "70b446b915acb215edf50297606bd8c60333c1e2", - "support" - ], - "annotation-vocab/tools/ruby-rdf/annotation-vocab_spec.rb": [ - "3ae53b29fbf13970903bdf93dc5c171251f43114", - "support" - ], - "annotation-vocab/tools/samples/correct/anno1.json": [ - "905349bb4683e37c9f42f8287e890d62da821cb7", - "support" - ], - "annotation-vocab/tools/samples/correct/anno1.nt": [ - "879b3b4960e39efcca7157d7c2b244de45a71a6a", - "support" - ], - "annotation-vocab/tools/samples/correct/anno10.json": [ - "766fddf3ac8f5b9087128f76f4c2df59c7507c72", - "support" - ], - "annotation-vocab/tools/samples/correct/anno10.nt": [ - "0db919d30507ef12ca77614a93fc1f0b3cfa75a2", - "support" - ], - "annotation-vocab/tools/samples/correct/anno11.json": [ - "7461493f46e03b783004b4f6816e881fc1c0ba6d", - "support" - ], - "annotation-vocab/tools/samples/correct/anno11.nt": [ - "cb071e57376736518b1b76900b65bbcd28f3bf8b", - "support" - ], - "annotation-vocab/tools/samples/correct/anno12.json": [ - "a8039b207df2e2ea118c26dba126ff60c14c018b", - "support" - ], - "annotation-vocab/tools/samples/correct/anno12.nt": [ - "5890c8b995794c17e257788c81673e4d3e686072", - "support" - ], - "annotation-vocab/tools/samples/correct/anno13.json": [ - "8bf663330dacd06292232888f3d81b6c39b69ed5", - "support" - ], - "annotation-vocab/tools/samples/correct/anno13.nt": [ - "e7544503ee92b6d40861e600a28b4833dbf2c954", - "support" - ], - "annotation-vocab/tools/samples/correct/anno14.json": [ - "102225b729e4d0ed7e5f018caca5c82145b6656a", - "support" - ], - "annotation-vocab/tools/samples/correct/anno14.nt": [ - "f37cb0d3a01f0af9adf4ae312a3e1e85f2d3431e", - "support" - ], - "annotation-vocab/tools/samples/correct/anno15.json": [ - "1280eef4cd9ece8c610bd389d9ef93d4d36904c8", - "support" - ], - "annotation-vocab/tools/samples/correct/anno15.nt": [ - "2afb3d2a2eb25fd9fb4cb347a49a5cd933239e4c", - "support" - ], - "annotation-vocab/tools/samples/correct/anno16.json": [ - "f110169c345ae8086d1b859fb7ab3cf4e00deb08", - "support" - ], - "annotation-vocab/tools/samples/correct/anno16.nt": [ - "b511107f61daa9207df39976cc8ec8f51f0f0527", - "support" - ], - "annotation-vocab/tools/samples/correct/anno17.json": [ - "056b8e4f534347b9ed6a8b710ba5cb7ce4fcb198", - "support" - ], - "annotation-vocab/tools/samples/correct/anno17.nt": [ - "ebfceb4e28ea3bcb2815ea3371ba2d5c61bf8fd7", - "support" - ], - "annotation-vocab/tools/samples/correct/anno18.json": [ - "cdf50fcd8f3bce3ba6ffa39ec6cdd2667e0c4ec1", - "support" - ], - "annotation-vocab/tools/samples/correct/anno18.nt": [ - "2e4e05bf4dc7c08f82341cd6e5a96512a988e606", - "support" - ], - "annotation-vocab/tools/samples/correct/anno19.json": [ - "bd572ce688396a535550a1bd919263d6d8fefe12", - "support" - ], - "annotation-vocab/tools/samples/correct/anno19.nt": [ - "11fa7ab215e8d9ebb34308a32a69f00981ba32cc", - "support" - ], - "annotation-vocab/tools/samples/correct/anno2.json": [ - "f950f2db8d6e8df60fb311d45549bbf8da91bf99", - "support" - ], - "annotation-vocab/tools/samples/correct/anno2.nt": [ - "b1377ef57e3c20ddf403099d98cd3328061fd299", - "support" - ], - "annotation-vocab/tools/samples/correct/anno20.json": [ - "17fcc7185a86ddd799a3e3e76e6556f40f259e01", - "support" - ], - "annotation-vocab/tools/samples/correct/anno20.nt": [ - "465f79bc621a4e08d2aacf951b04b05391664876", - "support" - ], - "annotation-vocab/tools/samples/correct/anno21.json": [ - "9ae284df04078fe5c5470241b974df9640567015", - "support" - ], - "annotation-vocab/tools/samples/correct/anno21.nt": [ - "cc028dce7c77a09b05b01febcf0154d8e0770735", - "support" - ], - "annotation-vocab/tools/samples/correct/anno22.json": [ - "767080c05e87a0b90d8ff82eaf2c56450bf0907e", - "support" - ], - "annotation-vocab/tools/samples/correct/anno22.nt": [ - "4a2e4b5978c0955f20a84629874c26dad9572786", - "support" - ], - "annotation-vocab/tools/samples/correct/anno23.json": [ - "53b6c676b153df4d7895ff8c8c1373d2ad7522d5", - "support" - ], - "annotation-vocab/tools/samples/correct/anno23.nt": [ - "9bfe050b0302d00b93750847a47d71441dff2f18", - "support" - ], - "annotation-vocab/tools/samples/correct/anno24.json": [ - "6cca6cb0a6da5bca5b9904ccf33e04d98dd5d5c9", - "support" - ], - "annotation-vocab/tools/samples/correct/anno24.nt": [ - "090cad89c9256a5aebea72cacd8fb6f942d92a7d", - "support" - ], - "annotation-vocab/tools/samples/correct/anno25.json": [ - "0e48d3be6a991b6e7920ec28f85843aa83d8ebac", - "support" - ], - "annotation-vocab/tools/samples/correct/anno25.nt": [ - "5bd4b28c5da5ac64c0241e84e2eaa86dbdd785f3", - "support" - ], - "annotation-vocab/tools/samples/correct/anno26.json": [ - "1777fd781b8532daf825871e7c269e491969c95e", - "support" - ], - "annotation-vocab/tools/samples/correct/anno26.nt": [ - "9ecd4318390faf115fd12f337fff6b43a997a0a5", - "support" - ], - "annotation-vocab/tools/samples/correct/anno27.json": [ - "4844979a241072cec86a4287a89686b5fc71c714", - "support" - ], - "annotation-vocab/tools/samples/correct/anno27.nt": [ - "68df84db6a2704e9fa7c75855ef9b4aa2b9e9fbd", - "support" - ], - "annotation-vocab/tools/samples/correct/anno28.json": [ - "2dd1bc7afcc221cd6c6e3b7c85a776813e0f0d76", - "support" - ], - "annotation-vocab/tools/samples/correct/anno28.nt": [ - "e84bcb2400f2bad8a185d030439db9a3a23f7ccb", - "support" - ], - "annotation-vocab/tools/samples/correct/anno29.json": [ - "77914acaeb2a887c5c4a20d8deee8a2b1fd3ed83", - "support" - ], - "annotation-vocab/tools/samples/correct/anno29.nt": [ - "79178d342e59281c903c8a08e90941bac8031e32", - "support" - ], - "annotation-vocab/tools/samples/correct/anno3.json": [ - "548825c76bc79cd66bd6b7481383ded83ec53992", - "support" - ], - "annotation-vocab/tools/samples/correct/anno3.nt": [ - "87a7767c9c404f00aee0a1f3b6a3ed70a7db02f6", - "support" - ], - "annotation-vocab/tools/samples/correct/anno30.json": [ - "1a7619afc1e1fa419e702daf1aeab84c65646ea8", - "support" - ], - "annotation-vocab/tools/samples/correct/anno30.nt": [ - "7889db4bb160e40f77797c38933f74b0a0a13ea4", - "support" - ], - "annotation-vocab/tools/samples/correct/anno31.json": [ - "ee6902c3968200c4c4aebc759f9d695dc01a2515", - "support" - ], - "annotation-vocab/tools/samples/correct/anno31.nt": [ - "efb8e991e8710144aab5ada0385862979718bacb", - "support" - ], - "annotation-vocab/tools/samples/correct/anno32.json": [ - "f7c189ceb63ca56c98be34c6de31e923181536bc", - "support" - ], - "annotation-vocab/tools/samples/correct/anno32.nt": [ - "7ffcc146c133ece4344213e1c30649208c96f6d4", - "support" - ], - "annotation-vocab/tools/samples/correct/anno33.json": [ - "f2866eef56eab626f418418dbecd4d758f2de560", - "support" - ], - "annotation-vocab/tools/samples/correct/anno33.nt": [ - "cc71ce37b60e069a3fd31bd17b276d6bf6dd87cc", - "support" - ], - "annotation-vocab/tools/samples/correct/anno34.json": [ - "c3df38c2823853b357a391f112ea20761b530ef7", - "support" - ], - "annotation-vocab/tools/samples/correct/anno34.nt": [ - "040a1c755fc93d074a7cbedb84a415a9a24b73e6", - "support" - ], - "annotation-vocab/tools/samples/correct/anno35.json": [ - "39050abb133f773d0a0b8f956d6fa29e5f9f80e1", - "support" - ], - "annotation-vocab/tools/samples/correct/anno35.nt": [ - "9d528523afac940e0f108403649107c848814f1c", - "support" - ], - "annotation-vocab/tools/samples/correct/anno36.json": [ - "77581efb3dfa29456919b170d27e341c735c0f29", - "support" - ], - "annotation-vocab/tools/samples/correct/anno36.nt": [ - "aa27b88d835454a1a8c08f55482477737de963dd", - "support" - ], - "annotation-vocab/tools/samples/correct/anno37.json": [ - "96796db9a0ba02076f0b514f71814f7c7863e399", - "support" - ], - "annotation-vocab/tools/samples/correct/anno37.nt": [ - "6b03f75dc6f9d2f9613db135350bd7890b3f11eb", - "support" - ], - "annotation-vocab/tools/samples/correct/anno38.json": [ - "67f24b80eae0f1001982f958e9777a521e4eaa63", - "support" - ], - "annotation-vocab/tools/samples/correct/anno38.nt": [ - "0a05adbd1ba5e25a9ef9b5c7b5e51bbe1f19c5f5", - "support" - ], - "annotation-vocab/tools/samples/correct/anno39.json": [ - "27e639cd3435fe019016b64ae9f99b740e2ca8f3", - "support" - ], - "annotation-vocab/tools/samples/correct/anno39.nt": [ - "8905e96cdad2e5ac8bdce7579c5484fc9d74c0ba", - "support" - ], - "annotation-vocab/tools/samples/correct/anno4.json": [ - "5655fb39e13e0b048c25f9f7aa3b6d24726142b0", - "support" - ], - "annotation-vocab/tools/samples/correct/anno4.nt": [ - "32f8137b3865745f9f40d868af9a76a7c094c38c", - "support" - ], - "annotation-vocab/tools/samples/correct/anno40.json": [ - "63b47f145c845659fd792665ecc6a770afc0e855", - "support" - ], - "annotation-vocab/tools/samples/correct/anno40.nt": [ - "6afaad5a700daa876e0cc40fef2f2d37636de3be", - "support" - ], - "annotation-vocab/tools/samples/correct/anno41-example44.json": [ - "80afc748948ef6ae5beff89b60f4d9e2147b824f", - "support" - ], - "annotation-vocab/tools/samples/correct/anno41-example44.nt": [ - "5d5122e7d2d9163e0a6f02d41083f23c43238b61", - "support" - ], - "annotation-vocab/tools/samples/correct/anno5.json": [ - "85532e87850ab06e8ce9e3f59b6cc4404ad7a20f", - "support" - ], - "annotation-vocab/tools/samples/correct/anno5.nt": [ - "cb0359fd2a587318b418690d4d739978c6d41b58", - "support" - ], - "annotation-vocab/tools/samples/correct/anno6.json": [ - "9ae0d88eaeeb8f33815a8d11f727686155b7c115", - "support" - ], - "annotation-vocab/tools/samples/correct/anno6.nt": [ - "4d99f2a8ced88f5f7db8fecd5e134e5690b6ab5f", - "support" - ], - "annotation-vocab/tools/samples/correct/anno7.json": [ - "9f821d22fb2bf7f388ac103d3ae4fdb5ac537855", - "support" - ], - "annotation-vocab/tools/samples/correct/anno7.nt": [ - "79707fade81c288d52b06aa8b865baa0b854a51d", - "support" - ], - "annotation-vocab/tools/samples/correct/anno8.json": [ - "3187af65746afb7f8a09c47fa5b30d7d448c21f5", - "support" - ], - "annotation-vocab/tools/samples/correct/anno8.nt": [ - "72188231a957b4e416bbe98fcfdbb84927eae5b3", - "support" - ], - "annotation-vocab/tools/samples/correct/anno9.json": [ - "8d72da3563f46fe3f5086ae2f178d2965fe3e126", - "support" - ], - "annotation-vocab/tools/samples/correct/anno9.nt": [ - "16f583209b5b53c53139853a4a6e4c362e12d333", - "support" - ], - "annotation-vocab/tools/samples/correct/collection1.json": [ - "e3a5d80c129048954a54d4ead64ed3bc4a684bf1", - "support" - ], - "annotation-vocab/tools/samples/correct/collection1.nt": [ - "4aa2fc29e344c3e4a397e9eb4d2766d8c2c7fe0d", - "support" - ], - "annotation-vocab/tools/samples/correct/example41.json": [ - "0f5a4759efed8f73b73e1c2c71088324cc3fb690", - "support" - ], - "annotation-vocab/tools/samples/correct/example41.nt": [ - "7d44e9be237d2a88479cec15b40dcf9f734aa676", - "support" - ], - "annotation-vocab/tools/samples/correct/example42.json": [ - "15306a55690c90b05f2783f6f525b705fc864128", - "support" - ], - "annotation-vocab/tools/samples/correct/example42.nt": [ - "9d8934d991f44df8da91eab368534afa331d2d04", - "support" - ], - "annotation-vocab/tools/samples/correct/example43.json": [ - "15306a55690c90b05f2783f6f525b705fc864128", - "support" - ], - "annotation-vocab/tools/samples/correct/example43.nt": [ - "16b8b3bc185ddb83137630d0e5c0afa0e5852b1d", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno1.json": [ - "8c8155222d3859101f8f863a1ad08b5f22d90194", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno10.json": [ - "23927866055fde06f1f6ef92437a929468b1633b", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno11.json": [ - "183a6bfd3449c9e476b92181df8d6c4df9f626bc", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno12.json": [ - "4d6e66730dbb62bbca95537ef3e3e9867c9f612b", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno13.json": [ - "714b58fa7bad40de89db8c7b3debbc3150204c34", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno14.json": [ - "984cf1c33b46890f96ed6b883339268795d7295a", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno15.json": [ - "1ec07d34c58a94f020186c2e2a570607a75a9120", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno16.json": [ - "83abbc3eca4a5cfe2cffe4c4c84c75647f344115", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno17.json": [ - "40e5bfb6d6eb277db03334c0cd8e6934ac344d88", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno18.json": [ - "d8ac1edcda0a9840a860fd66c5dc56ed7b7477ff", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno19.json": [ - "14dc133e27d136d072bdd2cb20cf07d96ca34b0c", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno2.json": [ - "7a73a41bfdf76d6f793007240d80983a52f15f97", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno20.json": [ - "66b2f1a3693441769d55b13367e9f4eff6aed245", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno21.json": [ - "37faba142f3016a7b17ff9acf3f91a06aaac91c1", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno22.json": [ - "ef1eaf9aab0263859e8d10476d934c6fcc0f4044", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno23.json": [ - "8d5610be4ab9a7a2105f290ef261d01bac76972a", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno24.json": [ - "66d088cf5e627bdf827b0e57332dbb2e0720d37b", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno25.json": [ - "67346fcd28b190963faaa879ace1907afce9bf08", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno26.json": [ - "2c0c161390eb1aad82b8266676fb565cc1ae12f2", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno27.json": [ - "0cd8cc2317db94d755ddf10f98b3b0fc3b5956fc", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno28.json": [ - "041fefd222574531b6452c88bc0a248a97b5d1ed", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno29.json": [ - "ce48fc74c7b7054281e28ad4b3ee3cb5827fee6c", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno3.json": [ - "7afbb4f25c4bfdf6199ffadc5dd69aa076d2c527", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno30.json": [ - "fcadc17bc0bdb92ef9635274919f61b65fa4b132", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno31.json": [ - "c857a12b0044820a73a24371f38c3f01783b8c86", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno32.json": [ - "cccc1accb2344ba648d02515199516afd73a4fc0", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno33.json": [ - "267dfa4a7d2ab630a6bdf3cc8a5a175a748978cb", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno34.json": [ - "c81b0fe1392e0bb9d3c39210f36b1fe356fc09db", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno35.json": [ - "f2f590e8f982e2653f44752c31fd145fe39e784e", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno36.json": [ - "d9bb4afed6c60b0ba9ec3e57d4384b3d8b90fa89", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno37.json": [ - "072c5409c4e9eb127538073204e37cfb9632eef2", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno38.json": [ - "9da7c0b92e6a76b23f5cdc047252648a112756f0", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno39.json": [ - "50510f807f5916b3d50b69b1e3ea5c72e4b7c056", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno4.json": [ - "a0aa6b996dd7bb39995d4f98210736c8f67e9aa1", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno5.json": [ - "12afee602248f24ceab1f7157cfb15e3cc5d69cd", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno6.json": [ - "eeb1b2edbb4cf5abe4f26f85d83010879bb74dd6", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno7.json": [ - "68cbff0e2232729ec75ec6682311867d8ec91597", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno8.json": [ - "0f2842448925cc30dbdf7c0236a7bd6448e5b90a", - "support" - ], - "annotation-vocab/tools/samples/incorrect/anno9.json": [ - "db0f8caf8a0efe4299d613e54ec4fc11c9954d32", - "support" - ], "annotation-vocab/tools/vocab_tester.py": [ "7d9cc5b8a2e535ac48cf3c8c2c2c500df513f011", "support" @@ -470290,10 +470001,6 @@ "b4492885b83016d719161f705a33f7ada8a6d9c2", "testharness" ], - "check_stability.ini": [ - "e6ab448c001021a8fd77e4766591236dfdd02890", - "support" - ], "clear-site-data/META.yml": [ "65ca96dbb9d774e97cc3a60f6b6dde952104893b", "support" @@ -554306,6 +554013,14 @@ "fde0c2c432d0b9ac1bdf0fe210e1d48d80789f6e", "testharness" ], + "css/css-align/baseline-rules/synthesized-baseline-table-cell-001-ref.html": [ + "a63d2c9d685292a7fb6f54b4fb380a246a0ff46a", + "support" + ], + "css/css-align/baseline-rules/synthesized-baseline-table-cell-001.html": [ + "a7119b8dc556a77a6ec2f133053c123f4a3a75f4", + "reftest" + ], "css/css-align/content-distribution/parse-align-content-001.html": [ "c5cd4254f707824dacd0475eab9e8e1c59c02632", "testharness" @@ -554826,12 +554541,8 @@ "edef3b239e8a6c2f10b82017a448b0a2dfdd8b9d", "testharness" ], - "css/css-animations/CSSPseudoElement-getAnimations.tentative.html": [ - "8fcdf3879dc032c615a18898f701a05e10cd2b06", - "testharness" - ], "css/css-animations/Document-getAnimations.tentative.html": [ - "175acf8424688c29e2b433226c6c4af11d176eb3", + "ba8c6d9194e879ef0f221aa20d4e9d95d8433f5d", "testharness" ], "css/css-animations/Element-getAnimations-dynamic-changes.tentative.html": [ @@ -554839,7 +554550,7 @@ "testharness" ], "css/css-animations/Element-getAnimations.tentative.html": [ - "5690a7daf85845d342c5c0b5fb6224340b16aa2f", + "5419e11e653f36d2efdc376c3b698ce6b8080932", "testharness" ], "css/css-animations/KeyframeEffect-getKeyframes.tentative.html": [ @@ -559394,6 +559105,10 @@ "3e226d9e41e42fc79a9a3ac967fc935f68f7e061", "reftest" ], + "css/css-break/widows-orphans-005.html": [ + "713849703ce92e062780bd20e0708c8dfcd21f5f", + "testharness" + ], "css/css-cascade/META.yml": [ "96467729fe91cef54b0bf5cc82d83e9f2a5c01ed", "support" @@ -561147,7 +560862,7 @@ "reftest" ], "css/css-contain/contain-size-select-002.html": [ - "88d37323e1baffed92d431f9b951c4fef2b43e1c", + "1aa2d9f31d0cf4fe2b92f6d150e6c76596737115", "reftest" ], "css/css-contain/contain-strict-001.html": [ @@ -567590,6 +567305,10 @@ "3ac9b655b0606783334ff91f9fba852df8efdbc1", "support" ], + "css/css-font-loading/empty-family-load.html": [ + "a2aa374af7ffda240a2227d2242978cfe52e08d0", + "testharness" + ], "css/css-font-loading/font-face-reject.html": [ "7b87a8121325f2e44d155df0c8d61f9ab48cb686", "testharness" @@ -578382,6 +578101,10 @@ "2e90b460194568752c09ff94fd834deb08606fe4", "reftest" ], + "css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html": [ + "452eb494b73e43a263f6f8b115338231bf5050a3", + "reftest" + ], "css/css-grid/inheritance.html": [ "eee86f70300d4280531235c813589dc3c399c58c", "testharness" @@ -578694,6 +578417,10 @@ "4a21823429eb25ecdc640ef7a80cd7f87bef0e6b", "support" ], + "css/css-grid/reference/grid-support-grid-auto-columns-rows-003-ref.html": [ + "5489a9bffe929345e4bda3a64040e565990f0b25", + "support" + ], "css/css-grid/reference/grid-text-green-margin-no-collapse-ref.html": [ "9dcba3f28fab37112a5bcb873228b66b1c7eb42b", "support" @@ -581846,6 +581573,18 @@ "95424204d5094bb1cbcd49e32f5e38c28d86d76f", "testharness" ], + "css/css-masking/mask-image/mask-image-data-url-image.html": [ + "aac59f3c4aabeb362aef0734ca9315d3a2331af4", + "reftest" + ], + "css/css-masking/mask-image/mask-image-ib-split-2.html": [ + "94c653a5c4714f8ee167fe35a76c53615fdfb5b5", + "reftest" + ], + "css/css-masking/mask-image/mask-image-ib-split.html": [ + "dab941b11183df95a16792c0c82923052ae501f0", + "reftest" + ], "css/css-masking/mask-image/mask-image-url-image-hash.html": [ "b1efc90818bec85d5022a9b908a14c2e0c35ff3b", "reftest" @@ -581862,6 +581601,22 @@ "f3f2eefaa92df83296379efd861b39e2ab65f78e", "reftest" ], + "css/css-masking/mask-image/reference/1x1-black-30-alpha.png": [ + "e334f44a038408f6b608f9aca4582a9b61e7beb4", + "support" + ], + "css/css-masking/mask-image/reference/mask-image-data-url-image-ref.html": [ + "c2e88b36571ecbeeb74cb9de3204ef5d7a261b2a", + "support" + ], + "css/css-masking/mask-image/reference/mask-image-ib-split-2-ref.html": [ + "ee28190878ab00f2d4e5625b8e19a9e5dfd98ba9", + "support" + ], + "css/css-masking/mask-image/reference/mask-image-ib-split-ref.html": [ + "e5c09f9449d59e3f8bca900db2705d5f4dfb8d78", + "support" + ], "css/css-masking/mask-image/reference/mask-image-ref.html": [ "4e121163f9d093b468e710882cb164bb965d9aa8", "support" @@ -585478,6 +585233,10 @@ "f012ff572691d9c42fb8f642a2fa47e524a4cacf", "testharness" ], + "css/css-position/position-absolute-crash-chrome-013.html": [ + "8f0daf4bfe4aef4916e3cfb037181cf8124fb938", + "testharness" + ], "css/css-position/position-absolute-dynamic-containing-block.html": [ "3968f685849663574ca213fcb90dc5fb3eaffaa3", "testharness" @@ -585498,6 +585257,10 @@ "1bde15551e7952cce210463d156217a51d3f30f3", "reftest" ], + "css/css-position/position-absolute-dynamic-relayout-002.html": [ + "4dc2dc0f803dd657c90e62529f7f37f6a1efc108", + "reftest" + ], "css/css-position/position-absolute-dynamic-static-position-floats-001.html": [ "a63df41089e7e75d33ee1f46d458e97c8ebf0fb0", "reftest" @@ -586182,6 +585945,30 @@ "683d2a77662149be28c581c5de6651e776653d65", "testharness" ], + "css/css-pseudo/first-letter-exclude-block-child-marker-ref.html": [ + "46bc0f000d6b02fc8545d331a14bd3d273098fc3", + "support" + ], + "css/css-pseudo/first-letter-exclude-block-child-marker.html": [ + "ecd0fd5b4622d9257658fc1e50ce43221da5bdfb", + "reftest" + ], + "css/css-pseudo/first-letter-exclude-inline-child-marker-ref.html": [ + "ee533756170fe2285a863d7a78a2c93822a390c6", + "support" + ], + "css/css-pseudo/first-letter-exclude-inline-child-marker.html": [ + "027f145679b4109b7aeda9a7665ebc2788b982ec", + "reftest" + ], + "css/css-pseudo/first-letter-exclude-inline-marker-ref.html": [ + "080cef2019c1fd038033603d0cb5f2b92f0c112f", + "support" + ], + "css/css-pseudo/first-letter-exclude-inline-marker.html": [ + "e95393f4496238a58d9bfce76629df1f68cd5293", + "reftest" + ], "css/css-pseudo/first-letter-list-item-dynamic-001-ref.html": [ "26d50ade6259326ee40b99d0cc2739ee77cf2e1f", "support" @@ -586210,6 +585997,14 @@ "9ad7b31c3621b3c5fc7a9e2ec0eb35895c9f9eae", "testharness" ], + "css/css-pseudo/first-letter-skip-marker-ref.html": [ + "82c5074fd26aa2dc35c9c8fa77dd3bf1099c5f88", + "support" + ], + "css/css-pseudo/first-letter-skip-marker.html": [ + "fb9fe258472e3a0e338f12246469e9499b4c2601", + "reftest" + ], "css/css-pseudo/first-letter-width-ref.html": [ "8ebb00b9dcc10f43df0efea20991af653f5cb691", "support" @@ -589138,6 +588933,14 @@ "e1ce331f1affaf15e312f2c720a38acaa11b60a5", "testharness" ], + "css/css-scroll-anchoring/nested-overflow-subtree-layout-ref.html": [ + "77b0de7f0ba16a35398c3a8d583c5bda32bf16af", + "support" + ], + "css/css-scroll-anchoring/nested-overflow-subtree-layout.html": [ + "e7696016bb31fde98a57cd8ef2b3f78551350d40", + "reftest" + ], "css/css-scroll-anchoring/opt-out-dynamic-scroller.html": [ "6ccbc4f2fd63dccb6bb6597b61b05827a0a3d54a", "testharness" @@ -589410,6 +589213,10 @@ "48bfb51c2d9e838d6ed78fbda636b3657607abc0", "testharness" ], + "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html": [ + "0426c029eec2592eb8bf5cb9ccce22006d9665cb", + "testharness" + ], "css/css-scroll-snap/snap-at-user-scroll-end-manual.html": [ "5ef2009df18e297669c6bec1e28c0330c2e16674", "manual" @@ -600503,7 +600310,7 @@ "support" ], "css/css-text/word-break/reference/word-break-break-all-inline-006-ref.html": [ - "0232ecb6f011358493059518be22e98697d45d76", + "268536c98e066b3b6cf9db6fbf67e944c86dbe44", "support" ], "css/css-text/word-break/reference/word-break-break-all-inline-007-ref.html": [ @@ -600771,7 +600578,7 @@ "reftest" ], "css/css-text/word-break/word-break-break-all-inline-006.html": [ - "af2f6fb90b23db36f7e0db531f89475dfa632cd3", + "9f9a618ebfed4e1b747199d36741f5e567b3ceb0", "reftest" ], "css/css-text/word-break/word-break-break-all-inline-007.html": [ @@ -605306,10 +605113,6 @@ "32c15f07a96a2a1cf99068e303f17296aa71e96e", "testharness" ], - "css/css-transitions/CSSPseudoElement-getAnimations.tentative.html": [ - "5229881e30fa903da8afc76b3664c7c4483add53", - "testharness" - ], "css/css-transitions/CSSTransition-canceling.tentative.html": [ "72b1dbff436fd12574beece0dd295ca3d779b73c", "testharness" @@ -605339,7 +605142,7 @@ "testharness" ], "css/css-transitions/Document-getAnimations.tentative.html": [ - "98b91e04ee9dde4602da0519f4923712cd6a3fac", + "cecddfaa401f90ff0226d39f1c7eae9be9b7b10c", "testharness" ], "css/css-transitions/Element-getAnimations.tentative.html": [ @@ -633554,6 +633357,10 @@ "a753462429d6cd460affa993e1a0db8cd3ec9fcd", "support" ], + "docs/__init__.py": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "support" + ], "docs/admin/index.md": [ "56a08eb7f07aefd2b9d2f9de0130ba584b960df8", "support" @@ -633623,7 +633430,7 @@ "support" ], "docs/conf.py": [ - "e425667ce888dabed639ff29a7e051d3aedcdd0f", + "89f30a02a336d29c20a530a1d277586aa409da46", "support" ], "docs/index.md": [ @@ -633710,6 +633517,10 @@ "6a104e2f1d42fda1111124022dd7d94aaea3a598", "support" ], + "docs/wpt_lint_rules.py": [ + "a5eed507b5e774c37d5081046173ca5629bb7c16", + "support" + ], "docs/writing-tests/ahem.md": [ "30a3fcde26cd48910549c23dc0cd0fbc05e7b3c7", "support" @@ -633751,7 +633562,7 @@ "support" ], "docs/writing-tests/lint-tool.md": [ - "f3a34ef1bc0b7c44b28493c246859b172b6f9506", + "f9caca35fef670aa2c22f3eec7cc9bfcbaee199a", "support" ], "docs/writing-tests/making-a-testing-plan.md": [ @@ -639583,7 +639394,7 @@ "support" ], "feature-policy/reporting/oversized-images-reporting.html": [ - "baa866d0a1c4777ab2ef6fcd894624b85ec72ae4", + "ef365e060c4e4d883051c5ad70f10ffe9139d5a2", "testharness" ], "feature-policy/reporting/oversized-images-reporting.html.headers": [ @@ -639603,7 +639414,7 @@ "support" ], "feature-policy/reporting/payment-reporting.https.html": [ - "6655210f6846b8e07a80e699cda69e4d1f11a3b2", + "80d0b0f09069e1027777afbf2ee17ff877f4dd55", "testharness" ], "feature-policy/reporting/payment-reporting.https.html.headers": [ @@ -639651,7 +639462,7 @@ "support" ], "feature-policy/reporting/sync-xhr-reporting.html": [ - "d92a68588eb847735cd9d505c186f1765a978288", + "9e526b904d4b825771b6b318677df0aded67637b", "testharness" ], "feature-policy/reporting/sync-xhr-reporting.html.headers": [ @@ -639778,6 +639589,10 @@ "2f33c449536d1b0253a9a1c0b52073bc500121f3", "support" ], + "feature-policy/resources/feature-policy-report-json.js": [ + "08a0ecaded8c5af917be1ae1287d455483205e45", + "support" + ], "feature-policy/resources/feature-policy-serial-worker.html": [ "9e6a7d02ba2b8eef1fcc12d8049af830688e6946", "support" @@ -640686,6 +640501,10 @@ "30492d472fee621a75d57e28ceca7bd7ea7d1fdd", "testharness" ], + "fetch/api/response/response-stream-disturbed-by-pipe.any.js": [ + "f0066c2333a1c1038a506fb910ae9c280583c96e", + "testharness" + ], "fetch/api/response/response-stream-with-broken-then.any.js": [ "b83365d73af5f430e589adbe4e1ea165419f047c", "testharness" @@ -641031,7 +640850,7 @@ "testharness" ], "fetch/http-cache/http-cache.js": [ - "3f4a2e7ed7fcc216fbc130de294eb045333ed9d5", + "ce49ad853631c3d2f88c5d4dc0fe807cbfa9e605", "support" ], "fetch/http-cache/invalidate.html": [ @@ -641047,13 +640866,21 @@ "testharness" ], "fetch/http-cache/resources/http-cache.py": [ - "e64fe6dfea0e5e9d0bd267f464aa828a0bd35342", + "351b2eb3c9eec006d8976dc5fad1f6db990cd733", "support" ], "fetch/http-cache/resources/securedimage.py": [ "445b0bdd2ec95a1ac9be08228503475b386cf961", "support" ], + "fetch/http-cache/resources/split-origin-popup.html": [ + "d94ac7f70bde7a6e7795b4412b12f2828e27bf48", + "support" + ], + "fetch/http-cache/split-cache.tentative.html": [ + "533dd6a936fef7c6036bba42fbd7d0d71222a192", + "testharness" + ], "fetch/http-cache/status.html": [ "d55d9e3cf24a496316677a8be9d1d54d21d9c3b8", "testharness" @@ -642851,7 +642678,7 @@ "testharness" ], "geolocation-API/non-secure-contexts.http.html": [ - "af1a5cd81ad9d4c429b3568dacdfe252b0112d66", + "d491086cf8aeb601f406f802bec30e2fbc5880eb", "testharness" ], "geolocation-API/support.js": [ @@ -645130,6 +644957,10 @@ "677b5fc83aa75abdc3c542a1663cf211607dbed3", "support" ], + "html/browsers/sandboxing/resources/post-done-to-opener.html": [ + "b47f0f274ef43148d3be418e2c0628a567f1c3c1", + "support" + ], "html/browsers/sandboxing/sandbox-allow-same-origin.html": [ "d6b3b099f28c351219b7bd18c2820db5a8628dae", "testharness" @@ -645142,6 +644973,10 @@ "d1bd00747f90a5b3c68c3503e6ffb03ed3c172a3", "testharness" ], + "html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html": [ + "0bb98c55382f2b6481eb5d1b8b2585a55bb128b3", + "testharness" + ], "html/browsers/sandboxing/sandbox-disallow-scripts.html": [ "1bc116ada46d39b0e7b17dc448cab0c33707057a", "testharness" @@ -651890,6 +651725,10 @@ "88be6e0b04a99b8477925107e1f534024f021b5e", "support" ], + "html/interaction/focus/the-autofocus-attribute/resources/imagemap.html": [ + "fa3d95c81b433e8964a574148fb4310efe267082", + "support" + ], "html/interaction/focus/the-autofocus-attribute/resources/moving-autofocus-to-parent.html": [ "fc6c298a46e376cf45089f168cf841cab59ffd5c", "support" @@ -651923,7 +651762,7 @@ "testharness" ], "html/interaction/focus/the-autofocus-attribute/supported-elements.html": [ - "761936715a3060ba4c6cca1068612c21c465ea02", + "29b3f3fb7b6c361ac6f6435f8ddf8ac4b0302b65", "testharness" ], "html/interaction/focus/the-autofocus-attribute/update-the-rendering.html": [ @@ -661251,35 +661090,35 @@ "testharness" ], "html/syntax/parsing/html5lib_innerHTML_adoption01.html": [ - "d3b07f49f78e19e140e54dfb5e43482306d5a149", + "0e91fa8b209ef4c3379ddb88c25d50a8a3f7718c", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html": [ - "102a46a30597a6134bc48062e645895b71c6b078", + "f5bc58d5656a1027174142c9ff17bd2a7ae15364", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_math.html": [ - "ceb810bea320f814001bd3902591b4b261aed5bd", + "efa9b8ae7c2b3bfccf06a9dbfd0c8c7604b8e740", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_tests4.html": [ - "9394df7f1f28947bc100ea6c5a3621f42bb7850f", + "b519246aa5d43a9dd769d1e668c3918c8a844d01", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_tests6.html": [ - "7b7669e2fa899e4aa1ef92808a96946a3ae52595", + "d0e623080fd5da06c6c8bf3be24d62f9ab26edde", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_tests7.html": [ - "cc775229791a73f717fb28379f064f009d614410", + "a73d767101d5de7ca55b8fb0742f2cb78721a66e", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_tests_innerHTML_1.html": [ - "29df3868a3fb47a73ab2b10035fc3f3180a62f4f", + "0658d768db206765253e74dc483ca433b2b3f81d", "testharness" ], "html/syntax/parsing/html5lib_innerHTML_webkit02.html": [ - "3308d220c726852f87cb06ca5a5798293be8c27e", + "b321c413c21d79bf4fbe9a6369d7c257938ab971", "testharness" ], "html/syntax/parsing/html5lib_isindex.html": [ @@ -661667,7 +661506,7 @@ "support" ], "html/tools/html5lib_test_fragment.xml": [ - "5be259b7490eec8bd3daf1c5d54eccdc40d9caf1", + "794d13f1c4add0b13486f1c867c4bdfce06a314b", "support" ], "html/tools/update_html5lib_tests.py": [ @@ -664310,9 +664149,21 @@ "7e6a59769d04717e70dbd2c736c874bda69e6583", "manual" ], - "input-events/input-events-typing-manual.html": [ - "5f81c33c7519e70b4c48892baec513b1755a9ee2", - "manual" + "input-events/input-events-typing.html": [ + "153193c3a9e7770dc15237d0c3d38e2935375e1c", + "testharness" + ], + "installedapp/idlharness.https.window.js": [ + "3988dba414aabb69ff72d28642d84d89544e63dc", + "testharness" + ], + "installedapp/installedapp.https.window.js": [ + "44fa30278a07d3c14483293e6fdb5ee23c5b21ce", + "testharness" + ], + "installedapp/resources/iframe.html": [ + "8c7fe21114be50b7f92ef014b8ff6660b1500a95", + "support" ], "interfaces/BackgroundSync.idl": [ "f84faf7bcd3bf1e836136bfbe34b6ba68f2bd25c", @@ -664343,7 +664194,7 @@ "support" ], "interfaces/META.yml": [ - "c1dd8dddf9eec3ab3fb58df01c549c251f3a3fdf", + "e624c12d5b7ee4335b5d355d6ea2e43993b7fdd5", "support" ], "interfaces/README.md": [ @@ -664375,7 +664226,7 @@ "support" ], "interfaces/appmanifest.idl": [ - "b3a303652f53d2ca225fbd8da4899d3eefe6aa15", + "35c491a5f7bf0e714bec09112755c174d96663d4", "support" ], "interfaces/audio-output.idl": [ @@ -664527,7 +664378,7 @@ "support" ], "interfaces/fetch.idl": [ - "9ff4aab4b148c152b4dea4bd47fa8ab1c82b6e4b", + "eacc69d8b9d1d8f7f9bdbf6f2a879d95d9d847bd", "support" ], "interfaces/filter-effects.idl": [ @@ -664779,7 +664630,7 @@ "support" ], "interfaces/speech-api.idl": [ - "0b28fd44ac5141599ee1564f4058aa05385e535b", + "0aad231d344623f91dd15c124919023297bd3867", "support" ], "interfaces/storage.idl": [ @@ -664847,7 +664698,7 @@ "support" ], "interfaces/webauthn.idl": [ - "81728b8aba4751c6791cad274be67e4c08f505a3", + "fd35c0dfd373a6b31ae3664ca20637b07c35ecec", "support" ], "interfaces/webdriver.idl": [ @@ -664879,7 +664730,7 @@ "support" ], "interfaces/webrtc.idl": [ - "43ee424b7c396fe32a087ce63b604d18322ee595", + "d828fae6b7c85440e57cb49d5669c33df12ac9cb", "support" ], "interfaces/webusb.idl": [ @@ -664899,7 +664750,7 @@ "support" ], "interfaces/webxr.idl": [ - "1dab90eff4901a6cf493ae08593e0832f1be548c", + "6d684391faf30fea2bbdcb6e9d7be6fbef05cba7", "support" ], "interfaces/worklets.idl": [ @@ -665607,7 +665458,7 @@ "testharness" ], "lint.whitelist": [ - "ac2d30427cfe37ad479c50d15db14dc6d2d63a07", + "23cf36a89a5ae1aa9718493f7e8e2bd68ceabb49", "support" ], "loading/lazyload/common.js": [ @@ -666251,7 +666102,7 @@ "testharness" ], "mathml/presentation-markup/scripts/cramped-001.html": [ - "d0e636c022ecae289a07533bd45aecb4ef89541f", + "846be4f8af157da8b1c6507185a620b47b51db49", "testharness" ], "mathml/presentation-markup/scripts/empty-underover.html": [ @@ -666371,7 +666222,7 @@ "testharness" ], "mathml/relations/css-styling/attribute-mapping-001.html": [ - "e7c6391ebad2aad8b8d31db056a209ad1d7ebba5", + "3424e8c1a8cbb775a91839db6b3951dfe869af95", "testharness" ], "mathml/relations/css-styling/attribute-mapping-002.html": [ @@ -667839,7 +667690,7 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-getConstraints-fast.html": [ - "3b1e2e0f2ca51e74222b36cb1d98a32a67e2a20b", + "06a09feecdd5bc72ce4a1643b98170e482549a70", "testharness" ], "mediacapture-image/MediaStreamTrack-getSettings-fast.html": [ @@ -668023,7 +667874,7 @@ "manual" ], "mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [ - "790f73ae7bd21bb118a104fc3c3e37d7895f5fe6", + "c3ea16654574aa8c269db25b63036a3c594c4986", "testharness" ], "mediacapture-streams/MediaStream-add-audio-track.https.html": [ @@ -670862,6 +670713,10 @@ "25d8ee995857fa67be2c41f048e882ec473f739d", "testharness" ], + "native-file-system/opaque-origin.https.window.js": [ + "2385c31a786a223e5cdc23856edd41a55af783b2", + "testharness" + ], "native-file-system/resources/message-target-dedicated-worker.js": [ "26ff23ef8ac65009c3c5efd4bdeda3970ae93910", "support" @@ -670898,6 +670753,10 @@ "5ad8c04724b7a2e7743b43a84efaa05b7e6b703d", "support" ], + "native-file-system/resources/opaque-origin-sandbox.html": [ + "937a6c385de2fc16d4afa1fecb762e38f4e2131b", + "support" + ], "native-file-system/resources/sandboxed-fs-test-helpers.js": [ "5f4f269d2242c2bac59136ff2cf99cbb18f639eb", "support" @@ -670951,7 +670810,7 @@ "support" ], "native-file-system/script-tests/FileSystemBaseHandle-postMessage-Error.js": [ - "914b47bcf4060131efd6f47777681add302607ab", + "c4ae8363cc5041ad940a4365f4c81c33c755eaf2", "support" ], "native-file-system/script-tests/FileSystemBaseHandle-postMessage-MessagePort.js": [ @@ -672195,11 +672054,11 @@ "testharness" ], "offscreen-canvas/conformance-requirements/2d.missingargs.html": [ - "9aa437c0cddcc55819e582307c84b64b44409fd8", + "67152573912203b64ceb94e072b869e425439862", "testharness" ], "offscreen-canvas/conformance-requirements/2d.missingargs.worker.js": [ - "8f8d00ee3a530884e6e05baedd498205e7d08ae5", + "755e881eb06e0380ffe0947c19ddf77d65bf098d", "testharness" ], "offscreen-canvas/conformance-requirements/2d.voidreturn.html": [ @@ -677611,9 +677470,13 @@ "support" ], "offscreen-canvas/tools/tests2d.yaml": [ - "6b1876d803f4e10e25d4f600372d77397d2d9bdb", + "0b346bb658e8316aa070a0bf30376c2c0cc54c93", "support" ], + "offscreen-canvas/transformations/2d.transformation.getTransform.html": [ + "b3b70ac208674c5bf249c6f58b4647b98be6d5e4", + "testharness" + ], "offscreen-canvas/transformations/2d.transformation.order.html": [ "8d70442f10814b389c649f49c3f1dc197d254923", "testharness" @@ -692659,7 +692522,7 @@ "testharness" ], "reporting/generateTestReport.html": [ - "e3c2735686a05eefc9bbcfb107f76ec7275b8948", + "f47ea45c9a4112f22af1f6736d271ad85f1f02e4", "testharness" ], "reporting/idlharness.any.js": [ @@ -693427,7 +693290,7 @@ "support" ], "resources/chromium/nfc-mock.js": [ - "f5666c18f5c57fdc8ee74c1572824f34e346d5ed", + "c0921b8ad82f77c72e4e879c8dbe655339646a93", "support" ], "resources/chromium/sensor.mojom.js": [ @@ -693851,7 +693714,7 @@ "support" ], "resources/testdriver-actions.js": [ - "292fe8889f5e21bd011ade89edf540cc615e35b2", + "d3dc00b4d0f002670258e56d59d33061f4fc5775", "support" ], "resources/testdriver-vendor.js": [ @@ -693931,7 +693794,7 @@ "testharness" ], "screen-orientation/event-before-promise.html": [ - "51b41e19357141d5bf9699d41f8968378dcc8956", + "304f56ea95b45aa3cdbaca445bd6d7e969b5f584", "testharness" ], "screen-orientation/idlharness.window.js": [ @@ -693943,7 +693806,7 @@ "testharness" ], "screen-orientation/lock-basic.html": [ - "c42aba783e4c0a593a3c71c14ea4ea792953a5dc", + "f236dc68e786636a59689ae7e151807f6d4fa134", "testharness" ], "screen-orientation/lock-sandboxed-iframe.html": [ @@ -693951,19 +693814,19 @@ "testharness" ], "screen-orientation/lock-unlock-check.html": [ - "8e79033e614ce3f0e9db26bc0235d517f1d5e28e", + "8fe74388d41a05cf50ce66e1b06589bd62d73910", "testharness" ], "screen-orientation/onchange-event-subframe.html": [ - "869a2294594aecc6e827501a3802d3cc42bde630", + "363c9cdf01091bb38587476e2cd9081ef24775ea", "testharness" ], "screen-orientation/onchange-event.html": [ - "635ff8207a2f421a198f6738095ef2e811ea68c1", + "91ae368dc04ba872ec8916b8a4391ca7ea4cf7cb", "testharness" ], "screen-orientation/orientation-reading.html": [ - "2a31203dc2cb5a9056cde148495aabcd5af71e02", + "4dcd5b0117e0f615d7404d2e07693e8594633e35", "testharness" ], "screen-orientation/page-visibility-manual.html": [ @@ -694035,11 +693898,11 @@ "testharness" ], "scroll-to-text-fragment/scroll-to-text-fragment-target.html": [ - "1ef9dbba519697c61529fba0e81dc64979257e70", + "1595d8bff9ebeefe0d22052cfe4dea59a8c5b750", "support" ], "scroll-to-text-fragment/scroll-to-text-fragment.html": [ - "b3a35f489aca424b24c57b40796a179c5ee5b4c7", + "c0018eda03fc40f99f61468fea01945b73979f2f", "testharness" ], "secure-contexts/META.yml": [ @@ -697423,7 +697286,7 @@ "testharness" ], "service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html": [ - "a58525f422203b087a2c88ef24cfadfa567fade2", + "70be6ef9b0a956707384030b1be17b702663976f", "testharness" ], "service-workers/service-worker/service-worker-csp-connect.https.html": [ @@ -697615,7 +697478,7 @@ "testharness" ], "shadow-dom/Element-interface-attachShadow-custom-element.html": [ - "123d9c14c55a3063a98eddd2f864ad04d8e8cc0b", + "8f2913450d43c0177684026182846d09838a5a43", "testharness" ], "shadow-dom/Element-interface-attachShadow.html": [ @@ -704511,7 +704374,7 @@ "support" ], "tools/lint/rules.py": [ - "c6f416e90ed7f257c3216024cc77426eba94a7a7", + "587028d6c5f927781c2e7238aad15c875bd39d1c", "support" ], "tools/lint/tests/__init__.py": [ @@ -704651,7 +704514,7 @@ "support" ], "tools/lint/tests/test_file_lints.py": [ - "edb819cbccb1a03c8b34356404ff1af2326e703a", + "8094d6d40a54602477a05246faf9ebc0734cb95e", "support" ], "tools/lint/tests/test_lint.py": [ @@ -704679,7 +704542,7 @@ "support" ], "tools/manifest/commands.json": [ - "074d248bf27a417933195ad4f8d232468bb1b6dd", + "769675e0ee42c6efc36fc1150778682f933a6465", "support" ], "tools/manifest/download.py": [ @@ -704687,7 +704550,7 @@ "support" ], "tools/manifest/item.py": [ - "a38709193a9bed82e6bff5849c07679abb6abafd", + "217f6cac262fba020c044d963d42ca55a2361e53", "support" ], "tools/manifest/log.py": [ @@ -704695,13 +704558,17 @@ "support" ], "tools/manifest/manifest.py": [ - "8aace771cba32acca56c9c37887d4a900cafbeb0", + "6fb591b9c314b0dd01d93ff12f3820bf26d4fe79", "support" ], "tools/manifest/sourcefile.py": [ "4788fc9bdb640447eb9997808c5b7110661a3960", "support" ], + "tools/manifest/testpaths.py": [ + "3c1f09d437304a0ce7bbcbc542dede672f01a17e", + "support" + ], "tools/manifest/tests/__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", "support" @@ -709495,7 +709362,7 @@ "support" ], "tools/wptrunner/tox.ini": [ - "f82dbc6b8a83556383cb26a2e7c5633f6b19da99", + "ad3502e02a9e81016940c8f39f56540f5ab1f26d", "support" ], "tools/wptrunner/wptrunner.default.ini": [ @@ -709515,7 +709382,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/base.py": [ - "8607f776b98c220e621b6274cc0bc28c8192414a", + "655344581973c15b657729feb736dd2073d79a30", "support" ], "tools/wptrunner/wptrunner/browsers/chrome.py": [ @@ -709543,7 +709410,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/epiphany.py": [ - "37e2f21421ae54e0c2a6b11cb0763d65b5f3ea72", + "8a0e5f578b2feb871ddd50ab08168c6b9d45e4b0", "support" ], "tools/wptrunner/wptrunner/browsers/firefox.py": [ @@ -709587,11 +709454,11 @@ "support" ], "tools/wptrunner/wptrunner/browsers/webkit.py": [ - "9cb373e14c98ca4d20457dbcdaad98f0ed6ea4e2", + "aa2862139450f682e6051c5f617ab8caf1960784", "support" ], "tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py": [ - "3c4947335bf32fd64c5c539dc08b851106c2f254", + "d735f3c0792a6356c6270143205c55b7c02eef47", "support" ], "tools/wptrunner/wptrunner/config.py": [ @@ -709715,11 +709582,11 @@ "support" ], "tools/wptrunner/wptrunner/formatters/chromium.py": [ - "707a8519a55950143137cd04038a67b9ad387f38", + "569239018a2b72cd0d7daee6b3ad27af38130d05", "support" ], "tools/wptrunner/wptrunner/formatters/tests/test_chromium.py": [ - "87691cf5a980b8d00b1b4e77eed80429009b46ee", + "9bb72d957f4d46d411d06810db08ec7f11a72cd9", "support" ], "tools/wptrunner/wptrunner/formatters/wptreport.py": [ @@ -709783,7 +709650,7 @@ "support" ], "tools/wptrunner/wptrunner/testrunner.py": [ - "56fbf08111994ca449949b38a6bed2ce9a7a2fb4", + "1b02fc622bea57e25140bfcf0322271e7d9643ed", "support" ], "tools/wptrunner/wptrunner/tests/__init__.py": [ @@ -709802,6 +709669,10 @@ "06a5641d50fbbaed4de9df511c567753ef1a326d", "support" ], + "tools/wptrunner/wptrunner/tests/browsers/test_webkitgtk.py": [ + "be00dc4a6b779f49eec278158f9bc35c28aaddd6", + "support" + ], "tools/wptrunner/wptrunner/tests/test_expectedtree.py": [ "2308be9590e9004f41a492682d187a7b4fc57231", "support" @@ -709831,7 +709702,7 @@ "support" ], "tools/wptrunner/wptrunner/tests/test_wpttest.py": [ - "fcaeb2deec35e3e5f3c01f340d3926e619ba7e1b", + "69f22ebcb68b62b6c54f7874f55146b46f94d838", "support" ], "tools/wptrunner/wptrunner/update/__init__.py": [ @@ -709935,11 +709806,11 @@ "support" ], "tools/wptrunner/wptrunner/wptrunner.py": [ - "7dfd86e99c905ec4271707a953db90dedac850cf", + "cac172a5940ec696e3a3b279170f9712aaf4668d", "support" ], "tools/wptrunner/wptrunner/wpttest.py": [ - "e5c28bc47316df6aec758459b6aa2c5053cf7a3e", + "19e839d21bcc8fc400bbf2ad9289f0359bfa2f1d", "support" ], "tools/wptserve/.gitignore": [ @@ -710398,8 +710269,8 @@ "34fbf5587daf725222dd191fc941fffe2630e106", "testharness" ], - "trusted-types/TrustedTypePolicy-name.tentative.html": [ - "4b7c30c855980ef2c4e5ab548a9b8def7991de77", + "trusted-types/TrustedTypePolicy-getPolicyNames.tentative.html": [ + "d1ae9e45c0669a5aadce7c09d1e3c56360583708", "testharness" ], "trusted-types/TrustedTypePolicyFactory-constants.tentative.html": [ @@ -710423,7 +710294,7 @@ "testharness" ], "trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html": [ - "e0aa53756d6a23fd99d0469104ca061bf7831398", + "0b1872abe5036d93618ae3849d52497511bb51b5", "testharness" ], "trusted-types/TrustedTypePolicyFactory-defaultPolicy.tentative.html": [ @@ -710454,10 +710325,6 @@ "5552e1313728c9688b7dfa32a9ee2bea38faa151", "testharness" ], - "trusted-types/block-eval.tentative.html": [ - "f7d7132505fa42fb4e244a9d6e512c153e56dfbf", - "testharness" - ], "trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html": [ "82e31200e6ba5150672e28a898d70d71486ada8a", "testharness" @@ -710498,6 +710365,10 @@ "a6aa061f7307330e027c3e8b26e6b931cee2bb7c", "testharness" ], + "trusted-types/csp-block-eval.tentative.html": [ + "93a97f15f8a972793e6f63108aeaa36dec431157", + "testharness" + ], "trusted-types/default-policy-report-only.tentative.html": [ "ba23d7a3678e12419f077cd870e5e56fa701ad63", "testharness" @@ -710514,6 +710385,26 @@ "1bc33add09b4b34ce2cba21f488f8ed53345a27a", "support" ], + "trusted-types/eval-csp-no-tt.tentative.html": [ + "e8ed57708ef158d36cff2c0d0883910c84bb75e8", + "testharness" + ], + "trusted-types/eval-csp-tt-default-policy.tentative.html": [ + "8f1926d9cf26ff2f9b1be1c65e6c6784e75c24b2", + "testharness" + ], + "trusted-types/eval-csp-tt-no-default-policy.tentative.html": [ + "dc976d64abd62332366f3bee60b8915245fc437d", + "testharness" + ], + "trusted-types/eval-no-csp-no-tt-default-policy.tentative.html": [ + "84c224eac28f6b26d4c0a15d7390185a576df716", + "testharness" + ], + "trusted-types/eval-no-csp-no-tt.tentative.html": [ + "45086a1d6abdec58df8f3d5de5421bab0a2162a5", + "testharness" + ], "trusted-types/eval-with-permissive-csp.tentative.html": [ "074fe79dc93fee6563bcb9ce2db3fa708bf4ad4f", "testharness" @@ -710558,8 +710449,24 @@ "7a43b1f7b35f51d249b815a64eb26fdd90d529d1", "testharness" ], + "trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html": [ + "46ca2edb6fb57b354b3a80f327dbfbe6760f21c6", + "testharness" + ], + "trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers": [ + "b6608515aa85a08dbb56531c46c097e179c76200", + "support" + ], + "trusted-types/trusted-types-duplicate-names-list.tentative.html": [ + "839f2ef7a3ac5e6d1bc78e3b892e8b898370de1e", + "testharness" + ], + "trusted-types/trusted-types-duplicate-names.tentative.html": [ + "e780a3d26ad6363e99316ead0d9663c9c4a613a7", + "testharness" + ], "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [ - "e15ecfaa86c5b48dcc3aa9903ab7b0ab89af8474", + "7902df1c30385ef3896829c7c6f7af646b5403ed", "testharness" ], "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [ @@ -710603,13 +710510,17 @@ "support" ], "trusted-types/trusted-types-reporting.tentative.https.html": [ - "70afb9745a88e6ffbce15a1d868d1f099c339e80", + "10a951fa12cb8d69249a96cb85ce34f6136e52c5", "testharness" ], "trusted-types/trusted-types-reporting.tentative.https.html.headers": [ "947a151c874ce9d372baa786c1b2964cbd9bc279", "support" ], + "trusted-types/tt-block-eval.tentative.html": [ + "e721b0e0d3699301e7580dcaecf4fc189e077636", + "testharness" + ], "uievents/META.yml": [ "2f1ec58efec10e0dd6374aac05cb926c8cffa3f1", "support" @@ -710630,6 +710541,10 @@ "24d64dc9ac344f9c856241221d7323b162434932", "testharness" ], + "uievents/click/click_events_on_input.html": [ + "731d13934f0d38505ae19334f0fa39a130021562", + "testharness" + ], "uievents/click/mouse-dblclick-event.html": [ "31a600b3cb715e408cd4aa8920fb54fd77064e57", "testharness" @@ -715387,7 +715302,7 @@ "support" ], "wasm/jsapi/assertions.js": [ - "27545c08a49eef487bdbfbce7de6101cee35a4fb", + "f00303f6aa5054d3264bdebe78d00ef5426b28d0", "support" ], "wasm/jsapi/bad-imports.js": [ @@ -715406,6 +715321,10 @@ "ae8f5ab688a40cea98a48b5ef0d9ecccf61ccf10", "testharness" ], + "wasm/jsapi/constructor/multi-value.any.js": [ + "7fbac5b24f1a50568170e257552bdc7a7783ae25", + "testharness" + ], "wasm/jsapi/constructor/validate.any.js": [ "57fa3359770f2c1be7d20186c5ecb8564f72a132", "testharness" @@ -715434,6 +715353,10 @@ "b90ada25286901d9fea6a5d1e28a8c8d1b796677", "testharness" ], + "wasm/jsapi/instance/constructor-caching.any.js": [ + "695b078a0f9478620715b0fef259f7207437f29d", + "testharness" + ], "wasm/jsapi/instance/constructor.any.js": [ "1ce4de904e16da04b68137fbcdf71a49c402204b", "testharness" @@ -715515,7 +715438,7 @@ "testharness" ], "wasm/jsapi/wasm-module-builder.js": [ - "a937eed4c6223ea8554e1f55ffbf8aca6c543404", + "09ff891f52e2b4e9dd80fbc88586129cd0a910b6", "support" ], "wasm/resources/load_wasm.js": [ @@ -715743,7 +715666,7 @@ "testharness" ], "web-animations/animation-model/animation-types/property-list.js": [ - "11bbf1ac661ad2aa9db86a070b4c32878c752fc9", + "2f91ebc372cadb044282707f6a1a3e3f1fec47f5", "support" ], "web-animations/animation-model/animation-types/property-types.js": [ @@ -715803,7 +715726,7 @@ "testharness" ], "web-animations/interfaces/Animatable/animate.html": [ - "fcf753baef30bbde608d2debfb43b3212b02fa21", + "2d09cdf4545e8073786215169fd3f26c28a7e119", "testharness" ], "web-animations/interfaces/Animatable/getAnimations.html": [ @@ -715815,7 +715738,7 @@ "testharness" ], "web-animations/interfaces/Animation/commitStyles.html": [ - "9005db9e9f2a8bcf3c9bf90bcea0ca882398442f", + "d3a95e053e3ebf07f1eea5974fd7aec020d52bd1", "testharness" ], "web-animations/interfaces/Animation/constructor.html": [ @@ -715971,7 +715894,7 @@ "support" ], "web-animations/testcommon.js": [ - "82b7053232146e3475f1db4c21d9b28e587d2f31", + "f89cbbaf9361b1e50b1473e93ae63aaa1abb34c7", "support" ], "web-animations/timing-model/animation-effects/active-time.html": [ @@ -716167,7 +716090,7 @@ "testharness" ], "web-locks/signal.tentative.https.any.js": [ - "e0b6e4eabd6138fd05784d0e52cc416d62f811d0", + "af1d86711ae14ec7b7310554e6d83bcbd01d6686", "testharness" ], "web-locks/steal.tentative.https.any.js": [ @@ -716223,11 +716146,11 @@ "manual" ], "web-nfc/NDEFWriter_push.https.html": [ - "57c619f73f84a90de32d33957e4757eca1c8e464", + "6ac940f64b0e23d35c8b1c74da1efddb930f82f0", "testharness" ], "web-nfc/README.md": [ - "0787f1f6712e669e1c858940a11da9b22c9c565b", + "a283c0611f846346cda1f5fd7352e37c760c6292", "support" ], "web-nfc/idlharness.https.window.js": [ @@ -716239,7 +716162,7 @@ "testharness" ], "web-nfc/resources/nfc-helpers.js": [ - "f90a050c4cad93e31937bca946f3c250bb64723c", + "e7be49e433773d2c0bb6604387e9c8fe1561f984", "support" ], "web-nfc/resources/support-iframe.html": [ @@ -718255,7 +718178,7 @@ "wdspec" ], "webdriver/tests/perform_actions/validity.py": [ - "656406718e725d353643f863ba820abb313538c3", + "9e4b85737b0fd8c240cf40e637754e5c0bfac1ad", "wdspec" ], "webdriver/tests/permissions/set.py": [ @@ -719478,6 +719401,10 @@ "81e3b736432d2c80d617ca2c05ef072e901d0283", "testharness" ], + "webrtc/RTCPeerConnection-addIceCandidate-timing.https.html": [ + "d89f353a89fe7d47017583832d2fd080629e7ffd", + "testharness" + ], "webrtc/RTCPeerConnection-addIceCandidate.html": [ "ed52ace59e60c1ea11285052ab2e1efa17a4d941", "testharness" @@ -719539,7 +719466,7 @@ "testharness" ], "webrtc/RTCPeerConnection-iceConnectionState.https.html": [ - "32f2eb9b4607121ad9aa0db99a05e3ab78750f7e", + "a2b2827b8494af7e33e5c81b765b92041064fe6f", "testharness" ], "webrtc/RTCPeerConnection-iceGatheringState.html": [ @@ -719635,7 +719562,7 @@ "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-rollback.html": [ - "255419258a35d88ae5970e9ec4edeb70f203da0f", + "73a0fe1e5a1349c397d65aa15a89bef909192c43", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html": [ @@ -722238,6 +722165,10 @@ "65f559f9014403fa60970808aa247288c5c739a0", "reftest" ], + "webvtt/rendering/cues-with-video/processing-model/background.png": [ + "6d16cc84c4dd3b8777bd83d97888eaf8d351f6b5", + "support" + ], "webvtt/rendering/cues-with-video/processing-model/basic-ref.html": [ "182bc69277be6e553873d115f3af1f4550090986", "support" @@ -722406,6 +722337,70 @@ "459ceabbf8d5c27bcc5b23e07d5ff0fcfdfd384d", "reftest" ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority-ref.html": [ + "b479029f70c39668090385ab794b8061c48450d2", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority.html": [ + "db6822e397b998b2a58097a9f51f43ee87ead6e4", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked-ref.html": [ + "1cb9d24c98eff20e8b371f37ec0c49207c7b605a", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked.html": [ + "1ffdf078d132e4f4f59e6cdafcb3e94dfedd4bb7", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format-ref.html": [ + "698ac7bc19f352d0fcb59d679d8c4e8401c376c3", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format.html": [ + "746816f272b39e5583406ddbcb1fba707c6594c8", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries-ref.html": [ + "f99172ef2c10cdc2276c935542c97b36048a02c4", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries.html": [ + "010314dd15da477d7850b4355df1f89209b8844b", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized-ref.html": [ + "5f1e0b96807962e3a7b6eb06c8e128f30c756c37", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized.html": [ + "703d7367aefcb9336f89d620cc98c7982bff63be", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks-ref.html": [ + "4b956da4482c1f8ba3cec6c14fa55e9e57980ce0", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks.html": [ + "3c8202761fd363012448e03d97a150472c13d510", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors-ref.html": [ + "754eed88b7ac420bb8cf07fa15cc0867d80e80fa", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors.html": [ + "55db5c7302a95fe373d4f7914098d6602e35e347", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_urls-ref.html": [ + "6eca04506e1168680a9787c2b7999fc28bf26c22", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/embedded_style_urls.html": [ + "2faff059d2d4f463ab02663a4b5d626b206a9a50", + "reftest" + ], "webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition-ref.html": [ "f150531bbda8dc17dc9e6c1bc7211c60d773af47", "support" @@ -724186,6 +724181,58 @@ "36373d2e203ed8ab937fffa77b04be33fa7dc829", "support" ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_cascade_priority.vtt": [ + "9471b32be1577532e89c66f0177af55a39d86971", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_imports_blocked.vtt": [ + "11a84af0297d8781ebd277192c5638cd1ff23019", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_invalid_format.vtt": [ + "51c231a0f89675b9317df3a3052622a3817d5dd1", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe-ref.html": [ + "f08a607e696a074fa23b06b8889d873cfefb61a6", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe.html": [ + "e27ca604742e42bf43076d7c40a05a012a76ba56", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries.vtt": [ + "1b875cdd533325680485adb654ae3d96a500a95b", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe-ref.html": [ + "ab7553e2fcecf4a78f2566fdf1969cf01a365644", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe.html": [ + "f4bfeeaca37c8335eeab70159e7c520de07b7982", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks1.vtt": [ + "a756c3c06d0a052935dd61ced3cf13dfac7b0593", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks2.vtt": [ + "c13757d570afd3dd3c8b00e2f164e4a41a458063", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_selectors.vtt": [ + "51377255aa287df20b803db078cb7ba190d5c9a8", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_urls.vtt": [ + "db526deb8695a2dec1170c56b24da58d21da8ea5", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/support/embedded_style_without_style.vtt": [ + "321a094fda7d10199b95902fbe067929cb760f8f", + "support" + ], "webvtt/rendering/cues-with-video/processing-model/support/foo.vtt": [ "b533895c604ed7b039b9cabf16616742fb9ba313", "support" @@ -724198,6 +724245,10 @@ "047d80eddf9909269cdc9fb5e6607358826f4a3f", "support" ], + "webvtt/rendering/cues-with-video/processing-model/support/imported_style.css": [ + "391dd7407f39eb178c56ca69c72115b4e3031c65", + "support" + ], "webvtt/rendering/cues-with-video/processing-model/support/italic_long.vtt": [ "75cbd1e6ef25e2a6b7755bb295f201b41951d337", "support" @@ -725190,6 +725241,10 @@ "c3f67beea90b061a828c4313db9710fa4126314f", "support" ], + "workers/constructors/SharedWorker/1.headers": [ + "e7ec0d6699d07e5b13d0cb6f24c3639258fccdaa", + "support" + ], "workers/constructors/SharedWorker/URLMismatchError.htm": [ "e1a11f4f8fe701365c89f9799794616975c39764", "testharness" @@ -725258,6 +725313,10 @@ "c516eed21546c27bc36533a5dcaa8bbb5af893ea", "testharness" ], + "workers/constructors/SharedWorker/null.headers": [ + "e7ec0d6699d07e5b13d0cb6f24c3639258fccdaa", + "support" + ], "workers/constructors/SharedWorker/number-arguments.html": [ "1a4cfb2eacbada8d02d7729b5b90b149a2f94fae", "testharness" @@ -725298,6 +725357,10 @@ "b9a3b3692c349d6b17191d961d3744080d08ceab", "testharness" ], + "workers/constructors/SharedWorker/undefined.headers": [ + "e7ec0d6699d07e5b13d0cb6f24c3639258fccdaa", + "support" + ], "workers/constructors/SharedWorker/unexpected-global-properties.html": [ "77a4f6304165eb929dbf72103a16ff5612ee168e", "testharness" @@ -725314,6 +725377,10 @@ "ea0b7c8f4ccbe91f65fdb857f76da80989ecbb29", "support" ], + "workers/constructors/Worker/1.headers": [ + "e7ec0d6699d07e5b13d0cb6f24c3639258fccdaa", + "support" + ], "workers/constructors/Worker/AbstractWorker.onerror.html": [ "b27f278bff8ea47c2c03e9f559eaf14f6e0e413f", "testharness" @@ -725354,6 +725421,10 @@ "6d079b514cf50a42deb039a2503a6f7ca1f2f70d", "support" ], + "workers/constructors/Worker/null.headers": [ + "e7ec0d6699d07e5b13d0cb6f24c3639258fccdaa", + "support" + ], "workers/constructors/Worker/same-origin.html": [ "6df5e92fda37a9e78d60426c01b60ede512d47de", "testharness" @@ -725374,6 +725445,10 @@ "bc7f482e94adee5403e3081434a09f702806c043", "support" ], + "workers/constructors/Worker/undefined.headers": [ + "e7ec0d6699d07e5b13d0cb6f24c3639258fccdaa", + "support" + ], "workers/constructors/Worker/unexpected-self-properties.worker.js": [ "69d29b2297847124206b392fea67949106a8a3fe", "testharness" diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini new file mode 100644 index 00000000000..86715ffc9c2 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini @@ -0,0 +1,2 @@ +[floats-in-table-caption-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini new file mode 100644 index 00000000000..5e3f2d998e3 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-001.html] + [hit-test-floats-001] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini index 94a3570d26b..9f60026f6d9 100644 --- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini +++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini @@ -5,9 +5,9 @@ [[data-expected-height\] 7] expected: FAIL - [[data-expected-height\] 3] + [[data-expected-height\] 1] expected: FAIL - [[data-expected-height\] 4] + [[data-expected-height\] 2] expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini b/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini deleted file mode 100644 index b1d1b14db72..00000000000 --- a/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[white-space-002.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini b/tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini deleted file mode 100644 index 182a9fc2d1e..00000000000 --- a/tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[white-space-003.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini b/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini deleted file mode 100644 index 3d28990c283..00000000000 --- a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[line-height-204.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini deleted file mode 100644 index fb5b6fd0006..00000000000 --- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[mix-blend-mode-paragraph.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/CSSPseudoElement-getAnimations.tentative.html.ini b/tests/wpt/metadata/css/css-animations/CSSPseudoElement-getAnimations.tentative.html.ini deleted file mode 100644 index 163cc8ab459..00000000000 --- a/tests/wpt/metadata/css/css-animations/CSSPseudoElement-getAnimations.tentative.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[CSSPseudoElement-getAnimations.tentative.html] - [getAnimations returns CSSAnimation objects] - expected: FAIL - - [getAnimations returns CSS transitions/animations, and script-generated animations in the expected order] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini b/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini deleted file mode 100644 index f20284a5396..00000000000 --- a/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[background-repeat-round-roundup.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini b/tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini new file mode 100644 index 00000000000..be32a87e09c --- /dev/null +++ b/tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini @@ -0,0 +1,2 @@ +[hyphens-out-of-flow-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini new file mode 100644 index 00000000000..693999d7f9d --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini @@ -0,0 +1,2 @@ +[line-break-normal-018.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini new file mode 100644 index 00000000000..bd79bd226f9 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini @@ -0,0 +1,2 @@ +[line-break-strict-018.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini new file mode 100644 index 00000000000..ded993140eb --- /dev/null +++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini @@ -0,0 +1,2 @@ +[text-transform-full-size-kana-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini new file mode 100644 index 00000000000..047905d059b --- /dev/null +++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini @@ -0,0 +1,2 @@ +[text-transform-full-size-kana-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini new file mode 100644 index 00000000000..7e9e3e15a50 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini @@ -0,0 +1,2 @@ +[text-transform-full-size-kana-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini new file mode 100644 index 00000000000..f90c86d0e3d --- /dev/null +++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini @@ -0,0 +1,2 @@ +[text-transform-full-size-kana-004.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini new file mode 100644 index 00000000000..240d1283c3a --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini @@ -0,0 +1,2 @@ +[trailing-ideographic-space-004.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini deleted file mode 100644 index 192f64b0826..00000000000 --- a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-break-all-007.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini deleted file mode 100644 index 3a512b4a124..00000000000 --- a/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-keep-all-006.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini index 1193e3dfa5c..03f2f3fe9d1 100644 --- a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini @@ -1,5 +1,5 @@ [perspective-interpolation.html] - expected: ERROR + expected: CRASH [ perspective interpolation] expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini b/tests/wpt/metadata/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini deleted file mode 100644 index bbb2e5f171e..00000000000 --- a/tests/wpt/metadata/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[css-transforms-3d-on-anonymous-block-001.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html.ini b/tests/wpt/metadata/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html.ini deleted file mode 100644 index eebe4d97541..00000000000 --- a/tests/wpt/metadata/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CSSPseudoElement-getAnimations.tentative.html] - [getAnimations sorts simultaneous transitions by name] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini index e35a452a186..70a00a101f6 100644 --- a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini +++ b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini @@ -1,2 +1,2 @@ [no-transition-from-ua-to-blocking-stylesheet.html] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini deleted file mode 100644 index e181af5397f..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementsFromPoint-invalid-cases.html] - [The root element is the last element returned for otherwise empty queries within the viewport] - expected: FAIL - diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini new file mode 100644 index 00000000000..4456e76a8d1 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini @@ -0,0 +1,2 @@ +[HTMLMediaElement.html] + expected: CRASH diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini new file mode 100644 index 00000000000..d3f46c22377 --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini @@ -0,0 +1,2 @@ +[contenttype_html.html] + expected: CRASH diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini new file mode 100644 index 00000000000..c3916f8555d --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini @@ -0,0 +1,2 @@ +[contenttype_txt.html] + expected: CRASH diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini new file mode 100644 index 00000000000..cde6fe16ee2 --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini @@ -0,0 +1,2 @@ +[contenttype_xml.html] + expected: CRASH diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini new file mode 100644 index 00000000000..29c6538e3d0 --- /dev/null +++ b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini @@ -0,0 +1,15 @@ +[response-stream-disturbed-by-pipe.any.html] + [using pipeThrough on Response body should disturb it synchronously] + expected: FAIL + + [using pipeTo on Response body should disturb it synchronously] + expected: FAIL + + +[response-stream-disturbed-by-pipe.any.worker.html] + [using pipeThrough on Response body should disturb it synchronously] + expected: FAIL + + [using pipeTo on Response body should disturb it synchronously] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 930ae5a45e3..21e72d6dadf 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,9 +312,21 @@ [<iframe>: separate response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: */* text/html] + [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;" text/plain] + 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 diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index d2df9b78483..b2ffc8abf78 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,3 +56,6 @@ [separate text/javascript x/x] expected: FAIL + [separate text/javascript error] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/http-cache/split-cache.tentative.html.ini b/tests/wpt/metadata/fetch/http-cache/split-cache.tentative.html.ini new file mode 100644 index 00000000000..b9ce73117d5 --- /dev/null +++ b/tests/wpt/metadata/fetch/http-cache/split-cache.tentative.html.ini @@ -0,0 +1,4 @@ +[split-cache.tentative.html] + [HTTP Cache - Partioning by top-level origin 1] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index a63e414f43a..e90ead91b2e 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,6 +11,9 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff] + [X-Content-Type-Options%3A%20%2Cnosniff] + expected: FAIL + + [Content-Type-Options%3A%20nosniff] expected: FAIL diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini index ba7869a4741..6bd06899fdd 100644 --- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini @@ -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 diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini index dc2e45516de..75d75b4cda2 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_5.html] +[traverse_the_history_2.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini new file mode 100644 index 00000000000..51f8272a6de --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_3.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini new file mode 100644 index 00000000000..385376c7321 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_4.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_access_details.sub.html.ini b/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_access_details.sub.html.ini index 8da94f60fc5..83d36d0a1ab 100644 --- a/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_access_details.sub.html.ini +++ b/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_access_details.sub.html.ini @@ -1,7 +1,7 @@ [document_domain_access_details.sub.html] expected: TIMEOUT [Access allowed if same-origin with no 'document.domain' modification. (Sanity check)] - expected: TIMEOUT + expected: FAIL [Access is revoked to Window object when we stop being same effective script origin due to document.domain.] expected: NOTRUN @@ -13,7 +13,7 @@ expected: NOTRUN [Access not allowed if different-origin with no 'document.domain' modification. (Sanity check)] - expected: NOTRUN + expected: FAIL [Access disallowed again if same-origin, both set document-domain to existing value, then one sets to parent.] expected: NOTRUN @@ -22,13 +22,13 @@ expected: NOTRUN [Access allowed if same-origin and both set document.domain to existing value.] - expected: NOTRUN + expected: TIMEOUT [Access is not revoked to Document object when we stop being same effective script origin due to document.domain.] expected: NOTRUN [Access disallowed if same-origin but only one sets document.domain.] - expected: NOTRUN + expected: FAIL [Access evolves correctly for cross-origin objects when we join up via document.domain and then diverge again.] expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini b/tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini new file mode 100644 index 00000000000..d3171da1938 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini @@ -0,0 +1,4 @@ +[sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html] + [Sandboxed => unsandboxed popup] + expected: FAIL + diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index 5f82bb787e5..6b68e9094e4 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -5,3 +5,12 @@ [Element with tabindex should support autofocus] expected: FAIL + [Host element with delegatesFocus including no focusable descendants should be skipped] + expected: FAIL + + [Area element should support autofocus] + expected: FAIL + + [Host element with delegatesFocus should support autofocus] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index e440b1e38c6..dc856a3d5a3 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -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 diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini new file mode 100644 index 00000000000..8cc42056d34 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini @@ -0,0 +1,10 @@ +[non-active-document.html] + [DOMParser] + expected: FAIL + + [createHTMLDocument] + expected: FAIL + + [<template>] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini index 61799e4c935..f6eecd82b49 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini @@ -1,5 +1,5 @@ [form-double-submit-2.html] expected: ERROR [preventDefault should allow onclick submit() to succeed] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini index df89cd21511..941d0dee0c8 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini @@ -1,5 +1,5 @@ [form-double-submit-3.html] expected: ERROR [<button> should have the same double-submit protection as <input type=submit>] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini index 536be0950f1..b024b42f41f 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini @@ -1,5 +1,4 @@ [form-submission-algorithm.html] - expected: TIMEOUT [If form's firing submission events is true, then return; 'submit' event] expected: FAIL @@ -18,6 +17,3 @@ [firing an event named submit; form.requestSubmit()] expected: FAIL - [Cannot navigate (after constructing the entry list)] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/semantics/forms/the-button-element/button-submit-children.html.ini b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-submit-children.html.ini new file mode 100644 index 00000000000..dbb4c200800 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-submit-children.html.ini @@ -0,0 +1,5 @@ +[button-submit-children.html] + expected: TIMEOUT + [This test will pass if a form navigation successfully occurs when clicking a child element of a <button type=submit> element with a onclick event handler which prevents the default form submission and manually calls form.submit() instead.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini new file mode 100644 index 00000000000..178680e5d14 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini @@ -0,0 +1,2 @@ +[script-onerror-insertion-point-2.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini deleted file mode 100644 index a9677391662..00000000000 --- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[DOMContentLoaded-defer.html] - [The end: DOMContentLoaded and defer scripts] - expected: FAIL - diff --git a/tests/wpt/metadata/offscreen-canvas/transformations/2d.transformation.getTransform.html.ini b/tests/wpt/metadata/offscreen-canvas/transformations/2d.transformation.getTransform.html.ini new file mode 100644 index 00000000000..d6535d8729e --- /dev/null +++ b/tests/wpt/metadata/offscreen-canvas/transformations/2d.transformation.getTransform.html.ini @@ -0,0 +1,4 @@ +[2d.transformation.getTransform.html] + [This test ensures that getTransform works correctly.] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini index 7725b118e9d..99a24216c88 100644 --- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini +++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini @@ -12,6 +12,3 @@ [Verifies the resolution of entry.startTime is at least 5 microseconds.] expected: TIMEOUT - [Verifies the resolution of performance.now() is at least 5 microseconds.] - expected: FAIL - diff --git a/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini b/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini index ec371a1bf72..8594361ff44 100644 --- a/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini +++ b/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini @@ -1,5 +1,5 @@ [nested-context-navigations-iframe.html] - expected: TIMEOUT + expected: CRASH [Test that iframe navigations are not observable by the parent, even after history navigations by the parent] expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini b/tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini deleted file mode 100644 index 0a73b6ac31c..00000000000 --- a/tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[resource_timing_buffer_full_eventually.html] - expected: CRASH diff --git a/tests/wpt/metadata/wasm/jsapi/constructor/multi-value.any.js.ini b/tests/wpt/metadata/wasm/jsapi/constructor/multi-value.any.js.ini new file mode 100644 index 00000000000..3f5719960b3 --- /dev/null +++ b/tests/wpt/metadata/wasm/jsapi/constructor/multi-value.any.js.ini @@ -0,0 +1,23 @@ +[multi-value.any.worker.html] + expected: TIMEOUT + [multiple return values from wasm to js] + expected: TIMEOUT + + [multiple return values inside wasm] + expected: NOTRUN + + [multiple return values from js to wasm] + expected: NOTRUN + + +[multi-value.any.html] + expected: TIMEOUT + [multiple return values from wasm to js] + expected: TIMEOUT + + [multiple return values inside wasm] + expected: NOTRUN + + [multiple return values from js to wasm] + expected: NOTRUN + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index a56bad443a2..66bd350083b 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,5 +1,4 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/metadata/webdriver/tests/perform_actions/validity.py.ini b/tests/wpt/metadata/webdriver/tests/perform_actions/validity.py.ini new file mode 100644 index 00000000000..688ed0747e4 --- /dev/null +++ b/tests/wpt/metadata/webdriver/tests/perform_actions/validity.py.ini @@ -0,0 +1,10 @@ +[validity.py] + [test_pause_positive_integer[key\]] + expected: FAIL + + [test_pause_positive_integer[none\]] + expected: FAIL + + [test_pause_positive_integer[pointer\]] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini new file mode 100644 index 00000000000..663a1f8fa30 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini @@ -0,0 +1,5 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini deleted file mode 100644 index fe8654e447c..00000000000 --- a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[WorkerGlobalScope-close.html] - [Test sending a message after closing.] - expected: FAIL - diff --git a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini index bf2a1d61bab..bfd4d6dd2d6 100644 --- a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini +++ b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini @@ -1,4 +1,5 @@ [import-in-moduleworker.html] + expected: ERROR [Base URL in module dedicated workers: import] expected: FAIL diff --git a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini index d6e39444229..49f489d2a1c 100644 --- a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini +++ b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini @@ -1,5 +1,6 @@ [003.html] type: testharness + expected: ERROR [shared] expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini new file mode 100644 index 00000000000..dbea4f293ad --- /dev/null +++ b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini @@ -0,0 +1,2 @@ +[transition_calc_implicit.html] + expected: TIMEOUT diff --git a/tests/wpt/mozilla/meta/mozilla/animation-removed-node.html.ini b/tests/wpt/mozilla/meta/mozilla/animation-removed-node.html.ini new file mode 100644 index 00000000000..1b6cf226267 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/animation-removed-node.html.ini @@ -0,0 +1,4 @@ +[animation-removed-node.html] + [Animations are no longer active when a node can't be animated.] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml index 6de1e280cec..6bc9253ec20 100644 --- a/tests/wpt/web-platform-tests/.taskcluster.yml +++ b/tests/wpt/web-platform-tests/.taskcluster.yml @@ -73,7 +73,16 @@ tasks: A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]} of ${chunk[2]}), run in the ${browser.channel} release of ${browser.name}. - owner: ${event.pusher.email} + owner: + # event.pusher.email is null when it comes from a GitHub action, so it has to be null-checked, + # and using the "in" operator causes an evaluation error when the right variable is null, if its + # done on the same "if" statement than the null-check (with &&), therefore we use a nested "if" here. + $if: 'event.pusher.email' + then: + $if: '"@" in event.pusher.email' + then: ${event.pusher.email} + else: web-platform-tests@users.noreply.github.com + else: web-platform-tests@users.noreply.github.com source: ${event.repository.url} payload: image: diff --git a/tests/wpt/web-platform-tests/2dcontext/transformations/2d.transformation.getTransform.html b/tests/wpt/web-platform-tests/2dcontext/transformations/2d.transformation.getTransform.html new file mode 100644 index 00000000000..664efd50e63 --- /dev/null +++ b/tests/wpt/web-platform-tests/2dcontext/transformations/2d.transformation.getTransform.html @@ -0,0 +1,39 @@ +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<script> +// Ensure that context2d.getTransform works +const epsilon = 1e-5; +const canvas = document.createElement('canvas'); +const ctx = canvas.getContext('2d'); + +test(function(t) { + assert_array_equals(ctx.getTransform().toFloat32Array(), + [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "Assert that an untransformed matrix is identity"); + + ctx.scale(2, 3); + transform = ctx.getTransform(); + assert_array_equals(ctx.getTransform().toFloat32Array(), + [2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "Assert that context2d scaling works"); + + ctx.rotate(Math.PI/2); + transform = ctx.getTransform(); + assert_array_approx_equals(ctx.getTransform().toFloat32Array(), + [0, 3, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], epsilon, + "Assert that context2d rotate works"); + + ctx.translate(1, -1); + transform = ctx.getTransform(); + assert_array_approx_equals(ctx.getTransform().toFloat32Array(), + [0, 3, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 1], epsilon, + "Assert context2d translate works."); + + ctx.resetTransform(); + assert_array_equals(ctx.getTransform().toFloat32Array(), + [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "Assert that a reset matrix is identity"); +}, 'This test ensures that getTransform works correctly.'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js b/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js index 989139e9904..2c7d25dd3f6 100644 --- a/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js @@ -9,6 +9,16 @@ idl_test( ['BackgroundSync'], ['service-workers', 'html', 'dom'], idlArray => { - // TODO: Objects + const isServiceWorker = location.pathname.includes('.serviceworker.'); + if (isServiceWorker) { + idl_array.add_objects({ + ServiceWorkerGlobalScope: ['self', 'onsync', 'onperiodicsync'], + ServiceWorkerRegistration: ['registration'], + SyncManager: ['registration.sync'], + PeriodicSyncManager: ['registration.periodicSync'], + SyncEevnt: ['new SyncEvent("tag", "lastChance")'], + PeriodicSyncEevnt: ['new PeriodicSyncEvent("tag")'], + }); } +} ); diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_delete_objectstore.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_delete_objectstore.htm new file mode 100644 index 00000000000..7cae5fd0e32 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_delete_objectstore.htm @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<title>IDBObjectStore.delete() and IDBCursor.continue() - object store - remove a record from the object store while iterating cursor</title> +<link rel="author" title="Mozilla" href="https://www.mozilla.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support.js"></script> + +<script> + /* The goal here is to test that any prefetching of cursor values performs + * correct invalidation of prefetched data. This test is motivated by the + * particularities of the Firefox implementation of preloading, and is + * specifically motivated by an edge case when prefetching prefetches at + * least 2 extra records and at most determines whether a mutation is + * potentially relevant based on current cursor position and direction and + * does not test for key equivalence. Future implementations may want to + * help refine this test if their cursors are more clever. + * + * Step-wise we: + * - Open a cursor, returning key 0. + * - When the cursor request completes, without yielding control: + * - Issue a delete() call that won't actually delete anything but looks + * relevant. This should purge prefetched records 1 and 2. + * - Issue a continue() which should result in record 1 being fetched + * again and record 2 being prefetched again. + * - Delete record 2. Unless there's a synchronously available source + * of truth, the data from continue() above will not be present and + * we'll expect the implementation to need to set a flag to invalidate + * the prefetched data when it arrives. + * - When the cursor request completes, validate we got record 1 and issue + * a continue. + * - When the request completes, we should have a null cursor result value + * because 2 was deleted. + */ + var db, + count = 0, + t = async_test(), + records = [ { pKey: "primaryKey_0" }, + { pKey: "primaryKey_1" }, + { pKey: "primaryKey_2" } ]; + + // This is a key that is not present in the database, but that is known to + // be relevant to a forward iteration of the above keys by comparing to be + // greater than all of them. + var plausibleFutureKey = "primaryKey_9"; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function(e) { + db = e.target.result; + + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + for (var i = 0; i < records.length; i++) + objStore.add(records[i]); + }; + + open_rq.onsuccess = t.step_func(CursorDeleteRecord); + + + function CursorDeleteRecord(e) { + var txn = db.transaction("test", "readwrite"), + object_store = txn.objectStore("test"), + cursor_rq = object_store.openCursor(); + + var iteration = 0; + + cursor_rq.onsuccess = t.step_func(function(e) { + var cursor = e.target.result; + + switch (iteration) { + case 0: + object_store.delete(plausibleFutureKey); + assert_true(cursor != null, "cursor valid"); + assert_equals(cursor.value.pKey, records[iteration].pKey); + cursor.continue(); + object_store.delete(records[2].pKey); + break; + case 1: + assert_true(cursor != null, "cursor valid"); + assert_equals(cursor.value.pKey, records[iteration].pKey); + cursor.continue(); + break; + case 2: + assert_equals(cursor, null, "cursor no longer valid"); + break; + }; + iteration++; + }); + + txn.oncomplete = t.step_func(VerifyRecordWasDeleted); + } + + + function VerifyRecordWasDeleted(e) { + var cursor_rq = db.transaction("test") + .objectStore("test") + .openCursor(); + + cursor_rq.onsuccess = t.step_func(function(e) { + var cursor = e.target.result; + + if (!cursor) { + assert_equals(count, 2, 'count'); + t.done(); + } + + assert_equals(cursor.value.pKey, records[count].pKey); + count++; + cursor.continue(); + }); + } + +</script> + +<div id="log"></div> diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md index e3ee8551ff4..8f755f2ac2f 100644 --- a/tests/wpt/web-platform-tests/README.md +++ b/tests/wpt/web-platform-tests/README.md @@ -48,128 +48,9 @@ i.e. use `git pull --prune` (or `git fetch -p && git merge`). Running the Tests ================= -The tests are designed to be run from your local computer. The test -environment requires [Python 2.7+](http://www.python.org/downloads) (but not Python 3.x). - -On Windows, be sure to add the Python directory (`c:\python2x`, by default) to -your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm), -and read the [Windows Notes](#windows-notes) section below. - -To get the tests running, you need to set up the test domains in your -[`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system). - -The necessary content can be generated with `./wpt make-hosts-file`; on -Windows, you will need to precede the prior command with `python` or -the path to the Python binary (`python wpt make-hosts-file`). - -For example, on most UNIX-like systems, you can setup the hosts file with: - -```bash -./wpt make-hosts-file | sudo tee -a /etc/hosts -``` - -And on Windows (this must be run in a PowerShell session with Administrator privileges): - -```powershell -python wpt make-hosts-file | Out-File $env:systemroot\System32\drivers\etc\hosts -Encoding ascii -Append -``` - -If you are behind a proxy, you also need to make sure the domains above are -excluded from your proxy lookups. - - -Running Tests Manually -====================== - -The test server can be started using -``` -./wpt serve -``` - -**On Windows**: You will need to precede the prior command with -`python` or the path to the python binary. -```bash -python wpt serve -``` - -This will start HTTP servers on two ports and a websockets server on -one port. By default the web servers start on ports 8000 and 8443 and -the other ports are randomly-chosen free ports. Tests must be loaded -from the *first* HTTP server in the output. To change the ports, -create a `config.json` file in the wpt root directory, and add -port definitions of your choice e.g.: - -``` -{ - "ports": { - "http": [1234, "auto"], - "https":[5678] - } -} -``` - -After your `hosts` file is configured, the servers will be locally accessible at: - -http://web-platform.test:8000/<br> -https://web-platform.test:8443/ * - -To use the web-based runner point your browser to: - -http://web-platform.test:8000/tools/runner/index.html <br> -https://web-platform.test:8443/tools/runner/index.html * - -\**See [Trusting Root CA](./tools/certs/README.md)* - -Running Tests Automatically ---------------------------- - -Tests can be run automatically in a browser using the `run` command of -the `wpt` script in the root of the checkout. This requires the hosts -file setup documented above, but you must *not* have the -test server already running when calling `wpt run`. The basic command -line syntax is: - -```bash -./wpt run product [tests] -``` - -**On Windows**: You will need to precede the prior command with -`python` or the path to the python binary. -```bash -python wpt run product [tests] -``` - -where `product` is currently `firefox` or `chrome` and `[tests]` is a -list of paths to tests. This will attempt to automatically locate a -browser instance and install required dependencies. The command is -very configurable; for example to specify a particular binary use -`wpt run --binary=path product`. The full range of options can be see -with `wpt run --help` and `wpt run --wptrunner-help`. - -Not all dependencies can be automatically installed; in particular the -`certutil` tool required to run https tests with Firefox must be -installed using a system package manager or similar. - -On Debian/Ubuntu certutil may be installed using: - -``` -sudo apt install libnss3-tools -``` - -And on macOS with homebrew using: - -``` -brew install nss -``` - -On other platforms, download the firefox archive and common.tests.tar.gz -archive for your platform from -[Mozilla CI](https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/). - -Then extract `certutil[.exe]` from the tests.tar.gz package and -`libnss3[.so|.dll|.dynlib]` and put the former on your path and the latter on -your library path. - +See the [documentation website](https://web-platform-tests.org/running-tests/) +and in particular the +[system setup for running tests locally](https://web-platform-tests.org/running-tests/from-local-system.html#system-setup). Command Line Tools ================== diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md b/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md index ae44a58fa8e..1bc74ec23d4 100644 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md @@ -6,12 +6,6 @@ portable annotations. The tools in this directory, along with the sample files supplied, can be used to exercise the vocabulary "implementation" against various RDF processing engines. -ruby-rdf -======== - -This directory contains a Ruby script that will evaluate the samples. See -the README.md file in that directory for more information. - vocab-tester.py =============== diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile deleted file mode 100644 index 3a384878013..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile +++ /dev/null @@ -1,12 +0,0 @@ -source "https://rubygems.org" -ruby '2.3.1' - -gem 'rdf', github: "ruby-rdf/rdf", branch: 'develop' -gem 'rdf-rdfxml', github: "ruby-rdf/rdf-rdfxml", branch: 'develop' -gem 'linkeddata' - -gem 'jsonlint' -gem 'rspec' -gem 'rake' - -gem 'byebug'
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile.lock b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile.lock deleted file mode 100644 index d6cba72f766..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile.lock +++ /dev/null @@ -1,192 +0,0 @@ -GIT - remote: git://github.com/ruby-rdf/rdf-rdfxml.git - revision: 8a12a78aa28f3a0f58926ae77844d3e7af52ea4c - branch: develop - specs: - rdf-rdfxml (2.0.0) - htmlentities (~> 4.3) - rdf (~> 2.0) - rdf-rdfa (~> 2.0) - rdf-xsd (~> 2.0) - -GIT - remote: git://github.com/ruby-rdf/rdf.git - revision: 4740b4a52bf358656d01d93adc5174d5fe07aec8 - branch: develop - specs: - rdf (2.1.0) - hamster (~> 3.0) - link_header (~> 0.0, >= 0.0.8) - -GEM - remote: https://rubygems.org/ - specs: - addressable (2.5.0) - public_suffix (~> 2.0, >= 2.0.2) - bcp47 (0.3.3) - i18n - builder (3.2.2) - byebug (9.0.6) - concurrent-ruby (1.0.2) - crack (0.4.3) - safe_yaml (~> 1.0.0) - diff-lcs (1.2.5) - ebnf (1.0.1) - rdf (~> 2.0) - sxp (~> 1.0) - equivalent-xml (0.6.0) - nokogiri (>= 1.8.2) - haml (4.0.7) - tilt - hamster (3.0.0) - concurrent-ruby (~> 1.0) - hashdiff (0.3.0) - htmlentities (4.3.4) - i18n (0.7.0) - json-ld (2.1.0) - multi_json (~> 1.11) - rdf (~> 2.1) - jsonlint (0.2.0) - oj (~> 2) - trollop (~> 2) - ld-patch (0.3.0) - ebnf (~> 1.0, >= 1.0.1) - rdf (~> 2.0) - rdf-xsd (~> 2.0) - sparql (~> 2.0) - sxp (~> 1.0) - link_header (0.0.8) - linkeddata (2.0.0) - equivalent-xml (~> 0.6) - json-ld (~> 2.0) - ld-patch (~> 0.3) - nokogiri (~> 1.8.2) - rdf (~> 2.0) - rdf-aggregate-repo (~> 2.0) - rdf-isomorphic (~> 2.0) - rdf-json (~> 2.0) - rdf-microdata (~> 2.0) - rdf-n3 (~> 2.0) - rdf-rdfa (~> 2.0) - rdf-rdfxml (~> 2.0) - rdf-reasoner (~> 0.4) - rdf-tabular (~> 0.4) - rdf-trig (~> 2.0) - rdf-trix (~> 2.0) - rdf-turtle (~> 2.0) - rdf-vocab (~> 2.0) - rdf-xsd (~> 2.0) - sparql (~> 2.0) - sparql-client (~> 2.0) - mini_portile2 (2.1.0) - multi_json (1.12.1) - net-http-persistent (2.9.4) - nokogiri (~> 1.8.2) - mini_portile2 (~> 2.1.0) - oj (2.17.5) - public_suffix (2.0.4) - rake (11.3.0) - rdf-aggregate-repo (2.0.0) - rdf (~> 2.0) - rdf-isomorphic (2.0.0) - rdf (~> 2.0) - rdf-json (2.0.0) - rdf (~> 2.0) - rdf-microdata (2.0.3) - htmlentities (~> 4.3) - nokogiri (~> 1.8.2) - rdf (~> 2.0) - rdf-xsd (~> 2.0) - rdf-n3 (2.0.0) - rdf (~> 2.0) - rdf-rdfa (2.0.1) - haml (~> 4.0) - htmlentities (~> 4.3) - rdf (~> 2.0) - rdf-aggregate-repo (~> 2.0) - rdf-xsd (~> 2.0) - rdf-reasoner (0.4.0) - rdf (~> 2.0) - rdf-spec (~> 2.0) - rdf-vocab (~> 2.0) - rdf-xsd (~> 2.0) - rdf-spec (2.0.0) - rdf (~> 2.0) - rdf-isomorphic (~> 2.0) - rspec (~> 3.0) - rspec-its (~> 1.0) - webmock (~> 1.17) - rdf-tabular (0.4.0) - addressable (~> 2.3) - bcp47 (~> 0.3, >= 0.3.3) - json-ld (~> 2.0) - rdf (~> 2.0) - rdf-vocab (~> 2.0) - rdf-xsd (~> 2.0) - rdf-trig (2.0.0) - ebnf (~> 1.0, >= 1.0.1) - rdf (~> 2.0) - rdf-turtle (~> 2.0) - rdf-trix (2.0.0) - rdf (~> 2.0) - rdf-turtle (2.0.0) - ebnf (~> 1.0, >= 1.0.1) - rdf (~> 2.0) - rdf-vocab (2.1.0) - rdf (~> 2.1) - rdf-xsd (2.0.0) - rdf (~> 2.0) - rspec (3.5.0) - rspec-core (~> 3.5.0) - rspec-expectations (~> 3.5.0) - rspec-mocks (~> 3.5.0) - rspec-core (3.5.4) - rspec-support (~> 3.5.0) - rspec-expectations (3.5.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.5.0) - rspec-its (1.2.0) - rspec-core (>= 3.0.0) - rspec-expectations (>= 3.0.0) - rspec-mocks (3.5.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.5.0) - rspec-support (3.5.0) - safe_yaml (1.0.4) - sparql (2.0.0) - builder (~> 3.2) - ebnf (~> 1.0, >= 1.0.1) - rdf (~> 2.0) - rdf-aggregate-repo (~> 2.0) - rdf-xsd (~> 2.0) - sparql-client (~> 2.0) - sxp (~> 1.0) - sparql-client (2.1.0) - net-http-persistent (~> 2.9) - rdf (~> 2.0) - sxp (1.0.0) - rdf (~> 2.0) - tilt (2.0.5) - trollop (2.1.2) - webmock (1.24.6) - addressable (>= 2.3.6) - crack (>= 0.3.2) - hashdiff - -PLATFORMS - ruby - -DEPENDENCIES - byebug - jsonlint - linkeddata - rake - rdf! - rdf-rdfxml! - rspec - -RUBY VERSION - ruby 2.3.1p112 - -BUNDLED WITH - 1.12.5 diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/README.md b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/README.md deleted file mode 100644 index 30f441e63bc..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## Annotation Vocabulary test in Ruby - -Setup by installing Ruby 2.3.1, and running `bundle install`. Then, to run tests: `bundle exec rake`. - -To get formatted output, run `bundle exec rspec annotation-vocab_spec.rb -f h -o RESULTS.md` diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/RESULTS.md b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/RESULTS.md deleted file mode 100644 index c7932048a95..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/RESULTS.md +++ /dev/null @@ -1,2709 +0,0 @@ -<!DOCTYPE html> -<html lang='en'> -<head> - <title>RSpec results</title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta http-equiv="Expires" content="-1" /> - <meta http-equiv="Pragma" content="no-cache" /> - <style type="text/css"> - body { - margin: 0; - padding: 0; - background: #fff; - font-size: 80%; - } - </style> - <script type="text/javascript"> - // <![CDATA[ - -function addClass(element_id, classname) { - document.getElementById(element_id).className += (" " + classname); -} - -function removeClass(element_id, classname) { - var elem = document.getElementById(element_id); - var classlist = elem.className.replace(classname,''); - elem.className = classlist; -} - -function moveProgressBar(percentDone) { - document.getElementById("rspec-header").style.width = percentDone +"%"; -} - -function makeRed(element_id) { - removeClass(element_id, 'passed'); - removeClass(element_id, 'not_implemented'); - addClass(element_id,'failed'); -} - -function makeYellow(element_id) { - var elem = document.getElementById(element_id); - if (elem.className.indexOf("failed") == -1) { // class doesn't includes failed - if (elem.className.indexOf("not_implemented") == -1) { // class doesn't include not_implemented - removeClass(element_id, 'passed'); - addClass(element_id,'not_implemented'); - } - } -} - -function apply_filters() { - var passed_filter = document.getElementById('passed_checkbox').checked; - var failed_filter = document.getElementById('failed_checkbox').checked; - var pending_filter = document.getElementById('pending_checkbox').checked; - - assign_display_style("example passed", passed_filter); - assign_display_style("example failed", failed_filter); - assign_display_style("example not_implemented", pending_filter); - - assign_display_style_for_group("example_group passed", passed_filter); - assign_display_style_for_group("example_group not_implemented", pending_filter, pending_filter || passed_filter); - assign_display_style_for_group("example_group failed", failed_filter, failed_filter || pending_filter || passed_filter); -} - -function get_display_style(display_flag) { - var style_mode = 'none'; - if (display_flag == true) { - style_mode = 'block'; - } - return style_mode; -} - -function assign_display_style(classname, display_flag) { - var style_mode = get_display_style(display_flag); - var elems = document.getElementsByClassName(classname) - for (var i=0; i<elems.length;i++) { - elems[i].style.display = style_mode; - } -} - -function assign_display_style_for_group(classname, display_flag, subgroup_flag) { - var display_style_mode = get_display_style(display_flag); - var subgroup_style_mode = get_display_style(subgroup_flag); - var elems = document.getElementsByClassName(classname) - for (var i=0; i<elems.length;i++) { - var style_mode = display_style_mode; - if ((display_flag != subgroup_flag) && (elems[i].getElementsByTagName('dt')[0].innerHTML.indexOf(", ") != -1)) { - elems[i].style.display = subgroup_style_mode; - } else { - elems[i].style.display = display_style_mode; - } - } -} - - // ]]> - </script> - <style type="text/css"> -#rspec-header { - background: #65C400; color: #fff; height: 4em; -} - -.rspec-report h1 { - margin: 0px 10px 0px 10px; - padding: 10px; - font-family: "Lucida Grande", Helvetica, sans-serif; - font-size: 1.8em; - position: absolute; -} - -#label { - float:left; -} - -#display-filters { - float:left; - padding: 28px 0 0 40%; - font-family: "Lucida Grande", Helvetica, sans-serif; -} - -#summary { - float:right; - padding: 5px 10px; - font-family: "Lucida Grande", Helvetica, sans-serif; - text-align: right; -} - -#summary p { - margin: 0 0 0 2px; -} - -#summary #totals { - font-size: 1.2em; -} - -.example_group { - margin: 0 10px 5px; - background: #fff; -} - -dl { - margin: 0; padding: 0 0 5px; - font: normal 11px "Lucida Grande", Helvetica, sans-serif; -} - -dt { - padding: 3px; - background: #65C400; - color: #fff; - font-weight: bold; -} - -dd { - margin: 5px 0 5px 5px; - padding: 3px 3px 3px 18px; -} - -dd .duration { - padding-left: 5px; - text-align: right; - right: 0px; - float:right; -} - -dd.example.passed { - border-left: 5px solid #65C400; - border-bottom: 1px solid #65C400; - background: #DBFFB4; color: #3D7700; -} - -dd.example.not_implemented { - border-left: 5px solid #FAF834; - border-bottom: 1px solid #FAF834; - background: #FCFB98; color: #131313; -} - -dd.example.pending_fixed { - border-left: 5px solid #0000C2; - border-bottom: 1px solid #0000C2; - color: #0000C2; background: #D3FBFF; -} - -dd.example.failed { - border-left: 5px solid #C20000; - border-bottom: 1px solid #C20000; - color: #C20000; background: #FFFBD3; -} - - -dt.not_implemented { - color: #000000; background: #FAF834; -} - -dt.pending_fixed { - color: #FFFFFF; background: #C40D0D; -} - -dt.failed { - color: #FFFFFF; background: #C40D0D; -} - - -#rspec-header.not_implemented { - color: #000000; background: #FAF834; -} - -#rspec-header.pending_fixed { - color: #FFFFFF; background: #C40D0D; -} - -#rspec-header.failed { - color: #FFFFFF; background: #C40D0D; -} - - -.backtrace { - color: #000; - font-size: 12px; -} - -a { - color: #BE5C00; -} - -/* Ruby code, style similar to vibrant ink */ -.ruby { - font-size: 12px; - font-family: monospace; - color: white; - background-color: black; - padding: 0.1em 0 0.2em 0; -} - -.ruby .keyword { color: #FF6600; } -.ruby .constant { color: #339999; } -.ruby .attribute { color: white; } -.ruby .global { color: white; } -.ruby .module { color: white; } -.ruby .class { color: white; } -.ruby .string { color: #66FF00; } -.ruby .ident { color: white; } -.ruby .method { color: #FFCC00; } -.ruby .number { color: white; } -.ruby .char { color: white; } -.ruby .comment { color: #9933CC; } -.ruby .symbol { color: white; } -.ruby .regex { color: #44B4CC; } -.ruby .punct { color: white; } -.ruby .escape { color: white; } -.ruby .interp { color: white; } -.ruby .expr { color: white; } - -.ruby .offending { background-color: gray; } -.ruby .linenum { - width: 75px; - padding: 0.1em 1em 0.2em 0; - color: #000000; - background-color: #FFFBD3; -} - - </style> -</head> -<body> -<div class="rspec-report"> - -<div id="rspec-header"> - <div id="label"> - <h1>RSpec Code Examples</h1> - </div> - - <div id="display-filters"> - <input id="passed_checkbox" name="passed_checkbox" type="checkbox" checked="checked" onchange="apply_filters()" value="1" /> <label for="passed_checkbox">Passed</label> - <input id="failed_checkbox" name="failed_checkbox" type="checkbox" checked="checked" onchange="apply_filters()" value="2" /> <label for="failed_checkbox">Failed</label> - <input id="pending_checkbox" name="pending_checkbox" type="checkbox" checked="checked" onchange="apply_filters()" value="3" /> <label for="pending_checkbox">Pending</label> - </div> - - <div id="summary"> - <p id="totals"> </p> - <p id="duration"> </p> - </div> -</div> - - -<div class="results"> -<div id="div_group_1" class="example_group passed"> - <dl style="margin-left: 0px;"> - <dt id="example_group_1" class="passed">Web Annotation Vocab</dt> - <script type="text/javascript">moveProgressBar('0.3');</script> - <dd class="example passed"><span class="passed_spec_name">The JSON-LD context document can be parsed without errors by JSON-LD validators</span><span class='duration'>0.30309s</span></dd> - </dl> -</div> -<div id="div_group_2" class="example_group passed"> - <dl style="margin-left: 15px;"> - <dt id="example_group_2" class="passed">The JSON-LD context document can be used to convert JSON-LD serialized Annotations into RDF triples</dt> - <script type="text/javascript">moveProgressBar('0.6');</script> - <dd class="example passed"><span class="passed_spec_name">anno1.json</span><span class='duration'>0.56069s</span></dd> - <script type="text/javascript">moveProgressBar('0.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno1.json</span><span class='duration'>0.42548s</span></dd> - <script type="text/javascript">moveProgressBar('1.3');</script> - <dd class="example passed"><span class="passed_spec_name">anno10.json</span><span class='duration'>0.39919s</span></dd> - <script type="text/javascript">moveProgressBar('1.6');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno10.json</span><span class='duration'>0.48348s</span></dd> - <script type="text/javascript">moveProgressBar('1.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno11.json</span><span class='duration'>0.41240s</span></dd> - <script type="text/javascript">moveProgressBar('2.3');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno11.json</span><span class='duration'>0.53605s</span></dd> - <script type="text/javascript">moveProgressBar('2.6');</script> - <dd class="example passed"><span class="passed_spec_name">anno12.json</span><span class='duration'>0.40508s</span></dd> - <script type="text/javascript">moveProgressBar('2.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno12.json</span><span class='duration'>0.49430s</span></dd> - <script type="text/javascript">moveProgressBar('3.3');</script> - <dd class="example passed"><span class="passed_spec_name">anno13.json</span><span class='duration'>0.40935s</span></dd> - <script type="text/javascript">moveProgressBar('3.6');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno13.json</span><span class='duration'>0.48180s</span></dd> - <script type="text/javascript">moveProgressBar('3.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno14.json</span><span class='duration'>0.41280s</span></dd> - <script type="text/javascript">moveProgressBar('4.3');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno14.json</span><span class='duration'>0.47087s</span></dd> - <script type="text/javascript">moveProgressBar('4.6');</script> - <dd class="example passed"><span class="passed_spec_name">anno15.json</span><span class='duration'>0.40029s</span></dd> - <script type="text/javascript">moveProgressBar('4.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno15.json</span><span class='duration'>0.51705s</span></dd> - <script type="text/javascript">moveProgressBar('5.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno16.json</span><span class='duration'>0.39632s</span></dd> - <script type="text/javascript">moveProgressBar('5.6');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno16.json</span><span class='duration'>0.46520s</span></dd> - <script type="text/javascript">moveProgressBar('5.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno17.json</span><span class='duration'>0.39630s</span></dd> - <script type="text/javascript">moveProgressBar('6.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno17.json</span><span class='duration'>0.43479s</span></dd> - <script type="text/javascript">moveProgressBar('6.6');</script> - <dd class="example passed"><span class="passed_spec_name">anno18.json</span><span class='duration'>0.40481s</span></dd> - <script type="text/javascript">moveProgressBar('6.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno18.json</span><span class='duration'>0.46648s</span></dd> - <script type="text/javascript">moveProgressBar('7.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno19.json</span><span class='duration'>0.39744s</span></dd> - <script type="text/javascript">moveProgressBar('7.6');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno19.json</span><span class='duration'>0.43402s</span></dd> - <script type="text/javascript">moveProgressBar('7.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno2.json</span><span class='duration'>0.40744s</span></dd> - <script type="text/javascript">moveProgressBar('8.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno2.json</span><span class='duration'>0.44628s</span></dd> - <script type="text/javascript">moveProgressBar('8.6');</script> - <dd class="example passed"><span class="passed_spec_name">anno20.json</span><span class='duration'>0.41189s</span></dd> - <script type="text/javascript">moveProgressBar('8.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno20.json</span><span class='duration'>0.43640s</span></dd> - <script type="text/javascript">moveProgressBar('9.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno21.json</span><span class='duration'>0.39995s</span></dd> - <script type="text/javascript">moveProgressBar('9.6');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno21.json</span><span class='duration'>0.46148s</span></dd> - <script type="text/javascript">moveProgressBar('9.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno22.json</span><span class='duration'>0.40286s</span></dd> - <script type="text/javascript">moveProgressBar('10.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno22.json</span><span class='duration'>0.44256s</span></dd> - <script type="text/javascript">moveProgressBar('10.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno23.json</span><span class='duration'>0.41701s</span></dd> - <script type="text/javascript">moveProgressBar('10.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno23.json</span><span class='duration'>0.47746s</span></dd> - <script type="text/javascript">moveProgressBar('11.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno24.json</span><span class='duration'>0.41397s</span></dd> - <script type="text/javascript">moveProgressBar('11.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno24.json</span><span class='duration'>0.44446s</span></dd> - <script type="text/javascript">moveProgressBar('11.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno25.json</span><span class='duration'>0.39897s</span></dd> - <script type="text/javascript">moveProgressBar('12.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno25.json</span><span class='duration'>0.44369s</span></dd> - <script type="text/javascript">moveProgressBar('12.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno26.json</span><span class='duration'>0.40163s</span></dd> - <script type="text/javascript">moveProgressBar('12.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno26.json</span><span class='duration'>0.44521s</span></dd> - <script type="text/javascript">moveProgressBar('13.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno27.json</span><span class='duration'>0.40337s</span></dd> - <script type="text/javascript">moveProgressBar('13.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno27.json</span><span class='duration'>0.46172s</span></dd> - <script type="text/javascript">moveProgressBar('13.9');</script> - <dd class="example passed"><span class="passed_spec_name">anno28.json</span><span class='duration'>0.40573s</span></dd> - <script type="text/javascript">moveProgressBar('14.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno28.json</span><span class='duration'>0.44746s</span></dd> - <script type="text/javascript">moveProgressBar('14.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno29.json</span><span class='duration'>0.40069s</span></dd> - <script type="text/javascript">moveProgressBar('14.9');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno29.json</span><span class='duration'>0.44089s</span></dd> - <script type="text/javascript">moveProgressBar('15.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno3.json</span><span class='duration'>0.39832s</span></dd> - <script type="text/javascript">moveProgressBar('15.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno3.json</span><span class='duration'>0.44832s</span></dd> - <script type="text/javascript">moveProgressBar('15.8');</script> - <dd class="example passed"><span class="passed_spec_name">anno30.json</span><span class='duration'>0.40439s</span></dd> - <script type="text/javascript">moveProgressBar('16.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno30.json</span><span class='duration'>0.47012s</span></dd> - <script type="text/javascript">moveProgressBar('16.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno31.json</span><span class='duration'>0.40352s</span></dd> - <script type="text/javascript">moveProgressBar('16.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno31.json</span><span class='duration'>0.48881s</span></dd> - <script type="text/javascript">moveProgressBar('17.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno32.json</span><span class='duration'>0.40521s</span></dd> - <script type="text/javascript">moveProgressBar('17.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno32.json</span><span class='duration'>0.47565s</span></dd> - <script type="text/javascript">moveProgressBar('17.8');</script> - <dd class="example passed"><span class="passed_spec_name">anno33.json</span><span class='duration'>0.39758s</span></dd> - <script type="text/javascript">moveProgressBar('18.2');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno33.json</span><span class='duration'>0.42825s</span></dd> - <script type="text/javascript">moveProgressBar('18.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno34.json</span><span class='duration'>0.40342s</span></dd> - <script type="text/javascript">moveProgressBar('18.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno34.json</span><span class='duration'>0.46386s</span></dd> - <script type="text/javascript">moveProgressBar('19.2');</script> - <dd class="example passed"><span class="passed_spec_name">anno35.json</span><span class='duration'>0.39727s</span></dd> - <script type="text/javascript">moveProgressBar('19.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno35.json</span><span class='duration'>0.44666s</span></dd> - <script type="text/javascript">moveProgressBar('19.8');</script> - <dd class="example passed"><span class="passed_spec_name">anno36.json</span><span class='duration'>0.40368s</span></dd> - <script type="text/javascript">moveProgressBar('20.1');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno36.json</span><span class='duration'>0.50162s</span></dd> - <script type="text/javascript">moveProgressBar('20.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno37.json</span><span class='duration'>0.40413s</span></dd> - <script type="text/javascript">moveProgressBar('20.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno37.json</span><span class='duration'>0.44505s</span></dd> - <script type="text/javascript">moveProgressBar('21.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno38.json</span><span class='duration'>0.40365s</span></dd> - <script type="text/javascript">moveProgressBar('21.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno38.json</span><span class='duration'>0.44806s</span></dd> - <script type="text/javascript">moveProgressBar('21.8');</script> - <dd class="example passed"><span class="passed_spec_name">anno39.json</span><span class='duration'>0.39650s</span></dd> - <script type="text/javascript">moveProgressBar('22.1');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno39.json</span><span class='duration'>0.45765s</span></dd> - <script type="text/javascript">moveProgressBar('22.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno4.json</span><span class='duration'>0.40110s</span></dd> - <script type="text/javascript">moveProgressBar('22.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno4.json</span><span class='duration'>0.43765s</span></dd> - <script type="text/javascript">moveProgressBar('23.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno40.json</span><span class='duration'>0.39694s</span></dd> - <script type="text/javascript">moveProgressBar('23.5');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno40.json</span><span class='duration'>0.42795s</span></dd> - <script type="text/javascript">moveProgressBar('23.8');</script> - <dd class="example passed"><span class="passed_spec_name">anno41-example44.json</span><span class='duration'>0.42444s</span></dd> - <script type="text/javascript">moveProgressBar('24.1');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno41-example44.json</span><span class='duration'>0.82530s</span></dd> - <script type="text/javascript">moveProgressBar('24.5');</script> - <dd class="example passed"><span class="passed_spec_name">anno5.json</span><span class='duration'>0.40352s</span></dd> - <script type="text/javascript">moveProgressBar('24.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno5.json</span><span class='duration'>0.43810s</span></dd> - <script type="text/javascript">moveProgressBar('25.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno6.json</span><span class='duration'>0.40099s</span></dd> - <script type="text/javascript">moveProgressBar('25.4');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno6.json</span><span class='duration'>0.41499s</span></dd> - <script type="text/javascript">moveProgressBar('25.8');</script> - <dd class="example passed"><span class="passed_spec_name">anno7.json</span><span class='duration'>0.39763s</span></dd> - <script type="text/javascript">moveProgressBar('26.1');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno7.json</span><span class='duration'>0.45328s</span></dd> - <script type="text/javascript">moveProgressBar('26.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno8.json</span><span class='duration'>0.40016s</span></dd> - <script type="text/javascript">moveProgressBar('26.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno8.json</span><span class='duration'>0.42356s</span></dd> - <script type="text/javascript">moveProgressBar('27.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno9.json</span><span class='duration'>0.40070s</span></dd> - <script type="text/javascript">moveProgressBar('27.4');</script> - <dd class="example passed"><span class="passed_spec_name">lint anno9.json</span><span class='duration'>0.43877s</span></dd> - <script type="text/javascript">moveProgressBar('27.8');</script> - <dd class="example passed"><span class="passed_spec_name">collection1.json</span><span class='duration'>0.75470s</span></dd> - <script type="text/javascript">moveProgressBar('28.1');</script> - <dd class="example passed"><span class="passed_spec_name">lint collection1.json</span><span class='duration'>3.15045s</span></dd> - <script type="text/javascript">moveProgressBar('28.4');</script> - <dd class="example passed"><span class="passed_spec_name">example41.json</span><span class='duration'>0.39996s</span></dd> - <script type="text/javascript">moveProgressBar('28.8');</script> - <dd class="example passed"><span class="passed_spec_name">lint example41.json</span><span class='duration'>0.43951s</span></dd> - <script type="text/javascript">moveProgressBar('29.1');</script> - <dd class="example passed"><span class="passed_spec_name">example42.json</span><span class='duration'>0.40507s</span></dd> - <script type="text/javascript">moveProgressBar('29.4');</script> - <dd class="example passed"><span class="passed_spec_name">lint example42.json</span><span class='duration'>0.47543s</span></dd> - <script type="text/javascript">moveProgressBar('29.8');</script> - <dd class="example passed"><span class="passed_spec_name">example43.json</span><span class='duration'>0.40551s</span></dd> - <script type="text/javascript">moveProgressBar('30.1');</script> - <dd class="example passed"><span class="passed_spec_name">lint example43.json</span><span class='duration'>0.50432s</span></dd> - </dl> -</div> -<div id="div_group_3" class="example_group passed"> - <dl style="margin-left: 15px;"> - <dt id="example_group_3" class="passed">detects errors in incorrect examples</dt> - <script type="text/javascript">moveProgressBar('30.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno1.json</span><span class='duration'>0.00142s</span></dd> - <script type="text/javascript">moveProgressBar('30.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno10.json</span><span class='duration'>0.00076s</span></dd> - <script type="text/javascript">moveProgressBar('31.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno11.json</span><span class='duration'>0.19856s</span></dd> - <script type="text/javascript">moveProgressBar('31.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno12.json</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('31.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno13.json</span><span class='duration'>0.00075s</span></dd> - <script type="text/javascript">moveProgressBar('32.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno14.json</span><span class='duration'>0.00077s</span></dd> - <script type="text/javascript">moveProgressBar('32.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno15.json</span><span class='duration'>0.00116s</span></dd> - <script type="text/javascript">moveProgressBar('32.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno16.json</span><span class='duration'>0.00074s</span></dd> - <script type="text/javascript">moveProgressBar('33.1');</script> - <dd class="example passed"><span class="passed_spec_name">anno17.json</span><span class='duration'>0.00075s</span></dd> - <script type="text/javascript">moveProgressBar('33.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno18.json</span><span class='duration'>0.00077s</span></dd> - <script type="text/javascript">moveProgressBar('33.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno19.json</span><span class='duration'>0.00071s</span></dd> - <script type="text/javascript">makeYellow('rspec-header');</script> - <script type="text/javascript">makeYellow('div_group_3');</script> - <script type="text/javascript">makeYellow('example_group_3');</script> - <script type="text/javascript">moveProgressBar('34.1');</script> - <dd class="example not_implemented"><span class="not_implemented_spec_name">anno2.json (PENDING: Empty Documents are invalid)</span></dd> - <script type="text/javascript">moveProgressBar('34.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno20.json</span><span class='duration'>0.00112s</span></dd> - <script type="text/javascript">moveProgressBar('34.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno21.json</span><span class='duration'>0.00119s</span></dd> - <script type="text/javascript">moveProgressBar('35.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno22.json</span><span class='duration'>0.00106s</span></dd> - <script type="text/javascript">moveProgressBar('35.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno23.json</span><span class='duration'>0.00075s</span></dd> - <script type="text/javascript">moveProgressBar('35.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno24.json</span><span class='duration'>0.00076s</span></dd> - <script type="text/javascript">moveProgressBar('36.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno25.json</span><span class='duration'>0.00066s</span></dd> - <script type="text/javascript">moveProgressBar('36.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno26.json</span><span class='duration'>0.19880s</span></dd> - <script type="text/javascript">moveProgressBar('36.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno27.json</span><span class='duration'>0.20570s</span></dd> - <script type="text/javascript">moveProgressBar('37.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno28.json</span><span class='duration'>0.19991s</span></dd> - <script type="text/javascript">moveProgressBar('37.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno29.json</span><span class='duration'>0.19764s</span></dd> - <script type="text/javascript">makeYellow('rspec-header');</script> - <script type="text/javascript">makeYellow('div_group_3');</script> - <script type="text/javascript">makeYellow('example_group_3');</script> - <script type="text/javascript">moveProgressBar('37.7');</script> - <dd class="example not_implemented"><span class="not_implemented_spec_name">anno3.json (PENDING: Empty Documents are invalid)</span></dd> - <script type="text/javascript">moveProgressBar('38.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno30.json</span><span class='duration'>0.19944s</span></dd> - <script type="text/javascript">moveProgressBar('38.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno31.json</span><span class='duration'>0.20036s</span></dd> - <script type="text/javascript">moveProgressBar('38.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno32.json</span><span class='duration'>0.19468s</span></dd> - <script type="text/javascript">moveProgressBar('39.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno33.json</span><span class='duration'>0.20145s</span></dd> - <script type="text/javascript">moveProgressBar('39.4');</script> - <dd class="example passed"><span class="passed_spec_name">anno34.json</span><span class='duration'>0.19786s</span></dd> - <script type="text/javascript">moveProgressBar('39.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno35.json</span><span class='duration'>0.19442s</span></dd> - <script type="text/javascript">moveProgressBar('40.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno36.json</span><span class='duration'>0.20170s</span></dd> - <script type="text/javascript">moveProgressBar('40.3');</script> - <dd class="example passed"><span class="passed_spec_name">anno37.json</span><span class='duration'>0.00073s</span></dd> - <script type="text/javascript">moveProgressBar('40.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno38.json</span><span class='duration'>0.19785s</span></dd> - <script type="text/javascript">moveProgressBar('41.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno39.json</span><span class='duration'>0.20030s</span></dd> - <script type="text/javascript">moveProgressBar('41.3');</script> - <dd class="example passed"><span class="passed_spec_name">anno4.json</span><span class='duration'>0.00247s</span></dd> - <script type="text/javascript">moveProgressBar('41.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno5.json</span><span class='duration'>0.11420s</span></dd> - <script type="text/javascript">moveProgressBar('42.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno6.json</span><span class='duration'>0.19756s</span></dd> - <script type="text/javascript">moveProgressBar('42.3');</script> - <dd class="example passed"><span class="passed_spec_name">anno7.json</span><span class='duration'>0.19826s</span></dd> - <script type="text/javascript">moveProgressBar('42.7');</script> - <dd class="example passed"><span class="passed_spec_name">anno8.json</span><span class='duration'>0.19797s</span></dd> - <script type="text/javascript">moveProgressBar('43.0');</script> - <dd class="example passed"><span class="passed_spec_name">anno9.json</span><span class='duration'>0.19496s</span></dd> - </dl> -</div> -<div id="div_group_4" class="example_group passed"> - <dl style="margin-left: 15px;"> - <dt id="example_group_4" class="passed">The ontology documents can be parsed without errors by RDF Schema validators</dt> - <script type="text/javascript">moveProgressBar('43.3');</script> - <dd class="example passed"><span class="passed_spec_name">JSON-LD version is isomorphic to jsonld</span><span class='duration'>0.33990s</span></dd> - <script type="text/javascript">moveProgressBar('43.7');</script> - <dd class="example passed"><span class="passed_spec_name">JSON-LD version is isomorphic to rdfa</span><span class='duration'>0.24762s</span></dd> - <script type="text/javascript">moveProgressBar('44.0');</script> - <dd class="example passed"><span class="passed_spec_name">JSON-LD version is isomorphic to rdfxml</span><span class='duration'>0.38899s</span></dd> - <script type="text/javascript">moveProgressBar('44.3');</script> - <dd class="example passed"><span class="passed_spec_name">JSON-LD version is isomorphic to ttl</span><span class='duration'>0.47473s</span></dd> - </dl> -</div> -<div id="div_group_5" class="example_group passed"> - <dl style="margin-left: 15px;"> - <dt id="example_group_5" class="passed">The ontology documents are isomorphic to each other</dt> - <script type="text/javascript">makeRed('rspec-header');</script> - <script type="text/javascript">makeRed('div_group_5');</script> - <script type="text/javascript">makeRed('example_group_5');</script> - <script type="text/javascript">moveProgressBar('44.7');</script> - <dd class="example failed"> - <span class="failed_spec_name">rdfa</span> - <span class="duration">0.44157s</span> - <div class="failure" id="failure_1"> - <div class="message"><pre>Failure/Error: expect(fg).to be_equivalent_graph(vocab_graph) - - Graph entry counts differ: - expected: 385 - actual: 24 - - #<struct RDF::Spec::Matchers::Info id=nil, logger=nil, action=nil, result=nil> - Expected: - @prefix dc: <http://purl.org/dc/terms/> . - @prefix dc11: <http://purl.org/dc/elements/1.1/> . - @prefix oa: <http://www.w3.org/ns/oa#> . - @prefix owl: <http://www.w3.org/2002/07/owl#> . - @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . - @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - @prefix skos: <http://www.w3.org/2004/02/skos/core#> . - @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . - - oa:Annotation a rdfs:Class; - rdfs:label "Annotation"; - rdfs:comment "The class for Web Annotations."; - rdfs:isDefinedBy oa: . - - oa:Choice a rdfs:Class; - rdfs:label "Choice"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:Composite a rdfs:Class; - rdfs:label "Composite"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use all of the resources in the as:items list, but that order is not important. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:CssSelector a rdfs:Class; - rdfs:label "CssSelector"; - rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:CssStyle a rdfs:Class; - rdfs:label "CssStyle"; - rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Style . - - oa:DataPositionSelector a rdfs:Class; - rdfs:label "DataPositionSelector"; - rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:Direction a rdfs:Class; - rdfs:label "Direction"; - rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances."; - rdfs:isDefinedBy oa: . - - oa:FragmentSelector a rdfs:Class; - rdfs:label "FragmentSelector"; - rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:HttpRequestState a rdfs:Class; - rdfs:label "HttpRequestState"; - rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:State . - - oa:Independents a rdfs:Class; - rdfs:label "Independents"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that each of the resources in the as:items list are independently associated with all of the other bodies or targets. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:List a rdfs:Class; - rdfs:label "List"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use each of the resources in the as:items list, and that their order is important. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:Motivation a rdfs:Class; - rdfs:label "Motivation"; - rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf skos:Concept . - - oa:RangeSelector a rdfs:Class; - rdfs:label "RangeSelector"; - rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:ResourceSelection a rdfs:Class; - rdfs:label "ResourceSelection"; - rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features."; - rdfs:isDefinedBy oa: . - - oa:Selector a rdfs:Class; - rdfs:label "Selector"; - rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses."; - rdfs:isDefinedBy oa: . - - oa:SpecificResource a rdfs:Class; - rdfs:label "SpecificResource"; - rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:ResourceSelection . - - oa:State a rdfs:Class; - rdfs:label "State"; - rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource."; - rdfs:isDefinedBy oa: . - - oa:Style a rdfs:Class; - rdfs:label "Style"; - rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations."; - rdfs:isDefinedBy oa: . - - oa:SvgSelector a rdfs:Class; - rdfs:label "SvgSelector"; - rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextPositionSelector a rdfs:Class; - rdfs:label "TextPositionSelector"; - rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextQuoteSelector a rdfs:Class; - rdfs:label "TextQuoteSelector"; - rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextualBody a rdfs:Class; - rdfs:label "TextualBody"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:TimeState a rdfs:Class; - rdfs:label "TimeState"; - rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:State . - - oa:XPathSelector a rdfs:Class; - rdfs:label "XPathSelector"; - rdfs:comment "An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:as:Application a rdfs:Class; - rdfs:label "as:Application"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:OrderedCollection a rdfs:Class; - rdfs:label "as:OrderedCollection"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:OrderedCollectionPage a rdfs:Class; - rdfs:label "as:OrderedCollectionPage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Dataset a rdfs:Class; - rdfs:label "dctypes:Dataset"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:MovingImage a rdfs:Class; - rdfs:label "dctypes:MovingImage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Sound a rdfs:Class; - rdfs:label "dctypes:Sound"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:StillImage a rdfs:Class; - rdfs:label "dctypes:StillImage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Text a rdfs:Class; - rdfs:label "dctypes:Text"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:foaf:Organization a rdfs:Class; - rdfs:label "foaf:Organization"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:foaf:Person a rdfs:Class; - rdfs:label "foaf:Person"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:schema:Audience a rdfs:Class; - rdfs:label "schema:Audience"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:PreferContainedDescriptions a rdfs:Resource; - rdfs:label "PreferContainedDescriptions"; - rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs."; - rdfs:isDefinedBy oa: . - - oa:PreferContainedIRIs a rdfs:Resource; - rdfs:label "PreferContainedIRIs"; - rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions."; - rdfs:isDefinedBy oa: . - - oa:annotationService a rdf:Property; - rdfs:label "annotationService"; - rdfs:comment "The object of the relationship is the end point of a service that conforms to the annotation-protocol, and it may be associated with any resource. The expectation of asserting the relationship is that the object is the preferred service for maintaining annotations about the subject resource, according to the publisher of the relationship. This relationship is intended to be used both within Linked Data descriptions and as the rel type of a Link, via HTTP Link Headers rfc5988 for binary resources and in HTML <link> elements. For more information about these, please see the Annotation Protocol specification annotation-protocol."; - rdfs:isDefinedBy oa: . - - oa:as:first a rdf:Property; - rdfs:label "as:first"; - rdfs:comment ""; - rdfs:domain oa:as:OrderedCollection; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:generator a rdf:Property; - rdfs:label "as:generator"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:items a rdf:Property; - rdfs:label "as:items"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range rdf:List . - - oa:as:last a rdf:Property; - rdfs:label "as:last"; - rdfs:comment ""; - rdfs:domain oa:as:OrderedCollection; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:next a rdf:Property; - rdfs:label "as:next"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:partOf a rdf:Property; - rdfs:label "as:partOf"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollection> . - - oa:as:prev a rdf:Property; - rdfs:label "as:prev"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:startIndex a rdf:Property; - rdfs:label "as:startIndex"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:as:totalItems a rdf:Property; - rdfs:label "as:totalItems"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollection>; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:assessing a oa:Motivation; - rdfs:label "assessing"; - rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource."; - rdfs:isDefinedBy oa: . - - oa:bodyValue a rdf:Property; - rdfs:label "bodyValue"; - rdfs:comment "The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString ."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:bookmarking a oa:Motivation; - rdfs:label "bookmarking"; - rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof."; - rdfs:isDefinedBy oa: . - - oa:cachedSource a rdf:Property; - rdfs:label "cachedSource"; - rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation."; - rdfs:domain oa:TimeState; - rdfs:isDefinedBy oa: . - - oa:canonical a rdf:Property; - rdfs:label "canonical"; - rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation."; - rdfs:isDefinedBy oa: . - - oa:classifying a oa:Motivation; - rdfs:label "classifying"; - rdfs:comment "The motivation for when the user intends to that classify the Target as something."; - rdfs:isDefinedBy oa: . - - oa:commenting a oa:Motivation; - rdfs:label "commenting"; - rdfs:comment "The motivation for when the user intends to comment about the Target."; - rdfs:isDefinedBy oa: . - - oa:describing a oa:Motivation; - rdfs:label "describing"; - rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them."; - rdfs:isDefinedBy oa: . - - oa:editing a oa:Motivation; - rdfs:label "editing"; - rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource."; - rdfs:isDefinedBy oa: . - - oa:end a rdf:Property; - rdfs:label "end"; - rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:exact a rdf:Property; - rdfs:label "exact"; - rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:hasBody a rdf:Property; - rdfs:label "hasBody"; - rdfs:comment "The object of the relationship is a resource that is a body of the Annotation."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa: . - - oa:hasEndSelector a rdf:Property; - rdfs:label "hasEndSelector"; - rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range."; - rdfs:domain oa:RangeSelector; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasPurpose a rdf:Property; - rdfs:label "hasPurpose"; - rdfs:comment "The purpose served by the resource in the Annotation."; - rdfs:isDefinedBy oa:; - rdfs:range oa:Motivation . - - oa:hasScope a rdf:Property; - rdfs:label "hasScope"; - rdfs:comment "The scope or context in which the resource is used within the Annotation."; - rdfs:domain oa:SpecificResource; - rdfs:isDefinedBy oa: . - - oa:hasSelector a rdf:Property; - rdfs:label "hasSelector"; - rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasSource a rdf:Property; - rdfs:label "hasSource"; - rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa: . - - oa:hasStartSelector a rdf:Property; - rdfs:label "hasStartSelector"; - rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range."; - rdfs:domain oa:RangeSelector; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasState a rdf:Property; - rdfs:label "hasState"; - rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa:; - rdfs:range oa:State . - - oa:hasTarget a rdf:Property; - rdfs:label "hasTarget"; - rdfs:comment "The relationship between an Annotation and its Target."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa: . - - oa:highlighting a oa:Motivation; - rdfs:label "highlighting"; - rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it."; - rdfs:isDefinedBy oa: . - - oa:identifying a oa:Motivation; - rdfs:label "identifying"; - rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target."; - rdfs:isDefinedBy oa: . - - oa:linking a oa:Motivation; - rdfs:label "linking"; - rdfs:comment "The motivation for when the user intends to link to a resource related to the Target."; - rdfs:isDefinedBy oa: . - - oa:ltrDirection a oa:Direction; - rdfs:label "ltrDirection"; - rdfs:comment "The direction of text that is read from left to right."; - rdfs:isDefinedBy oa: . - - oa:moderating a oa:Motivation; - rdfs:label "moderating"; - rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target."; - rdfs:isDefinedBy oa: . - - oa:motivatedBy a rdf:Property; - rdfs:label "motivatedBy"; - rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa:; - rdfs:range oa:Motivation . - - oa:prefix a rdf:Property; - rdfs:label "prefix"; - rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:processingLanguage a rdf:Property; - rdfs:label "processingLanguage"; - rdfs:comment "The object of the property is the language that should be used for textual processing algorithms when dealing with the content of the resource, including hyphenation, line breaking, which font to use for rendering and so forth. The value must follow the recommendations of BCP47."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:questioning a oa:Motivation; - rdfs:label "questioning"; - rdfs:comment "The motivation for when the user intends to ask a question about the Target."; - rdfs:isDefinedBy oa: . - - oa:refinedBy a rdf:Property; - rdfs:label "refinedBy"; - rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource."; - rdfs:isDefinedBy oa: . - - oa:replying a oa:Motivation; - rdfs:label "replying"; - rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource."; - rdfs:isDefinedBy oa: . - - oa:rtlDirection a oa:Direction; - rdfs:label "rtlDirection"; - rdfs:comment "The direction of text that is read from right to left."; - rdfs:isDefinedBy oa: . - - oa:tagging a oa:Motivation; - rdfs:label "tagging"; - rdfs:comment "The motivation for when the user intends to associate a tag with the Target."; - rdfs:isDefinedBy oa: . - - oa: a owl:Ontology; - dc11:title "Web Annotation Ontology"; - dc:creator "Robert Sanderson", - "Paolo Ciccarese", - "Benjamin Young"; - dc:modified "2016-09-30T16:51:18Z"; - rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area."; - rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/>; - owl:previousVersionURI <http://www.openannotation.org/spec/core/20130208/oa.owl>; - owl:versionInfo "2016-09-30T16:51:18Z" . - Results: - @prefix dc: <http://purl.org/dc/terms/> . - @prefix foaf: <http://xmlns.com/foaf/0.1/> . - @prefix oa: <http://www.w3.org/ns/oa#> . - @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . - @prefix xhv: <http://www.w3.org/1999/xhtml/vocab#> . - @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . - - <http://www.w3.org/ns/oa> dc:title "Web Annotation Ontology"; - <bibo:editor> []; - xhv:license <http://www.w3.org/Consortium/Legal/copyright-documents> . - - oa:respecDocument xhv:role xhv:document . - - oa:respecHeader xhv:role xhv:contentinfo . - - ([ - a foaf:Person; - foaf:homepage <http://www.paolociccarese.info>; - foaf:mbox <mailto:paolo.ciccarese@gmail.com>; - foaf:name "Paolo Ciccarese" - ] [ - a foaf:Person; - foaf:homepage <http://bigbluehat.com/>; - foaf:mbox <mailto:byoung@bigbluehat.com>; - foaf:name "Benjamin Young" - ]) . - - _:g70220666792480 a foaf:Person; - foaf:homepage <http://www.stanford.edu/~azaroth/>; - foaf:mbox <mailto:azaroth42@gmail.com>; - foaf:name "Robert Sanderson"; - foaf:workplaceHomepage <http://www.stanford.edu/> . - - Debug:</pre></div> - <div class="backtrace"><pre>./annotation-vocab_spec.rb:83:in `block (4 levels) in <top (required)>'</pre></div> - <pre class="ruby"><code><span class="linenum">81</span> # XXX Normalize whitespace in literals to ease comparision -<span class="linenum">82</span> fg.each_object {|o| o.squish! if o.literal?} -<span class="offending"><span class="linenum">83</span> expect(fg).to be_equivalent_graph(vocab_graph)</span> -<span class="linenum">84</span> end -<span class="linenum">85</span> end -<span class="linenum">86</span><span class="comment"># Install the coderay gem to get syntax highlighting</span></code></pre> - </div> - </dd> - <script type="text/javascript">moveProgressBar('45.0');</script> - <dd class="example failed"> - <span class="failed_spec_name">rdfxml</span> - <span class="duration">0.80222s</span> - <div class="failure" id="failure_2"> - <div class="message"><pre>Failure/Error: expect(fg).to be_equivalent_graph(vocab_graph) - - Graphs differ - - #<struct RDF::Spec::Matchers::Info id=nil, logger=nil, action=nil, result=nil> - Expected: - @prefix dc: <http://purl.org/dc/terms/> . - @prefix dc11: <http://purl.org/dc/elements/1.1/> . - @prefix oa: <http://www.w3.org/ns/oa#> . - @prefix owl: <http://www.w3.org/2002/07/owl#> . - @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . - @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - @prefix skos: <http://www.w3.org/2004/02/skos/core#> . - @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . - - oa:Annotation a rdfs:Class; - rdfs:label "Annotation"; - rdfs:comment "The class for Web Annotations."; - rdfs:isDefinedBy oa: . - - oa:Choice a rdfs:Class; - rdfs:label "Choice"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:Composite a rdfs:Class; - rdfs:label "Composite"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use all of the resources in the as:items list, but that order is not important. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:CssSelector a rdfs:Class; - rdfs:label "CssSelector"; - rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:CssStyle a rdfs:Class; - rdfs:label "CssStyle"; - rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Style . - - oa:DataPositionSelector a rdfs:Class; - rdfs:label "DataPositionSelector"; - rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:Direction a rdfs:Class; - rdfs:label "Direction"; - rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances."; - rdfs:isDefinedBy oa: . - - oa:FragmentSelector a rdfs:Class; - rdfs:label "FragmentSelector"; - rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:HttpRequestState a rdfs:Class; - rdfs:label "HttpRequestState"; - rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:State . - - oa:Independents a rdfs:Class; - rdfs:label "Independents"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that each of the resources in the as:items list are independently associated with all of the other bodies or targets. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:List a rdfs:Class; - rdfs:label "List"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use each of the resources in the as:items list, and that their order is important. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:Motivation a rdfs:Class; - rdfs:label "Motivation"; - rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf skos:Concept . - - oa:RangeSelector a rdfs:Class; - rdfs:label "RangeSelector"; - rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:ResourceSelection a rdfs:Class; - rdfs:label "ResourceSelection"; - rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features."; - rdfs:isDefinedBy oa: . - - oa:Selector a rdfs:Class; - rdfs:label "Selector"; - rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses."; - rdfs:isDefinedBy oa: . - - oa:SpecificResource a rdfs:Class; - rdfs:label "SpecificResource"; - rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:ResourceSelection . - - oa:State a rdfs:Class; - rdfs:label "State"; - rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource."; - rdfs:isDefinedBy oa: . - - oa:Style a rdfs:Class; - rdfs:label "Style"; - rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations."; - rdfs:isDefinedBy oa: . - - oa:SvgSelector a rdfs:Class; - rdfs:label "SvgSelector"; - rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextPositionSelector a rdfs:Class; - rdfs:label "TextPositionSelector"; - rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextQuoteSelector a rdfs:Class; - rdfs:label "TextQuoteSelector"; - rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextualBody a rdfs:Class; - rdfs:label "TextualBody"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:TimeState a rdfs:Class; - rdfs:label "TimeState"; - rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:State . - - oa:XPathSelector a rdfs:Class; - rdfs:label "XPathSelector"; - rdfs:comment "An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:as:Application a rdfs:Class; - rdfs:label "as:Application"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:OrderedCollection a rdfs:Class; - rdfs:label "as:OrderedCollection"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:OrderedCollectionPage a rdfs:Class; - rdfs:label "as:OrderedCollectionPage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Dataset a rdfs:Class; - rdfs:label "dctypes:Dataset"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:MovingImage a rdfs:Class; - rdfs:label "dctypes:MovingImage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Sound a rdfs:Class; - rdfs:label "dctypes:Sound"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:StillImage a rdfs:Class; - rdfs:label "dctypes:StillImage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Text a rdfs:Class; - rdfs:label "dctypes:Text"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:foaf:Organization a rdfs:Class; - rdfs:label "foaf:Organization"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:foaf:Person a rdfs:Class; - rdfs:label "foaf:Person"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:schema:Audience a rdfs:Class; - rdfs:label "schema:Audience"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:PreferContainedDescriptions a rdfs:Resource; - rdfs:label "PreferContainedDescriptions"; - rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs."; - rdfs:isDefinedBy oa: . - - oa:PreferContainedIRIs a rdfs:Resource; - rdfs:label "PreferContainedIRIs"; - rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions."; - rdfs:isDefinedBy oa: . - - oa:annotationService a rdf:Property; - rdfs:label "annotationService"; - rdfs:comment "The object of the relationship is the end point of a service that conforms to the annotation-protocol, and it may be associated with any resource. The expectation of asserting the relationship is that the object is the preferred service for maintaining annotations about the subject resource, according to the publisher of the relationship. This relationship is intended to be used both within Linked Data descriptions and as the rel type of a Link, via HTTP Link Headers rfc5988 for binary resources and in HTML <link> elements. For more information about these, please see the Annotation Protocol specification annotation-protocol."; - rdfs:isDefinedBy oa: . - - oa:as:first a rdf:Property; - rdfs:label "as:first"; - rdfs:comment ""; - rdfs:domain oa:as:OrderedCollection; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:generator a rdf:Property; - rdfs:label "as:generator"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:items a rdf:Property; - rdfs:label "as:items"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range rdf:List . - - oa:as:last a rdf:Property; - rdfs:label "as:last"; - rdfs:comment ""; - rdfs:domain oa:as:OrderedCollection; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:next a rdf:Property; - rdfs:label "as:next"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:partOf a rdf:Property; - rdfs:label "as:partOf"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollection> . - - oa:as:prev a rdf:Property; - rdfs:label "as:prev"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:startIndex a rdf:Property; - rdfs:label "as:startIndex"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:as:totalItems a rdf:Property; - rdfs:label "as:totalItems"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollection>; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:assessing a oa:Motivation; - rdfs:label "assessing"; - rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource."; - rdfs:isDefinedBy oa: . - - oa:bodyValue a rdf:Property; - rdfs:label "bodyValue"; - rdfs:comment "The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString ."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:bookmarking a oa:Motivation; - rdfs:label "bookmarking"; - rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof."; - rdfs:isDefinedBy oa: . - - oa:cachedSource a rdf:Property; - rdfs:label "cachedSource"; - rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation."; - rdfs:domain oa:TimeState; - rdfs:isDefinedBy oa: . - - oa:canonical a rdf:Property; - rdfs:label "canonical"; - rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation."; - rdfs:isDefinedBy oa: . - - oa:classifying a oa:Motivation; - rdfs:label "classifying"; - rdfs:comment "The motivation for when the user intends to that classify the Target as something."; - rdfs:isDefinedBy oa: . - - oa:commenting a oa:Motivation; - rdfs:label "commenting"; - rdfs:comment "The motivation for when the user intends to comment about the Target."; - rdfs:isDefinedBy oa: . - - oa:describing a oa:Motivation; - rdfs:label "describing"; - rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them."; - rdfs:isDefinedBy oa: . - - oa:editing a oa:Motivation; - rdfs:label "editing"; - rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource."; - rdfs:isDefinedBy oa: . - - oa:end a rdf:Property; - rdfs:label "end"; - rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:exact a rdf:Property; - rdfs:label "exact"; - rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:hasBody a rdf:Property; - rdfs:label "hasBody"; - rdfs:comment "The object of the relationship is a resource that is a body of the Annotation."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa: . - - oa:hasEndSelector a rdf:Property; - rdfs:label "hasEndSelector"; - rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range."; - rdfs:domain oa:RangeSelector; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasPurpose a rdf:Property; - rdfs:label "hasPurpose"; - rdfs:comment "The purpose served by the resource in the Annotation."; - rdfs:isDefinedBy oa:; - rdfs:range oa:Motivation . - - oa:hasScope a rdf:Property; - rdfs:label "hasScope"; - rdfs:comment "The scope or context in which the resource is used within the Annotation."; - rdfs:domain oa:SpecificResource; - rdfs:isDefinedBy oa: . - - oa:hasSelector a rdf:Property; - rdfs:label "hasSelector"; - rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasSource a rdf:Property; - rdfs:label "hasSource"; - rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa: . - - oa:hasStartSelector a rdf:Property; - rdfs:label "hasStartSelector"; - rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range."; - rdfs:domain oa:RangeSelector; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasState a rdf:Property; - rdfs:label "hasState"; - rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa:; - rdfs:range oa:State . - - oa:hasTarget a rdf:Property; - rdfs:label "hasTarget"; - rdfs:comment "The relationship between an Annotation and its Target."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa: . - - oa:highlighting a oa:Motivation; - rdfs:label "highlighting"; - rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it."; - rdfs:isDefinedBy oa: . - - oa:identifying a oa:Motivation; - rdfs:label "identifying"; - rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target."; - rdfs:isDefinedBy oa: . - - oa:linking a oa:Motivation; - rdfs:label "linking"; - rdfs:comment "The motivation for when the user intends to link to a resource related to the Target."; - rdfs:isDefinedBy oa: . - - oa:ltrDirection a oa:Direction; - rdfs:label "ltrDirection"; - rdfs:comment "The direction of text that is read from left to right."; - rdfs:isDefinedBy oa: . - - oa:moderating a oa:Motivation; - rdfs:label "moderating"; - rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target."; - rdfs:isDefinedBy oa: . - - oa:motivatedBy a rdf:Property; - rdfs:label "motivatedBy"; - rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa:; - rdfs:range oa:Motivation . - - oa:prefix a rdf:Property; - rdfs:label "prefix"; - rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:processingLanguage a rdf:Property; - rdfs:label "processingLanguage"; - rdfs:comment "The object of the property is the language that should be used for textual processing algorithms when dealing with the content of the resource, including hyphenation, line breaking, which font to use for rendering and so forth. The value must follow the recommendations of BCP47."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:questioning a oa:Motivation; - rdfs:label "questioning"; - rdfs:comment "The motivation for when the user intends to ask a question about the Target."; - rdfs:isDefinedBy oa: . - - oa:refinedBy a rdf:Property; - rdfs:label "refinedBy"; - rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource."; - rdfs:isDefinedBy oa: . - - oa:replying a oa:Motivation; - rdfs:label "replying"; - rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource."; - rdfs:isDefinedBy oa: . - - oa:rtlDirection a oa:Direction; - rdfs:label "rtlDirection"; - rdfs:comment "The direction of text that is read from right to left."; - rdfs:isDefinedBy oa: . - - oa:tagging a oa:Motivation; - rdfs:label "tagging"; - rdfs:comment "The motivation for when the user intends to associate a tag with the Target."; - rdfs:isDefinedBy oa: . - - oa: a owl:Ontology; - dc11:title "Web Annotation Ontology"; - dc:creator "Robert Sanderson", - "Paolo Ciccarese", - "Benjamin Young"; - dc:modified "2016-09-30T16:51:18Z"; - rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area."; - rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/>; - owl:previousVersionURI <http://www.openannotation.org/spec/core/20130208/oa.owl>; - owl:versionInfo "2016-09-30T16:51:18Z" . - Results: - @prefix dc: <http://purl.org/dc/terms/> . - @prefix dc11: <http://purl.org/dc/elements/1.1/> . - @prefix oa: <http://www.w3.org/ns/oa#> . - @prefix owl: <http://www.w3.org/2002/07/owl#> . - @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . - @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - @prefix skos: <http://www.w3.org/2004/02/skos/core#> . - @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . - - oa:Annotation a rdfs:Class; - rdfs:label "Annotation"; - rdfs:comment "The class for Web Annotations."; - rdfs:isDefinedBy oa: . - - oa:Choice a rdfs:Class; - rdfs:label "Choice"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:Composite a rdfs:Class; - rdfs:label "Composite"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use all of the resources in the as:items list, but that order is not important. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:CssSelector a rdfs:Class; - rdfs:label "CssSelector"; - rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:CssStyle a rdfs:Class; - rdfs:label "CssStyle"; - rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Style . - - oa:DataPositionSelector a rdfs:Class; - rdfs:label "DataPositionSelector"; - rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:Direction a rdfs:Class; - rdfs:label "Direction"; - rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances."; - rdfs:isDefinedBy oa: . - - oa:FragmentSelector a rdfs:Class; - rdfs:label "FragmentSelector"; - rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:HttpRequestState a rdfs:Class; - rdfs:label "HttpRequestState"; - rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:State . - - oa:Independents a rdfs:Class; - rdfs:label "Independents"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that each of the resources in the as:items list are independently associated with all of the other bodies or targets. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:List a rdfs:Class; - rdfs:label "List"; - rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use each of the resources in the as:items list, and that their order is important. This class is at-risk."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:as:OrderedCollection . - - oa:Motivation a rdfs:Class; - rdfs:label "Motivation"; - rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf skos:Concept . - - oa:RangeSelector a rdfs:Class; - rdfs:label "RangeSelector"; - rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:ResourceSelection a rdfs:Class; - rdfs:label "ResourceSelection"; - rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features."; - rdfs:isDefinedBy oa: . - - oa:Selector a rdfs:Class; - rdfs:label "Selector"; - rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses."; - rdfs:isDefinedBy oa: . - - oa:SpecificResource a rdfs:Class; - rdfs:label "SpecificResource"; - rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:ResourceSelection . - - oa:State a rdfs:Class; - rdfs:label "State"; - rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource."; - rdfs:isDefinedBy oa: . - - oa:Style a rdfs:Class; - rdfs:label "Style"; - rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations."; - rdfs:isDefinedBy oa: . - - oa:SvgSelector a rdfs:Class; - rdfs:label "SvgSelector"; - rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextPositionSelector a rdfs:Class; - rdfs:label "TextPositionSelector"; - rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextQuoteSelector a rdfs:Class; - rdfs:label "TextQuoteSelector"; - rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:TextualBody a rdfs:Class; - rdfs:label "TextualBody"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:TimeState a rdfs:Class; - rdfs:label "TimeState"; - rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:State . - - oa:XPathSelector a rdfs:Class; - rdfs:label "XPathSelector"; - rdfs:comment "An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value."; - rdfs:isDefinedBy oa:; - rdfs:subClassOf oa:Selector . - - oa:as:Application a rdfs:Class; - rdfs:label "as:Application"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:OrderedCollection a rdfs:Class; - rdfs:label "as:OrderedCollection"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:OrderedCollectionPage a rdfs:Class; - rdfs:label "as:OrderedCollectionPage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Dataset a rdfs:Class; - rdfs:label "dctypes:Dataset"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:MovingImage a rdfs:Class; - rdfs:label "dctypes:MovingImage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Sound a rdfs:Class; - rdfs:label "dctypes:Sound"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:StillImage a rdfs:Class; - rdfs:label "dctypes:StillImage"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:dctypes:Text a rdfs:Class; - rdfs:label "dctypes:Text"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:foaf:Organization a rdfs:Class; - rdfs:label "foaf:Organization"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:foaf:Person a rdfs:Class; - rdfs:label "foaf:Person"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:schema:Audience a rdfs:Class; - rdfs:label "schema:Audience"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:PreferContainedDescriptions a rdfs:Resource; - rdfs:label "PreferContainedDescriptions"; - rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs."; - rdfs:isDefinedBy oa: . - - oa:PreferContainedIRIs a rdfs:Resource; - rdfs:label "PreferContainedIRIs"; - rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions."; - rdfs:isDefinedBy oa: . - - oa:annotationService a rdf:Property; - rdfs:label "annotationService"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:first a rdf:Property; - rdfs:label "as:first"; - rdfs:comment ""; - rdfs:domain oa:as:OrderedCollection; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:generator a rdf:Property; - rdfs:label "as:generator"; - rdfs:comment ""; - rdfs:isDefinedBy oa: . - - oa:as:items a rdf:Property; - rdfs:label "as:items"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range rdf:List . - - oa:as:last a rdf:Property; - rdfs:label "as:last"; - rdfs:comment ""; - rdfs:domain oa:as:OrderedCollection; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:next a rdf:Property; - rdfs:label "as:next"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:partOf a rdf:Property; - rdfs:label "as:partOf"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollection> . - - oa:as:prev a rdf:Property; - rdfs:label "as:prev"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . - - oa:as:startIndex a rdf:Property; - rdfs:label "as:startIndex"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:as:totalItems a rdf:Property; - rdfs:label "as:totalItems"; - rdfs:comment ""; - rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollection>; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:assessing a oa:Motivation; - rdfs:label "assessing"; - rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource."; - rdfs:isDefinedBy oa: . - - oa:bodyValue a rdf:Property; - rdfs:label "bodyValue"; - rdfs:comment "The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString ."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:bookmarking a oa:Motivation; - rdfs:label "bookmarking"; - rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof."; - rdfs:isDefinedBy oa: . - - oa:cachedSource a rdf:Property; - rdfs:label "cachedSource"; - rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation."; - rdfs:domain oa:TimeState; - rdfs:isDefinedBy oa: . - - oa:canonical a rdf:Property; - rdfs:label "canonical"; - rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation."; - rdfs:isDefinedBy oa: . - - oa:classifying a oa:Motivation; - rdfs:label "classifying"; - rdfs:comment "The motivation for when the user intends to that classify the Target as something."; - rdfs:isDefinedBy oa: . - - oa:commenting a oa:Motivation; - rdfs:label "commenting"; - rdfs:comment "The motivation for when the user intends to comment about the Target."; - rdfs:isDefinedBy oa: . - - oa:describing a oa:Motivation; - rdfs:label "describing"; - rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them."; - rdfs:isDefinedBy oa: . - - oa:editing a oa:Motivation; - rdfs:label "editing"; - rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource."; - rdfs:isDefinedBy oa: . - - oa:end a rdf:Property; - rdfs:label "end"; - rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:nonNegativeInteger . - - oa:exact a rdf:Property; - rdfs:label "exact"; - rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:hasBody a rdf:Property; - rdfs:label "hasBody"; - rdfs:comment "The object of the relationship is a resource that is a body of the Annotation."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa: . - - oa:hasEndSelector a rdf:Property; - rdfs:label "hasEndSelector"; - rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range."; - rdfs:domain oa:RangeSelector; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasPurpose a rdf:Property; - rdfs:label "hasPurpose"; - rdfs:comment "The purpose served by the resource in the Annotation."; - rdfs:isDefinedBy oa:; - rdfs:range oa:Motivation . - - oa:hasScope a rdf:Property; - rdfs:label "hasScope"; - rdfs:comment "The scope or context in which the resource is used within the Annotation."; - rdfs:domain oa:SpecificResource; - rdfs:isDefinedBy oa: . - - oa:hasSelector a rdf:Property; - rdfs:label "hasSelector"; - rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasSource a rdf:Property; - rdfs:label "hasSource"; - rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa: . - - oa:hasStartSelector a rdf:Property; - rdfs:label "hasStartSelector"; - rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range."; - rdfs:domain oa:RangeSelector; - rdfs:isDefinedBy oa:; - rdfs:range oa:Selector . - - oa:hasState a rdf:Property; - rdfs:label "hasState"; - rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model."; - rdfs:domain oa:ResourceSelection; - rdfs:isDefinedBy oa:; - rdfs:range oa:State . - - oa:hasTarget a rdf:Property; - rdfs:label "hasTarget"; - rdfs:comment "The relationship between an Annotation and its Target."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa: . - - oa:highlighting a oa:Motivation; - rdfs:label "highlighting"; - rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it."; - rdfs:isDefinedBy oa: . - - oa:identifying a oa:Motivation; - rdfs:label "identifying"; - rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target."; - rdfs:isDefinedBy oa: . - - oa:linking a oa:Motivation; - rdfs:label "linking"; - rdfs:comment "The motivation for when the user intends to link to a resource related to the Target."; - rdfs:isDefinedBy oa: . - - oa:ltrDirection a oa:Direction; - rdfs:label "ltrDirection"; - rdfs:comment "The direction of text that is read from left to right."; - rdfs:isDefinedBy oa: . - - oa:moderating a oa:Motivation; - rdfs:label "moderating"; - rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target."; - rdfs:isDefinedBy oa: . - - oa:motivatedBy a rdf:Property; - rdfs:label "motivatedBy"; - rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation."; - rdfs:domain oa:Annotation; - rdfs:isDefinedBy oa:; - rdfs:range oa:Motivation . - - oa:prefix a rdf:Property; - rdfs:label "prefix"; - rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:processingLanguage a rdf:Property; - rdfs:label "processingLanguage"; - rdfs:comment "The object of the property is the language that should be used for textual processing algorithms when dealing with the content of the resource, including hyphenation, line breaking, which font to use for rendering and so forth. The value must follow the recommendations of BCP47."; - rdfs:isDefinedBy oa:; - rdfs:range xsd:string . - - oa:questioning a oa:Motivation; - rdfs:label "questioning"; - rdfs:comment "The motivation for when the user intends to ask a question about the Target."; - rdfs:isDefinedBy oa: . - - oa:refinedBy a rdf:Property; - rdfs:label "refinedBy"; - rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource."; - rdfs:isDefinedBy oa: . - - oa:replying a oa:Motivation; - rdfs:label "replying"; - rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource."; - rdfs:isDefinedBy oa: . - - oa:rtlDirection a oa:Direction; - rdfs:label "rtlDirection"; - rdfs:comment "The direction of text that is read from right to left."; - rdfs:isDefinedBy oa: . - - oa:tagging a oa:Motivation; - rdfs:label "tagging"; - rdfs:comment "The motivation for when the user intends to associate a tag with the Target."; - rdfs:isDefinedBy oa: . - - oa: a owl:Ontology; - dc11:title "Web Annotation Ontology"; - dc:creator "Robert Sanderson", - "Paolo Ciccarese", - "Benjamin Young"; - dc:modified "2016-09-30T16:51:18Z"; - rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area."; - rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/>; - owl:previousVersionURI <http://www.openannotation.org/spec/core/20130208/oa.owl>; - owl:versionInfo "2016-09-30T16:51:18Z" . - - Debug:</pre></div> - <div class="backtrace"><pre>./annotation-vocab_spec.rb:83:in `block (4 levels) in <top (required)>'</pre></div> - <pre class="ruby"><code><span class="linenum">81</span> # XXX Normalize whitespace in literals to ease comparision -<span class="linenum">82</span> fg.each_object {|o| o.squish! if o.literal?} -<span class="offending"><span class="linenum">83</span> expect(fg).to be_equivalent_graph(vocab_graph)</span> -<span class="linenum">84</span> end -<span class="linenum">85</span> end -<span class="linenum">86</span><span class="comment"># Install the coderay gem to get syntax highlighting</span></code></pre> - </div> - </dd> - <script type="text/javascript">moveProgressBar('45.3');</script> - <dd class="example passed"><span class="passed_spec_name">ttl</span><span class='duration'>0.48723s</span></dd> - </dl> -</div> -<div id="div_group_6" class="example_group passed"> - <dl style="margin-left: 15px;"> - <dt id="example_group_6" class="passed">The ontology is internally consistent with respect to domains, ranges, inverses, and any other ontology features specified.</dt> - <script type="text/javascript">makeRed('div_group_6');</script> - <script type="text/javascript">makeRed('example_group_6');</script> - <script type="text/javascript">moveProgressBar('45.6');</script> - <dd class="example failed"> - <span class="failed_spec_name">lints cleanly</span> - <span class="duration">2.09350s</span> - <div class="failure" id="failure_3"> - <div class="message"><pre>Failure/Error: expect(entailed_graph.lint).to be_empty - expected `{:property=>{"dc:creator"=>["Object \"Robert Sanderson\" not compatible with range (dc:Agent)", "Obje...mpatible with range (dc:Agent)", "Object \"Benjamin Young\" not compatible with range (dc:Agent)"]}}.empty?` to return true, got false</pre></div> - <div class="backtrace"><pre>./annotation-vocab_spec.rb:91:in `block (3 levels) in <top (required)>'</pre></div> - <pre class="ruby"><code><span class="linenum">89</span> it "lints cleanly" do -<span class="linenum">90</span> entailed_graph = vocab_graph.dup.entail! -<span class="offending"><span class="linenum">91</span> expect(entailed_graph.lint).to be_empty</span> -<span class="linenum">92</span> end -<span class="linenum">93</span> -<span class="linenum">94</span><span class="comment"># Install the coderay gem to get syntax highlighting</span></code></pre> - </div> - </dd> - </dl> -</div> -<div id="div_group_7" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_7" class="passed">oa:Annotation</dt> - <script type="text/javascript">moveProgressBar('46.0');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00013s</span></dd> - <script type="text/javascript">moveProgressBar('46.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00057s</span></dd> - </dl> -</div> -<div id="div_group_8" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_8" class="passed">oa:Choice</dt> - <script type="text/javascript">moveProgressBar('46.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.01390s</span></dd> - <script type="text/javascript">moveProgressBar('47.0');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00054s</span></dd> - </dl> -</div> -<div id="div_group_9" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_9" class="passed">oa:Composite</dt> - <script type="text/javascript">moveProgressBar('47.3');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00201s</span></dd> - <script type="text/javascript">moveProgressBar('47.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00046s</span></dd> - </dl> -</div> -<div id="div_group_10" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_10" class="passed">oa:CssSelector</dt> - <script type="text/javascript">moveProgressBar('48.0');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('48.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_11" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_11" class="passed">oa:CssStyle</dt> - <script type="text/javascript">moveProgressBar('48.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('49.0');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_12" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_12" class="passed">oa:DataPositionSelector</dt> - <script type="text/javascript">moveProgressBar('49.3');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('49.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00059s</span></dd> - </dl> -</div> -<div id="div_group_13" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_13" class="passed">oa:Direction</dt> - <script type="text/javascript">moveProgressBar('50.0');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('50.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_14" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_14" class="passed">oa:FragmentSelector</dt> - <script type="text/javascript">moveProgressBar('50.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('50.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00047s</span></dd> - </dl> -</div> -<div id="div_group_15" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_15" class="passed">oa:HttpRequestState</dt> - <script type="text/javascript">moveProgressBar('51.3');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00090s</span></dd> - <script type="text/javascript">moveProgressBar('51.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00047s</span></dd> - </dl> -</div> -<div id="div_group_16" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_16" class="passed">oa:Independents</dt> - <script type="text/javascript">moveProgressBar('51.9');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00204s</span></dd> - <script type="text/javascript">moveProgressBar('52.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00046s</span></dd> - </dl> -</div> -<div id="div_group_17" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_17" class="passed">oa:List</dt> - <script type="text/javascript">moveProgressBar('52.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00220s</span></dd> - <script type="text/javascript">moveProgressBar('52.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00052s</span></dd> - </dl> -</div> -<div id="div_group_18" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_18" class="passed">oa:Motivation</dt> - <script type="text/javascript">moveProgressBar('53.3');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00120s</span></dd> - <script type="text/javascript">moveProgressBar('53.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00053s</span></dd> - </dl> -</div> -<div id="div_group_19" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_19" class="passed">oa:RangeSelector</dt> - <script type="text/javascript">moveProgressBar('53.9');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00093s</span></dd> - <script type="text/javascript">moveProgressBar('54.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00048s</span></dd> - </dl> -</div> -<div id="div_group_20" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_20" class="passed">oa:ResourceSelection</dt> - <script type="text/javascript">moveProgressBar('54.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('54.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_21" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_21" class="passed">oa:Selector</dt> - <script type="text/javascript">moveProgressBar('55.2');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('55.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_22" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_22" class="passed">oa:SpecificResource</dt> - <script type="text/javascript">moveProgressBar('55.9');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('56.2');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00050s</span></dd> - </dl> -</div> -<div id="div_group_23" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_23" class="passed">oa:State</dt> - <script type="text/javascript">moveProgressBar('56.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('56.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00048s</span></dd> - </dl> -</div> -<div id="div_group_24" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_24" class="passed">oa:Style</dt> - <script type="text/javascript">moveProgressBar('57.2');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('57.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00048s</span></dd> - </dl> -</div> -<div id="div_group_25" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_25" class="passed">oa:SvgSelector</dt> - <script type="text/javascript">moveProgressBar('57.9');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00086s</span></dd> - <script type="text/javascript">moveProgressBar('58.2');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00050s</span></dd> - </dl> -</div> -<div id="div_group_26" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_26" class="passed">oa:TextPositionSelector</dt> - <script type="text/javascript">moveProgressBar('58.6');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00091s</span></dd> - <script type="text/javascript">moveProgressBar('58.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_27" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_27" class="passed">oa:TextQuoteSelector</dt> - <script type="text/javascript">moveProgressBar('59.2');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('59.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00048s</span></dd> - </dl> -</div> -<div id="div_group_28" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_28" class="passed">oa:TextualBody</dt> - <script type="text/javascript">moveProgressBar('59.9');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('60.2');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_29" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_29" class="passed">oa:TimeState</dt> - <script type="text/javascript">moveProgressBar('60.5');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('60.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00049s</span></dd> - </dl> -</div> -<div id="div_group_30" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_30" class="passed">oa:XPathSelector</dt> - <script type="text/javascript">moveProgressBar('61.2');</script> - <dd class="example passed"><span class="passed_spec_name">subClassOf</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('61.5');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentClass</span><span class='duration'>0.00048s</span></dd> - </dl> -</div> -<div id="div_group_31" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_31" class="passed">oa:annotationService</dt> - <script type="text/javascript">moveProgressBar('61.9');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00011s</span></dd> - <script type="text/javascript">moveProgressBar('62.2');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('62.5');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('62.9');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_32" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_32" class="passed">oa:bodyValue</dt> - <script type="text/javascript">moveProgressBar('63.2');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('63.5');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('63.9');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00083s</span></dd> - <script type="text/javascript">moveProgressBar('64.2');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00015s</span></dd> - </dl> -</div> -<div id="div_group_33" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_33" class="passed">oa:cachedSource</dt> - <script type="text/javascript">moveProgressBar('64.5');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('64.9');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('65.2');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('65.5');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_34" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_34" class="passed">oa:canonical</dt> - <script type="text/javascript">moveProgressBar('65.8');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('66.2');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00011s</span></dd> - <script type="text/javascript">moveProgressBar('66.5');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('66.8');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_35" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_35" class="passed">oa:end</dt> - <script type="text/javascript">moveProgressBar('67.2');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('67.5');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('67.8');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00085s</span></dd> - <script type="text/javascript">moveProgressBar('68.2');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_36" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_36" class="passed">oa:exact</dt> - <script type="text/javascript">moveProgressBar('68.5');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('68.8');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('69.2');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00092s</span></dd> - <script type="text/javascript">moveProgressBar('69.5');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_37" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_37" class="passed">oa:hasBody</dt> - <script type="text/javascript">moveProgressBar('69.8');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('70.1');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00090s</span></dd> - <script type="text/javascript">moveProgressBar('70.5');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('70.8');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_38" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_38" class="passed">oa:hasEndSelector</dt> - <script type="text/javascript">moveProgressBar('71.1');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00011s</span></dd> - <script type="text/javascript">moveProgressBar('71.5');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('71.8');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('72.1');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_39" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_39" class="passed">oa:hasPurpose</dt> - <script type="text/javascript">moveProgressBar('72.5');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('72.8');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('73.1');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('73.5');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_40" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_40" class="passed">oa:hasScope</dt> - <script type="text/javascript">moveProgressBar('73.8');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('74.1');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('74.5');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('74.8');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00011s</span></dd> - </dl> -</div> -<div id="div_group_41" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_41" class="passed">oa:hasSelector</dt> - <script type="text/javascript">moveProgressBar('75.1');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('75.4');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('75.8');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('76.1');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_42" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_42" class="passed">oa:hasSource</dt> - <script type="text/javascript">moveProgressBar('76.4');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('76.8');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('77.1');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('77.4');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_43" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_43" class="passed">oa:hasStartSelector</dt> - <script type="text/javascript">moveProgressBar('77.8');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('78.1');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('78.4');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('78.8');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_44" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_44" class="passed">oa:hasState</dt> - <script type="text/javascript">moveProgressBar('79.1');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('79.4');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('79.8');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('80.1');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_45" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_45" class="passed">oa:hasTarget</dt> - <script type="text/javascript">moveProgressBar('80.4');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('80.7');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('81.1');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('81.4');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_46" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_46" class="passed">oa:motivatedBy</dt> - <script type="text/javascript">moveProgressBar('81.7');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00011s</span></dd> - <script type="text/javascript">moveProgressBar('82.1');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('82.4');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('82.7');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_47" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_47" class="passed">oa:prefix</dt> - <script type="text/javascript">moveProgressBar('83.1');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('83.4');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('83.7');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00082s</span></dd> - <script type="text/javascript">moveProgressBar('84.1');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00014s</span></dd> - </dl> -</div> -<div id="div_group_48" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_48" class="passed">oa:processingLanguage</dt> - <script type="text/javascript">moveProgressBar('84.4');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('84.7');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00012s</span></dd> - <script type="text/javascript">moveProgressBar('85.0');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00085s</span></dd> - <script type="text/javascript">moveProgressBar('85.4');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_49" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_49" class="passed">oa:refinedBy</dt> - <script type="text/javascript">moveProgressBar('85.7');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('86.0');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('86.4');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('86.7');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00011s</span></dd> - </dl> -</div> -<div id="div_group_50" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_50" class="passed">oa:renderedVia</dt> - <script type="text/javascript">moveProgressBar('87.0');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00011s</span></dd> - <script type="text/javascript">moveProgressBar('87.4');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('87.7');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00086s</span></dd> - <script type="text/javascript">moveProgressBar('88.0');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_51" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_51" class="passed">oa:sourceDate</dt> - <script type="text/javascript">moveProgressBar('88.4');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('88.7');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('89.0');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00081s</span></dd> - <script type="text/javascript">moveProgressBar('89.4');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00011s</span></dd> - </dl> -</div> -<div id="div_group_52" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_52" class="passed">oa:sourceDateEnd</dt> - <script type="text/javascript">moveProgressBar('89.7');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('90.0');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00087s</span></dd> - <script type="text/javascript">moveProgressBar('90.3');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00082s</span></dd> - <script type="text/javascript">moveProgressBar('90.7');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00011s</span></dd> - </dl> -</div> -<div id="div_group_53" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_53" class="passed">oa:sourceDateStart</dt> - <script type="text/javascript">moveProgressBar('91.0');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('91.3');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00089s</span></dd> - <script type="text/javascript">moveProgressBar('91.7');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00082s</span></dd> - <script type="text/javascript">moveProgressBar('92.0');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_54" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_54" class="passed">oa:start</dt> - <script type="text/javascript">moveProgressBar('92.3');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('92.7');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('93.0');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00083s</span></dd> - <script type="text/javascript">moveProgressBar('93.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_55" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_55" class="passed">oa:styleClass</dt> - <script type="text/javascript">moveProgressBar('93.7');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('94.0');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('94.3');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00082s</span></dd> - <script type="text/javascript">moveProgressBar('94.7');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_56" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_56" class="passed">oa:styledBy</dt> - <script type="text/javascript">moveProgressBar('95.0');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('95.3');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00092s</span></dd> - <script type="text/javascript">moveProgressBar('95.6');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('96.0');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00013s</span></dd> - </dl> -</div> -<div id="div_group_57" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_57" class="passed">oa:suffix</dt> - <script type="text/javascript">moveProgressBar('96.3');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('96.6');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00010s</span></dd> - <script type="text/javascript">moveProgressBar('97.0');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00081s</span></dd> - <script type="text/javascript">moveProgressBar('97.3');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_58" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_58" class="passed">oa:textDirection</dt> - <script type="text/javascript">moveProgressBar('97.6');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('98.0');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('98.3');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00088s</span></dd> - <script type="text/javascript">moveProgressBar('98.6');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00012s</span></dd> - </dl> -</div> -<div id="div_group_59" class="example_group passed"> - <dl style="margin-left: 30px;"> - <dt id="example_group_59" class="passed">oa:via</dt> - <script type="text/javascript">moveProgressBar('99.0');</script> - <dd class="example passed"><span class="passed_spec_name">subPropertyOf</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('99.3');</script> - <dd class="example passed"><span class="passed_spec_name">domain</span><span class='duration'>0.00009s</span></dd> - <script type="text/javascript">moveProgressBar('99.6');</script> - <dd class="example passed"><span class="passed_spec_name">range</span><span class='duration'>0.00011s</span></dd> - <script type="text/javascript">moveProgressBar('100.0');</script> - <dd class="example passed"><span class="passed_spec_name">equivalentProperty</span><span class='duration'>0.00011s</span></dd> - </dl> -</div> -<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>52.01192 seconds</strong>";</script> -<script type="text/javascript">document.getElementById('totals').innerHTML = "302 examples, 3 failures, 2 pending";</script> -</div> -</div> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Rakefile b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Rakefile deleted file mode 100644 index 70b446b915a..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Rakefile +++ /dev/null @@ -1,11 +0,0 @@ -require "bundler/setup" - -begin - require 'rspec/core/rake_task' - RSpec::Core::RakeTask.new(:spec) do |t| - t.pattern = "annotation-vocab_spec.rb" - end - - task :default => :spec -rescue LoadError -end
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/annotation-vocab_spec.rb b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/annotation-vocab_spec.rb deleted file mode 100644 index 3ae53b29fbf..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/annotation-vocab_spec.rb +++ /dev/null @@ -1,120 +0,0 @@ -require "bundler/setup" -require 'rdf' -require 'linkeddata' -require 'rdf/spec/matchers' -require 'rspec' - -SAMPLES = File.expand_path("../../samples/", __FILE__) -CORRECT = Dir.glob(File.join(SAMPLES, "correct/*.json")) -INCORRECT = Dir.glob(File.join(SAMPLES, "incorrect/*.json")) -RDF::Reasoner.apply(:rdfs, :owl) -VOCAB_URI = "http://www.w3.org/ns/oa#" -VOCAB_GRAPH = begin - g = RDF::Graph.load(VOCAB_URI, format: :jsonld, headers: {"Accept" => "application/ld+json"}) - g.each_object {|o| o.squish! if o.literal?} - g -end - -describe "Web Annotation Vocab" do - let(:vocab) {VOCAB_URI} - let(:vocab_graph) {VOCAB_GRAPH} - - # Load Annotation vocabulary first, so that that defined in rdf-vocab is not lazy-loaded - before(:all) do - RDF::Vocabulary.from_graph(VOCAB_GRAPH, url: VOCAB_URI, class_name: RDF::Vocab::OA) - end - - it "The JSON-LD context document can be parsed without errors by JSON-LD validators" do - expect {JSON::LD::API.expand(vocab, validate: true)}.not_to raise_error - end - - context "The JSON-LD context document can be used to convert JSON-LD serialized Annotations into RDF triples" do - CORRECT.each do |file| - it "#{file.split('/').last}" do - nt = file.sub(/.json$/, '.nt') - gjld = RDF::Graph.load(file, format: :jsonld) - gnt = RDF::Graph.load(nt, format: :ntriples) - expect(gjld).to be_equivalent_graph(gnt) - end - - it "lint #{file.split('/').last}" do - gjld = RDF::Graph.load(file, format: :jsonld) - gjld.entail! - expect(gjld.lint).to be_empty - end - end - end - - context "detects errors in incorrect examples" do - INCORRECT.each do |file| - it "#{file.split('/').last}" do - pending "Empty Documents are invalid" if file =~ /anno2.json|anno3.json/ - expect {RDF::Graph.load(file, validate: true, format: :jsonld, logger: false)}.to raise_error(RDF::ReaderError) - end - end - end - - context "The ontology documents can be parsed without errors by RDF Schema validators" do - { - jsonld: "application/ld+json", - rdfxml: "application/rdf+xml", - ttl: "text/turtle", - }.each do |format, content_type| - it "JSON-LD version is isomorphic to #{format}" do - expect do - RDF::Graph.load(vocab, format: format, validate: true, headers: {"Accept" => content_type}) - end.not_to raise_error - end - end - end - - context "The ontology documents are isomorphic to each other" do - { - rdfxml: "application/rdf+xml", - ttl: "text/turtle", - }.each do |format, content_type| - it format do - fg = RDF::Graph.load(vocab, format: format, headers: {"Accept" => content_type}) - - # XXX Normalize whitespace in literals to ease comparision - fg.each_object {|o| o.squish! if o.literal?} - expect(fg).to be_equivalent_graph(vocab_graph) - end - end - end - - context "The ontology is internally consistent with respect to domains, ranges, inverses, and any other ontology features specified." do - it "lints cleanly" do - entailed_graph = vocab_graph.dup.entail! - expect(entailed_graph.lint).to be_empty - end - - RDF::Vocab::OA.each do |term| - if term.type.to_s =~ /Class/ - context term.pname do - it "subClassOf" do - expect {term.subClassOf.map(&:pname)}.not_to raise_error - end - it "equivalentClass" do - expect {term.equivalentClass.map(&:pname)}.not_to raise_error - end - end - elsif term.type.to_s =~ /Property/ - context term.pname do - it "subPropertyOf" do - expect {term.subPropertyOf.map(&:pname)}.not_to raise_error - end - it "domain" do - expect {term.domain.map(&:pname)}.not_to raise_error - end - it "range" do - expect {term.range.map(&:pname)}.not_to raise_error - end - it "equivalentProperty" do - expect {term.equivalentProperty.map(&:pname)}.not_to raise_error - end - end - end - end - end -end diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.json deleted file mode 100644 index 905349bb468..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno1", - "type": "Annotation", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.nt deleted file mode 100644 index 879b3b4960e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.nt +++ /dev/null @@ -1,3 +0,0 @@ -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/page1> . -<http://example.org/anno1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasBody> <http://example.org/post1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.json deleted file mode 100644 index 766fddf3ac8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno10", - "type": "Annotation", - "body": { - "type": "Choice", - "items": [ - { - "id": "http://example.org/note1", - "language": "en" - }, - { - "id": "http://example.org/note2", - "language": "fr" - } - ] - }, - "target": "http://example.org/website1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.nt deleted file mode 100644 index 0db919d3050..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.nt +++ /dev/null @@ -1,11 +0,0 @@ -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/note2> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/note1> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 . -<http://example.org/note2> <http://purl.org/dc/elements/1.1/language> "fr" . -_:b0 <http://www.w3.org/ns/activitystreams#items> _:b1 . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Choice> . -<http://example.org/anno10> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/website1> . -<http://example.org/anno10> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno10> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/note1> <http://purl.org/dc/elements/1.1/language> "en" . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.json deleted file mode 100644 index 7461493f46e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno11", - "type": "Annotation", - "motivation": "commenting", - "body": { - "type": "TextualBody", - "value": "These pages together provide evidence of the conspiracy" - }, - "target": { - "type": "Composite", - "items": [ - "http://example.com/page1", - "http://example.org/page6", - "http://example.net/page4" - ] - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.nt deleted file mode 100644 index cb071e57376..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.nt +++ /dev/null @@ -1,14 +0,0 @@ -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/page1> . -<http://example.org/anno11> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno11> <http://www.w3.org/ns/oa#hasTarget> _:b1 . -<http://example.org/anno11> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno11> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.net/page4> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Composite> . -_:b1 <http://www.w3.org/ns/activitystreams#items> _:b2 . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/page6> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "These pages together provide evidence of the conspiracy" . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.json deleted file mode 100644 index a8039b207df..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno12", - "type": "Annotation", - "motivation": "tagging", - "body": { - "type": "TextualBody", - "value": "important" - }, - "target": { - "type": "List", - "items": [ - "http://example.com/book/page1", - "http://example.com/book/page2", - "http://example.com/book/page3", - "http://example.com/book/page4" - ] - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.nt deleted file mode 100644 index 5890c8b9957..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.nt +++ /dev/null @@ -1,16 +0,0 @@ -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "important" . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page4> . -_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -<http://example.org/anno12> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno12> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#tagging> . -<http://example.org/anno12> <http://www.w3.org/ns/oa#hasTarget> _:b1 . -<http://example.org/anno12> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page1> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page2> . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 . -_:b1 <http://www.w3.org/ns/activitystreams#items> _:b2 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#List> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page3> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b5 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.json deleted file mode 100644 index 8bf663330da..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno13", - "type": "Annotation", - "motivation": "classifying", - "body": "http://example.org/vocab/art/portrait", - "target": { - "type": "Independents", - "items": [ - "http://example.com/image1", - "http://example.net/image2", - "http://example.com/image4", - "http://example.org/image9" - ] - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.nt deleted file mode 100644 index e7544503ee9..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.nt +++ /dev/null @@ -1,14 +0,0 @@ -_:b0 <http://www.w3.org/ns/activitystreams#items> _:b1 . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Independents> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/image1> . -<http://example.org/anno13> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#classifying> . -<http://example.org/anno13> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno13> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno13> <http://www.w3.org/ns/oa#hasBody> <http://example.org/vocab/art/portrait> . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/image4> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.net/image2> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/image9> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.json deleted file mode 100644 index 102225b729e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno14", - "type": "Annotation", - "creator": "http://example.org/user1", - "created": "2015-01-28T12:00:00Z", - "modified": "2015-01-29T09:00:00Z", - "generator": "http://example.org/client1", - "generated": "2015-02-04T12:00:00Z", - "body": { - "id": "http://example.net/review1", - "creator": "http://example.net/user2", - "created": "2014-06-02T17:00:00Z" - }, - "target": "http://example.com/restaurant1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.nt deleted file mode 100644 index f37cb0d3a01..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.nt +++ /dev/null @@ -1,10 +0,0 @@ -<http://example.org/anno14> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno14> <http://purl.org/dc/terms/modified> "2015-01-29T09:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno14> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno14> <http://www.w3.org/ns/activitystreams#generator> <http://example.org/client1> . -<http://example.org/anno14> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/restaurant1> . -<http://example.org/anno14> <http://purl.org/dc/terms/created> "2015-01-28T12:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno14> <http://purl.org/dc/terms/issued> "2015-02-04T12:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno14> <http://purl.org/dc/terms/creator> <http://example.org/user1> . -<http://example.net/review1> <http://purl.org/dc/terms/creator> <http://example.net/user2> . -<http://example.net/review1> <http://purl.org/dc/terms/created> "2014-06-02T17:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.json deleted file mode 100644 index 1280eef4cd9..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno15", - "type": "Annotation", - "creator": { - "id": "http://example.org/user1", - "type": "Person", - "name": "My Pseudonym", - "nickname": "pseudo", - "email_sha1": "58bad08927902ff9307b621c54716dcc5083e339" - }, - "generator": { - "id": "http://example.org/client1", - "type": "Software", - "name": "Code v2.1", - "homepage": "http://example.org/client1/homepage1" - }, - "body": "http://example.net/review1", - "target": "http://example.com/restaurant1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.nt deleted file mode 100644 index 2afb3d2a2eb..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.nt +++ /dev/null @@ -1,12 +0,0 @@ -<http://example.org/user1> <http://xmlns.com/foaf/0.1/nick> "pseudo" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "58bad08927902ff9307b621c54716dcc5083e339" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/name> "My Pseudonym" . -<http://example.org/user1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . -<http://example.org/anno15> <http://purl.org/dc/terms/creator> <http://example.org/user1> . -<http://example.org/anno15> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/restaurant1> . -<http://example.org/anno15> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno15> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno15> <http://www.w3.org/ns/activitystreams#generator> <http://example.org/client1> . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/name> "Code v2.1" . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/homepage> <http://example.org/client1/homepage1> . -<http://example.org/client1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#Application> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.json deleted file mode 100644 index f110169c345..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno16", - "type": "Annotation", - "audience": { - "id": "http://example.edu/roles/teacher", - "type": "schema:EducationalAudience", - "schema:educationalRole": "teacher" - }, - "body": "http://example.net/classnotes1", - "target": "http://example.com/textbook1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.nt deleted file mode 100644 index b511107f61d..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.nt +++ /dev/null @@ -1,6 +0,0 @@ -<http://example.edu/roles/teacher> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/EducationalAudience> . -<http://example.edu/roles/teacher> <http://schema.org/educationalRole> "teacher" . -<http://example.org/anno16> <http://www.w3.org/ns/oa#hasBody> <http://example.net/classnotes1> . -<http://example.org/anno16> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno16> <http://schema.org/audience> <http://example.edu/roles/teacher> . -<http://example.org/anno16> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/textbook1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.json deleted file mode 100644 index 056b8e4f534..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno17", - "type": "Annotation", - "motivation": "commenting", - "body": "http://example.net/comment1", - "target": { - "id": "http://example.com/video1", - "type": "Video", - "accessibility": "captions" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.nt deleted file mode 100644 index ebfceb4e28e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.nt +++ /dev/null @@ -1,6 +0,0 @@ -<http://example.org/anno17> <http://www.w3.org/ns/oa#hasBody> <http://example.net/comment1> . -<http://example.org/anno17> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/video1> . -<http://example.org/anno17> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno17> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> . -<http://example.com/video1> <http://schema.org/accessibilityFeature> "captions" . -<http://example.com/video1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/MovingImage> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.json deleted file mode 100644 index cdf50fcd8f3..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno18", - "type": "Annotation", - "motivation": "bookmarking", - "body": [ - { - "type": "TextualBody", - "value": "readme", - "purpose": "tagging" - }, - { - "type": "TextualBody", - "value": "A good description of the topic that bears further investigation", - "purpose": "describing" - } - ], - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.nt deleted file mode 100644 index 2e4e05bf4dc..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.nt +++ /dev/null @@ -1,11 +0,0 @@ -<http://example.org/anno18> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno18> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/page1> . -<http://example.org/anno18> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#bookmarking> . -<http://example.org/anno18> <http://www.w3.org/ns/oa#hasBody> _:b1 . -<http://example.org/anno18> <http://www.w3.org/ns/oa#hasBody> _:b0 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "A good description of the topic that bears further investigation" . -_:b1 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "readme" . -_:b0 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#tagging> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.json deleted file mode 100644 index bd572ce6883..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno19", - "type": "Annotation", - "rights": "https://creativecommons.org/publicdomain/zero/1.0/", - "body": { - "id": "http://example.net/review1", - "rights": "http://creativecommons.org/licenses/by-nc/4.0/" - }, - "target": "http://example.com/product1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.nt deleted file mode 100644 index 11fa7ab215e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.nt +++ /dev/null @@ -1,5 +0,0 @@ -<http://example.net/review1> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by-nc/4.0/> . -<http://example.org/anno19> <http://purl.org/dc/terms/rights> <https://creativecommons.org/publicdomain/zero/1.0/> . -<http://example.org/anno19> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno19> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno19> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/product1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.json deleted file mode 100644 index f950f2db8d6..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno2", - "type": "Annotation", - "body": { - "id": "http://example.org/analysis1.mp3", - "format": "audio/mpeg", - "language": "fr" - }, - "target": { - "id": "http://example.gov/patent1.pdf", - "format": "application/pdf", - "language": ["en", "ar"], - "textDirection": "ltr", - "processingLanguage": "en" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.nt deleted file mode 100644 index b1377ef57e3..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.nt +++ /dev/null @@ -1,10 +0,0 @@ -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasTarget> <http://example.gov/patent1.pdf> . -<http://example.org/anno2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasBody> <http://example.org/analysis1.mp3> . -<http://example.org/analysis1.mp3> <http://purl.org/dc/elements/1.1/language> "fr" . -<http://example.org/analysis1.mp3> <http://purl.org/dc/elements/1.1/format> "audio/mpeg" . -<http://example.gov/patent1.pdf> <http://www.w3.org/ns/oa#processingLanguage> "en" . -<http://example.gov/patent1.pdf> <http://purl.org/dc/elements/1.1/language> "ar" . -<http://example.gov/patent1.pdf> <http://purl.org/dc/elements/1.1/language> "en" . -<http://example.gov/patent1.pdf> <http://www.w3.org/ns/oa#textDirection> <http://www.w3.org/ns/oa#ltrDirection> . -<http://example.gov/patent1.pdf> <http://purl.org/dc/elements/1.1/format> "application/pdf" . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.json deleted file mode 100644 index 17fcc7185a8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno20", - "type": "Annotation", - "canonical": "urn:uuid:dbfb1861-0ecf-41ad-be94-a584e5c4f1df", - "via": "http://other.example.org/anno1", - "body": { - "id": "http://example.net/review1", - "rights": "http://creativecommons.org/licenses/by/4.0/" - }, - "target": "http://example.com/product1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.nt deleted file mode 100644 index 465f79bc621..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.nt +++ /dev/null @@ -1,6 +0,0 @@ -<http://example.net/review1> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by/4.0/> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/product1> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#canonical> <urn:uuid:dbfb1861-0ecf-41ad-be94-a584e5c4f1df> . -<http://example.org/anno20> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#via> <http://other.example.org/anno1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.json deleted file mode 100644 index 9ae284df040..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno21", - "type": "Annotation", - "body": { - "type": "SpecificResource", - "purpose": "tagging", - "source": "http://example.org/city1" - }, - "target": { - "id": "http://example.org/photo1", - "type": "Image" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.nt deleted file mode 100644 index cc028dce7c7..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.nt +++ /dev/null @@ -1,7 +0,0 @@ -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SpecificResource> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/city1> . -_:b0 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#tagging> . -<http://example.org/anno21> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno21> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno21> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/photo1> . -<http://example.org/photo1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/StillImage> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.json deleted file mode 100644 index 767080c05e8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno22", - "type": "Annotation", - "body": { - "source": "http://example.org/page1", - "selector": "http://example.org/paraselector1" - }, - "target": { - "source": "http://example.com/dataset1", - "selector": "http://example.org/dataselector1" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.nt deleted file mode 100644 index 4a2e4b5978c..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.nt +++ /dev/null @@ -1,7 +0,0 @@ -_:b0 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/paraselector1> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -<http://example.org/anno22> <http://www.w3.org/ns/oa#hasTarget> _:b1 . -<http://example.org/anno22> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno22> <http://www.w3.org/ns/oa#hasBody> _:b0 . -_:b1 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/dataselector1> . -_:b1 <http://www.w3.org/ns/oa#hasSource> <http://example.com/dataset1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.json deleted file mode 100644 index 53b6c676b15..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno23", - "type": "Annotation", - "body": { - "source": "http://example.org/video1", - "purpose": "describing", - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "t=30,60" - } - }, - "target": "http://example.org/image1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.nt deleted file mode 100644 index 9bfe050b030..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.nt +++ /dev/null @@ -1,9 +0,0 @@ -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -_:b1 <http://purl.org/dc/terms/conformsTo> <http://www.w3.org/TR/media-frags/> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "t=30,60" . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b0 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/video1> . -<http://example.org/anno23> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/image1> . -<http://example.org/anno23> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno23> <http://www.w3.org/ns/oa#hasBody> _:b0 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.json deleted file mode 100644 index 6cca6cb0a6d..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno24", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1.html", - "selector": { - "type": "CssSelector", - "value": "#elemid > .elemclass + p" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.nt deleted file mode 100644 index 090cad89c92..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.nt +++ /dev/null @@ -1,7 +0,0 @@ -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1.html> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#CssSelector> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "#elemid > .elemclass + p" . -<http://example.org/anno24> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno24> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno24> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.json deleted file mode 100644 index 0e48d3be6a9..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno25", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1.html", - "selector": { - "type": "XPathSelector", - "value": "/html/body/p[2]/table/tr[2]/td[3]/span" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.nt deleted file mode 100644 index 5bd4b28c5da..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.nt +++ /dev/null @@ -1,7 +0,0 @@ -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#XPathSelector> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "/html/body/p[2]/table/tr[2]/td[3]/span" . -<http://example.org/anno25> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno25> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno25> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1.html> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.json deleted file mode 100644 index 1777fd781b8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno26", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/page1", - "selector": { - "type": "TextQuoteSelector", - "exact": "anotation", - "prefix": "this is an ", - "suffix": " that has some" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.nt deleted file mode 100644 index 9ecd4318390..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.nt +++ /dev/null @@ -1,9 +0,0 @@ -_:b1 <http://www.w3.org/ns/oa#prefix> "this is an " . -_:b1 <http://www.w3.org/ns/oa#exact> "anotation" . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextQuoteSelector> . -_:b1 <http://www.w3.org/ns/oa#suffix> " that has some" . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -<http://example.org/anno26> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/anno26> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno26> <http://www.w3.org/ns/oa#hasTarget> _:b0 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.json deleted file mode 100644 index 4844979a241..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno27", - "type": "Annotation", - "body": "http://example.org/review1", - "target": { - "source": "http://example.org/ebook1", - "selector": { - "type": "TextPositionSelector", - "start": 412, - "end": 795 - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.nt deleted file mode 100644 index 68df84db6a2..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.nt +++ /dev/null @@ -1,8 +0,0 @@ -<http://example.org/anno27> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno27> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno27> <http://www.w3.org/ns/oa#hasBody> <http://example.org/review1> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextPositionSelector> . -_:b1 <http://www.w3.org/ns/oa#start> "412"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b1 <http://www.w3.org/ns/oa#end> "795"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/ebook1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.json deleted file mode 100644 index 2dd1bc7afcc..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno28", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/diskimg1", - "selector": { - "type": "DataPositionSelector", - "start": 4096, - "end": 4104 - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.nt deleted file mode 100644 index e84bcb2400f..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.nt +++ /dev/null @@ -1,8 +0,0 @@ -_:b1 <http://www.w3.org/ns/oa#end> "4104"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#DataPositionSelector> . -_:b1 <http://www.w3.org/ns/oa#start> "4096"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/diskimg1> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -<http://example.org/anno28> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno28> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno28> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.json deleted file mode 100644 index 77914acaeb2..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno29", - "type": "Annotation", - "body": "http://example.org/road1", - "target": { - "source": "http://example.org/map1", - "selector": { - "id": "http://example.org/svg1", - "type": "SvgSelector" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.nt deleted file mode 100644 index 79178d342e5..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.nt +++ /dev/null @@ -1,6 +0,0 @@ -<http://example.org/svg1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SvgSelector> . -<http://example.org/anno29> <http://www.w3.org/ns/oa#hasBody> <http://example.org/road1> . -<http://example.org/anno29> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno29> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/map1> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/svg1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.json deleted file mode 100644 index 548825c76bc..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno3", - "type": "Annotation", - "body": { - "id": "http://example.org/video1", - "type": "Video" - }, - "target": { - "id": "http://example.org/website1", - "type": "Text" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.nt deleted file mode 100644 index 87a7767c9c4..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.nt +++ /dev/null @@ -1,5 +0,0 @@ -<http://example.org/website1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/Text> . -<http://example.org/video1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/MovingImage> . -<http://example.org/anno3> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/website1> . -<http://example.org/anno3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno3> <http://www.w3.org/ns/oa#hasBody> <http://example.org/video1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.json deleted file mode 100644 index 1a7619afc1e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno30", - "type": "Annotation", - "body": "http://example.org/road1", - "target": { - "source": "http://example.org/map1", - "selector": { - "type": "SvgSelector", - "value": "<svg:svg> ... </svg:svg>" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.nt deleted file mode 100644 index 7889db4bb16..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.nt +++ /dev/null @@ -1,7 +0,0 @@ -<http://example.org/anno30> <http://www.w3.org/ns/oa#hasBody> <http://example.org/road1> . -<http://example.org/anno30> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno30> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/map1> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "<svg:svg> ... </svg:svg>" . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SvgSelector> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.json deleted file mode 100644 index ee6902c3968..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno31", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/page1.html", - "selector": { - "type": "RangeSelector", - "startSelector": { - "type": "XPathSelector", - "value": "//table[1]/tr[1]/td[2]" - }, - "endSelector": { - "type": "XPathSelector", - "value": "//table[1]/tr[1]/td[4]" - } - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.nt deleted file mode 100644 index efb8e991e87..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.nt +++ /dev/null @@ -1,12 +0,0 @@ -_:b1 <http://www.w3.org/ns/oa#hasEndSelector> _:b3 . -_:b1 <http://www.w3.org/ns/oa#hasStartSelector> _:b2 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#RangeSelector> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1.html> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "//table[1]/tr[1]/td[4]" . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#XPathSelector> . -<http://example.org/anno31> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno31> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno31> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "//table[1]/tr[1]/td[2]" . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#XPathSelector> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.json deleted file mode 100644 index f7c189ceb63..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno32", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/page1", - "selector": { - "type": "FragmentSelector", - "value": "para5", - "refinedBy": { - "type": "TextQuoteSelector", - "exact": "Selected Text", - "prefix": "text before the ", - "suffix": " and text after it" - } - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.nt deleted file mode 100644 index 7ffcc146c13..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.nt +++ /dev/null @@ -1,12 +0,0 @@ -<http://example.org/anno32> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno32> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/anno32> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> _:b1 . -_:b2 <http://www.w3.org/ns/oa#suffix> " and text after it" . -_:b2 <http://www.w3.org/ns/oa#prefix> "text before the " . -_:b2 <http://www.w3.org/ns/oa#exact> "Selected Text" . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextQuoteSelector> . -_:b1 <http://www.w3.org/ns/oa#refinedBy> _:b2 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "para5" . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.json deleted file mode 100644 index f2866eef56e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno33", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1", - "state": { - "id": "http://example.org/state1" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.nt deleted file mode 100644 index cc71ce37b60..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.nt +++ /dev/null @@ -1,5 +0,0 @@ -_:b0 <http://www.w3.org/ns/oa#hasState> <http://example.org/state1> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -<http://example.org/anno33> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno33> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -<http://example.org/anno33> <http://www.w3.org/ns/oa#hasTarget> _:b0 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.json deleted file mode 100644 index c3df38c2823..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno34", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1", - "state": { - "type": "TimeState", - "cached": "http://archive.example.org/copy1", - "sourceDate": "2015-07-20T13:30:00Z" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.nt deleted file mode 100644 index 040a1c755fc..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.nt +++ /dev/null @@ -1,8 +0,0 @@ -<http://example.org/anno34> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno34> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno34> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -_:b0 <http://www.w3.org/ns/oa#hasState> _:b1 . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b1 <http://www.w3.org/ns/oa#sourceDate> "2015-07-20T13:30:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TimeState> . -_:b1 <http://www.w3.org/ns/oa#cachedSource> <http://archive.example.org/copy1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.json deleted file mode 100644 index 39050abb133..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno35", - "type": "Annotation", - "body": "http://example.org/description1", - "target": { - "source": "http://example.org/resource1", - "state": { - "type": "HttpRequestState", - "value": "Accept: application/pdf" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.nt deleted file mode 100644 index 9d528523afa..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.nt +++ /dev/null @@ -1,7 +0,0 @@ -_:b0 <http://www.w3.org/ns/oa#hasState> _:b1 . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/resource1> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#HttpRequestState> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Accept: application/pdf" . -<http://example.org/anno35> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno35> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno35> <http://www.w3.org/ns/oa#hasBody> <http://example.org/description1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.json deleted file mode 100644 index 77581efb3df..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno36", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/ebook1", - "state": { - "type": "TimeState", - "sourceDate": "2016-02-01T12:05:23Z", - "refinedBy": { - "type": "HttpRequestState", - "value": "Accept: application/pdf", - "refinedBy": { - "type": "FragmentSelector", - "value": "page=10", - "conformsTo": "http://tools.ietf.org/rfc/rfc3778" - } - } - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.nt deleted file mode 100644 index aa27b88d835..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.nt +++ /dev/null @@ -1,14 +0,0 @@ -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#HttpRequestState> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Accept: application/pdf" . -_:b2 <http://www.w3.org/ns/oa#refinedBy> _:b3 . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/ebook1> . -_:b0 <http://www.w3.org/ns/oa#hasState> _:b1 . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "page=10" . -_:b3 <http://purl.org/dc/terms/conformsTo> <http://tools.ietf.org/rfc/rfc3778> . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -_:b1 <http://www.w3.org/ns/oa#sourceDate> "2016-02-01T12:05:23Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TimeState> . -_:b1 <http://www.w3.org/ns/oa#refinedBy> _:b2 . -<http://example.org/anno36> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno36> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/anno36> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.json deleted file mode 100644 index 96796db9a0b..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno37", - "type": "Annotation", - "stylesheet": "http://example.org/style1", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/document1", - "styleClass": "red" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.nt deleted file mode 100644 index 6b03f75dc6f..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.nt +++ /dev/null @@ -1,6 +0,0 @@ -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/document1> . -_:b0 <http://www.w3.org/ns/oa#styleClass> "red" . -<http://example.org/anno37> <http://www.w3.org/ns/oa#styledBy> <http://example.org/style1> . -<http://example.org/anno37> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno37> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/anno37> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.json deleted file mode 100644 index 67f24b80eae..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno38", - "type": "Annotation", - "stylesheet": { - "type": "CssStylesheet", - "value": ".red { color: red }" - }, - "body": "http://example.org/body1", - "target": { - "source": "http://example.org/target1", - "styleClass": "red" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.nt deleted file mode 100644 index 0a05adbd1ba..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.nt +++ /dev/null @@ -1,8 +0,0 @@ -_:b1 <http://www.w3.org/ns/oa#styleClass> "red" . -_:b1 <http://www.w3.org/ns/oa#hasSource> <http://example.org/target1> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#CssStyle> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> ".red { color: red }" . -<http://example.org/anno38> <http://www.w3.org/ns/oa#styledBy> _:b0 . -<http://example.org/anno38> <http://www.w3.org/ns/oa#hasBody> <http://example.org/body1> . -<http://example.org/anno38> <http://www.w3.org/ns/oa#hasTarget> _:b1 . -<http://example.org/anno38> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.json deleted file mode 100644 index 27e639cd343..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno39", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.edu/article.pdf", - "selector": "http://example.org/selectors/html-selector1", - "renderedVia": { - "id": "http://example.com/pdf-to-html-library", - "type": "Software", - "schema:softwareVersion": "2.5" - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.nt deleted file mode 100644 index 8905e96cdad..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.nt +++ /dev/null @@ -1,8 +0,0 @@ -<http://example.org/anno39> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno39> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/anno39> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.com/pdf-to-html-library> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#Application> . -<http://example.com/pdf-to-html-library> <http://schema.org/softwareVersion> "2.5" . -_:b0 <http://www.w3.org/ns/oa#renderedVia> <http://example.com/pdf-to-html-library> . -_:b0 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/selectors/html-selector1> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.edu/article.pdf> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.json deleted file mode 100644 index 5655fb39e13..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno4", - "type": "Annotation", - "body": "http://example.org/description1", - "target": { - "id": "http://example.com/image1#xywh=100,100,300,300", - "type": "Image", - "format": "image/jpeg" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.nt deleted file mode 100644 index 32f8137b386..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.nt +++ /dev/null @@ -1,5 +0,0 @@ -<http://example.org/anno4> <http://www.w3.org/ns/oa#hasBody> <http://example.org/description1> . -<http://example.org/anno4> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/image1#xywh=100,100,300,300> . -<http://example.org/anno4> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.com/image1#xywh=100,100,300,300> <http://purl.org/dc/elements/1.1/format> "image/jpeg" . -<http://example.com/image1#xywh=100,100,300,300> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/StillImage> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.json deleted file mode 100644 index 63b47f145c8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno40", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/image1", - "scope": "http://example.org/page1" - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.nt deleted file mode 100644 index 6afaad5a700..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.nt +++ /dev/null @@ -1,5 +0,0 @@ -<http://example.org/anno40> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno40> <http://www.w3.org/ns/oa#hasTarget> _:b0 . -<http://example.org/anno40> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -_:b0 <http://www.w3.org/ns/oa#hasSource> <http://example.org/image1> . -_:b0 <http://www.w3.org/ns/oa#hasScope> <http://example.org/page1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.json deleted file mode 100644 index 80afc748948..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno41", - "type": "Annotation", - "motivation": "commenting", - "creator": { - "id": "http://example.org/user1", - "type": "Person", - "name": "A. Person", - "nickname": "user1" - }, - "created": "2015-10-13T13:00:00Z", - "generator": { - "id": "http://example.org/client1", - "type": "Software", - "name": "Code v2.1", - "homepage": "http://example.org/homepage1" - }, - "generated": "2015-10-14T15:13:28Z", - "stylesheet": { - "id": "http://example.org/stylesheet1", - "type": "CssStylesheet" - }, - "body": [ - { - "type": "TextualBody", - "purpose": "tagging", - "value": "love" - }, - { - "type": "Choice", - "items": [ - { - "type": "TextualBody", - "purpose": "describing", - "value": "I really love this particular bit of text in this XML. No really.", - "format": "text/plain", - "language": "en", - "creator": "http://example.org/user1" - }, - { - "type": "SpecificResource", - "purpose": "describing", - "source": { - "id": "http://example.org/comment1", - "type": "Audio", - "format": "audio/mpeg", - "language": "de", - "creator": { - "id": "http://example.org/user2", - "type": "Person" - } - } - } - ] - } - ], - "target": { - "type": "SpecificResource", - "styleClass": "mystyle", - "source": "http://example.com/document1", - "state": [ - { - "type": "HttpRequestState", - "value": "Accept: application/xml", - "refinedBy": { - "type": "TimeState", - "sourceDate": "2015-09-25T12:00:00Z" - } - } - ], - "selector": { - "type": "FragmentSelector", - "value": "xpointer(/doc/body/section[2]/para[1])", - "refinedBy": { - "type": "TextPositionSelector", - "start": 6, - "end": 27 - } - } - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.nt deleted file mode 100644 index 5d5122e7d2d..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.nt +++ /dev/null @@ -1,56 +0,0 @@ -<http://example.org/user1> <http://xmlns.com/foaf/0.1/nick> "user1" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/name> "A. Person" . -<http://example.org/user1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . -_:b10 <http://www.w3.org/ns/oa#start> "6"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b10 <http://www.w3.org/ns/oa#end> "27"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextPositionSelector> . -<http://example.org/stylesheet1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#CssStyle> . -<http://example.org/comment1> <http://purl.org/dc/elements/1.1/language> "de" . -<http://example.org/comment1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/Sound> . -<http://example.org/comment1> <http://purl.org/dc/terms/creator> <http://example.org/user2> . -<http://example.org/comment1> <http://purl.org/dc/elements/1.1/format> "audio/mpeg" . -_:b7 <http://www.w3.org/ns/oa#refinedBy> _:b8 . -_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#HttpRequestState> . -_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Accept: application/xml" . -_:b3 <http://purl.org/dc/elements/1.1/language> "en" . -_:b3 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b3 <http://purl.org/dc/terms/creator> <http://example.org/user1> . -_:b3 <http://purl.org/dc/elements/1.1/format> "text/plain" . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "I really love this particular bit of text in this XML. No really." . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b3 . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Choice> . -_:b1 <http://www.w3.org/ns/activitystreams#items> _:b2 . -_:b5 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b5 <http://www.w3.org/ns/oa#hasSource> <http://example.org/comment1> . -_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SpecificResource> . -<http://example.org/anno41> <http://purl.org/dc/terms/created> "2015-10-13T13:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#hasBody> _:b1 . -<http://example.org/anno41> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno41> <http://www.w3.org/ns/oa#styledBy> <http://example.org/stylesheet1> . -<http://example.org/anno41> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno41> <http://purl.org/dc/terms/issued> "2015-10-14T15:13:28Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno41> <http://purl.org/dc/terms/creator> <http://example.org/user1> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> . -<http://example.org/anno41> <http://www.w3.org/ns/activitystreams#generator> <http://example.org/client1> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#hasTarget> _:b6 . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b5 . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b9 <http://www.w3.org/ns/oa#refinedBy> _:b10 . -_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "xpointer(/doc/body/section[2]/para[1])" . -_:b0 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#tagging> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "love" . -<http://example.org/user2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/name> "Code v2.1" . -<http://example.org/client1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#Application> . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/homepage> <http://example.org/homepage1> . -_:b8 <http://www.w3.org/ns/oa#sourceDate> "2015-09-25T12:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TimeState> . -_:b6 <http://www.w3.org/ns/oa#styleClass> "mystyle" . -_:b6 <http://www.w3.org/ns/oa#hasSelector> _:b9 . -_:b6 <http://www.w3.org/ns/oa#hasSource> <http://example.com/document1> . -_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SpecificResource> . -_:b6 <http://www.w3.org/ns/oa#hasState> _:b7 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.json deleted file mode 100644 index 85532e87850..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno5", - "type":"Annotation", - "body": { - "type" : "TextualBody", - "value" : "<p>j'adore !</p>", - "format" : "text/html", - "language" : "fr" - }, - "target": "http://example.org/photo1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.nt deleted file mode 100644 index cb0359fd2a5..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.nt +++ /dev/null @@ -1,7 +0,0 @@ -<http://example.org/anno5> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno5> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno5> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/photo1> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b0 <http://purl.org/dc/elements/1.1/format> "text/html" . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "<p>j'adore !</p>" . -_:b0 <http://purl.org/dc/elements/1.1/language> "fr" . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.json deleted file mode 100644 index 9ae0d88eaee..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno6", - "type":"Annotation", - "bodyValue": "Comment text", - "target": "http://example.org/target1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.nt deleted file mode 100644 index 4d99f2a8ced..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.nt +++ /dev/null @@ -1,3 +0,0 @@ -<http://example.org/anno6> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/target1> . -<http://example.org/anno6> <http://www.w3.org/ns/oa#bodyValue> "Comment text" . -<http://example.org/anno6> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.json deleted file mode 100644 index 9f821d22fb2..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno7", - "type":"Annotation", - "body": { - "type": "TextualBody", - "value": "Comment text", - "format": "text/plain" - }, - "target": "http://example.org/target1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.nt deleted file mode 100644 index 79707fade81..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.nt +++ /dev/null @@ -1,6 +0,0 @@ -<http://example.org/anno7> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/target1> . -<http://example.org/anno7> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno7> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Comment text" . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b0 <http://purl.org/dc/elements/1.1/format> "text/plain" . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.json deleted file mode 100644 index 3187af65746..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno8", - "type": "Annotation", - "target": "http://example.org/ebook1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.nt deleted file mode 100644 index 72188231a95..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.nt +++ /dev/null @@ -1,2 +0,0 @@ -<http://example.org/anno8> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno8> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/ebook1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.json deleted file mode 100644 index 8d72da3563f..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/anno9", - "type": "Annotation", - "body": [ - "http://example.org/description1", - { - "type": "TextualBody", - "value": "tag1" - } - ], - "target": [ - "http://example.org/image1", - "http://example.org/image2" - ] -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.nt deleted file mode 100644 index 16f583209b5..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.nt +++ /dev/null @@ -1,7 +0,0 @@ -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "tag1" . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasBody> <http://example.org/description1> . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasBody> _:b0 . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/image2> . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/image1> . -<http://example.org/anno9> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.json deleted file mode 100644 index e3a5d80c129..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.json +++ /dev/null @@ -1,618 +0,0 @@ - -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/collection1", - "type": "AnnotationCollection", - "creator": "http://www.w3.org/", - "label": "Annotation Examples", - "total": 41, - "first": { - "id": "http://example.org/collection1/page1", - "type": "AnnotationPage", - "startIndex": 0, - "items": [ - { - "id": "http://example.org/anno1", - "type": "Annotation", - "body": "http://example.org/post1", - "target": "http://example.com/page1" - }, - { - "id": "http://example.org/anno2", - "type": "Annotation", - "body": { - "id": "http://example.org/analysis1.mp3", - "format": "audio/mpeg", - "language": "fr" - }, - "target": { - "id": "http://example.gov/patent1.pdf", - "format": "application/pdf", - "language": ["en", "ar"], - "textDirection": "ltr", - "processingLanguage": "en" - } - }, - { - "id": "http://example.org/anno3", - "type": "Annotation", - "body": { - "id": "http://example.org/video1", - "type": "Video" - }, - "target": { - "id": "http://example.org/website1", - "type": "Text" - } - }, - { - "id": "http://example.org/anno4", - "type": "Annotation", - "body": "http://example.org/description1", - "target": { - "id": "http://example.com/image1#xywh=100,100,300,300", - "type": "Image", - "format": "image/jpeg" - } - }, - { - "id": "http://example.org/anno5", - "type":"Annotation", - "body": { - "type" : "TextualBody", - "value" : "<p>j'adore !</p>", - "format" : "text/html", - "language" : "fr" - }, - "target": "http://example.org/photo1" - }, - { - "id": "http://example.org/anno6", - "type":"Annotation", - "bodyValue": "Comment text", - "target": "http://example.org/target1" - }, - { - "id": "http://example.org/anno7", - "type":"Annotation", - "body": { - "type": "TextualBody", - "value": "Comment text", - "format": "text/plain" - }, - "target": "http://example.org/target1" - }, - { - "id": "http://example.org/anno8", - "type": "Annotation", - "target": "http://example.org/ebook1" - }, - { - "id": "http://example.org/anno9", - "type": "Annotation", - "body": [ - "http://example.org/description1", - { - "type": "TextualBody", - "value": "tag1" - } - ], - "target": [ - "http://example.org/image1", - "http://example.org/image2" - ] - }, - { - "id": "http://example.org/anno10", - "type": "Annotation", - "body": { - "type": "Choice", - "items": [ - { - "id": "http://example.org/note1", - "language": "en" - }, - { - "id": "http://example.org/note2", - "language": "fr" - } - ] - }, - "target": "http://example.org/website1" - }, - { - "id": "http://example.org/anno11", - "type": "Annotation", - "motivation": "commenting", - "body": { - "type": "TextualBody", - "value": "These pages together provide evidence of the conspiracy" - }, - "target": { - "type": "Composite", - "items": [ - "http://example.com/page1", - "http://example.org/page6", - "http://example.net/page4" - ] - } - }, - { - "id": "http://example.org/anno12", - "type": "Annotation", - "motivation": "tagging", - "body": { - "type": "TextualBody", - "value": "important" - }, - "target": { - "type": "List", - "items": [ - "http://example.com/book/page1", - "http://example.com/book/page2", - "http://example.com/book/page3", - "http://example.com/book/page4" - ] - } - }, - { - "id": "http://example.org/anno13", - "type": "Annotation", - "motivation": "classifying", - "body": "http://example.org/vocab/art/portrait", - "target": { - "type": "Independents", - "items": [ - "http://example.com/image1", - "http://example.net/image2", - "http://example.com/image4", - "http://example.org/image9" - ] - } - }, - { - "id": "http://example.org/anno14", - "type": "Annotation", - "creator": "http://example.org/user1", - "created": "2015-01-28T12:00:00Z", - "modified": "2015-01-29T09:00:00Z", - "generator": "http://example.org/client1", - "generated": "2015-02-04T12:00:00Z", - "body": { - "id": "http://example.net/review1", - "creator": "http://example.net/user2", - "created": "2014-06-02T17:00:00Z" - }, - "target": "http://example.com/restaurant1" - }, - { - "id": "http://example.org/anno15", - "type": "Annotation", - "creator": { - "id": "http://example.org/user1", - "type": "Person", - "name": "My Pseudonym", - "nickname": "pseudo", - "email_sha1": "58bad08927902ff9307b621c54716dcc5083e339" - }, - "generator": { - "id": "http://example.org/client1", - "type": "Software", - "name": "Code v2.1", - "homepage": "http://example.org/client1/homepage1" - }, - "body": "http://example.net/review1", - "target": "http://example.com/restaurant1" - }, - { - "id": "http://example.org/anno16", - "type": "Annotation", - "audience": { - "id": "http://example.edu/roles/teacher", - "type": "schema:EducationalAudience", - "schema:educationalRole": "teacher" - }, - "body": "http://example.net/classnotes1", - "target": "http://example.com/textbook1" - }, - { - "id": "http://example.org/anno17", - "type": "Annotation", - "motivation": "commenting", - "body": "http://example.net/comment1", - "target": { - "id": "http://example.com/video1", - "type": "Video", - "accessibility": "captions" - } - }, - { - "id": "http://example.org/anno18", - "type": "Annotation", - "motivation": "bookmarking", - "body": [ - { - "type": "TextualBody", - "value": "readme", - "purpose": "tagging" - }, - { - "type": "TextualBody", - "value": "A good description of the topic that bears further investigation", - "purpose": "describing" - } - ], - "target": "http://example.com/page1" - }, - { - "id": "http://example.org/anno19", - "type": "Annotation", - "rights": "https://creativecommons.org/publicdomain/zero/1.0/", - "body": { - "id": "http://example.net/review1", - "rights": "http://creativecommons.org/licenses/by-nc/4.0/" - }, - "target": "http://example.com/product1" - }, - { - "id": "http://example.org/anno20", - "type": "Annotation", - "canonical": "urn:uuid:dbfb1861-0ecf-41ad-be94-a584e5c4f1df", - "via": "http://other.example.org/anno1", - "body": { - "id": "http://example.net/review1", - "rights": "http://creativecommons.org/licenses/by/4.0/" - }, - "target": "http://example.com/product1" - }, - { - "id": "http://example.org/anno21", - "type": "Annotation", - "body": { - "type": "SpecificResource", - "purpose": "tagging", - "source": "http://example.org/city1" - }, - "target": { - "id": "http://example.org/photo1", - "type": "Image" - } - }, - { - "id": "http://example.org/anno22", - "type": "Annotation", - "body": { - "source": "http://example.org/page1", - "selector": "http://example.org/paraselector1" - }, - "target": { - "source": "http://example.com/dataset1", - "selector": "http://example.org/dataselector1" - } - }, - { - "id": "http://example.org/anno23", - "type": "Annotation", - "body": { - "source": "http://example.org/video1", - "purpose": "describing", - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "t=30,60" - } - }, - "target": "http://example.org/image1" - }, - { - "id": "http://example.org/anno24", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1.html", - "selector": { - "type": "CssSelector", - "value": "#elemid > .elemclass + p" - } - } - }, - { - "id": "http://example.org/anno25", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1.html", - "selector": { - "type": "XPathSelector", - "value": "/html/body/p[2]/table/tr[2]/td[3]/span" - } - } - }, - { - "id": "http://example.org/anno26", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/page1", - "selector": { - "type": "TextQuoteSelector", - "exact": "anotation", - "prefix": "this is an ", - "suffix": " that has some" - } - } - }, - { - "id": "http://example.org/anno27", - "type": "Annotation", - "body": "http://example.org/review1", - "target": { - "source": "http://example.org/ebook1", - "selector": { - "type": "TextPositionSelector", - "start": 412, - "end": 795 - } - } - }, - { - "id": "http://example.org/anno28", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/diskimg1", - "selector": { - "type": "DataPositionSelector", - "start": 4096, - "end": 4104 - } - } - }, - { - "id": "http://example.org/anno29", - "type": "Annotation", - "body": "http://example.org/road1", - "target": { - "source": "http://example.org/map1", - "selector": { - "id": "http://example.org/svg1", - "type": "SvgSelector" - } - } - }, - { - "id": "http://example.org/anno30", - "type": "Annotation", - "body": "http://example.org/road1", - "target": { - "source": "http://example.org/map1", - "selector": { - "type": "SvgSelector", - "value": "<svg:svg> ... </svg:svg>" - } - } - }, - { - "id": "http://example.org/anno31", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/page1.html", - "selector": { - "type": "RangeSelector", - "startSelector": { - "type": "XPathSelector", - "value": "//table[1]/tr[1]/td[2]" - }, - "endSelector": { - "type": "XPathSelector", - "value": "//table[1]/tr[1]/td[4]" - } - } - } - }, - { - "id": "http://example.org/anno32", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/page1", - "selector": { - "type": "FragmentSelector", - "value": "para5", - "refinedBy": { - "type": "TextQuoteSelector", - "exact": "Selected Text", - "prefix": "text before the ", - "suffix": " and text after it" - } - } - } - }, - { - "id": "http://example.org/anno33", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1", - "state": { - "id": "http://example.org/state1" - } - } - }, - { - "id": "http://example.org/anno34", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/page1", - "state": { - "type": "TimeState", - "cached": "http://archive.example.org/copy1", - "sourceDate": "2015-07-20T13:30:00Z" - } - } - }, - { - "id": "http://example.org/anno35", - "type": "Annotation", - "body": "http://example.org/description1", - "target": { - "source": "http://example.org/resource1", - "state": { - "type": "HttpRequestState", - "value": "Accept: application/pdf" - } - } - }, - { - "id": "http://example.org/anno36", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/ebook1", - "state": { - "type": "TimeState", - "sourceDate": "2016-02-01T12:05:23Z", - "refinedBy": { - "type": "HttpRequestState", - "value": "Accept: application/pdf", - "refinedBy": { - "type": "FragmentSelector", - "value": "page=10", - "conformsTo": "http://tools.ietf.org/rfc/rfc3778" - } - } - } - } - }, - { - "id": "http://example.org/anno37", - "type": "Annotation", - "stylesheet": "http://example.org/style1", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.org/document1", - "styleClass": "red" - } - }, - { - "id": "http://example.org/anno38", - "type": "Annotation", - "stylesheet": { - "type": "CssStylesheet", - "value": ".red { color: red }" - }, - "body": "http://example.org/body1", - "target": { - "source": "http://example.org/target1", - "styleClass": "red" - } - }, - { - "id": "http://example.org/anno39", - "type": "Annotation", - "body": "http://example.org/comment1", - "target": { - "source": "http://example.edu/article.pdf", - "selector": "http://example.org/selectors/html-selector1", - "renderedVia": { - "id": "http://example.com/pdf-to-html-library", - "type": "Software", - "schema:softwareVersion": "2.5" - } - } - }, - { - "id": "http://example.org/anno40", - "type": "Annotation", - "body": "http://example.org/note1", - "target": { - "source": "http://example.org/image1", - "scope": "http://example.org/page1" - } - }, - { - "id": "http://example.org/anno41", - "type": "Annotation", - "motivation": "commenting", - "creator": { - "id": "http://example.org/user1", - "type": "Person", - "name": "A. Person", - "nickname": "user1" - }, - "created": "2015-10-13T13:00:00Z", - "generator": { - "id": "http://example.org/client1", - "type": "Software", - "name": "Code v2.1", - "homepage": "http://example.org/homepage1" - }, - "generated": "2015-10-14T15:13:28Z", - "stylesheet": { - "id": "http://example.org/stylesheet1", - "type": "CssStylesheet" - }, - "body": [ - { - "type": "TextualBody", - "purpose": "tagging", - "value": "love" - }, - { - "type": "Choice", - "items": [ - { - "type": "TextualBody", - "purpose": "describing", - "value": "I really love this particular bit of text in this XML. No really.", - "format": "text/plain", - "language": "en", - "creator": "http://example.org/user1" - }, - { - "type": "SpecificResource", - "purpose": "describing", - "source": { - "id": "http://example.org/comment1", - "type": "Audio", - "format": "audio/mpeg", - "language": "de", - "creator": { - "id": "http://example.org/user2", - "type": "Person" - } - } - } - ] - } - ], - "target": { - "type": "SpecificResource", - "styleClass": "mystyle", - "source": "http://example.com/document1", - "state": [ - { - "type": "HttpRequestState", - "value": "Accept: application/xml", - "refinedBy": { - "type": "TimeState", - "sourceDate": "2015-09-25T12:00:00Z" - } - } - ], - "selector": { - "type": "FragmentSelector", - "value": "xpointer(/doc/body/section[2]/para[1])", - "refinedBy": { - "type": "TextPositionSelector", - "start": 6, - "end": 27 - } - } - } - } - ] - } -} diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.nt deleted file mode 100644 index 4aa2fc29e34..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.nt +++ /dev/null @@ -1,462 +0,0 @@ -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno4> . -_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 . -<http://example.org/anno11> <http://www.w3.org/ns/oa#hasTarget> _:b18 . -<http://example.org/anno11> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> . -<http://example.org/anno11> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno11> <http://www.w3.org/ns/oa#hasBody> _:b17 . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno5> . -_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b6 . -_:b37 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno16> . -_:b37 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b38 . -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/page1> . -<http://example.org/anno1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasBody> <http://example.org/post1> . -_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno6> . -_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b7 . -_:b15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/note2> . -_:b15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno2> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 . -_:b17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "These pages together provide evidence of the conspiracy" . -_:b17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b35 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno14> . -_:b35 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b36 . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/image2> . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/image1> . -<http://example.org/anno9> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasBody> <http://example.org/description1> . -<http://example.org/anno9> <http://www.w3.org/ns/oa#hasBody> _:b11 . -<http://example.org/anno13> <http://www.w3.org/ns/oa#hasTarget> _:b30 . -<http://example.org/anno13> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#classifying> . -<http://example.org/anno13> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno13> <http://www.w3.org/ns/oa#hasBody> <http://example.org/vocab/art/portrait> . -_:b23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "important" . -_:b23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -<http://example.org/anno7> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/target1> . -<http://example.org/anno7> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno7> <http://www.w3.org/ns/oa#hasBody> _:b8 . -<http://example.org/anno3> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/website1> . -<http://example.org/anno3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno3> <http://www.w3.org/ns/oa#hasBody> <http://example.org/video1> . -_:b31 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/image1> . -_:b31 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b32 . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno3> . -_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/homepage> <http://example.org/client1/homepage1> . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/homepage> <http://example.org/homepage1> . -<http://example.org/client1> <http://xmlns.com/foaf/0.1/name> "Code v2.1" . -<http://example.org/client1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#Application> . -<http://example.org/note1> <http://purl.org/dc/elements/1.1/language> "en" . -<http://example.org/video1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/MovingImage> . -_:b5 <http://purl.org/dc/elements/1.1/language> "fr" . -_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "<p>j'adore !</p>" . -_:b5 <http://purl.org/dc/elements/1.1/format> "text/html" . -_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno1> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b1 . -_:b60 <http://www.w3.org/ns/oa#prefix> "this is an " . -_:b60 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextQuoteSelector> . -_:b60 <http://www.w3.org/ns/oa#exact> "anotation" . -_:b60 <http://www.w3.org/ns/oa#suffix> " that has some" . -_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Comment text" . -_:b8 <http://purl.org/dc/elements/1.1/format> "text/plain" . -_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -<http://example.org/website1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/Text> . -_:b41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "A good description of the topic that bears further investigation" . -_:b41 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -<http://example.net/review1> <http://purl.org/dc/terms/creator> <http://example.net/user2> . -<http://example.net/review1> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by-nc/4.0/> . -<http://example.net/review1> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by/4.0/> . -<http://example.net/review1> <http://purl.org/dc/terms/created> "2014-06-02T17:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/collection1> <http://purl.org/dc/terms/creator> <http://www.w3.org/> . -<http://example.org/collection1> <http://www.w3.org/ns/activitystreams#totalItems> "41"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -<http://example.org/collection1> <http://www.w3.org/ns/activitystreams#first> <http://example.org/collection1/page1> . -<http://example.org/collection1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#OrderedCollection> . -<http://example.org/collection1> <http://www.w3.org/2000/01/rdf-schema#label> "Annotation Examples" . -<http://example.org/analysis1.mp3> <http://purl.org/dc/elements/1.1/language> "fr" . -<http://example.org/analysis1.mp3> <http://purl.org/dc/elements/1.1/format> "audio/mpeg" . -<http://example.org/collection1/page1> <http://www.w3.org/ns/activitystreams#startIndex> "0"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -<http://example.org/collection1/page1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . -<http://example.org/collection1/page1> <http://www.w3.org/ns/activitystreams#items> _:b0 . -_:b11 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "tag1" . -_:b11 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/page6> . -_:b20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b21 . -_:b111 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#HttpRequestState> . -_:b111 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Accept: application/xml" . -_:b111 <http://www.w3.org/ns/oa#refinedBy> _:b112 . -_:b70 <http://www.w3.org/ns/oa#hasSource> <http://example.org/map1> . -_:b70 <http://www.w3.org/ns/oa#hasSelector> _:b71 . -_:b91 <http://www.w3.org/ns/oa#sourceDate> "2016-02-01T12:05:23Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -_:b91 <http://www.w3.org/ns/oa#refinedBy> _:b92 . -_:b91 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TimeState> . -_:b28 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page4> . -_:b28 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b83 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno34> . -_:b83 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b86 . -<http://example.org/anno12> <http://www.w3.org/ns/oa#hasTarget> _:b24 . -<http://example.org/anno12> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#tagging> . -<http://example.org/anno12> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno12> <http://www.w3.org/ns/oa#hasBody> _:b23 . -<http://example.org/user2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . -_:b84 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b84 <http://www.w3.org/ns/oa#hasState> _:b85 . -<http://example.org/anno4> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/image1#xywh=100,100,300,300> . -<http://example.org/anno4> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno4> <http://www.w3.org/ns/oa#hasBody> <http://example.org/description1> . -_:b89 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno36> . -_:b89 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b94 . -<http://example.org/anno6> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/target1> . -<http://example.org/anno6> <http://www.w3.org/ns/oa#bodyValue> "Comment text" . -<http://example.org/anno6> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/svg1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SvgSelector> . -_:b18 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Composite> . -_:b18 <http://www.w3.org/ns/activitystreams#items> _:b19 . -<http://example.gov/patent1.pdf> <http://www.w3.org/ns/oa#textDirection> <http://www.w3.org/ns/oa#ltrDirection> . -<http://example.gov/patent1.pdf> <http://purl.org/dc/elements/1.1/language> "ar" . -<http://example.gov/patent1.pdf> <http://purl.org/dc/elements/1.1/language> "en" . -<http://example.gov/patent1.pdf> <http://purl.org/dc/elements/1.1/format> "application/pdf" . -<http://example.gov/patent1.pdf> <http://www.w3.org/ns/oa#processingLanguage> "en" . -_:b74 <http://www.w3.org/ns/oa#hasEndSelector> _:b76 . -_:b74 <http://www.w3.org/ns/oa#hasStartSelector> _:b75 . -_:b74 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#RangeSelector> . -<http://example.org/anno36> <http://www.w3.org/ns/oa#hasTarget> _:b90 . -<http://example.org/anno36> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno36> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -_:b66 <http://www.w3.org/ns/oa#end> "4104"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b66 <http://www.w3.org/ns/oa#start> "4096"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b66 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#DataPositionSelector> . -_:b63 <http://www.w3.org/ns/oa#end> "795"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b63 <http://www.w3.org/ns/oa#start> "412"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b63 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextPositionSelector> . -_:b36 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno15> . -_:b36 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b37 . -_:b30 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Independents> . -_:b30 <http://www.w3.org/ns/activitystreams#items> _:b31 . -_:b33 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/image4> . -_:b33 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b34 . -_:b76 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "//table[1]/tr[1]/td[4]" . -_:b76 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#XPathSelector> . -_:b65 <http://www.w3.org/ns/oa#hasSource> <http://example.org/diskimg1> . -_:b65 <http://www.w3.org/ns/oa#hasSelector> _:b66 . -<http://example.org/anno32> <http://www.w3.org/ns/oa#hasTarget> _:b78 . -<http://example.org/anno32> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno32> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -_:b27 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page3> . -_:b27 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b28 . -<http://example.org/anno31> <http://www.w3.org/ns/oa#hasTarget> _:b73 . -<http://example.org/anno31> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno31> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -_:b26 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page2> . -_:b26 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b27 . -<http://example.org/note2> <http://purl.org/dc/elements/1.1/language> "fr" . -_:b24 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#List> . -_:b24 <http://www.w3.org/ns/activitystreams#items> _:b25 . -_:b54 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "#elemid > .elemclass + p" . -_:b54 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#CssSelector> . -_:b34 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/image9> . -_:b34 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b77 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno32> . -_:b77 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b81 . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/mbox_sha1sum> "58bad08927902ff9307b621c54716dcc5083e339" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/name> "My Pseudonym" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/name> "A. Person" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/nick> "user1" . -<http://example.org/user1> <http://xmlns.com/foaf/0.1/nick> "pseudo" . -<http://example.org/user1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . -<http://example.org/anno33> <http://www.w3.org/ns/oa#hasTarget> _:b82 . -<http://example.org/anno33> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno33> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -<http://example.org/anno21> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/photo1> . -<http://example.org/anno21> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno21> <http://www.w3.org/ns/oa#hasBody> _:b45 . -<http://example.org/anno35> <http://www.w3.org/ns/oa#hasTarget> _:b87 . -<http://example.org/anno35> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno35> <http://www.w3.org/ns/oa#hasBody> <http://example.org/description1> . -_:b103 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno41> . -_:b103 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b97 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> ".red { color: red }" . -_:b97 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#CssStyle> . -<http://example.org/anno39> <http://www.w3.org/ns/oa#hasTarget> _:b100 . -<http://example.org/anno39> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno39> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -_:b49 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno23> . -_:b49 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b52 . -<http://example.org/anno41> <http://purl.org/dc/terms/creator> <http://example.org/user1> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#hasTarget> _:b110 . -<http://example.org/anno41> <http://purl.org/dc/terms/issued> "2015-10-14T15:13:28Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> . -<http://example.org/anno41> <http://purl.org/dc/terms/created> "2015-10-13T13:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#styledBy> <http://example.org/stylesheet1> . -<http://example.org/anno41> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno41> <http://www.w3.org/ns/oa#hasBody> _:b105 . -<http://example.org/anno41> <http://www.w3.org/ns/oa#hasBody> _:b104 . -<http://example.org/anno41> <http://www.w3.org/ns/activitystreams#generator> <http://example.org/client1> . -_:b73 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1.html> . -_:b73 <http://www.w3.org/ns/oa#hasSelector> _:b74 . -_:b40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "readme" . -_:b40 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#tagging> . -_:b40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b67 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno29> . -_:b67 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b69 . -<http://example.org/photo1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/StillImage> . -_:b50 <http://www.w3.org/ns/oa#hasSource> <http://example.org/video1> . -_:b50 <http://www.w3.org/ns/oa#hasSelector> _:b51 . -_:b50 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b78 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b78 <http://www.w3.org/ns/oa#hasSelector> _:b79 . -_:b94 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno37> . -_:b94 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b96 . -_:b105 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Choice> . -_:b105 <http://www.w3.org/ns/activitystreams#items> _:b106 . -_:b102 <http://www.w3.org/ns/oa#hasSource> <http://example.org/image1> . -_:b102 <http://www.w3.org/ns/oa#hasScope> <http://example.org/page1> . -<http://example.org/anno40> <http://www.w3.org/ns/oa#hasTarget> _:b102 . -<http://example.org/anno40> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno40> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -<http://example.org/anno19> <http://purl.org/dc/terms/rights> <https://creativecommons.org/publicdomain/zero/1.0/> . -<http://example.org/anno19> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/product1> . -<http://example.org/anno19> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno19> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -_:b114 <http://www.w3.org/ns/oa#end> "27"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b114 <http://www.w3.org/ns/oa#start> "6"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b114 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextPositionSelector> . -_:b99 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno39> . -_:b99 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b101 . -<http://example.com/video1> <http://schema.org/accessibilityFeature> "captions" . -<http://example.com/video1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/MovingImage> . -_:b82 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b82 <http://www.w3.org/ns/oa#hasState> <http://example.org/state1> . -_:b95 <http://www.w3.org/ns/oa#hasSource> <http://example.org/document1> . -_:b95 <http://www.w3.org/ns/oa#styleClass> "red" . -_:b101 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno40> . -_:b101 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b103 . -_:b93 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "page=10" . -_:b93 <http://purl.org/dc/terms/conformsTo> <http://tools.ietf.org/rfc/rfc3778> . -_:b93 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -<http://example.org/anno18> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/page1> . -<http://example.org/anno18> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#bookmarking> . -<http://example.org/anno18> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno18> <http://www.w3.org/ns/oa#hasBody> _:b40 . -<http://example.org/anno18> <http://www.w3.org/ns/oa#hasBody> _:b41 . -<http://example.org/anno17> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/video1> . -<http://example.org/anno17> <http://www.w3.org/ns/oa#motivatedBy> <http://www.w3.org/ns/oa#commenting> . -<http://example.org/anno17> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno17> <http://www.w3.org/ns/oa#hasBody> <http://example.net/comment1> . -_:b58 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno26> . -_:b58 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b61 . -_:b61 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno27> . -_:b61 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b64 . -_:b85 <http://www.w3.org/ns/oa#sourceDate> "2015-07-20T13:30:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -_:b85 <http://www.w3.org/ns/oa#cachedSource> <http://archive.example.org/copy1> . -_:b85 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TimeState> . -<http://example.org/anno23> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/image1> . -<http://example.org/anno23> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno23> <http://www.w3.org/ns/oa#hasBody> _:b50 . -<http://example.com/image1#xywh=100,100,300,300> <http://purl.org/dc/elements/1.1/format> "image/jpeg" . -<http://example.com/image1#xywh=100,100,300,300> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/StillImage> . -_:b81 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno33> . -_:b81 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b83 . -_:b88 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#HttpRequestState> . -_:b88 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Accept: application/pdf" . -_:b57 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "/html/body/p[2]/table/tr[2]/td[3]/span" . -_:b57 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#XPathSelector> . -_:b55 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno25> . -_:b55 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b58 . -_:b72 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno31> . -_:b72 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b77 . -_:b47 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b47 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/paraselector1> . -<http://example.org/anno34> <http://www.w3.org/ns/oa#hasTarget> _:b84 . -<http://example.org/anno34> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno34> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -<http://example.org/anno24> <http://www.w3.org/ns/oa#hasTarget> _:b53 . -<http://example.org/anno24> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno24> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -_:b104 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "love" . -_:b104 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#tagging> . -_:b104 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno12> . -_:b22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b29 . -_:b109 <http://www.w3.org/ns/oa#hasSource> <http://example.org/comment1> . -_:b109 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b109 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SpecificResource> . -_:b29 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno13> . -_:b29 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b35 . -_:b43 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno20> . -_:b43 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b44 . -<http://example.org/anno30> <http://www.w3.org/ns/oa#hasTarget> _:b70 . -<http://example.org/anno30> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno30> <http://www.w3.org/ns/oa#hasBody> <http://example.org/road1> . -_:b52 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno24> . -_:b52 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b55 . -<http://example.org/anno5> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/photo1> . -<http://example.org/anno5> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno5> <http://www.w3.org/ns/oa#hasBody> _:b5 . -<http://example.org/anno16> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/textbook1> . -<http://example.org/anno16> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno16> <http://schema.org/audience> <http://example.edu/roles/teacher> . -<http://example.org/anno16> <http://www.w3.org/ns/oa#hasBody> <http://example.net/classnotes1> . -_:b19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/page1> . -_:b19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b20 . -<http://example.org/anno22> <http://www.w3.org/ns/oa#hasTarget> _:b48 . -<http://example.org/anno22> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno22> <http://www.w3.org/ns/oa#hasBody> _:b47 . -_:b13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Choice> . -_:b13 <http://www.w3.org/ns/activitystreams#items> _:b14 . -_:b32 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.net/image2> . -_:b32 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b33 . -_:b80 <http://www.w3.org/ns/oa#prefix> "text before the " . -_:b80 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextQuoteSelector> . -_:b80 <http://www.w3.org/ns/oa#exact> "Selected Text" . -_:b80 <http://www.w3.org/ns/oa#suffix> " and text after it" . -_:b48 <http://www.w3.org/ns/oa#hasSource> <http://example.com/dataset1> . -_:b48 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/dataselector1> . -<http://example.org/comment1> <http://purl.org/dc/terms/creator> <http://example.org/user2> . -<http://example.org/comment1> <http://purl.org/dc/elements/1.1/language> "de" . -<http://example.org/comment1> <http://purl.org/dc/elements/1.1/format> "audio/mpeg" . -<http://example.org/comment1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/Sound> . -_:b113 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "xpointer(/doc/body/section[2]/para[1])" . -_:b113 <http://www.w3.org/ns/oa#refinedBy> _:b114 . -_:b113 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -<http://example.org/anno38> <http://www.w3.org/ns/oa#hasTarget> _:b98 . -<http://example.org/anno38> <http://www.w3.org/ns/oa#styledBy> _:b97 . -<http://example.org/anno38> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno38> <http://www.w3.org/ns/oa#hasBody> <http://example.org/body1> . -_:b69 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno30> . -_:b69 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b72 . -_:b45 <http://www.w3.org/ns/oa#hasSource> <http://example.org/city1> . -_:b45 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#tagging> . -_:b45 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SpecificResource> . -<http://example.org/anno29> <http://www.w3.org/ns/oa#hasTarget> _:b68 . -<http://example.org/anno29> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno29> <http://www.w3.org/ns/oa#hasBody> <http://example.org/road1> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#via> <http://other.example.org/anno1> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/product1> . -<http://example.org/anno20> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno20> <http://www.w3.org/ns/oa#canonical> <urn:uuid:dbfb1861-0ecf-41ad-be94-a584e5c4f1df> . -_:b44 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno21> . -_:b44 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b46 . -_:b92 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#HttpRequestState> . -_:b92 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Accept: application/pdf" . -_:b92 <http://www.w3.org/ns/oa#refinedBy> _:b93 . -<http://example.org/anno37> <http://www.w3.org/ns/oa#hasTarget> _:b95 . -<http://example.org/anno37> <http://www.w3.org/ns/oa#styledBy> <http://example.org/style1> . -<http://example.org/anno37> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno37> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/stylesheet1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#CssStyle> . -_:b112 <http://www.w3.org/ns/oa#sourceDate> "2015-09-25T12:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -_:b112 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TimeState> . -_:b100 <http://www.w3.org/ns/oa#hasSource> <http://example.edu/article.pdf> . -_:b100 <http://www.w3.org/ns/oa#renderedVia> <http://example.com/pdf-to-html-library> . -_:b100 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/selectors/html-selector1> . -_:b71 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "<svg:svg> ... </svg:svg>" . -_:b71 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SvgSelector> . -_:b108 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b109 . -_:b108 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b68 <http://www.w3.org/ns/oa#hasSource> <http://example.org/map1> . -_:b68 <http://www.w3.org/ns/oa#hasSelector> <http://example.org/svg1> . -<http://example.com/pdf-to-html-library> <http://schema.org/softwareVersion> "2.5" . -<http://example.com/pdf-to-html-library> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#Application> . -<http://example.edu/roles/teacher> <http://schema.org/educationalRole> "teacher" . -<http://example.edu/roles/teacher> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/EducationalAudience> . -<http://example.org/anno14> <http://purl.org/dc/terms/creator> <http://example.org/user1> . -<http://example.org/anno14> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/restaurant1> . -<http://example.org/anno14> <http://purl.org/dc/terms/issued> "2015-02-04T12:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno14> <http://purl.org/dc/terms/created> "2015-01-28T12:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno14> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno14> <http://purl.org/dc/terms/modified> "2015-01-29T09:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://example.org/anno14> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno14> <http://www.w3.org/ns/activitystreams#generator> <http://example.org/client1> . -_:b107 <http://purl.org/dc/terms/creator> <http://example.org/user1> . -_:b107 <http://purl.org/dc/elements/1.1/language> "en" . -_:b107 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "I really love this particular bit of text in this XML. No really." . -_:b107 <http://www.w3.org/ns/oa#hasPurpose> <http://www.w3.org/ns/oa#describing> . -_:b107 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#TextualBody> . -_:b107 <http://purl.org/dc/elements/1.1/format> "text/plain" . -_:b98 <http://www.w3.org/ns/oa#hasSource> <http://example.org/target1> . -_:b98 <http://www.w3.org/ns/oa#styleClass> "red" . -_:b42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno19> . -_:b42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b43 . -_:b90 <http://www.w3.org/ns/oa#hasSource> <http://example.org/ebook1> . -_:b90 <http://www.w3.org/ns/oa#hasState> _:b91 . -_:b87 <http://www.w3.org/ns/oa#hasSource> <http://example.org/resource1> . -_:b87 <http://www.w3.org/ns/oa#hasState> _:b88 . -_:b79 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "para5" . -_:b79 <http://www.w3.org/ns/oa#refinedBy> _:b80 . -_:b79 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -_:b110 <http://www.w3.org/ns/oa#hasSource> <http://example.com/document1> . -_:b110 <http://www.w3.org/ns/oa#hasSelector> _:b113 . -_:b110 <http://www.w3.org/ns/oa#hasState> _:b111 . -_:b110 <http://www.w3.org/ns/oa#styleClass> "mystyle" . -_:b110 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#SpecificResource> . -_:b96 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno38> . -_:b96 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b99 . -_:b14 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/note1> . -_:b14 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b15 . -_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno8> . -_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b10 . -_:b25 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.com/book/page1> . -_:b25 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b26 . -_:b38 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno17> . -_:b38 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b39 . -<http://example.org/anno25> <http://www.w3.org/ns/oa#hasTarget> _:b56 . -<http://example.org/anno25> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno25> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -<http://example.org/anno26> <http://www.w3.org/ns/oa#hasTarget> _:b59 . -<http://example.org/anno26> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno26> <http://www.w3.org/ns/oa#hasBody> <http://example.org/comment1> . -<http://example.org/anno8> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/ebook1> . -<http://example.org/anno8> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -_:b16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno11> . -_:b16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b22 . -_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno7> . -_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b9 . -_:b53 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1.html> . -_:b53 <http://www.w3.org/ns/oa#hasSelector> _:b54 . -_:b106 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b107 . -_:b106 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b108 . -_:b51 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "t=30,60" . -_:b51 <http://purl.org/dc/terms/conformsTo> <http://www.w3.org/TR/media-frags/> . -_:b51 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#FragmentSelector> . -<http://example.org/anno15> <http://purl.org/dc/terms/creator> <http://example.org/user1> . -<http://example.org/anno15> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/restaurant1> . -<http://example.org/anno15> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno15> <http://www.w3.org/ns/oa#hasBody> <http://example.net/review1> . -<http://example.org/anno15> <http://www.w3.org/ns/activitystreams#generator> <http://example.org/client1> . -<http://example.org/anno28> <http://www.w3.org/ns/oa#hasTarget> _:b65 . -<http://example.org/anno28> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno28> <http://www.w3.org/ns/oa#hasBody> <http://example.org/note1> . -_:b39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno18> . -_:b39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b42 . -<http://example.org/anno10> <http://www.w3.org/ns/oa#hasTarget> <http://example.org/website1> . -<http://example.org/anno10> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno10> <http://www.w3.org/ns/oa#hasBody> _:b13 . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasTarget> <http://example.gov/patent1.pdf> . -<http://example.org/anno2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasBody> <http://example.org/analysis1.mp3> . -_:b10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno9> . -_:b10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b12 . -_:b62 <http://www.w3.org/ns/oa#hasSource> <http://example.org/ebook1> . -_:b62 <http://www.w3.org/ns/oa#hasSelector> _:b63 . -_:b12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno10> . -_:b12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b16 . -_:b64 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno28> . -_:b64 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b67 . -_:b46 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno22> . -_:b46 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b49 . -_:b59 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1> . -_:b59 <http://www.w3.org/ns/oa#hasSelector> _:b60 . -_:b75 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "//table[1]/tr[1]/td[2]" . -_:b75 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#XPathSelector> . -<http://example.org/anno27> <http://www.w3.org/ns/oa#hasTarget> _:b62 . -<http://example.org/anno27> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno27> <http://www.w3.org/ns/oa#hasBody> <http://example.org/review1> . -_:b86 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno35> . -_:b86 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b89 . -_:b21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.net/page4> . -_:b21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b56 <http://www.w3.org/ns/oa#hasSource> <http://example.org/page1.html> . -_:b56 <http://www.w3.org/ns/oa#hasSelector> _:b57 . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.json deleted file mode 100644 index 0f5a4759efe..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/collection1", - "type": "AnnotationCollection", - "label": "Steampunk Annotations", - "creator": "http://example.com/publisher", - "total": 42023, - "first": "http://example.org/page1", - "last": "http://example.org/page42" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.nt deleted file mode 100644 index 7d44e9be237..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.nt +++ /dev/null @@ -1,6 +0,0 @@ -<http://example.org/collection1> <http://www.w3.org/ns/activitystreams#last> <http://example.org/page42> . -<http://example.org/collection1> <http://www.w3.org/ns/activitystreams#first> <http://example.org/page1> . -<http://example.org/collection1> <http://www.w3.org/ns/activitystreams#totalItems> "42023"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -<http://example.org/collection1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#OrderedCollection> . -<http://example.org/collection1> <http://www.w3.org/2000/01/rdf-schema#label> "Steampunk Annotations" . -<http://example.org/collection1> <http://purl.org/dc/terms/creator> <http://example.com/publisher> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.json deleted file mode 100644 index 15306a55690..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/page1", - "type": "AnnotationPage", - "partOf": "http://example.org/collection1", - "next": "http://example.org/page2", - "startIndex": 0, - "items": [ - { - "id": "http://example.org/anno1", - "type": "Annotation", - "body": "http://example.net/comment1", - "target": "http://example.com/book/chapter1" - }, - { - "id": "http://example.org/anno2", - "type": "Annotation", - "body": "http://example.net/comment2", - "target": "http://example.com/book/chapter2" - } - ] -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.nt deleted file mode 100644 index 9d8934d991f..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.nt +++ /dev/null @@ -1,15 +0,0 @@ -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasBody> <http://example.net/comment1> . -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/book/chapter1> . -<http://example.org/anno1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#partOf> <http://example.org/collection1> . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#items> _:b0 . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#next> <http://example.org/page2> . -<http://example.org/page1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#startIndex> "0"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno2> . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasBody> <http://example.net/comment2> . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/book/chapter2> . -<http://example.org/anno2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b1 . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno1> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.json deleted file mode 100644 index 15306a55690..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "http://example.org/page1", - "type": "AnnotationPage", - "partOf": "http://example.org/collection1", - "next": "http://example.org/page2", - "startIndex": 0, - "items": [ - { - "id": "http://example.org/anno1", - "type": "Annotation", - "body": "http://example.net/comment1", - "target": "http://example.com/book/chapter1" - }, - { - "id": "http://example.org/anno2", - "type": "Annotation", - "body": "http://example.net/comment2", - "target": "http://example.com/book/chapter2" - } - ] -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.nt b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.nt deleted file mode 100644 index 16b8b3bc185..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.nt +++ /dev/null @@ -1,15 +0,0 @@ -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . -_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno2> . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b1 . -_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/anno1> . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#partOf> <http://example.org/collection1> . -<http://example.org/page1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#next> <http://example.org/page2> . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#items> _:b0 . -<http://example.org/page1> <http://www.w3.org/ns/activitystreams#startIndex> "0"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> . -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasBody> <http://example.net/comment1> . -<http://example.org/anno1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno1> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/book/chapter1> . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasBody> <http://example.net/comment2> . -<http://example.org/anno2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/oa#Annotation> . -<http://example.org/anno2> <http://www.w3.org/ns/oa#hasTarget> <http://example.com/book/chapter2> . diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno1.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno1.json deleted file mode 100644 index 8c8155222d3..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno1.json +++ /dev/null @@ -1 +0,0 @@ -this is not json
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno10.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno10.json deleted file mode 100644 index 23927866055..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno10.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "no target", - "body": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno11.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno11.json deleted file mode 100644 index 183a6bfd344..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno11.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad target", - "body": "http://example.org/post1", - "target": 9 -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno12.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno12.json deleted file mode 100644 index 4d6e66730db..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno12.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad body", - "body": "this is not a uri", - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno13.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno13.json deleted file mode 100644 index 714b58fa7ba..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno13.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad body id", - "body": { - "id": "this is not a uri either", - "format": "text/plain", - "langauage": "en" }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno14.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno14.json deleted file mode 100644 index 984cf1c33b4..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno14.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad format", - "body": { - "id": "http://example.com/1", - "format": 6, - "langauage": "en" }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno15.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno15.json deleted file mode 100644 index 1ec07d34c58..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno15.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad language", - "body": { - "id": "http://example.com/1", - "format": "text/plain", - "langauage": 3 }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno16.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno16.json deleted file mode 100644 index 83abbc3eca4..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno16.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad text direction", - "body": { - "id": "http://example.com/1", - "format": "text/plain", - "textDirection": "squirrel" }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno17.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno17.json deleted file mode 100644 index 40e5bfb6d6e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno17.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "no value for textual body", - "body": { - "type": "TextualBody", - "format": "text/plain" - }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno18.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno18.json deleted file mode 100644 index d8ac1edcda0..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno18.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad value for textual body", - "body": { - "type": "TextualBody", - "format": "text/plain", - "value": ["this should", "not have", "multiple values"] - }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno19.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno19.json deleted file mode 100644 index 14dc133e27d..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno19.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "body and bodyValue", - "body": { - "type": "TextualBody", - "format": "text/plain", - "value": "body" - }, - "bodyValue": "doppelganger", - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno2.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno2.json deleted file mode 100644 index 7a73a41bfdf..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno2.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno20.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno20.json deleted file mode 100644 index 66b2f1a3693..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno20.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad bodyValue", - "bodyValue": ["body", "doppelganger"], - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno21.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno21.json deleted file mode 100644 index 37faba142f3..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno21.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad bodyValue", - "bodyValue": 23, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno22.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno22.json deleted file mode 100644 index ef1eaf9aab0..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno22.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "Too many composite types (choice? list?)", - "body": { - "type": ["Choice", "List"], - "items": ["http://example.com/1", "http://example.com/2"] - }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno23.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno23.json deleted file mode 100644 index 8d5610be4ab..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno23.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "too many processing languages", - "body": { - "id": "http://example.com/1", - "format": "text/plain", - "processingLanguage": ["en", "de"] - }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno24.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno24.json deleted file mode 100644 index 66d088cf5e6..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno24.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad text direction", - "body": { - "id": "http://example.com/1", - "format": "text/plain", - "textDirection": ["ltr","rtl"] - }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno25.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno25.json deleted file mode 100644 index 67346fcd28b..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno25.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "Uninterpretable body (choice? list?)", - "body": { - "items": ["http://example.com/1", "http://example.com/2"] - }, - "target": "http://example.org/post1", -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno26.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno26.json deleted file mode 100644 index 2c0c161390e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno26.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad creator", - "creator": 6, - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno27.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno27.json deleted file mode 100644 index 0cd8cc2317d..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno27.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad generator", - "generator": 42, - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno28.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno28.json deleted file mode 100644 index 041fefd2225..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno28.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad created", - "created": "yesterday", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno29.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno29.json deleted file mode 100644 index ce48fc74c7b..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno29.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad created", - "modified": "an hour ago", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno3.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno3.json deleted file mode 100644 index 7afbb4f25c4..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "id": "http://example.org/anno1", - "type": "Annotation", - "label": "No context", - "target": "http://example.org/target" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno30.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno30.json deleted file mode 100644 index fcadc17bc0b..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno30.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad created", - "generated": "now", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno31.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno31.json deleted file mode 100644 index c857a12b004..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno31.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad created", - "modified": ["2015-01-28T12:00:00Z","2015-01-28T12:00:01Z"], - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno32.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno32.json deleted file mode 100644 index cccc1accb23..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno32.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad created", - "created": ["2015-01-28T12:00:00Z","2015-01-28T12:00:01Z"], - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno33.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno33.json deleted file mode 100644 index 267dfa4a7d2..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno33.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad created", - "generated": ["2015-01-28T12:00:00Z","2015-01-28T12:00:01Z"], - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno34.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno34.json deleted file mode 100644 index c81b0fe1392..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno34.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad rights", - "rights": "not a uri", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno35.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno35.json deleted file mode 100644 index f2f590e8f98..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno35.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad via", - "via": "not a uri", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno36.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno36.json deleted file mode 100644 index d9bb4afed6c..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno36.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "bad canonical", - "canonical": "not a uri", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno37.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno37.json deleted file mode 100644 index 072c5409c4e..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno37.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "no source for specific resource", - "body": "http://example.org/post1", - "target": { - "type": "SpecificResource", - } -} diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno38.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno38.json deleted file mode 100644 index 9da7c0b92e6..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno38.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "no value for Fragment Selector", - "body": "http://example.org/post1", - "target": { - "type": "SpecificResource", - "selector": { - "type": "FragmentSelector" - } - } -} diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno39.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno39.json deleted file mode 100644 index 50510f807f5..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno39.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "multiple values for Fragment Selector", - "body": "http://example.org/post1", - "target": { - "type": "SpecificResource", - "selector": { - "type": "FragmentSelector", - "value": ["xxx", "yyy"] - } - } -} diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno4.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno4.json deleted file mode 100644 index a0aa6b996dd..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno4.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@context": "fish", - "id": "http://example.org/anno1", - "type": "Annotation", - "label": "Bad context", - "target": "http://example.org/target" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno5.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno5.json deleted file mode 100644 index 12afee60224..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno5.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": ["http://example.org/not/my/context.json", - "http://example.org/nor/this/one.json" - ], - "id": "http://example.org/anno1", - "type": "Annotation", - "label": "Bad context", - "target": "http://example.org/target" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno6.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno6.json deleted file mode 100644 index eeb1b2edbb4..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno6.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "not a uri", - "label": "bad id", - "type": "Annotation", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno7.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno7.json deleted file mode 100644 index 68cbff0e223..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno7.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Annotation", - "label": "multiple identifiers", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno8.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno8.json deleted file mode 100644 index 0f284244892..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno8.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "label": "no type", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno9.json b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno9.json deleted file mode 100644 index db0f8caf8a0..00000000000 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno9.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": ["http://example.org/1", "http://example.org/2"], - "type": "Squirrel", - "label": "bad type", - "body": "http://example.org/post1", - "target": "http://example.com/page1" -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/check_stability.ini b/tests/wpt/web-platform-tests/check_stability.ini deleted file mode 100644 index e6ab448c001..00000000000 --- a/tests/wpt/web-platform-tests/check_stability.ini +++ /dev/null @@ -1,8 +0,0 @@ -[file detection] -# The vast majority of tests rely on files located within the `resources` -# directory. Because of this, modifications to that directory's contents have -# the potential to introduce instability in a large number of tests. -# Exhaustively validating such changes is highly resource intensive -# (particularly in terms of execution time), making it impractical in most -# cases. -ignore_changes: resources/** diff --git a/tests/wpt/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-table-cell-001-ref.html b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-table-cell-001-ref.html new file mode 100644 index 00000000000..a63d2c9d685 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-table-cell-001-ref.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Box Alignment Reference: Synthesized baseline table cell</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +* { vertical-align: baseline; } +table { display: inline-table; border: 3px solid; } +td { width:10px; background-color:pink; background-clip:content-box; } +.p { padding: 0 10px 0 0; height:150px; } +.size { height:80px; } +.w { background: white; } +x { display: block; overflow: hidden; height:50px; background: white; } +.xp { height:80px; background-color:pink; } +.m50 { margin-top: 50px; } +.top { vertical-align:top; } +</style> +</head> +<body> + X + <table border=5><tr><td class="p w"><x></x></td></tr></table> + <table border=5><tr><td class="p w top"></td><td>X</td></tr></table> + <table border=2><tr><td><x style="height:0"></x></td></tr></table> + <table border=5><tr><td class="p w" style="height:230px"><x class="xp m50"></x></td></tr></table> + <table border=5><tr><td class="p w top" style="height:230px"><x class="xp m50"></x></td><td>X</td></tr></table> + <table border=2><tr><td><x class="xp"></x></td></tr></table> + <table border=2><tr><td class="top"><x class="xp" style="height:20px"></x></td><td><x class="xp" style="height:20px"></td></tr></table> + <table border=2><tr><td class="top"><x class="xp" style="height:20px"</td><td rowspan=2></td></tr><tr><td class="top"><x class="xp" style="height:20px"</td></tr></table> + <table border=2><tr><td>X</td><td rowspan=2 class="top"></td></tr><tr><td style="height:20px" class="top"></td></tr></table> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-table-cell-001.html b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-table-cell-001.html new file mode 100644 index 00000000000..a7119b8dc55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/synthesized-baseline-table-cell-001.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Box Alignment Test: Synthesized baseline table cell</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#synthesize-baseline"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-export"> +<link rel="match" href="synthesized-baseline-table-cell-001-ref.html"> +<style> +* { vertical-align: baseline; } +table { display: inline-table; border: 3px solid; } +td { width:10px; background-color:pink; background-clip:content-box; } +.p { padding: 50px 10px 100px 0; } +.size { height:80px; } +</style> +</head> +<body> + X + <table border=5><tr><td class="p"></td></tr></table> + <table border=5><tr><td class="p"></td><td>X</td></tr></table> + <table border=2><tr><td ></td></tr></table> + <table border=5><tr><td class="p size"></td></tr></table> + <table border=5><tr><td class="p size"></td><td>X</td></tr></table> + <table border=2><tr><td class="size" ></td></tr></table> + <table border=2><tr><td style="height:10px"></td><td style="height:20px"></td></tr></table> + <table border=2><tr><td style="height:20px"></td><td rowspan=2></td></tr><tr><td style="height:20px"></td></tr></table> + <table border=2><tr><td>X</td><td rowspan=2></td></tr><tr><td style="height:20px"></td></tr></table> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html deleted file mode 100644 index 8fcdf3879dc..00000000000 --- a/tests/wpt/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html +++ /dev/null @@ -1,75 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<title>CSSPseudoElement.getAnimations() for CSS animations</title> -<!-- TODO: Add a more specific link for this once it is specified. --> -<link rel="help" href="https://drafts.csswg.org/css-animations-2/"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="support/testcommon.js"></script> -<style> -@keyframes anim1 { } -@keyframes anim2 { } -.before::before { - animation: anim1 10s; - content: ''; -} -.after-with-mix-anims-trans::after { - content: ''; - animation: anim1 10s, anim2 10s; - width: 0px; - height: 0px; - transition: all 100s; -} -.after-change::after { - width: 100px; - height: 100px; - content: ''; -} -</style> -<div id="log"></div> -<script> -'use strict'; - -test(t => { - const div = addDiv(t, { class: 'before' }); - const pseudoTarget = document.getAnimations()[0].effect.target; - assert_equals(pseudoTarget.getAnimations().length, 1, - 'Expected number of animations are returned'); - assert_equals(pseudoTarget.getAnimations()[0].animationName, 'anim1', - 'CSS animation name matches'); -}, 'getAnimations returns CSSAnimation objects'); - -test(t => { - const div = addDiv(t, { class: 'after-with-mix-anims-trans' }); - // Trigger transitions - flushComputedStyle(div); - div.classList.add('after-change'); - - // Create additional animation on the pseudo-element from script - const pseudoTarget = document.getAnimations()[0].effect.target; - const effect = new KeyframeEffect(pseudoTarget, - { background: ["blue", "red"] }, - 3 * MS_PER_SEC); - const newAnimation = new Animation(effect, document.timeline); - newAnimation.id = 'scripted-anim'; - newAnimation.play(); - - // Check order - the script-generated animation should appear later - const anims = pseudoTarget.getAnimations(); - assert_equals(anims.length, 5, - 'Got expected number of animations/trnasitions running on ' + - '::after pseudo element'); - assert_equals(anims[0].transitionProperty, 'height', - '1st animation is the 1st transition sorted by name'); - assert_equals(anims[1].transitionProperty, 'width', - '2nd animation is the 2nd transition sorted by name '); - assert_equals(anims[2].animationName, 'anim1', - '3rd animation is the 1st animation in animation-name list'); - assert_equals(anims[3].animationName, 'anim2', - '4rd animation is the 2nd animation in animation-name list'); - assert_equals(anims[4].id, 'scripted-anim', - 'Animation added by script appears last'); -}, 'getAnimations returns CSS transitions/animations, and script-generated ' + - 'animations in the expected order'); - -</script> diff --git a/tests/wpt/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html index 175acf84246..ba8c6d9194e 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html @@ -298,12 +298,12 @@ test(t => { if (pseudo) { assert_equals( - actual.effect.target.element, + actual.effect.target, element, `Animation #${index + 1} has expected target` ); assert_equals( - actual.effect.target.type, + actual.effect.pseudoElement, pseudo, `Animation #${index + 1} has expected pseudo type` ); @@ -313,6 +313,11 @@ test(t => { element, `Animation #${index + 1} has expected target` ); + assert_equals( + actual.effect.pseudoElement, + null, + `Animation #${index + 1} has null pseudo type` + ); } } }, 'CSS Animations targetting (pseudo-)elements should have correct order ' diff --git a/tests/wpt/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html index 5690a7daf85..5419e11e653 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html @@ -325,10 +325,13 @@ test(t => { assert_equals(animations[0].effect.target, target, 'The animation targeting the parent element ' + 'should be returned first'); - assert_equals(animations[1].effect.target.type, '::before', + assert_equals(animations[0].effect.pseudoElement, null, + 'The animation targeting the parent element ' + + 'should be returned first') + assert_equals(animations[1].effect.pseudoElement, '::before', 'The animation targeting the ::before pseudo-element ' + 'should be returned second'); - assert_equals(animations[2].effect.target.type, '::after', + assert_equals(animations[2].effect.pseudoElement, '::after', 'The animation targeting the ::after pesudo-element ' + 'should be returned last'); }, '{ subtree: true } on a leaf element returns the element\'s animations' @@ -366,34 +369,37 @@ test(t => { const animations = parent.getAnimations({ subtree: true }); assert_equals(animations.length, 6, - 'Should find all elements, pesudo-elements that parent has'); + 'Should find all elements, pseudo-elements that parent has'); assert_equals(animations[0].effect.target, parent, 'The animation targeting the parent element ' + 'should be returned first'); - assert_equals(animations[1].effect.target.type, '::before', + assert_equals(animations[0].effect.pseudoElement, null, + 'The animation targeting the parent element ' + + 'should be returned first'); + assert_equals(animations[1].effect.pseudoElement, '::before', 'The animation targeting the ::before pseudo-element ' + 'should be returned second'); - assert_equals(animations[1].effect.target.element, parent, + assert_equals(animations[1].effect.target, parent, 'This ::before element should be child of parent element'); - assert_equals(animations[2].effect.target.type, '::after', + assert_equals(animations[2].effect.pseudoElement, '::after', 'The animation targeting the ::after pesudo-element ' + 'should be returned third'); - assert_equals(animations[2].effect.target.element, parent, + assert_equals(animations[2].effect.target, parent, 'This ::after element should be child of parent element'); assert_equals(animations[3].effect.target, child, 'The animation targeting the child element ' + 'should be returned fourth'); - assert_equals(animations[4].effect.target.type, '::before', + assert_equals(animations[4].effect.pseudoElement, '::before', 'The animation targeting the ::before pseudo-element ' + 'should be returned fifth'); - assert_equals(animations[4].effect.target.element, child, + assert_equals(animations[4].effect.target, child, 'This ::before element should be child of child element'); - assert_equals(animations[5].effect.target.type, '::after', + assert_equals(animations[5].effect.pseudoElement, '::after', 'The animation targeting the ::after pesudo-element ' + 'should be returned last'); - assert_equals(animations[5].effect.target.element, child, + assert_equals(animations[5].effect.target, child, 'This ::after element should be child of child element'); }, '{ subtree: true } on an element with a child returns animations from the' + ' element, its pseudo-elements, its child and its child pseudo-elements'); diff --git a/tests/wpt/web-platform-tests/css/css-break/widows-orphans-005.html b/tests/wpt/web-platform-tests/css/css-break/widows-orphans-005.html new file mode 100644 index 00000000000..713849703ce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/widows-orphans-005.html @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-break/#widows-orphans"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1022348"> +<meta name="assert" content="Here's a multicol container with four lines, and a widows requirement of 2. We cannot honor that requirement, because the third line alone is too tall to fit in a column."> +<style> + .multicol { + position: relative; + columns: 3; + column-fill: auto; + column-gap: 10px; + width: 320px; + height: 200px; + orphans: 1; + widows: 2; + column-rule: 1px dotted; + line-height: 20px; + } + .ibk { + display: inline-block; + width: 70px; + } +</style> +<p> + There should be three columns below. In the first column there should be a + black rectangle and a yellow rectangle. In the second column there should be a + cyan rectangle. In the third column there should be a hotpink rectangle.</p> +<div class="multicol"> + <div class="ibk" style="height:50px; background:black;" data-offset-x="0"></div><br> + <div class="ibk" style="height:50px; background:yellow;" data-offset-x="0"></div><br> + <div class="ibk" style="height:285px;" data-offset-x="110"> + <!-- The implementations differ here. Gecko lets the inline-block overflow + the column, while Blink slices the inline-block and puts what doesn't + fit in the second column into the third. Blink has a bug, but that's + not the bug we want to test here. --> + <div style="height:100px; background:cyan;"></div> + </div><br> + <div class="ibk" style="height:10px; background:hotpink;" data-offset-x="220"></div><br> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> +<script> + checkLayout("[data-offset-x]"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-size-select-002.html b/tests/wpt/web-platform-tests/css/css-contain/contain-size-select-002.html index 88d37323e1b..1aa2d9f31d0 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-size-select-002.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-size-select-002.html @@ -1,4 +1,5 @@ <!DOCTYPE html> +<html class="reftest-wait"> <meta charset="utf-8"> <title>CSS Containment Test: Size containment on select</title> <link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> @@ -19,5 +20,7 @@ select { <script> window.requestAnimationFrame( () => { target.style.contain = "size"; + document.documentElement.removeAttribute("class"); }); </script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-font-loading/empty-family-load.html b/tests/wpt/web-platform-tests/css/css-font-loading/empty-family-load.html new file mode 100644 index 00000000000..a2aa374af7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-font-loading/empty-family-load.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Dominik Röttsches" href="drott@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-font-loading/#font-face-load"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/4510"> +<meta name="assert" content="Ensure that an empty font family name loads and resolves to array." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +promise_test(function(t) { + var testFontFace = new FontFace('a', 'url(a)'); + document.fonts.add(testFontFace); + return document.fonts.load("1px \"\"").then(function(result) { + assert_true(Array.isArray(result), + "Resolved promise's value must be an array.") }); +}) +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html b/tests/wpt/web-platform-tests/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html new file mode 100644 index 00000000000..452eb494b73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html @@ -0,0 +1,130 @@ +<!DOCTYPE html> +<html class="reftest-wait"> + <head> + <meta charset="utf-8"> + <title>CSS Grid Layout Test: Support for 'grid-auto-columns' and + 'grid-auto-rows' properties with implicit tracks after and before the + explicit grid</title> + <link rel="help" href="https://drafts.csswg.org/css-grid/#auto-tracks"> + <link rel="match" href="../reference/grid-support-grid-auto-columns-rows-003-ref.html"> + <style> + #wrapper { + display: grid; + grid-template-columns: 50px 50px 50px 50px; + } + + /* Implicit and explicit grid track sizes */ + .grid { + display: grid; + grid-auto-rows: 2px 3px; + grid-auto-columns: 2px 3px; + } + #one .grid { grid-template: 5px / 5px; } + #two .grid { grid-template: 5px 5px / 5px 5px; } + #three .grid { grid-template: 5px 5px 5px / 5px 5px 5px; } + + /* Grid item positions. */ + .item-left1 { grid-area: auto / auto / 1 / 1; } + .item-explicit { grid-area: 1 / 1 / -1 / -1; } + .item-right1 { grid-area: -1 / -1; } + + #zero .item-left3 { grid-area: auto / auto / -3 / -3; } + #zero .item-left2 { grid-area: auto / auto / -2 / -2; } + #zero .item-right2 { grid-area: 2 / 2; } + #zero .item-right3 { grid-area: 3 / 3; } + #one .item-left3 { grid-area: auto / auto / -4 / -4; } + #one .item-left2 { grid-area: auto / auto / -3 / -3; } + #one .item-right2 { grid-area: 3 / 3; } + #one .item-right3 { grid-area: 4 / 4; } + #two .item-left3 { grid-area: auto / auto / -5 / -5; } + #two .item-left2 { grid-area: auto / auto / -4 / -4; } + #two .item-right2 { grid-area: 4 / 4; } + #two .item-right3 { grid-area: 5 / 5; } + #three .item-left3 { grid-area: auto / auto / -6 / -6; } + #three .item-left2 { grid-area: auto / auto / -5 / -5; } + #three .item-right2 { grid-area: 5 / 5; } + #three .item-right3 { grid-area: 6 / 6; } + + /* Colors */ + .item-left3 { background: #ff0; } + .item-left2 { background: #ff0; } + .item-left1 { background: #ff0; } + .item-explicit { background: #f0f; } + .item-right1 { background: #0ff; } + .item-right2 { background: #0ff; } + .item-right3 { background: #0ff; } + </style> + <script> + function createDivWithClass(className, parent) { + let element = document.createElement('div'); + element.className = className || ''; + if (!parent) { + parent = document.body; + } + parent.appendChild(element); + return element; + } + + function generate(parentId) { + let parent = document.getElementById(parentId); + + for (let leftNum = 0; leftNum <= 3; ++leftNum) { + for (let rightNum = 0; rightNum <= 3; ++rightNum) { + let grid = leftNum + rightNum > 0 + ? createDivWithClass("grid", parent) + : null; + + for (let i = 1; i <= leftNum; ++i) { + createDivWithClass("item-left" + i, grid); + } + + if (leftNum + rightNum > 0) { + createDivWithClass("item-explicit", grid); + } + + for (let i = 1; i <= rightNum; ++i) { + createDivWithClass("item-right" + i, grid); + } + } + } + } + + function run() { + // This is equal to something like this: + // <div class="grid"> + // <div class="item-left3"></div> + // <div class="item-left2"></div> + // <div class="item-left1"></div> + // <div class="item-explicit"></div> + // <div class="item-right1"></div> + // <div class="item-right2"></div> + // <div class="item-right3"></div> + // </div> + // Generate the grid examples with 0~3 left items and 0~3 right items. + // The item-explicit is placed inside the 0x0 ~ 3x3 explicit tracks. + generate("zero"); + generate("one"); + generate("two"); + generate("three"); + + document.documentElement.offsetHeight; + document.documentElement.classList.remove('reftest-wait'); + } + </script> + </head> + <body onload="run()"> + <div id="wrapper"> + <!-- Zero explicit track --> + <div id="zero"></div> + + <!-- One explicit track --> + <div id="one"></div> + + <!-- Two explicit tracks --> + <div id="two"></div> + + <!-- Three explicit tracks --> + <div id="three"></div> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/reference/grid-support-grid-auto-columns-rows-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/reference/grid-support-grid-auto-columns-rows-003-ref.html new file mode 100644 index 00000000000..5489a9bffe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/reference/grid-support-grid-auto-columns-rows-003-ref.html @@ -0,0 +1,453 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>CSS Grid Layout Test Reference: Support for 'grid-auto-columns' and + 'grid-auto-rows' properties with implicit tracks after and before the + explicit grid</title> + <style> + #wrapper { + display: grid; + grid-template-columns: 50px 50px 50px 50px; + } + + div { position: relative; } + + .item-left3 { + width: 3px; + height: 3px; + background: #ff0; + } + .item-left2 { + width: 2px; + height: 2px; + background: #ff0; + } + .item-left1 { + width: 3px; + height: 3px; + background: #ff0; + } + .item-explicit { + width: 5px; + height: 5px; + background: #f0f; + } + .item-right1 { + width: 2px; + height: 2px; + background: #0ff; + } + .item-right2 { + width: 3px; + height: 3px; + background: #0ff; + } + .item-right3 { + width: 2px; + height: 2px; + background: #0ff; + } + + #zero .item-explicit { + width: 2px; + height: 2px; + } + #two .item-explicit { + width: 10px; + height: 10px; + } + #three .item-explicit { + width: 15px; + height: 15px; + } + </style> + </head> + <body> + <div id="wrapper"> + <div id="zero"> + <div> + <div class="item-right1"></div> + </div> + <div> + <div class="item-right1"></div> + <div class="item-right2" style="left:2px;"></div> + </div> + <div> + <div class="item-right1"></div> + <div class="item-right2" style="left:2px;"></div> + <div class="item-right3" style="left:5px;"></div> + </div> + + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-right1" style="left:3px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-right1" style="left:3px;"></div> + <div class="item-right2" style="left:5px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-right1" style="left:3px;"></div> + <div class="item-right2" style="left:5px;"></div> + <div class="item-right3" style="left:8px;"></div> + </div> + + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-right1" style="left:5px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-right1" style="left:5px;"></div> + <div class="item-right2" style="left:7px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-right1" style="left:5px;"></div> + <div class="item-right2" style="left:7px;"></div> + <div class="item-right3" style="left:10px;"></div> + </div> + + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-right1" style="left:8px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-right1" style="left:8px;"></div> + <div class="item-right2" style="left:10px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-right1" style="left:8px;"></div> + <div class="item-right2" style="left:10px;"></div> + <div class="item-right3" style="left:13px;"></div> + </div> + </div> + + <div id="one"> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:5px;"></div> + </div> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:5px;"></div> + <div class="item-right2" style="left:7px;"></div> + </div> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:5px;"></div> + <div class="item-right2" style="left:7px;"></div> + <div class="item-right3" style="left:10px;"></div> + </div> + + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:8px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:8px;"></div> + <div class="item-right2" style="left:10px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:8px;"></div> + <div class="item-right2" style="left:10px;"></div> + <div class="item-right3" style="left:13px;"></div> + </div> + + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:10px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:10px;"></div> + <div class="item-right2" style="left:12px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:10px;"></div> + <div class="item-right2" style="left:12px;"></div> + <div class="item-right3" style="left:15px;"></div> + </div> + + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:13px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:13px;"></div> + <div class="item-right2" style="left:15px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:13px;"></div> + <div class="item-right2" style="left:15px;"></div> + <div class="item-right3" style="left:18px;"></div> + </div> + </div> + + <div id="two"> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:10px;"></div> + </div> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:10px;"></div> + <div class="item-right2" style="left:12px;"></div> + </div> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:10px;"></div> + <div class="item-right2" style="left:12px;"></div> + <div class="item-right3" style="left:15px;"></div> + </div> + + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:13px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:13px;"></div> + <div class="item-right2" style="left:15px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:13px;"></div> + <div class="item-right2" style="left:15px;"></div> + <div class="item-right3" style="left:18px;"></div> + </div> + + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:15px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:15px;"></div> + <div class="item-right2" style="left:17px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:15px;"></div> + <div class="item-right2" style="left:17px;"></div> + <div class="item-right3" style="left:20px;"></div> + </div> + + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:18px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:18px;"></div> + <div class="item-right2" style="left:20px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:18px;"></div> + <div class="item-right2" style="left:20px;"></div> + <div class="item-right3" style="left:23px;"></div> + </div> + </div> + + <div id="three"> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:15px;"></div> + </div> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:15px;"></div> + <div class="item-right2" style="left:17px;"></div> + </div> + <div> + <div class="item-explicit"></div> + <div class="item-right1" style="left:15px;"></div> + <div class="item-right2" style="left:17px;"></div> + <div class="item-right3" style="left:20px;"></div> + </div> + + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:18px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:18px;"></div> + <div class="item-right2" style="left:20px;"></div> + </div> + <div> + <div class="item-left1"></div> + <div class="item-explicit" style="left:3px;"></div> + <div class="item-right1" style="left:18px;"></div> + <div class="item-right2" style="left:20px;"></div> + <div class="item-right3" style="left:23px;"></div> + </div> + + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:20px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:20px;"></div> + <div class="item-right2" style="left:22px;"></div> + </div> + <div> + <div class="item-left2"></div> + <div class="item-left1" style="left:2px;"></div> + <div class="item-explicit" style="left:5px;"></div> + <div class="item-right1" style="left:20px;"></div> + <div class="item-right2" style="left:22px;"></div> + <div class="item-right3" style="left:25px;"></div> + </div> + + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:23px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:23px;"></div> + <div class="item-right2" style="left:25px;"></div> + </div> + <div> + <div class="item-left3"></div> + <div class="item-left2" style="left:3px;"></div> + <div class="item-left1" style="left:5px;"></div> + <div class="item-explicit" style="left:8px;"></div> + <div class="item-right1" style="left:23px;"></div> + <div class="item-right2" style="left:25px;"></div> + <div class="item-right3" style="left:28px;"></div> + </div> + </div> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-data-url-image.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-data-url-image.html new file mode 100644 index 00000000000..aac59f3c4aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-data-url-image.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>CSS Test: mask-image: url(data:...)</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#mask-layer-image"> +<link rel="match" href="reference/mask-image-data-url-image-ref.html"> +<meta name="assert" content="mask-image can use a data: URL as an image"> +<style> +#back { + position: absolute; + box-sizing: border-box; + width: 200px; + height: 200px; + border: 60px solid green; + background: blue; +} +#front { + position: absolute; + box-sizing: border-box; + width: 200px; + height: 200px; + border: 40px solid blue; + background: green; + mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGDwAQAAUQBNt+pgmgAAAABJRU5ErkJggg==); /* 1x1 black with 30% transparency */ +} +</style> +<p>The test passes if there is a blue-ish square with a 20px green border around it and a 40px blue-green-ish border around that.</p> +<div id="back"></div><div id="front"></div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split-2.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split-2.html new file mode 100644 index 00000000000..94c653a5c47 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split-2.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<title>CSS Test: mask-image on a fragmented inline</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#mask-layer-image"> +<link rel="match" href="reference/mask-image-ib-split-2-ref.html"> +<meta name="assert" content="mask-image applies to all fragments"> +<style> + columns { + display: block; + columns: 5; + column-fill: auto; + column-gap: 10px; + height: 30px; + background: pink; + } + div { background: grey; height: 50px; } + x { + background: grey; + mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAABqklEQVRYhdXZMa6DMAwAUCOxcQAEF0BIzgG6MTEiJcfhItys1yhrl/oP8AvFScP/BJJUYmlR8mo7BgKAgw9JHEiJkRQ+Pw8xksTBxRzHYBJfJPFFStDXYznvGjhJHHbB9sHdg6cI4tMJco2dxnQDJol3OxB7kuJGqi6ozTNq84xUXUzfYb8juveDSPH4imvzjAAS6zgAyYT/gpbi4RiJPTWQ/mtQAKAGUiP4r1gjsqvKPRG0jg+QUFeVh7Ak8e46isa5TNG11ay+/WDvIorGOQEShrW1r/lq8vnvTogkm7eBVJPFp/5kXTS7qjwb+Z5/W7OmqF6dcja/oQS2yMFHyhlWVwLrqJIS4zaaVyMXC+sC4/LjNu1tnnmDtnlmTD+DXlibDAqQaKG8Pv2l/fejWVQDr08pbt6hUtxYnfImXxfeoaouWPNnUI8L6Q3dLqi4oeGmPpbFFEt7Aoik4WuhwV5CI7opieM2b8aGf+M8Q+N4FAGI5OEOIKLH5Rkb/gbEgo1gS8eKDWmTzI6dwSFsOy7YCDZyV9jwt8YZOOSXDVpwyK9vrPATX4j9ALzDM3y+40zWAAAAAElFTkSuQmCC); + } + .end { mask-position:100% 100%; mask-repeat: no-repeat; } +</style> +<body><columns><x><div></div></x></columns><columns><x class="end"><div></div></x></columns></body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split.html new file mode 100644 index 00000000000..dab941b1118 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<title>CSS Test: mask-image on an inline with a block inside split by a columnset</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#mask-layer-image"> +<link rel="match" href="reference/mask-image-ib-split-ref.html"> +<meta name="assert" content="mask-image applies to the block child"> +<style> + body { column-width: 40px; column-gap: 0; } + div { padding-inline-start: 40px; margin: 1em 0; border-bottom-style: solid; } + span { margin-inline-end: -2px; } + x { mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGDwAQAAUQBNt+pgmgAAAABJRU5ErkJggg==); } +</style> +<body><x><span></span><div></div></x></body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/1x1-black-30-alpha.png b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/1x1-black-30-alpha.png Binary files differnew file mode 100644 index 00000000000..e334f44a038 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/1x1-black-30-alpha.png diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-data-url-image-ref.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-data-url-image-ref.html new file mode 100644 index 00000000000..c2e88b36571 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-data-url-image-ref.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<title>Reference: mask-image: url(data:...)</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +#back { + position: absolute; + box-sizing: border-box; + width: 200px; + height: 200px; + border: 60px solid green; + background: blue; +} +#front { + position: absolute; + box-sizing: border-box; + width: 200px; + height: 200px; + border: 40px solid blue; + background: green; + mask-image: url(1x1-black-30-alpha.png); /* 1x1 black with 30% transparency */ +} +</style> +<p>The test passes if there is a blue-ish square with a 20px green border around it and a 40px blue-green-ish border around that.</p> +<div id="back"></div><div id="front"></div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-ib-split-2-ref.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-ib-split-2-ref.html new file mode 100644 index 00000000000..ee28190878a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-ib-split-2-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<title>CSS Test: mask-image on a fragmented inline</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> + columns { + display: block; + columns: 5; + column-fill: auto; + column-gap: 10px; + height: 30px; + background: pink; + } + div { background: grey; height: 50px; } + x { + background: grey; + mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAABqklEQVRYhdXZMa6DMAwAUCOxcQAEF0BIzgG6MTEiJcfhItys1yhrl/oP8AvFScP/BJJUYmlR8mo7BgKAgw9JHEiJkRQ+Pw8xksTBxRzHYBJfJPFFStDXYznvGjhJHHbB9sHdg6cI4tMJco2dxnQDJol3OxB7kuJGqi6ozTNq84xUXUzfYb8juveDSPH4imvzjAAS6zgAyYT/gpbi4RiJPTWQ/mtQAKAGUiP4r1gjsqvKPRG0jg+QUFeVh7Ak8e46isa5TNG11ay+/WDvIorGOQEShrW1r/lq8vnvTogkm7eBVJPFp/5kXTS7qjwb+Z5/W7OmqF6dcja/oQS2yMFHyhlWVwLrqJIS4zaaVyMXC+sC4/LjNu1tnnmDtnlmTD+DXlibDAqQaKG8Pv2l/fejWVQDr08pbt6hUtxYnfImXxfeoaouWPNnUI8L6Q3dLqi4oeGmPpbFFEt7Aoik4WuhwV5CI7opieM2b8aGf+M8Q+N4FAGI5OEOIKLH5Rkb/gbEgo1gS8eKDWmTzI6dwSFsOy7YCDZyV9jwt8YZOOSXDVpwyK9vrPATX4j9ALzDM3y+40zWAAAAAElFTkSuQmCC); + } + .end { mask-position:100% 100%; mask-repeat: no-repeat; } +</style> +<body><columns><x style="display:block"><div></div></x></columns><columns><x style="display:block; background: grey; height: 50px;" class="end"></x></columns></body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-ib-split-ref.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-ib-split-ref.html new file mode 100644 index 00000000000..e5c09f9449d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/reference/mask-image-ib-split-ref.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<title>CSS Reference: mask-image on an inline with a block inside split by a columnset</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> + body { column-width: 40px; column-gap: 0; } + div { padding-inline-start: 40px; margin: 1em 0; border-bottom-style: solid; } + span { margin-inline-end: -2px; } + div { mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGDwAQAAUQBNt+pgmgAAAABJRU5ErkJggg==); } +</style> +<body><x><span></span><div></div></x></body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-013.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-013.html new file mode 100644 index 00000000000..8f0daf4bfe4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-013.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://crbug.com/1021676"> +<div id="tfoot" style="display: table-footer-group; transform: scale(2);"> + <div id="oof" style="position: absolute;">text</div> +</div> +<script> +test(() => { + document.body.offsetTop; + + // Make the ICB the containing-block. + document.getElementById('tfoot').style.transform = ''; + document.body.offsetTop; + + document.getElementById('oof').innerText = ''; + document.body.offsetTop; +}, 'test passes if it does not crash'); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-relayout-002.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-relayout-002.html new file mode 100644 index 00000000000..4dc2dc0f803 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-relayout-002.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<link rel="help" href="https://www.w3.org/TR/css-position-3/" /> +<meta name="assert" content="This test checks that a dynamic change padding-box location, but no change in available-size positions correctly an absolute child correctly."/> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="target" style="position: relative; background: red; margin: 25px; width: 50px; height: 50px;"> + <div style="position: absolute; top: 0; left: 0; width: 50px; height: 50px; background: green;"></div> +</div> +<script> + document.body.offsetTop; + const target = document.getElementById('target'); + target.style.border = '25px solid green'; + target.style.margin = '0'; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-block-child-marker-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-block-child-marker-ref.html new file mode 100644 index 00000000000..46bc0f000d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-block-child-marker-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML> +<title>Reference: A child's ::marker should be excluded when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +body { margin-left: 5em; font-size: 12px; } +li, o { list-style-position: inside } +li:first-child > * { list-style-type: lower-alpha; list-style-type: 'marker ' } +li:last-child > ::marker { content: 'marker ' } +span, o { display:list-item; } +first-letter { color: green } +</style> +<ol> + <li><span><first-letter>i</first-letter>tem</span>after</li> + <li><span><first-letter>i</first-letter>tem</span></span>after</li> +</ol> +<ul> + <li><span><first-letter>i</first-letter>tem</span>after</li> + <li><span><first-letter>i</first-letter>tem</span></span>after</li> +</ul> +<ol> + <li><o><first-letter>i</first-letter>tem</o>after</li> + <li><o><first-letter>i</first-letter>tem</o>after</li> +</ol> +<ul> + <li><o><first-letter>i</first-letter>tem</o>after</li> + <li><o><first-letter>i</first-letter>tem</o>after</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-block-child-marker.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-block-child-marker.html new file mode 100644 index 00000000000..ecd0fd5b462 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-block-child-marker.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<title>CSS Test: A child's ::marker should be excluded when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#application-in-css"> +<link rel="match" href="first-letter-exclude-block-child-marker-ref.html"> +<style> +body { margin-left: 5em; font-size: 12px; } +li, o { list-style-position: inside } +li::first-letter { color: green } +li:first-child > * { list-style-type: lower-alpha; list-style-type: 'marker ' } +li:last-child > ::marker { content: 'marker ' } +span, o { display:list-item; } +</style> +<ol> + <li><span>item</span>after</li> + <li><span>item</span>after</li> +</ol> +<ul> + <li><span>item</span>after</li> + <li><span>item</span>after</li> +</ul> +<ol> + <li><o>item</o>after</li> + <li><o>item</o>after</li> +</ol> +<ul> + <li><o>item</o>after</li> + <li><o>item</o>after</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-child-marker-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-child-marker-ref.html new file mode 100644 index 00000000000..ee533756170 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-child-marker-ref.html @@ -0,0 +1,37 @@ +<!DOCTYPE HTML> +<title>Reference: A child's ::marker should be excluded when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +body { margin-left: 5em; } +li { list-style-position: inside } +li:first-child > * { list-style-type: 'marker '; } +li:last-child > ::marker { content: 'marker '; } +span { display:inline list-item; } +ibi { display:inline flow-root list-item; list-style-position: inside; } +ibo { display:inline flow-root list-item; list-style-position: outside; } +first-letter { color:green; } +</style> +<ol> + <li><span><first-letter>i</first-letter>tem</span>after</li> + <li><span><first-letter>i</first-letter>tem</span></span>after</li> +</ol> +<ul> + <li><span><first-letter>i</first-letter>tem</span>after</li> + <li><span><first-letter>i</first-letter>tem</span></span>after</li> +</ul> +<ol> + <li><ibi>item</ibi>after</li> + <li><ibi>item</ibi></ibi>after</li> +</ol> +<ul> + <li><ibi>item</ibi>after</li> + <li><ibi>item</ibi></ibi>after</li> +</ul> +<ol> + <li><ibo>item</ibo>after</li> + <li><ibo>item</ibo></ibo>after</li> +</ol> +<ul> + <li><ibo>item</ibo>after</li> + <li><ibo>item</ibo></ibo>after</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-child-marker.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-child-marker.html new file mode 100644 index 00000000000..027f145679b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-child-marker.html @@ -0,0 +1,39 @@ +<!DOCTYPE HTML> +<title>CSS Test: A child's ::marker should be excluded when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#application-in-css"> +<link rel="match" href="first-letter-exclude-inline-child-marker-ref.html"> +<style> +body { margin-left: 5em; } +li, span, ibi { list-style-position: inside } +li::first-letter { color: green } +li:first-child > * { list-style-type: 'marker ' } +li:last-child > ::marker { content: 'marker ' } +span { display:inline list-item; } +ibi { display:inline flow-root list-item; } +ibo { display:inline flow-root list-item; list-style-position: outside; } +</style> +<ol> + <li><span>item</span>after</li> + <li><span>item</span>after</li> +</ol> +<ul> + <li><span>item</span>after</li> + <li><span>item</span>after</li> +</ul> +<ol> + <li><ibi>item</ibi>after</li> + <li><ibi>item</ibi>after</li> +</ol> +<ul> + <li><ibi>item</ibi>after</li> + <li><ibi>item</ibi>after</li> +</ul> +<ol> + <li><ibo>item</ibo>after</li> + <li><ibo>item</ibo>after</li> +</ol> +<ul> + <li><ibo>item</ibo>after</li> + <li><ibo>item</ibo>after</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-marker-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-marker-ref.html new file mode 100644 index 00000000000..080cef2019c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-marker-ref.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML> +<title>Reference: The element's own ::marker should be skipped when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +body { margin-left: 5em; } +li:first-child > * { list-style-type: lower-alpha; list-style-type: 'marker '; } +li:last-child > ::marker { content: 'marker '; } +span { display:inline list-item; } +ibi { display:inline flow-root list-item; list-style-position: inside; } +ibo { display:inline flow-root list-item; list-style-position: outside; } +first-letter { color:green; } +</style> +<ol> + <li><ibi><first-letter>i</first-letter>tem</ibi>after</li> + <li><ibi><first-letter>i</first-letter>tem</ibi></ibi>after</li> +</ol> +<ul> + <li><ibi><first-letter>i</first-letter>tem</ibi>after</li> + <li><ibi><first-letter>i</first-letter>tem</ibi></ibi>after</li> +</ul> +<ol> + <li><ibo><first-letter>i</first-letter>tem</ibo>after</li> + <li><ibo><first-letter>i</first-letter>tem</ibo></ibo>after</li> +</ol> +<ul> + <li><ibo><first-letter>i</first-letter>tem</ibo>after</li> + <li><ibo><first-letter>i</first-letter>tem</ibo></ibo>after</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-marker.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-marker.html new file mode 100644 index 00000000000..e95393f4496 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-exclude-inline-marker.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<title>CSS Test: The element's own ::marker should be skipped when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#application-in-css"> +<link rel="match" href="first-letter-exclude-inline-marker-ref.html"> +<style> +body { margin-left: 5em; } +ibi::first-letter, ibo::first-letter { color: green } +li:first-child > * { list-style-type: lower-alpha; list-style-type: 'marker ' } +li:last-child > ::marker { content: 'marker ' } +ibi { display:inline flow-root list-item; list-style-position: inside; } +ibo { display:inline flow-root list-item; list-style-position: outside; } +</style> +<ol> + <li><ibi>item</ibi>after</li> + <li><ibi>item</ibi>after</li> +</ol> +<ul> + <li><ibi>item</ibi>after</li> + <li><ibi>item</ibi>after</li> +</ul> +<ol> + <li><ibo>item</ibo>after</li> + <li><ibo>item</ibo>after</li> +</ol> +<ul> + <li><ibo>item</ibo>after</li> + <li><ibo>item</ibo>after</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-skip-marker-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-skip-marker-ref.html new file mode 100644 index 00000000000..82c5074fd26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-skip-marker-ref.html @@ -0,0 +1,19 @@ +<!DOCTYPE HTML> +<title>Reference: The element's own ::marker should be skipped when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +body { margin-left:100px; } +ol > li { list-style-position: inside } +first-letter { color: green } +li:first-child { list-style-type: lower-alpha; list-style-type: '::marker ' } +li:last-child::marker { content: '::marker ' } +</style> +<ol> + <li><first-letter>i</first-letter>tem</li> + <li><first-letter>i</first-letter>tem</li> +</ol> + +<ul> + <li><first-letter>i</first-letter>tem</li> + <li><first-letter>i</first-letter>tem</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-skip-marker.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-skip-marker.html new file mode 100644 index 00000000000..fb9fe258472 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-skip-marker.html @@ -0,0 +1,22 @@ +<!DOCTYPE HTML> +<title>CSS Test: The element's own ::marker should be skipped when finding the ::first-letter content</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#application-in-css"> +<link rel="match" href="first-letter-skip-marker-ref.html"> +<style> +body { margin-left:100px; } +ol > li { list-style-position: inside } +li::first-letter { color: green } +li:first-child { list-style-type: lower-alpha; list-style-type: '::marker ' } +li:last-child::marker { content: '::marker ' } +</style> +<ol> + <li>item</li> + <li>item</li> +</ol> + +<ul> + <li>item</li> + <li>item</li> +</ul> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-ref.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-ref.html new file mode 100644 index 00000000000..77b0de7f0ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-ref.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<head> + <link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> + <link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/"> + <script src="/common/reftest-wait.js"></script> +</head> +<style> +#outer { + overflow: hidden; + width: 500px; + height: 500px; +} +#inner { + overflow: auto; + position: relative; + width: 500px; + height: 2000px; +} +p { + + font: 48pt monospace; +} +</style> +</head> +<body> +<div id="outer"> + <div id="inner"> + <p>Anchor</p> + </div> +</div> +<script> +const outer = document.querySelector("#outer"); +const inner = document.querySelector("#inner"); + +onload = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + outer.scrollTo(0, 70); + document.documentElement.removeAttribute("class"); + }); + }); +}; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout.html new file mode 100644 index 00000000000..e7696016bb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<head> + <title>Test that subtree layout with nested overflow preserves scroll anchoring.</title> + <link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> + <link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/"> + <link rel="match" href="nested-overflow-subtree-layout-ref.html"> + <script src="/common/reftest-wait.js"></script> +</head> +<style> +#outer { + overflow: hidden; + width: 500px; + height: 500px; +} +#inner { + overflow: auto; + position: relative; + width: 500px; + height: 2000px; +} +p { + + font: 48pt monospace; +} +</style> +</head> +<body> +<div id="outer"> + <div id="inner"> + <p>Anchor</p> + </div> +</div> +<script> +const outer = document.querySelector("#outer"); +const inner = document.querySelector("#inner"); + +onload = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + outer.scrollTo(0, 70); + requestAnimationFrame(() => { + const elem = document.createElement("p"); + elem.textContent = "FAIL"; + inner.insertBefore(elem, inner.firstChild); + takeScreenshot(); + }); + }); + }); +}; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html new file mode 100644 index 00000000000..0426c029eec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<title> + When an element no longer captures snap positions (e.g., no longer + scrollable), then its currently captured snap areas must be reassigned. +</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#captures-snap-positions"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +div { + position: absolute; + margin: 0px; +} + +html { + scroll-snap-type: y mandatory; +} + +body { + margin: 0px; +} + +#middle-scroller { + top: 100px; + height: 500px; + width: 500px; + overflow: scroll; + background-color: rgb(12, 61, 2); + scroll-snap-type: none; +} + +#inner-scroller { + top: 200px; + height: 400px; + width: 400px; + overflow: scroll; + background-color: rgb(65, 139, 50); + scroll-snap-type: y mandatory; +} + +.space { + width: 2000px; + height: 2000px; +} + +#inner-snap-area { + top: 300px; + width: 200px; + height: 200px; + background-color: blue; + scroll-snap-align: start; +} + +#document-snap-area { + top: 500px; + width: 200px; + height: 200px; + background-color: lightblue; + scroll-snap-align: start; +} + +</style> +<div class="space"></div> + <div id="middle-scroller"> + <div class="space"></div> + <div id="inner-scroller"> + <div class="space"></div> + <div id="inner-snap-area"></div> + </div> + </div> +</div> +<div id="document-snap-area"></div> +<script> + +// This tests that making a snap container no longer scrollable will reassign +// its snap areas to the next scrollable ancestor, per spec [1]. +// [1] https://drafts.csswg.org/css-scroll-snap/#captures-snap-positions +test(() => { + const innerscroller = document.getElementById("inner-scroller"); + const middlescroller = document.getElementById("middle-scroller"); + const documentscroller = document.scrollingElement; + + // Middle scroller doesn't snap. + // Document scroller should snap to its only captured area. + documentscroller.scrollBy(0, 100); + middlescroller.scrollBy(0, 10); + assert_equals(innerscroller.scrollTop, 0); + assert_equals(middlescroller.scrollTop, 10); + assert_equals(documentscroller.scrollTop, 500); + + // Inner scroller snaps. + innerscroller.scrollBy(0, 10); + assert_equals(innerscroller.scrollTop, 300); + assert_equals(middlescroller.scrollTop, 10); + assert_equals(documentscroller.scrollTop, 500); + + // Inner scroller is no longer a scroll container. + innerscroller.style.setProperty("overflow", "visible"); + assert_equals(innerscroller.scrollTop, 0); + assert_equals(middlescroller.scrollTop, 10); + assert_equals(documentscroller.scrollTop, 500); + + // The new snap container is the middle scroller, which has snap-type 'none'. + // Per spec, the scroll container should capture snap positions even if it has + // snap-type 'none'. + // The middle scroller should not snap. + // The document scroller should still only snap to its captured snap area. + documentscroller.scrollBy(0, 100); + middlescroller.scrollBy(0, 10); + assert_equals(innerscroller.scrollTop, 0); + assert_equals(middlescroller.scrollTop, 20); + assert_equals(documentscroller.scrollTop, 500); + + // The scroll container should now be at the document level. + middlescroller.style.setProperty("overflow", "visible"); + documentscroller.scrollBy(0, -10); + assert_equals(innerscroller.scrollTop, 0); + assert_equals(middlescroller.scrollTop, 0); + + // Check that the existing snap area did not get removed when reassigning + // the inner snap area. + assert_equals(documentscroller.scrollTop, 500); + + // Check that the inner snap area got reassigned to the document. + documentscroller.scrollBy(0, 150); + assert_equals(documentscroller.scrollTop, 600); +}, 'Making a snap container not scrollable should promote the next scrollable\ + ancestor to become a snap container.'); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-inline-006-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-inline-006-ref.html index 0232ecb6f01..268536c98e0 100644 --- a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-inline-006-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-inline-006-ref.html @@ -5,5 +5,5 @@ .testdiv { font-family: monospace; width: 6.1ch; padding: 1px; margin: 10px; border: 1px solid silver; } </style> <div>Test passes if the two boxes are the same.</div> -<div class="testdiv">aaaabb<br>bbbbbb<br>bbbccccc</div> -<div class="testdiv">aaaabb<br>bbbbbb<br>bbbccccc</div> +<div class="testdiv">aaaabb<br>bbbbbb<br>bbb<br>ccccc</div> +<div class="testdiv">aaaabb<br>bbbbbb<br>bbb<br>ccccc</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-inline-006.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-inline-006.html index af2f6fb90b2..9f9a618ebfe 100644 --- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-inline-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-inline-006.html @@ -11,4 +11,10 @@ </style> <div>Test passes if the two boxes are the same.</div> <div class="testdiv">aaaa<span class="test">bbbbbbbbbbb</span>ccccc</div> -<div class="testdiv">aaaabb<br>bbbbbb<br>bbbccccc</div> +<!-- +Some browsers may decide to break before the last 'b', which is still conformant from the spec +perspective. However, this test would fail in that case. Current spec states that behavior is +undefined in the boundaries of the inline-box. See https://github.com/web-platform-tests/wpt/issues/19903 +and https://github.com/w3c/csswg-drafts/issues/3897 for details. +--> +<div class="testdiv">aaaabb<br>bbbbbb<br>bbb<br>ccccc</div> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html b/tests/wpt/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html deleted file mode 100644 index 5229881e30f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html +++ /dev/null @@ -1,47 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<title>CSSPseudoElement.getAnimations() for CSS transitions</title> -<link rel="help" href="https://drafts.csswg.org/css-transitions-2/#animation-composite-order"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="support/helper.js"></script> -<style> -.init::before { - content: ''; - height: 0px; - width: 0px; - opacity: 0; - transition: all 100s; -} -.change::before { - height: 100px; - width: 100px; - opacity: 1; -} -</style> -<div id="log"></div> -<script> -'use strict'; - -test(t => { - const div = addDiv(t, { class: 'init' }); - getComputedStyle(div).width; - div.classList.add('change'); - - // Sanity checks - assert_equals(document.getAnimations().length, 3, - 'Got expected number of animations on document'); - const pseudoTarget = document.getAnimations()[0].effect.target; - assert_class_string(pseudoTarget, 'CSSPseudoElement', - 'Got pseudo-element target'); - - // Check animations returned from the pseudo element are in correct order - const anims = pseudoTarget.getAnimations(); - assert_equals(anims.length, 3, - 'Got expected number of animations on pseudo-element'); - assert_equals(anims[0].transitionProperty, 'height'); - assert_equals(anims[1].transitionProperty, 'opacity'); - assert_equals(anims[2].transitionProperty, 'width'); -}, 'getAnimations sorts simultaneous transitions by name'); - -</script> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html b/tests/wpt/web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html index 98b91e04ee9..cecddfaa401 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html @@ -99,12 +99,12 @@ test(t => { if (pseudo) { assert_equals( - actual.effect.target.element, + actual.effect.target, element, `Transition #${index + 1} has expected target` ); assert_equals( - actual.effect.target.type, + actual.effect.pseudoElement, pseudo, `Transition #${index + 1} has expected pseudo type` ); @@ -114,6 +114,11 @@ test(t => { element, `Transition #${index + 1} has expected target` ); + assert_equals( + actual.effect.pseudoElement, + null, + `Transition #${index + 1} has null pseudo type` + ); } } }, 'CSS Transitions targetting (pseudo-)elements should have correct order ' diff --git a/tests/wpt/web-platform-tests/docs/__init__.py b/tests/wpt/web-platform-tests/docs/__init__.py new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/__init__.py diff --git a/tests/wpt/web-platform-tests/docs/conf.py b/tests/wpt/web-platform-tests/docs/conf.py index e425667ce88..89f30a02a33 100644 --- a/tests/wpt/web-platform-tests/docs/conf.py +++ b/tests/wpt/web-platform-tests/docs/conf.py @@ -80,11 +80,13 @@ exclude_patterns = [ '.DS_Store' ] +from docs.wpt_lint_rules import WPTLintRules # Enable inline reStructured Text within Markdown-formatted files # https://recommonmark.readthedocs.io/en/latest/auto_structify.html from recommonmark.transform import AutoStructify def setup(app): app.add_transform(AutoStructify) + app.add_directive('wpt-lint-rules', WPTLintRules) # The name of the Pygments (syntax highlighting) style to use. pygments_style = None diff --git a/tests/wpt/web-platform-tests/docs/wpt_lint_rules.py b/tests/wpt/web-platform-tests/docs/wpt_lint_rules.py new file mode 100644 index 00000000000..a5eed507b5e --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/wpt_lint_rules.py @@ -0,0 +1,78 @@ +from docutils.parsers.rst import Directive, nodes +from docutils.utils import new_document +from recommonmark.parser import CommonMarkParser +import importlib +import textwrap + +class WPTLintRules(Directive): + """A docutils directive to generate documentation for the + web-platform-test-test's linting tool from its source code. Requires a + single argument: a Python module specifier for a file which declares + linting rules.""" + has_content = True + required_arguments = 1 + optional_arguments = 0 + _md_parser = CommonMarkParser() + + @staticmethod + def _parse_markdown(markdown): + WPTLintRules._md_parser.parse(markdown, new_document("<string>")) + return WPTLintRules._md_parser.document.children[0] + + @property + def module_specifier(self): + return self.arguments[0] + + def _get_rules(self): + try: + module = importlib.import_module(self.module_specifier) + except ImportError: + raise ImportError( + """wpt-lint-rules: unable to resolve the module at "{}".""".format(self.module_specifier) + ) + + for binding_name, value in module.__dict__.iteritems(): + if hasattr(value, "__abstractmethods__") and len(value.__abstractmethods__): + continue + + description = getattr(value, "description", None) + name = getattr(value, "name", None) + to_fix = getattr(value, "to_fix", None) + + if description is None: + continue + + if to_fix is not None: + to_fix = textwrap.dedent(to_fix) + + yield { + "name": name, + "description": textwrap.dedent(description), + "to_fix": to_fix + } + + + def run(self): + definition_list = nodes.definition_list() + + for rule in sorted(self._get_rules(), key=lambda rule: rule['name']): + item = nodes.definition_list_item() + definition = nodes.definition() + term = nodes.term() + item += term + item += definition + definition_list += item + + term += nodes.literal(text=rule["name"]) + definition += WPTLintRules._parse_markdown(rule["description"]) + + if rule["to_fix"]: + definition += nodes.strong(text="To fix:") + definition += WPTLintRules._parse_markdown(rule["to_fix"]) + + if len(definition_list.children) == 0: + raise Exception( + """wpt-lint-rules: no linting rules found at "{}".""".format(self.module_specifier) + ) + + return [definition_list] diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/lint-tool.md b/tests/wpt/web-platform-tests/docs/writing-tests/lint-tool.md index f3a34ef1bc0..f9caca35fef 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/lint-tool.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/lint-tool.md @@ -22,81 +22,14 @@ those cases you can [whitelist test files](#updating-the-whitelist) to suppress the errors. In all other cases, follow the instructions below to fix all errors reported. -* **CONSOLE**: Test-file line has a `console.*(...)` call; **fix**: remove - the `console.*(...)` call (and in some cases, consider adding an - `assert_*` of some kind in place of it). +<!-- + This listing is automatically generated from the linting tool's Python source + code. +--> -* **CR AT EOL**: Test-file line ends with CR (U+000D) character; **fix**: - reformat file so each line just has LF (U+000A) line ending (standard, - cross-platform "Unix" line endings instead of, e.g., DOS line endings). - -* **EARLY-TESTHARNESSREPORT**: Test file has an instance of - `<script src='/resources/testharnessreport.js'>` prior to - `<script src='/resources/testharness.js'>`; **fix**: flip the order. - -* **GENERATE_TESTS**: Test file line has a generate_tests call; **fix**: remove - the call and call `test()` a number of times instead. - -* **INDENT TABS**: Test-file line starts with one or more tab characters; - **fix**: use spaces to replace any tab characters at beginning of lines. - -* **INVALID-TIMEOUT**: Test file with `<meta name='timeout'...>` element - that has a `content` attribute whose value is not `long`; **fix**: - replace the value of the `content` attribute with `long`. - -* **LATE-TIMEOUT**: Test file with `<meta name="timeout"...>` element after - `<script src='/resources/testharnessreport.js'>` element ; **fix**: move - the `<meta name="timeout"...>` element to precede the `script` element. - -* **LAYOUTTESTS APIS**: Test file uses `eventSender`, `testRunner`, or - `internals` which are LayoutTests-specific APIs used in WebKit/Blink. - -* **MALFORMED-VARIANT**: Test file with a `<meta name='variant'...>` - element whose `content` attribute has a malformed value; **fix**: ensure - the value of the `content` attribute starts with `?` or `#` or is empty. - -* **MISSING-LINK**: CSS test file is missing a link to a spec. **fix**: Ensure that there is a `<link rel="help" href="[url]">` for the spec. - * Note: `MISSING-LINK` is designed to ensure that the CSS build tool can find the tests. Note that the CSS build system is primarily used by [test.csswg.org/](http://test.csswg.org/), which doesn't use `wptserve`, so `*.any.js` and similar tests won't work there; stick with the `.html` equivalent. - -* **MISSING-TESTHARNESSREPORT**: Test file is missing an instance of - `<script src='/resources/testharnessreport.js'>`; **fix**: ensure each - test file contains `<script src='/resources/testharnessreport.js'>`. - -* **MULTIPLE-TESTHARNESS**: Test file with multiple instances of - `<script src='/resources/testharness.js'>`; **fix**: ensure each test - has only one `<script src='/resources/testharness.js'>` instance. - -* **MULTIPLE-TESTHARNESSREPORT**: Test file with multiple instances of - `<script src='/resources/testharnessreport.js'>`; **fix**: ensure each test - has only one `<script src='/resources/testharnessreport.js'>` instance. - -* **MULTIPLE-TIMEOUT**: Test file with multiple `<meta name="timeout"...>` - elements; **fix**: ensure each test file has only one instance of a - `<meta name="timeout"...>` element. - -* **PARSE-FAILED**: Test file failed parsing by manifest builder; **fix**: - examine the file to find the causes of any parse errors, and fix them. - -* **PATH LENGTH**: Test file's pathname has a total length greater than 150 - characters; **fix**: use shorter filename to rename the test file. - -* **PRINT STATEMENT**: A server-side python support file contains a `print` - statement; **fix**: remove the `print` statement or replace it with - something else that achieves the intended effect (e.g., a logging call). - -* **SET TIMEOUT**: Test-file line has `setTimeout(...)` call; **fix**: - replace all `setTimeout(...)` calls with `step_timeout(...)` calls. - -* **TRAILING WHITESPACE**: Test-file line has trailing whitespace; **fix**: - remove trailing whitespace from all lines in the file. - -* **VARIANT-MISSING**: Test file with a `<meta name='variant'...>` element - that's missing a `content` attribute; **fix**: add a `content` attribute - with an appropriate value to the `<meta name='variant'...>` element. - -* **W3C-TEST.ORG**: Test-file line has the string `w3c-test.org`; **fix**: - either replace the `w3c-test.org` string with the expression - `{{host}}:{{ports[http][0]}}` or a generic hostname like `example.org`. +```eval_rst +.. wpt-lint-rules:: tools.lint.rules +``` ## Updating the whitelist diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/oversized-images-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/oversized-images-reporting.html index baa866d0a1c..ef365e060c4 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/oversized-images-reporting.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/oversized-images-reporting.html @@ -3,6 +3,7 @@ <head> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> + <script src='../resources/feature-policy-report-json.js'></script> </head> <body> <img src="./oversized.jpg" alt="oversized image" width="50" height="50"> @@ -19,6 +20,7 @@ assert_equals(rbody.sourceFile, document.getElementsByTagName('img')[0].src); assert_equals(rbody.lineNumber, null); assert_equals(rbody.columnNumber, null); + check_report_json(reports[0]); }), {types: ['feature-policy-violation'], buffered: true} ).observe(); diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html index 6655210f684..80d0b0f0906 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html @@ -3,6 +3,7 @@ <head> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> + <script src='../resources/feature-policy-report-json.js'></script> </head> <body> <script> @@ -17,6 +18,7 @@ var check_report_format = (reports, observer) => { assert_equals(typeof report.body.lineNumber, "number"); assert_equals(typeof report.body.columnNumber, "number"); assert_equals(report.body.disposition, "enforce"); + check_report_json(report); }; new ReportingObserver(t.step_func_done(check_report_format), diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html index d92a68588eb..9e526b904d4 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html @@ -3,6 +3,7 @@ <head> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> + <script src='../resources/feature-policy-report-json.js'></script> </head> <body> <script> @@ -17,6 +18,7 @@ var check_report_format = (reports, observer) => { assert_equals(typeof report.body.lineNumber, "number"); assert_equals(typeof report.body.columnNumber, "number"); assert_equals(report.body.disposition, "enforce"); + check_report_json(report); }; new ReportingObserver(t.step_func_done(check_report_format), diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-report-json.js b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-report-json.js new file mode 100644 index 00000000000..08a0ecaded8 --- /dev/null +++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-report-json.js @@ -0,0 +1,20 @@ +/** + * @fileoverview functions for ensuring feature policy report is serializable + */ + +const check_report_json = (report) => { + // Ensures toJSON method exists on report. + assert_equals(typeof report.toJSON, "function"); + const report_json = report.toJSON(); + // Ensures toJSON() call is successful. + assert_equals(report.type, report_json.type); + assert_equals(report.url, report_json.url); + assert_equals(report.body.featureId, report_json.body.featureId); + assert_equals(report.body.disposition, report_json.body.disposition); + assert_equals(report.body.sourceFile, report_json.body.sourceFile); + assert_equals(report.body.lineNumber, report_json.body.lineNumber); + assert_equals(report.body.columnNumber, report_json.body.columnNumber); + // Ensures JSON.stringify() serializes the report correctly. + assert_false(JSON.stringify(report) === "{}"); + assert_equals(JSON.stringify(report), JSON.stringify(report_json)); +}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-stream-disturbed-by-pipe.any.js b/tests/wpt/web-platform-tests/fetch/api/response/response-stream-disturbed-by-pipe.any.js new file mode 100644 index 00000000000..f0066c2333a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-stream-disturbed-by-pipe.any.js @@ -0,0 +1,15 @@ +test(() => { + const r = new Response(new ReadableStream()); + // highWaterMark: 0 means that nothing will actually be read from the body. + r.body.pipeTo(new WritableStream({}, {highWaterMark: 0})); + assert_true(r.bodyUsed, 'bodyUsed should be true'); +}, 'using pipeTo on Response body should disturb it synchronously'); + +test(() => { + const r = new Response(new ReadableStream()); + r.body.pipeThrough({ + writable: new WritableStream({}, {highWaterMark: 0}), + readable: new ReadableStream() + }); + assert_true(r.bodyUsed, 'bodyUsed should be true'); +}, 'using pipeThrough on Response body should disturb it synchronously'); diff --git a/tests/wpt/web-platform-tests/fetch/http-cache/http-cache.js b/tests/wpt/web-platform-tests/fetch/http-cache/http-cache.js index 3f4a2e7ed7f..ce49ad85363 100644 --- a/tests/wpt/web-platform-tests/fetch/http-cache/http-cache.js +++ b/tests/wpt/web-platform-tests/fetch/http-cache/http-cache.js @@ -42,6 +42,12 @@ function makeTest (test) { return function () { var uuid = token() var requests = expandTemplates(test) + var fetchFunctions = makeFetchFunctions(requests, uuid) + return runTest(fetchFunctions, requests, uuid) + } +} + +function makeFetchFunctions(requests, uuid) { var fetchFunctions = [] for (let i = 0; i < requests.length; ++i) { fetchFunctions.push({ @@ -62,6 +68,10 @@ function makeTest (test) { pauseAfter: 'pause_after' in requests[i] }) } + return fetchFunctions +} + +function runTest(fetchFunctions, requests, uuid) { var idx = 0 function runNextStep () { if (fetchFunctions.length) { @@ -86,7 +96,6 @@ function makeTest (test) { checkRequests(requests, testState) return Promise.resolve() }) - } } function expandTemplates (test) { @@ -226,10 +235,14 @@ function pause () { function makeTestUrl (uuid, config) { var arg = '' + var base_url = '' + if ('base_url' in config) { + base_url = config.base_url + } if ('query_arg' in config) { arg = `&target=${config.query_arg}` } - return `resources/http-cache.py?dispatch=test&uuid=${uuid}${arg}` + return `${base_url}resources/http-cache.py?dispatch=test&uuid=${uuid}${arg}` } function getServerState (uuid) { diff --git a/tests/wpt/web-platform-tests/fetch/http-cache/resources/http-cache.py b/tests/wpt/web-platform-tests/fetch/http-cache/resources/http-cache.py index e64fe6dfea0..351b2eb3c9e 100755 --- a/tests/wpt/web-platform-tests/fetch/http-cache/resources/http-cache.py +++ b/tests/wpt/web-platform-tests/fetch/http-cache/resources/http-cache.py @@ -13,6 +13,9 @@ DATEHDRS = set(['date', 'expires', 'last-modified']) def main(request, response): dispatch = request.GET.first("dispatch", None) uuid = request.GET.first("uuid", None) + + if request.method == "OPTIONS": + return handle_preflight(uuid, request, response) if not uuid: response.status = (404, "Not Found") response.headers.set("Content-Type", "text/plain") @@ -25,6 +28,14 @@ def main(request, response): response.headers.set("Content-Type", "text/plain") return "Fallthrough" +def handle_preflight(uuid, request, response): + response.status = (200, "OK") + response.headers.set("Access-Control-Allow-Origin", "*") + response.headers.set("Access-Control-Allow-Methods", "GET") + response.headers.set("Access-Control-Allow-Headers", "*") + response.headers.set("Access-Control-Max-Age", "86400") + return "Preflight request" + def handle_state(uuid, request, response): response.headers.set("Content-Type", "text/plain") return json.dumps(request.server.stash.take(uuid)) diff --git a/tests/wpt/web-platform-tests/fetch/http-cache/resources/split-origin-popup.html b/tests/wpt/web-platform-tests/fetch/http-cache/resources/split-origin-popup.html new file mode 100644 index 00000000000..d94ac7f70bd --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/http-cache/resources/split-origin-popup.html @@ -0,0 +1,27 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8"> + <title>HTTP Cache - helper</title> + <meta name="help" href="https://fetch.spec.whatwg.org/#request"> + <meta name="timeout" content="normal"> + <script src="/resources/testharness.js"></script> + <script src="../http-cache.js"></script> +</head> +<body> +<script> + window.addEventListener("message", function listener(event) { + window.removeEventListener("message", listener) + + var fetchFunction = makeFetchFunctions(event.data.requests, event.data.uuid)[event.data.index] + fetchFunction.code(event.data.index).then( + function(response) { + event.source.postMessage("success", event.origin) + }, + function(response) { + event.source.postMessage("success", event.origin) + } + ) + }) +</script> +</body> diff --git a/tests/wpt/web-platform-tests/fetch/http-cache/split-cache.tentative.html b/tests/wpt/web-platform-tests/fetch/http-cache/split-cache.tentative.html new file mode 100644 index 00000000000..533dd6a936f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/http-cache/split-cache.tentative.html @@ -0,0 +1,118 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8"> + <title>HTTP Cache - Partioning by top-level origin</title> + <meta name="help" href="https://fetch.spec.whatwg.org/#request"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/utils.js"></script> + <script src="/common/get-host-info.sub.js"></script> + <script src="http-cache.js"></script> +</head> +<body> +<script> +const host = get_host_info(); + +// We run this entire test twice: first with a same-origin then with a cross-origin popup +function performFullTest(is_same_origin_test) { + const POPUP_HTTP_ORIGIN = is_same_origin_test ? host.HTTP_ORIGIN : host.HTTP_REMOTE_ORIGIN + const LOCAL_HTTP_ORIGIN = host.HTTP_ORIGIN + + const popupBaseURL = POPUP_HTTP_ORIGIN + window.location.pathname.replace(/\/[^\/]*$/, '/') ; + const localBaseURL = LOCAL_HTTP_ORIGIN + window.location.pathname.replace(/\/[^\/]*$/, '/') ; + + var test = { + name: "HTTP Cache is partitioned by top-frame origin", + requests: [ + { + response_headers: [ + ["Expires", (30 * 24 * 60 * 60)] + ], + base_url: localBaseURL + }, + { + base_url: localBaseURL + }, + { + request_headers: [ + ["Cache-Control", "no-cache"] + ], + // If the popup's request was a cache hit, we would only expect 2 + // requests to the server. If it was a cache miss, we would expect 3. + expected_response_headers: [ + ["server-request-count", is_same_origin_test ? "2" : "3"] + ], + base_url: localBaseURL + } + ] + } + + var uuid = token() + var local_requests = expandTemplates(test) + var fetchFns = makeFetchFunctions(local_requests, uuid) + + var popup_requests = expandTemplates(test) + + // Request the resource with a long cache expiry + function local_fetch() { + return fetchFns[0].code(0) + } + + function popup_fetch() { + return new Promise(function(resolve, reject) { + var win = window.open(popupBaseURL + "resources/split-origin-popup.html") + + // Post a message to intisearchte the popup's request and give the necessary + // information. Posted researchtedly to account for dropped messages as the + // popup is loading. + function postMessage(event) { + var payload = { + index: 1, + requests: popup_requests, + uuid: uuid + } + win.postMessage(payload, POPUP_HTTP_ORIGIN) + } + var messagePoster = setInterval(postMessage, 100) + + // Listen for the result + function messageListener(event) { + if (event.origin !== POPUP_HTTP_ORIGIN) { + reject("Unknown error") + } else if (event.data === "success") { + resolve() + } else if (event.data === "error") { + reject("Error in popup") + } else { + return; // Ignore testharness.js internal messages + } + window.removeEventListener("message", messageListener) + clearInterval(messagePoster) + win.close() + } + window.addEventListener("message", messageListener) + }) + } + + function local_fetch2() { + return fetchFns[2].code(2) + } + + // Final checks. + function check_server_info() { + return getServerState(uuid) + .then(function (testState) { + checkRequests(local_requests, testState) + return Promise.resolve() + }) + } + + promise_test(() => local_fetch().then(popup_fetch).then(local_fetch2).then(check_server_info)) +} + +performFullTest(true); +performFullTest(false); +</script> +</body> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/geolocation-API/non-secure-contexts.http.html b/tests/wpt/web-platform-tests/geolocation-API/non-secure-contexts.http.html index af1a5cd81ad..d491086cf8a 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/non-secure-contexts.http.html +++ b/tests/wpt/web-platform-tests/geolocation-API/non-secure-contexts.http.html @@ -57,7 +57,7 @@ 1, "Expected the value for PERMISSION_DENIED, which is 1." ); - }, "When in a non-secure context, the getCurrentPosition() errorCallBack gets a PositionError with the correct error code."); + }, "When in a non-secure context, the getCurrentPosition() errorCallBack gets a GeolocationPositionError with the correct error code."); promise_test(async () => { const positionErrorPromise = new Promise(errorCallBack => { @@ -78,5 +78,5 @@ 1, "Expected the value for PERMISSION_DENIED, which is 1." ); - }, "When in a non-secure context, the watchPosition() errorCallBack gets a PositionError with the correct error code."); + }, "When in a non-secure context, the watchPosition() errorCallBack gets a GeolocationPositionError with the correct error code."); </script> diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/resources/post-done-to-opener.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/resources/post-done-to-opener.html new file mode 100644 index 00000000000..b47f0f274ef --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/resources/post-done-to-opener.html @@ -0,0 +1,3 @@ +<script> + window.opener.top.postMessage("DONE", "*"); +</script> diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html new file mode 100644 index 00000000000..0bb98c55382 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> + <script> + async_test(t => { + let i = document.createElement('iframe'); + i.sandbox = "allow-same-origin allow-popups allow-popups-to-escape-sandbox"; + i.srcdoc = `<a target='_blank' + href="javascript:window.opener.top.postMessage('FAIL', '*');">Click me!</a> + <a target='_blank' + href="./resources/post-done-to-opener.html">Click me next!</a>`; + + i.onload = _ => { + // Since the frame is sandboxed, but allow-same-origin, we can reach into it to grab the + // anchor element to click. We'll click the `javascript:` URL first, then pop up a new + // window that posts `DONE`. + // + // TODO(mkwst): This feels like a race, but it's one that we consistently win when I'm + // running the test locally 10,000 times. Good enough!™ + i.contentDocument.body.querySelectorAll('a')[0].click(); + i.contentDocument.body.querySelectorAll('a')[1].click(); + }; + document.body.appendChild(i); + + window.addEventListener('message', t.step_func(e => { + assert_not_equals(e.data, "FAIL"); + if (e.data == "DONE") + t.done(); + })); + }, "Sandboxed => unsandboxed popup"); + </script> +</body> diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/imagemap.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/imagemap.html new file mode 100644 index 00000000000..fa3d95c81b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/imagemap.html @@ -0,0 +1,5 @@ +<!DOCTYPE html> +<body> +<img src="/media/poster.png" usemap="#map"> +<map name="map"></map> +</body> diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/supported-elements.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/supported-elements.html index 761936715a3..29b3f3fb7b6 100644 --- a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/supported-elements.html +++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/supported-elements.html @@ -34,4 +34,50 @@ promise_test(async t => { await waitUntilStableAutofocusState(w); assert_equals(w.document.activeElement.tagName, 'BODY'); }, 'Non-HTMLElement should not support autofocus'); + +promise_test(async t => { + let w = window.open('/common/blank.html'); + await waitForLoad(w); + t.add_cleanup(() => { w.close(); }); + const host = w.document.createElement('div'); + host.autofocus = true; + const shadow = host.attachShadow({mode:'closed', delegatesFocus:true}); + shadow.appendChild(w.document.createElement('input')); + w.document.body.appendChild(host); + await waitUntilStableAutofocusState(w); + assert_equals(w.document.activeElement, host); + assert_equals(shadow.activeElement.tagName, 'INPUT'); +}, 'Host element with delegatesFocus should support autofocus'); + +promise_test(async t => { + let w = window.open('/common/blank.html'); + await waitForLoad(w); + t.add_cleanup(() => { w.close(); }); + const host = w.document.createElement('div'); + host.autofocus = true; + host.attachShadow({mode:'closed', delegatesFocus:true}); + w.document.body.appendChild(host); + const next = w.document.createElement('input'); + next.autofocus = true; + w.document.body.appendChild(next); + await waitUntilStableAutofocusState(w); + assert_equals(w.document.activeElement, next); +}, 'Host element with delegatesFocus including no focusable descendants should be skipped'); + +promise_test(async t => { + let w = window.open('./resources/imagemap.html'); + await waitForLoad(w); + t.add_cleanup(() => { w.close(); }); + const area = w.document.createElement('area'); + area.autofocus = true; + area.shape = 'rect'; + area.coords = '1,1,99,99'; + area.href = '/common/blank.html'; + w.document.querySelector('map').appendChild(area); + await waitUntilStableAutofocusState(w); + // According to the specification, DOM anchor for an AREA shape is an IMG + // element, but major browsers don't follow it. + // See https://github.com/whatwg/html/issues/5054 + assert_equals(w.document.activeElement, area); +}, 'Area element should support autofocus'); </script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html index d3b07f49f78..0e91fa8b209 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html index 102a46a3059..f5bc58d5656 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html index ceb810bea32..efa9b8ae7c2 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests4.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests4.html index 9394df7f1f2..b519246aa5d 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests4.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests4.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests6.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests6.html index 7b7669e2fa8..d0e623080fd 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests6.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests6.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests7.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests7.html index cc775229791..a73d767101d 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests7.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests7.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests_innerHTML_1.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests_innerHTML_1.html index 29df3868a3f..0658d768db2 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests_innerHTML_1.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_tests_innerHTML_1.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html index 3308d220c72..b321c413c21 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html @@ -10,6 +10,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/html/tools/html5lib_test_fragment.xml b/tests/wpt/web-platform-tests/html/tools/html5lib_test_fragment.xml index 5be259b7490..794d13f1c4a 100644 --- a/tests/wpt/web-platform-tests/html/tools/html5lib_test_fragment.xml +++ b/tests/wpt/web-platform-tests/html/tools/html5lib_test_fragment.xml @@ -9,6 +9,7 @@ <div id="log"></div> <script src="common.js"></script> <script src="test.js"></script> + <script src="template.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/input-events/input-events-typing-manual.html b/tests/wpt/web-platform-tests/input-events/input-events-typing.html index 5f81c33c751..153193c3a9e 100644 --- a/tests/wpt/web-platform-tests/input-events/input-events-typing-manual.html +++ b/tests/wpt/web-platform-tests/input-events/input-events-typing.html @@ -3,6 +3,9 @@ <title>InputEvent have correct data/order when typing on textarea and contenteditable</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> <p>To manually run this test, please follow the steps below:<br/> 1. Focus the first box and press key 'a' and then Shift-'b'.<br/> 2. Focus the second box and press key 'c' and then Shift-'d'.<br/> @@ -56,5 +59,24 @@ async_test(t => { })); } } -}); -</script> + document.getElementById('plain').focus(); + new test_driver.Actions() + .keyDown('a') + .keyUp('a') + .keyDown('\uE008') // Shift + .keyDown('B') + .keyUp('B') + .keyUp('\uE008') + .send() + .then(() => { + document.getElementById('rich').focus(); + new test_driver.Actions() + .keyDown('c') + .keyUp('c') + .keyDown('\uE008') // Shift + .keyDown('D') + .keyUp('D') + .keyUp('\uE008') + .send(); + }); +});</script> diff --git a/tests/wpt/web-platform-tests/installedapp/idlharness.https.window.js b/tests/wpt/web-platform-tests/installedapp/idlharness.https.window.js new file mode 100644 index 00000000000..3988dba414a --- /dev/null +++ b/tests/wpt/web-platform-tests/installedapp/idlharness.https.window.js @@ -0,0 +1,30 @@ +// META: global=window +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://wicg.github.io/get-installed-related-apps/spec/ + +const idl = ` +dictionary RelatedApplication { + required USVString platform; + USVString url; + DOMString id; + USVString version; +}; + +[Exposed=Window] +partial interface Navigator { + [SecureContext] Promise<sequence<RelatedApplication>> getInstalledRelatedApps(); +};`; + +test(t => { + const idl_array = new IdlArray(); + idl_array.add_untested_idls("interface Navigator {};"); + idl_array.add_idls(idl); + idl_array.add_objects({ + Navigator: ['navigator'], + }); + idl_array.test(); +}, 'IDL test for getInstalledRelatedApps'); diff --git a/tests/wpt/web-platform-tests/installedapp/installedapp.https.window.js b/tests/wpt/web-platform-tests/installedapp/installedapp.https.window.js new file mode 100644 index 00000000000..44fa30278a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/installedapp/installedapp.https.window.js @@ -0,0 +1,30 @@ +// META: script=resources/utils.js + +'use strict'; + +// https://wicg.github.io/get-installed-related-app/spec + +promise_test(async t => { + + assert_true('getInstalledRelatedApps' in navigator); + assert_array_equals(await navigator.getInstalledRelatedApps(), []); + +}, 'Check calling getInstalledRelatedApps works as expected'); + +promise_test(async t => { + + const iframeWindow = await new Promise(resolve => { + const iframe = document.createElement('iframe'); + iframe.src = 'resources/iframe.html'; + iframe.onload = () => resolve(iframe.contentWindow); + document.body.appendChild(iframe); + }); + + try { + await iframeWindow.navigator.getInstalledRelatedApps(); + assert_unreached('expected a DOMException, but none was thrown'); + } catch (e) { + assert_equals(e.name, 'InvalidStateError'); + } + +}, 'Calling getInstalledrelatedApps from an iframe fails');
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/installedapp/resources/iframe.html b/tests/wpt/web-platform-tests/installedapp/resources/iframe.html new file mode 100644 index 00000000000..8c7fe21114b --- /dev/null +++ b/tests/wpt/web-platform-tests/installedapp/resources/iframe.html @@ -0,0 +1,2 @@ +<html> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/interfaces/META.yml b/tests/wpt/web-platform-tests/interfaces/META.yml index c1dd8dddf9e..e624c12d5b7 100644 --- a/tests/wpt/web-platform-tests/interfaces/META.yml +++ b/tests/wpt/web-platform-tests/interfaces/META.yml @@ -1,2 +1,3 @@ suggested_reviewers: - foolip + - stephenmcgruer diff --git a/tests/wpt/web-platform-tests/interfaces/appmanifest.idl b/tests/wpt/web-platform-tests/interfaces/appmanifest.idl index b3a303652f5..35c491a5f7b 100644 --- a/tests/wpt/web-platform-tests/interfaces/appmanifest.idl +++ b/tests/wpt/web-platform-tests/interfaces/appmanifest.idl @@ -39,7 +39,6 @@ dictionary WebAppManifest { USVString theme_color; USVString background_color; USVString scope; - ServiceWorkerRegistrationObject serviceworker; sequence<ExternalApplicationResource> related_applications; boolean prefer_related_applications = "false"; sequence<ShortcutItem> shortcuts; @@ -70,13 +69,6 @@ dictionary ShortcutItem { sequence<ImageResource> icons; }; -dictionary ServiceWorkerRegistrationObject { - required USVString src; - USVString scope; - WorkerType type = "classic"; - ServiceWorkerUpdateViaCache update_via_cache = "imports"; -}; - dictionary ExternalApplicationResource { required USVString platform; USVString url; diff --git a/tests/wpt/web-platform-tests/interfaces/fetch.idl b/tests/wpt/web-platform-tests/interfaces/fetch.idl index 9ff4aab4b14..eacc69d8b9d 100644 --- a/tests/wpt/web-platform-tests/interfaces/fetch.idl +++ b/tests/wpt/web-platform-tests/interfaces/fetch.idl @@ -70,7 +70,7 @@ dictionary RequestInit { any window; // can only be set to null }; -enum RequestDestination { "", "audio", "audioworklet", "document", "embed", "font", "frame", "iframe", "image", "manifest", "object", "paintworklet", "report", "script", "sharedworker", "style", "track", "video", "worker", "xslt" }; +enum RequestDestination { "", "audio", "audioworklet", "document", "embed", "font", "image", "manifest", "object", "paintworklet", "report", "script", "sharedworker", "style", "track", "video", "worker", "xslt" }; enum RequestMode { "navigate", "same-origin", "no-cors", "cors" }; enum RequestCredentials { "omit", "same-origin", "include" }; enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" }; diff --git a/tests/wpt/web-platform-tests/interfaces/speech-api.idl b/tests/wpt/web-platform-tests/interfaces/speech-api.idl index 0b28fd44ac5..0aad231d344 100644 --- a/tests/wpt/web-platform-tests/interfaces/speech-api.idl +++ b/tests/wpt/web-platform-tests/interfaces/speech-api.idl @@ -1,7 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT // Content was automatically extracted by Reffy into reffy-reports // (https://github.com/tidoust/reffy-reports) -// Source: Web Speech API (https://w3c.github.io/speech-api/) +// Source: Web Speech API (https://wicg.github.io/speech-api/) [Exposed=Window] interface SpeechRecognition : EventTarget { diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl index 81728b8aba4..fd35c0dfd37 100644 --- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl +++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl @@ -117,6 +117,7 @@ dictionary CollectedClientData { required DOMString type; required DOMString challenge; required DOMString origin; + boolean crossOrigin; TokenBinding tokenBinding; }; diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc.idl index 43ee424b7c3..d828fae6b7c 100644 --- a/tests/wpt/web-platform-tests/interfaces/webrtc.idl +++ b/tests/wpt/web-platform-tests/interfaces/webrtc.idl @@ -42,8 +42,6 @@ enum RTCBundlePolicy { }; enum RTCRtcpMuxPolicy { - // At risk due to lack of implementers' interest. - "negotiate", "require" }; @@ -295,7 +293,6 @@ enum RTCRtpTransceiverDirection { interface RTCRtpSender { readonly attribute MediaStreamTrack? track; readonly attribute RTCDtlsTransport? transport; - readonly attribute RTCDtlsTransport? rtcpTransport; static RTCRtpCapabilities? getCapabilities(DOMString kind); Promise<void> setParameters(RTCRtpSendParameters parameters); RTCRtpSendParameters getParameters(); @@ -328,20 +325,12 @@ dictionary RTCRtpCodingParameters { dictionary RTCRtpDecodingParameters : RTCRtpCodingParameters {}; dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters { - octet codecPayloadType; - RTCDtxStatus dtx; boolean active = true; - unsigned long ptime; unsigned long maxBitrate; double maxFramerate; double scaleResolutionDownBy; }; -enum RTCDtxStatus { - "disabled", - "enabled" -}; - enum RTCDegradationPreference { "maintain-framerate", "maintain-resolution", @@ -387,7 +376,6 @@ dictionary RTCRtpHeaderExtensionCapability { interface RTCRtpReceiver { readonly attribute MediaStreamTrack track; readonly attribute RTCDtlsTransport? transport; - readonly attribute RTCDtlsTransport? rtcpTransport; static RTCRtpCapabilities? getCapabilities(DOMString kind); RTCRtpReceiveParameters getParameters(); sequence<RTCRtpContributingSource> getContributingSources(); diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl index 1dab90eff49..6d684391faf 100644 --- a/tests/wpt/web-platform-tests/interfaces/webxr.idl +++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl @@ -205,11 +205,11 @@ interface XRWebGLLayer { }; partial dictionary WebGLContextAttributes { - boolean xrCompatible = null; + boolean xrCompatible = false; }; partial interface mixin WebGLRenderingContextBase { - Promise<void> makeXRCompatible(); + [NewObject] Promise<void> makeXRCompatible(); }; [SecureContext, Exposed=Window] diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index ac2d30427cf..23cf36a89a5 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -54,9 +54,6 @@ W3C-TEST.ORG: .gitignore W3C-TEST.ORG: README.md W3C-TEST.ORG: */README.md W3C-TEST.ORG: docs/* -SET TIMEOUT: docs/* -WEB-PLATFORM.TEST:README.md -WEB-PLATFORM.TEST:*/README.md WEB-PLATFORM.TEST:docs/* CR AT EOL, INDENT TABS:docs/make.bat INDENT TABS:docs/Makefile @@ -106,7 +103,6 @@ PRINT STATEMENT: webdriver/tests/support/helpers.py CONSOLE: console/* CONSOLE: resources/check-layout-th.js CONSOLE: resources/chromium/* -CONSOLE: resources/idlharness.js CONSOLE: streams/resources/test-utils.js CONSOLE: service-workers/service-worker/resources/navigation-redirect-other-origin.html CONSOLE: service-workers/service-worker/navigation-redirect.https.html @@ -158,7 +154,6 @@ SET TIMEOUT: html/browsers/history/the-location-interface/* SET TIMEOUT: html/browsers/history/the-session-history-of-browsing-contexts/* SET TIMEOUT: html/browsers/offline/* SET TIMEOUT: html/browsers/the-window-object/* -SET TIMEOUT: html/cross-origin/resources/* SET TIMEOUT: html/editing/dnd/* SET TIMEOUT: html/semantics/embedded-content/the-iframe-element/* SET TIMEOUT: html/semantics/embedded-content/the-img-element/* @@ -186,16 +181,12 @@ SET TIMEOUT: portals/resources/portals-adopt-predecessor-portal.html SET TIMEOUT: preload/single-download-preload.html SET TIMEOUT: resize-observer/resources/iframe.html SET TIMEOUT: resource-timing/resources/nested-contexts.js -SET TIMEOUT: resource-timing/TAO-null-opaque-origin.sub.html -SET TIMEOUT: resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html -SET TIMEOUT: screen-orientation/onchange-event.html SET TIMEOUT: secure-contexts/basic-popup-and-iframe-tests.https.js SET TIMEOUT: service-workers/cache-storage/script-tests/cache-abort.js SET TIMEOUT: service-workers/service-worker/activation.https.html SET TIMEOUT: service-workers/service-worker/fetch-frame-resource.https.html SET TIMEOUT: service-workers/service-worker/fetch-request-redirect.https.html SET TIMEOUT: service-workers/service-worker/fetch-waits-for-activate.https.html -SET TIMEOUT: service-workers/service-worker/ready.https.html SET TIMEOUT: service-workers/service-worker/update-recovery.https.html SET TIMEOUT: service-workers/service-worker/resources/extendable-event-async-waituntil.js SET TIMEOUT: service-workers/service-worker/resources/fetch-event-async-respond-with-worker.js @@ -207,7 +198,6 @@ SET TIMEOUT: service-workers/service-worker/resources/resource-timing-worker.js SET TIMEOUT: shadow-dom/Document-prototype-currentScript.html SET TIMEOUT: shadow-dom/scroll-to-the-fragment-in-shadow-tree.html SET TIMEOUT: shadow-dom/slotchange-event.html -SET TIMEOUT: shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-003.html SET TIMEOUT: trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html SET TIMEOUT: trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.html SET TIMEOUT: user-timing/* @@ -319,10 +309,6 @@ SET TIMEOUT: resources/testharness.js # setTimeout use in reftests SET TIMEOUT: acid/acid3/test.html -# CI configuration -WEB-PLATFORM.TEST: .azure-pipelines.yml -WEB-PLATFORM.TEST: .travis.yml - # Third party code *: css/tools/apiclient/* *: css/tools/w3ctestlib/* @@ -333,12 +319,8 @@ WEB-PLATFORM.TEST: .travis.yml *: css/tools/_virtualenv/* ## Third party data files -TRAILING WHITESPACE: css/css-writing-modes/tools/generators/ucd/Blocks.txt TRAILING WHITESPACE: resources/chromium/* -## Test generation files -CONSOLE: css/css-writing-modes/tools/generators/unicode-data.js - ## Test plans and implementation reports *: css/*/test-plan/* @@ -352,16 +334,13 @@ CONTENT-MANUAL: css/* SUPPORT-WRONG-DIR: css/requirements.txt SUPPORT-WRONG-DIR: css/README.md SUPPORT-WRONG-DIR: css/build-css-testsuites.sh -SUPPORT-WRONG-DIR: css/OWNERS SUPPORT-WRONG-DIR: css/*/reftest.list -SUPPORT-WRONG-DIR: css/*.headers SUPPORT-WRONG-DIR: css/*/README SUPPORT-WRONG-DIR: css/*/README.md SUPPORT-WRONG-DIR: css/*-README SUPPORT-WRONG-DIR: css/*/LICENSE SUPPORT-WRONG-DIR: css/*/LICENSE-* SUPPORT-WRONG-DIR: css/*/Makefile -SUPPORT-WRONG-DIR: css/*/OWNERS # The selectors-3 testsuite has a weird build system SUPPORT-WRONG-DIR: css/selectors/* @@ -385,8 +364,6 @@ SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/sync-test SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html SUPPORT-WRONG-DIR: css/WOFF2/testcaseindex.xht -NON-EXISTENT-REF: css/css-masking/clip-path-svg-content/clip-path-clip-rule-008.svg -NON-EXISTENT-REF: css/CSS2/normal-flow/blocks-017.xht ## Whitespace rules that we can't enforce yet @@ -421,12 +398,9 @@ CONSOLE: css/css-regions/elements/support/Three.js CONSOLE: css/css-regions/interactivity/selection/support/js/selection-test-helper.js CONSOLE: css/css-regions/stacking-context/javascript-stacking-context-002.html CONSOLE: css/css-shapes/shape-outside/supported-shapes/support/test-utils.js -CONSOLE: css/css-transitions/transition-delay-002.html -CONSOLE: css/css-transitions/transition-delay-003.html CONSOLE: css/css-values/viewport-units-css2-001.html CONSOLE: css/css-writing-modes/orthogonal-parent-shrink-to-fit-001*.html CONSOLE: css/css-writing-modes/tools/generators/gulpfile.js -CONSOLE: css/css-writing-modes/tools/generators/text-orientation-generator.js TRAILING WHITESPACE: css/css-fonts/support/fonts/gsubtest-lookup3.ufo/features.fea TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7.html @@ -436,26 +410,12 @@ TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/p TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9.html TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9-ref.html TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-mbp-horiz-001-rtl-reverse.xhtml -TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/moz-multicol3-column-balancing-break-inside-avoid-1.html -TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/moz-multicol3-column-balancing-break-inside-avoid-1-ref.html SET TIMEOUT: css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html SET TIMEOUT: css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html -SET TIMEOUT: css/css-animations/animation-display.html -SET TIMEOUT: css/css-animations/animation-duration-001.html -SET TIMEOUT: css/css-animations/animation-duration-003.html -SET TIMEOUT: css/css-animations/animation-duration-004.html -SET TIMEOUT: css/css-animations/animation-iteration-count-006.html -SET TIMEOUT: css/css-animations/animation-name-001.html -SET TIMEOUT: css/css-animations/animation-name-003.html -SET TIMEOUT: css/css-animations/animation-name-004.html -SET TIMEOUT: css/css-animations/animation-play-state-001.html -SET TIMEOUT: css/css-shapes/spec-examples/support/spec-example-utils.js -SET TIMEOUT: css/css-transitions/changing-while-transition.html SET TIMEOUT: css/css-transitions/events-007.html SET TIMEOUT: css/css-transitions/support/generalParallelTest.js SET TIMEOUT: css/css-transitions/support/runParallelAsyncHarness.js -SET TIMEOUT: css/css-transitions/transitions-animatable-properties-01.html SET TIMEOUT: css/css-transitions/transitioncancel-001.html SET TIMEOUT: css/css-values/reference/vh_not_refreshing_on_chrome-ref.html SET TIMEOUT: css/css-values/reference/vh_not_refreshing_on_chrome_iframe-ref.html @@ -511,9 +471,6 @@ CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox/support/200x200-green.png CSS-COLLIDING-SUPPORT-NAME: css/css-grid/grid-items/support/200x200-green.png CSS-COLLIDING-SUPPORT-NAME: css/css-regions/contentEditable/support/common.css CSS-COLLIDING-SUPPORT-NAME: css/css-regions/interactivity/full-screen/support/common.css -CSS-COLLIDING-SUPPORT-NAME: css/css-writing-modes/support/pattern-gg-gr-100x100.png -CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/pattern-gg-gr-100x100.png -CSS-COLLIDING-SUPPORT-NAME: css/CSS2/visuren/support/pattern-gg-gr-100x100.png CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds/support/pattern-grg-rgr-grg.png CSS-COLLIDING-SUPPORT-NAME: css/css-multicol/support/pattern-grg-rgr-grg.png CSS-COLLIDING-SUPPORT-NAME: css/css-transitions/support/pattern-grg-rgr-grg.png @@ -626,8 +583,6 @@ CSS-COLLIDING-REF-NAME: css/CSS2/visufx/overflow-applies-to-001-ref.xht CSS-COLLIDING-REF-NAME: css/CSS2/ui/overflow-applies-to-001-ref.xht CSS-COLLIDING-REF-NAME: css/CSS2/visuren/inline-formatting-context-001-ref.xht CSS-COLLIDING-REF-NAME: css/CSS2/linebox/inline-formatting-context-001-ref.xht -CSS-COLLIDING-REF-NAME: css/css-transforms/individual-transform/individual-transform-1-ref.html -CSS-COLLIDING-REF-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html CSS-COLLIDING-REF-NAME: css/css-flexbox/reference/percentage-size-subitems-001-ref.html CSS-COLLIDING-REF-NAME: css/css-grid/grid-items/percentage-size-subitems-001-ref.html CSS-COLLIDING-REF-NAME: css/css-contain/reference/contain-size-button-001-ref.html @@ -663,61 +618,6 @@ MISSING-LINK: css/css-fonts/variations/font-parse-numeric-stretch-style-weight.h MISSING-LINK: css/css-fonts/variations/variable-box-font.html MISSING-LINK: css/css-fonts/variations/variable-gpos-m2b.html MISSING-LINK: css/css-fonts/variations/variable-gsub.html -MISSING-LINK: css/css-paint-api/background-image-alpha.https.html -MISSING-LINK: css/css-paint-api/background-image-multiple.https.html -MISSING-LINK: css/css-paint-api/background-image-tiled.https.html -MISSING-LINK: css/css-paint-api/geometry-background-image-001.https.html -MISSING-LINK: css/css-paint-api/geometry-background-image-002.https.html -MISSING-LINK: css/css-paint-api/geometry-background-image-tiled-001.https.html -MISSING-LINK: css/css-paint-api/geometry-background-image-tiled-002.https.html -MISSING-LINK: css/css-paint-api/geometry-background-image-tiled-003.https.html -MISSING-LINK: css/css-paint-api/geometry-border-image-001.https.html -MISSING-LINK: css/css-paint-api/geometry-border-image-002.https.html -MISSING-LINK: css/css-paint-api/geometry-border-image-003.https.html -MISSING-LINK: css/css-paint-api/geometry-border-image-004.https.html -MISSING-LINK: css/css-paint-api/invalid-image-constructor-error.https.html -MISSING-LINK: css/css-paint-api/invalid-image-paint-error.https.html -MISSING-LINK: css/css-paint-api/invalid-image-pending-script.https.html -MISSING-LINK: css/css-paint-api/overdraw.https.html -MISSING-LINK: css/css-paint-api/paint-arguments.https.html -MISSING-LINK: css/css-paint-api/paint-function-arguments.https.html -MISSING-LINK: css/css-paint-api/paint2d-composite.https.html -MISSING-LINK: css/css-paint-api/paint2d-filter.https.html -MISSING-LINK: css/css-paint-api/paint2d-gradient.https.html -MISSING-LINK: css/css-paint-api/paint2d-image.https.html -MISSING-LINK: css/css-paint-api/paint2d-paths.https.html -MISSING-LINK: css/css-paint-api/paint2d-rects.https.html -MISSING-LINK: css/css-paint-api/paint2d-shadows.https.html -MISSING-LINK: css/css-paint-api/paint2d-transform.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-001.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-002.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-003.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-004.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-005.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-006.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-007.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-008.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-009.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-010.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-011.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-012.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-013.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-014.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-015.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-016.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-017.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-018.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-019.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-020.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-021.https.html -MISSING-LINK: css/css-paint-api/parse-input-arguments-022.https.html -MISSING-LINK: css/css-paint-api/registered-properties-in-custom-paint.https.html -MISSING-LINK: css/css-paint-api/style-background-image.https.html -MISSING-LINK: css/css-paint-api/style-before-pseudo.https.html -MISSING-LINK: css/css-paint-api/style-first-letter-pseudo.https.html -MISSING-LINK: css/css-paint-api/valid-image-after-load.https.html -MISSING-LINK: css/css-paint-api/valid-image-before-load.https.html -MISSING-LINK: css/css-paint-api/hidpi/device-pixel-ratio.https.html MISSING-LINK: css/css-scroll-anchoring/abspos-containing-block-outside-scroller.html MISSING-LINK: css/css-scroll-anchoring/abspos-contributes-to-static-parent-bounds.html MISSING-LINK: css/css-scroll-anchoring/ancestor-change-heuristic.html @@ -756,11 +656,9 @@ MISSING-LINK: css/cssom-view/elementsFromPoint.html MISSING-LINK: css/cssom-view/historical.html MISSING-LINK: css/cssom-view/HTMLBody-ScrollArea_quirksmode.html SUPPORT-WRONG-DIR: css/cssom-view/iframe.html -MISSING-LINK: css/cssom-view/MediaQueryList-with-empty-string.html MISSING-LINK: css/cssom-view/mouseEvent.html MISSING-LINK: css/cssom-view/negativeMargins.html MISSING-LINK: css/cssom-view/offsetTopLeftInScrollableParent.html -MISSING-LINK: css/cssom-view/overscrollBehavior-manual.html MISSING-LINK: css/cssom-view/scrolling-no-browsing-context.html MISSING-LINK: css/cssom-view/scrolling-quirks-vs-nonquirks.html MISSING-LINK: css/cssom-view/scrollingElement.html @@ -775,7 +673,6 @@ MISSING-LINK: css/filter-effects/*.any.js # Tests that use WebKit/Blink testing APIs LAYOUTTESTS APIS: css/css-regions/interactivity/* LAYOUTTESTS APIS: import-maps/resources/jest-test-helper.js -LAYOUTTESTS APIS: permissions/test-background-fetch-permission.html LAYOUTTESTS APIS: resources/chromium/generic_sensor_mocks.js LAYOUTTESTS APIS: resources/chromium/webxr-test.js diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/cramped-001.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/cramped-001.html index d0e636c022e..846be4f8af1 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/cramped-001.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/cramped-001.html @@ -124,13 +124,13 @@ test(function() { assert_true(MathMLFeatureDetection.has_mspace()); - assert_cramped("mover-003", true, "accent overscript"); + assert_cramped("mover-003", false, "accent overscript"); assert_cramped("mover-004", false, "accent superscript"); }, "accent child of mover"); test(function() { assert_true(MathMLFeatureDetection.has_mspace()); - assert_cramped("munderover-004", true, "accent overscript"); + assert_cramped("munderover-004", false, "accent overscript"); assert_cramped("munderover-005", false, "accent superscript"); }, "accent child of munderover"); @@ -201,14 +201,14 @@ test(function() { assert_true(MathMLFeatureDetection.has_mspace()); - assert_cramped("mover-013", true, "accent overscript"); + assert_cramped("mover-013", false, "accent overscript"); assert_cramped("mover-014", false, "accent superscript"); }, "accent child of mover, from in-flow children"); test(function() { assert_true(MathMLFeatureDetection.has_mspace()); - assert_cramped("munderover-014", true, "accent overscript"); + assert_cramped("munderover-014", false, "accent overscript"); assert_cramped("munderover-015", false, "accent superscript"); }, "accent child of munderover, from in-flow children"); diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html index e7c6391ebad..3424e8c1a8c 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html @@ -34,6 +34,10 @@ assert_equals(style.getPropertyValue("direction"), "rtl", "attribute specified"); element.setAttribute("dir", "RtL"); assert_equals(style.getPropertyValue("direction"), "rtl", "case insensitive"); + element.setAttribute("dir", "auto"); + assert_equals(style.getPropertyValue("direction"), "ltr", "auto"); + element.setAttribute("dir", "foo"); + assert_equals(style.getPropertyValue("direction"), "ltr", "random value"); }, `dir on the ${tag} element is mapped to CSS direction`) test(function() { diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html index 3b1e2e0f2ca..06a09feecdd 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html @@ -47,19 +47,17 @@ var makeAsyncTest = function(c) { videoTrack.applyConstraints(constraintsIn) .then(() => { /* ignore */ }) .catch((e) => { /* ignore */ }) - .then(() => { + .then(t.step_func(() => { const constraintsOut = videoTrack.getConstraints(); assert_object_equals(constraintsOut, constraintsIn, "constraints"); - t.done(); - }); - - // Clear constraints by sending an empty constraint set. - videoTrack.applyConstraints({}) - .then(() => { + // Clear constraints by sending an empty constraint set. + return videoTrack.applyConstraints({}) + })) + .then(t.step_func(() => { const constraintsOut = videoTrack.getConstraints(); assert_object_equals(constraintsOut, {}, "constraints"); t.done(); - }); + })); }); }; diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html index 790f73ae7bd..c3ea1665457 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html @@ -281,6 +281,54 @@ promise_test(async t => { "currentTime does not skip ahead after pause"); }, "Tests that a media element with an assigned MediaStream does not advance currentTime while paused"); +promise_test(async t => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + const stream = canvas.captureStream(); + t.add_cleanup(() => { + vid.srcObject = null; + stream.getTracks().forEach(track => track.stop()); + }); + vid.srcObject = stream; + + vid.ontimeupdate = () => + assert_unreached("No timeupdate until potentially playing"); + + vid.play(); + + await new Promise(r => t.step_timeout(r, 1000)); + assert_equals(vid.readyState, vid.HAVE_NOTHING, + "Video dimensions not known yet"); + + const start = performance.now(); + ctx.fillStyle = "green"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + // Wait for, and check, potentially playing + await new Promise(r => vid.oncanplay = r); + const canplayDuration = (performance.now() - start) / 1000; + // "canplay" was just dispatched from a task queued when the element became + // potentially playing. currentTime may not have progressed more than the time + // it took from becoming potentially playing to starting the + // canplay-dispatching task. Though the media clock and the js clock may be + // different, so we take double this duration, or 100ms, whichever is greater, + // as a safety margin. + const margin = Math.max(0.1, canplayDuration * 2); + assert_between_inclusive(vid.currentTime, 0, margin, + "currentTime has not advanced more than twice it took to dispatch canplay"); + assert_false(vid.paused, "Media element is not paused"); + assert_false(vid.ended, "Media element is not ended"); + assert_equals(vid.error, null, + "Media element playback has not stopped due to errors"); + assert_greater_than(vid.readyState, vid.HAVE_CURRENT_DATA, + "Media element playback is not blocked"); + // Unclear how to check for "paused for user interaction" and "paused for + // in-band content". + + await new Promise(r => vid.ontimeupdate = r); + assert_between_exclusive(vid.currentTime, 0, 1, + "currentTime advances while potentially playing"); +}, "Tests that a media element with an assigned MediaStream does not start advancing currentTime until potentially playing"); promise_test(async t => { const stream = await navigator.mediaDevices.getUserMedia({video: true}); diff --git a/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js b/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js new file mode 100644 index 00000000000..2385c31a786 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js @@ -0,0 +1,82 @@ +'use strict'; + +const kSandboxWindowUrl = 'resources/opaque-origin-sandbox.html'; + +function add_iframe(test, src, sandbox) { + const iframe = document.createElement('iframe'); + iframe.src = src; + if (sandbox !== undefined) { + iframe.sandbox = sandbox; + } + document.body.appendChild(iframe); + test.add_cleanup(() => { + iframe.remove(); + }); +} + +// Creates a data URI iframe that uses postMessage() to provide its parent +// with the test result. The iframe checks for the existence of +// |property_name| on the window. +async function verify_does_not_exist_in_data_uri_iframe( + test, property_name) { + const iframe_content = + '<script>' + + ' const is_property_name_defined = ' + + ` (self.${property_name} !== undefined);` + + ' parent.postMessage({is_property_name_defined}, "*")' + + '</script>'; + + const data_uri = `data:text/html,${encodeURIComponent(iframe_content)}`; + add_iframe(test, data_uri); + + const event_watcher = new EventWatcher(test, self, 'message'); + const message_event = await event_watcher.wait_for('message') + + assert_false(message_event.data.is_property_name_defined, + `Data URI iframes must not define '${property_name}'.`); +} + +// |kSandboxWindowUrl| sends two messages to this window. The first is the +// result of chooseFileSystemEntries(). The second is the result of +// getSystemDirectory(). For windows using sandbox='allow-scripts', +// both results must produce rejected promises. +async function verify_results_from_sandboxed_child_window(test) { + const event_watcher = new EventWatcher(test, self, 'message'); + + const first_message_event = await event_watcher.wait_for('message'); + assert_equals(first_message_event.data, + 'chooseFileSystemEntries(): REJECTED: SecurityError'); + + const second_message_event = await event_watcher.wait_for('message'); + assert_equals(second_message_event.data, + 'getSystemDirectory(): REJECTED: SecurityError'); +} + +promise_test(async test => { + await verify_does_not_exist_in_data_uri_iframe( + test, 'chooseFileSystemEntries'); +}, 'chooseFileSystemEntries() must be undefined for data URI iframes.'); + +promise_test(async test => { + await verify_does_not_exist_in_data_uri_iframe( + test, 'FileSystemDirectoryHandle'); +}, 'FileSystemDirectoryHandle must be undefined for data URI iframes.'); + +promise_test(async test => { + add_iframe(test, kSandboxWindowUrl, /*sandbox=*/'allow-scripts'); + await verify_results_from_sandboxed_child_window(test); +}, 'FileSystemDirectoryHandle.getSystemDirectory() and ' + +'chooseFileSystemEntries() must reject in a sandboxed iframe.'); + +promise_test(async test => { + const child_window_url = kSandboxWindowUrl + + '?pipe=header(Content-Security-Policy, sandbox allow-scripts)'; + + const child_window = window.open(child_window_url); + test.add_cleanup(() => { + child_window.close(); + }); + + await verify_results_from_sandboxed_child_window(test); +}, 'FileSystemDirectoryHandle.getSystemDirectory() and ' ++ 'chooseFileSystemEntries() must reject in a sandboxed opened window.'); diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html b/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html new file mode 100644 index 00000000000..937a6c385de --- /dev/null +++ b/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<script> + 'use strict' + + // Sends two messages to its creator: + // (1) The result of chooseFileSystemEntries(). + // (2) The result of FileSystemDirectoryHandle.getSystemDirectory(). + + function post_message(data) { + if (window.parent !== null) { + window.parent.postMessage(data, { targetOrigin: '*' }); + } + if (window.opener !== null) { + window.opener.postMessage(data, { targetOrigin: '*' }); + } + } + + try { + window.chooseFileSystemEntries({ type: 'openDirectory' }) + .then(() => { + post_message('chooseFileSystemEntries(): FULFILLED'); + }).catch(error => { + post_message(`chooseFileSystemEntries(): REJECTED: ${error.name}`); + }); + } catch (error) { + post_message(`chooseFileSystemEntries(): EXCEPTION: ${error.name}`); + } + + try { + window.FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }) + .then(() => { + post_message('getSystemDirectory(): FULFILLED'); + }).catch(error => { + post_message(`getSystemDirectory(): REJECTED: ${error.name}`); + }); + } catch (error) { + post_message(`getSystemDirectory(): EXCEPTION: ${error.name}`); + } +</script> diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-postMessage-Error.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-postMessage-Error.js index 914b47bcf40..c4ae8363cc5 100644 --- a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-postMessage-Error.js +++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-postMessage-Error.js @@ -182,28 +182,14 @@ directory_test(async (t, root_dir) => { t, root_dir, /*receiver=*/self, /*target=*/iframe.contentWindow, /*target_origin=*/'*', /*expected_has_source*/true, /*expected_origin=*/location.origin); - - // https://crbug.com/1014248 Should sandboxed iframes expose the - // NativeFileSystem? - // - // await do_receive_message_error_test( - // t, /*receiver=*/self, /*target=*/iframe.contentWindow, - // /*target_origin=*/'*', /*expected_has_source=*/true, - // /*expected_origin=*/kRemoteOrigin); -}, 'Fail to send and receive messages using a sandboxed iframe.'); +}, 'Fail to send to a sandboxed iframe.'); directory_test(async (t, root_dir) => { const iframe = await add_iframe( t, { src: kDocumentMessageTarget, sandbox: 'allow-scripts' }); await do_send_message_port_error_test( t, root_dir, /*target=*/iframe.contentWindow, /*target_origin=*/'*'); - - // https://crbug.com/1014248 Should sandboxed iframes expose the - // NativeFileSystem? - // - // await do_receive_message_port_error_test( - // t, /*target=*/iframe.contentWindow, /*target_origin=*/'*'); -}, 'Fail to send and receive messages using a message port in a sandboxed ' + +}, 'Fail to send messages using a message port to a sandboxed ' + 'iframe.'); directory_test(async (t, root_dir) => { @@ -246,15 +232,7 @@ directory_test(async (t, root_dir) => { t, root_dir, /*receiver=*/self, /*target=*/child_window, /*target_origin=*/'*', /*expected_has_source*/true, /*expected_origin=*/location.origin); - - // https://crbug.com/1014248 Should sandboxed windows expose the - // NativeFileSystem? - // - // await do_receive_message_error_test( - // t, /*receiver=*/self, /*target=*/child_window, - // /*target_origin=*/'*', /*expected_has_source=*/true, - // /*expected_origin=*/kRemoteOrigin); -}, 'Fail to send and receive messages using a sandboxed window.'); +}, 'Fail to send messages to a sandboxed window.'); directory_test(async (t, root_dir) => { const url = `${kDocumentMessageTarget}?pipe=header(Content-Security-Policy` + @@ -262,11 +240,5 @@ directory_test(async (t, root_dir) => { const child_window = await open_window(t, url); await do_send_message_port_error_test( t, root_dir, /*target=*/child_window, /*target_origin=*/'*'); - - // https://crbug.com/1014248 Should sandboxed windows expose the - // NativeFileSystem? - // - // await do_receive_message_port_error_test( - // t, /*target=*/child_window, /*target_origin=*/'*'); -}, 'Fail to send and receive messages using a message port in a sandboxed ' + +}, 'Fail to send messages using a message port to a sandboxed ' + 'window.'); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.html b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.html index 9aa437c0cdd..67152573912 100644 --- a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.html +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.html @@ -30,7 +30,6 @@ if (ctx.transform) { // (avoid spurious failures, since the aim here is not to t assert_throws(new TypeError(), function() { ctx.transform(1, 0, 0, 1, 0); }); } if (ctx.setTransform) { - assert_throws(new TypeError(), function() { ctx.setTransform(); }); assert_throws(new TypeError(), function() { ctx.setTransform(1); }); assert_throws(new TypeError(), function() { ctx.setTransform(1, 0); }); assert_throws(new TypeError(), function() { ctx.setTransform(1, 0, 0); }); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js index 8f8d00ee3a5..755e881eb06 100644 --- a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js @@ -26,7 +26,6 @@ if (ctx.transform) { // (avoid spurious failures, since the aim here is not to t assert_throws(new TypeError(), function() { ctx.transform(1, 0, 0, 1, 0); }); } if (ctx.setTransform) { - assert_throws(new TypeError(), function() { ctx.setTransform(); }); assert_throws(new TypeError(), function() { ctx.setTransform(1); }); assert_throws(new TypeError(), function() { ctx.setTransform(1, 0); }); assert_throws(new TypeError(), function() { ctx.setTransform(1, 0, 0); }); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml b/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml index 6b1876d803f..0b346bb658e 100644 --- a/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml +++ b/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml @@ -8800,7 +8800,6 @@ @assert throws TypeError ctx.transform(1, 0, 0, 1, 0); } if (ctx.setTransform) { - @assert throws TypeError ctx.setTransform(); @assert throws TypeError ctx.setTransform(1); @assert throws TypeError ctx.setTransform(1, 0); @assert throws TypeError ctx.setTransform(1, 0, 0); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.getTransform.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.getTransform.html new file mode 100644 index 00000000000..b3b70ac2086 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.getTransform.html @@ -0,0 +1,40 @@ +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<script> +// Ensure that context2d.getTransform works +const epsilon = 1e-5; +const canvas = new OffscreenCanvas(300, 150); +const ctx = canvas.getContext('2d'); + +test(function(t) { + + assert_array_equals(ctx.getTransform().toFloat32Array(), + [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "Assert that an untransformed matrix is identity"); + + ctx.scale(2, 3); + transform = ctx.getTransform(); + assert_array_equals(ctx.getTransform().toFloat32Array(), + [2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "Assert that context2d scaling works"); + + ctx.rotate(Math.PI/2); + transform = ctx.getTransform(); + assert_array_approx_equals(ctx.getTransform().toFloat32Array(), + [0, 3, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], epsilon, + "Assert that context2d rotate works"); + + ctx.translate(1, -1); + transform = ctx.getTransform(); + assert_array_approx_equals(ctx.getTransform().toFloat32Array(), + [0, 3, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 1], epsilon, + "Assert context2d translate works."); + + ctx.resetTransform(); + assert_array_equals(ctx.getTransform().toFloat32Array(), + [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "Assert that a reset matrix is identity"); +}, 'This test ensures that getTransform works correctly.'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/reporting/generateTestReport.html b/tests/wpt/web-platform-tests/reporting/generateTestReport.html index e3c2735686a..f47ea45c9a4 100644 --- a/tests/wpt/web-platform-tests/reporting/generateTestReport.html +++ b/tests/wpt/web-platform-tests/reporting/generateTestReport.html @@ -16,6 +16,13 @@ assert_equals(reports[0].type, "test"); assert_true(reports[0].url.endsWith("reporting/generateTestReport.html")); assert_equals(reports[0].body.message, "Test message."); + // Ensure that the toJSON() call of the report are valid. + const reportJSON = reports[0].toJSON(); + assert_equals(reports[0].type, reportJSON.type); + assert_equals(reports[0].url, reportJSON.url); + assert_equals(reports[0].body.message, reportJSON.body.message); + // Ensure that report can be successfully JSON serialized. + assert_equals(JSON.stringify(reports[0]), JSON.stringify(reportJSON)); }); test.done(); }); diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js index f5666c18f5c..c0921b8ad82 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js +++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js @@ -79,11 +79,6 @@ function assertNDEFPushOptionsEqual(provided, received) { else assert_equals(!!received.ignore_read, true); - if (provided.timeout !== undefined) - assert_equals(provided.timeout, received.timeout); - else - assert_equals(received.timeout, Infinity); - if (provided.target !== undefined) assert_equals(toMojoNDEFPushTarget(provided.target), received.target); else @@ -176,7 +171,6 @@ var WebNFCTest = (() => { this.push_options_ = null; this.pending_promise_func_ = null; this.push_completed_ = true; - this.push_should_timeout_ = false; this.client_ = null; this.watchers_ = []; this.reading_messages_ = []; @@ -202,13 +196,8 @@ var WebNFCTest = (() => { this.pending_promise_func_ = resolve; if (this.operations_suspended_) { // Pends push operation if NFC operation is suspended. - } else if (options.timeout && options.timeout !== Infinity && - !this.push_completed_) { - // Resolves with TimeoutError, else pend push operation. - if (this.push_should_timeout_) { - resolve( - createNDEFError(device.mojom.NDEFErrorType.TIMER_EXPIRED)); - } + } else if (!this.push_completed_) { + // Leaves the push operating pending. } else if (!this.is_ndef_tech_) { // Resolves with NotSupportedError if the device does not expose // NDEF technology. @@ -329,7 +318,6 @@ var WebNFCTest = (() => { this.pushed_message_ = null; this.push_options_ = null; this.pending_promise_func_ = null; - this.push_should_timeout_ = false; this.push_completed_ = true; } @@ -353,10 +341,6 @@ var WebNFCTest = (() => { } } - setPushShouldTimeout(result) { - this.push_should_timeout_ = result; - } - // Suspends all pending NFC operations. Could be used when web page // visibility is lost. suspendNFCOperations() { diff --git a/tests/wpt/web-platform-tests/resources/testdriver-actions.js b/tests/wpt/web-platform-tests/resources/testdriver-actions.js index 292fe8889f5..d3dc00b4d0f 100644 --- a/tests/wpt/web-platform-tests/resources/testdriver-actions.js +++ b/tests/wpt/web-platform-tests/resources/testdriver-actions.js @@ -195,10 +195,16 @@ * Add a pause to the current tick * * @param {Number?} duration - Minimum length of the tick in ms. + * @param {String} sourceType - source type + * @param {String?} sourceName - Named key or pointer source to use or null for the default + * key or pointer source * @returns {Actions} */ - pause: function(duration) { - this.getSource("none").addPause(this, duration); + pause: function(duration=0, sourceType="none", {sourceName=null}={}) { + if (sourceType=="none") + this.getSource("none").addPause(this, duration); + else + this.getSource(sourceType, sourceName).addPause(this, duration); return this; }, @@ -339,6 +345,14 @@ } this.actions.set(tick, {type: "keyUp", value: key}); }, + + addPause: function(actions, duration) { + let tick = actions.tickIdx; + if (this.actions.has(tick)) { + tick = actions.addTick().tickIdx; + } + this.actions.set(tick, {type: "pause", duration: duration}); + }, }; function PointerSource(parameters={pointerType: "mouse"}) { @@ -393,6 +407,14 @@ this.actions.get(tick).duration = duration; } }, + + addPause: function(actions, duration) { + let tick = actions.tickIdx; + if (this.actions.has(tick)) { + tick = actions.addTick().tickIdx; + } + this.actions.set(tick, {type: "pause", duration: duration}); + }, }; test_driver.Actions = Actions; diff --git a/tests/wpt/web-platform-tests/screen-orientation/event-before-promise.html b/tests/wpt/web-platform-tests/screen-orientation/event-before-promise.html index 51b41e19357..304f56ea95b 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/event-before-promise.html +++ b/tests/wpt/web-platform-tests/screen-orientation/event-before-promise.html @@ -5,6 +5,12 @@ <script src="/resources/testdriver-vendor.js"></script> <script> promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + screen.orientation.unlock(); + }); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -15,10 +21,9 @@ const result = await Promise.race([ screen.orientation.lock("landscape"), - promiseToChange + promiseToChange, ]); assert_true(result instanceof Event, "Expected an instance of Event"); - return document.exitFullscreen(); }, "The 'change' event must fire before the [[orientationPendingPromise]] is resolved."); </script> diff --git a/tests/wpt/web-platform-tests/screen-orientation/lock-basic.html b/tests/wpt/web-platform-tests/screen-orientation/lock-basic.html index c42aba783e4..f236dc68e78 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/lock-basic.html +++ b/tests/wpt/web-platform-tests/screen-orientation/lock-basic.html @@ -4,6 +4,13 @@ <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script> +async function cleanup() { + try { + await document.exitFullscreen(); + } catch (e) {} + screen.orientation.unlock(); +} + test(() => { screen.orientation.unlock(); }, "Test that screen.orientation.unlock() doesn't throw when there is no lock"); @@ -14,15 +21,16 @@ test(() => { }, "Test that screen.orientation.unlock() returns a void value"); promise_test(async t => { + t.add_cleanup(cleanup); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); const value = await screen.orientation.lock('any'); assert_equals(value, undefined); - return document.exitFullscreen(); }, "Test that screen.orientation.lock returns a promise which will be fulfilled with a void value."); promise_test(async t => { + t.add_cleanup(cleanup); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -58,11 +66,10 @@ promise_test(async t => { break; } } - screen.orientation.unlock(); - return document.exitFullscreen(); }, "Test that screen.orientation.lock returns a pending promise."); promise_test(async t => { + t.add_cleanup(cleanup); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -73,6 +80,5 @@ promise_test(async t => { assert_equals(screen.orientation.type, preType, "Must not change orientation until next spin of event loop"); await p; assert_equals(screen.orientation.type, newType); - return document.exitFullscreen(); }, "Test that screen.orientation.lock() is actually async"); </script> diff --git a/tests/wpt/web-platform-tests/screen-orientation/lock-unlock-check.html b/tests/wpt/web-platform-tests/screen-orientation/lock-unlock-check.html index 8e79033e614..8fe74388d41 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/lock-unlock-check.html +++ b/tests/wpt/web-platform-tests/screen-orientation/lock-unlock-check.html @@ -6,6 +6,12 @@ <script type="module"> import { getOppositeOrientation } from "/screen-orientation/resources/orientation-utils.js"; promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + screen.orientation.unlock(); + }); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -20,7 +26,5 @@ }); await promise_rejects(t, "AbortError", pMustReject); await pMustResolve; - screen.orientation.unlock(); - return document.exitFullscreen(); }, "Re-locking orientation during event dispatch must reject existing orientationPendingPromise"); </script> diff --git a/tests/wpt/web-platform-tests/screen-orientation/onchange-event-subframe.html b/tests/wpt/web-platform-tests/screen-orientation/onchange-event-subframe.html index 869a2294594..363c9cdf010 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/onchange-event-subframe.html +++ b/tests/wpt/web-platform-tests/screen-orientation/onchange-event-subframe.html @@ -2,28 +2,44 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<iframe id="testIframe" sandbox="allow-scripts allow-same-origin" - style="display:none" src="resources/iframe-listen-orientation-change.html"> +<iframe + id="testIframe" + sandbox="allow-scripts allow-same-origin" + style="display:none" + src="resources/iframe-listen-orientation-change.html" +> </iframe> <script> -promise_test(async t => { - let orientations = [ - 'portrait-primary', - 'portrait-secondary', - 'landscape-primary', - 'landscape-secondary' - ]; - if (screen.orientation.type.includes('portrait')) { - orientations = orientations.reverse(); - } - const messageWatcher = new EventWatcher(t, window, "message"); + promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + screen.orientation.unlock(); + }); + await test_driver.bless("request fullscreen", () => { + return document.documentElement.requestFullscreen(); + }); + let orientations = [ + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary", + ]; + if (screen.orientation.type.includes("portrait")) { + orientations = orientations.reverse(); + } + const messageWatcher = new EventWatcher(t, window, "message"); - for (const orientation of orientations) { - await screen.orientation.lock(orientation); - const message = await messageWatcher.wait_for("message"); - assert_equals(message.data, orientation, "subframe receives orientation change event"); - } - screen.orientation.unlock(); -}, "Test subframes receive orientation change events"); + for (const orientation of orientations) { + await screen.orientation.lock(orientation); + const message = await messageWatcher.wait_for("message"); + assert_equals( + message.data, + orientation, + "subframe receives orientation change event" + ); + } + }, "Test subframes receive orientation change events"); </script> diff --git a/tests/wpt/web-platform-tests/screen-orientation/onchange-event.html b/tests/wpt/web-platform-tests/screen-orientation/onchange-event.html index 635ff8207a2..91ae368dc04 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/onchange-event.html +++ b/tests/wpt/web-platform-tests/screen-orientation/onchange-event.html @@ -5,6 +5,11 @@ <script src="/resources/testdriver-vendor.js"></script> <script> promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + }); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -12,10 +17,15 @@ promise_test(async t => { screen.orientation.onchange = t.unreached_func("change event should not be fired"); await screen.orientation.lock(type); assert_equals(screen.orientation.type, type); - return document.exitFullscreen(); }, "Test that orientationchange event is not fired when the orientation does not change."); promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + screen.orientation.unlock(); + }); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -35,7 +45,5 @@ promise_test(async t => { await orientationWatcher.wait_for('change'); assert_equals(screen.orientation.type, orientation); } - screen.orientation.unlock(); - return document.exitFullscreen(); }, "Test that orientationchange event is fired when the orientation changes."); </script> diff --git a/tests/wpt/web-platform-tests/screen-orientation/orientation-reading.html b/tests/wpt/web-platform-tests/screen-orientation/orientation-reading.html index 2a31203dc2c..4dcd5b0117e 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/orientation-reading.html +++ b/tests/wpt/web-platform-tests/screen-orientation/orientation-reading.html @@ -23,6 +23,11 @@ test(() => { }, "Test screen.orientation default values."); promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + }); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -59,7 +64,6 @@ promise_test(async t => { "Secondary orientation 2 angle must be the opposite angle to primary orientation 2" ); screen.orientation.unlock(); - return document.exitFullscreen(); }, "Test the orientations and associated angles"); test(() => { @@ -78,6 +82,12 @@ test(() => { }, "Test that screen.orientation is always the same object"); promise_test(async t => { + t.add_cleanup(async () => { + try { + await document.exitFullscreen(); + } catch (e) {} + screen.orientation.unlock(); + }); await test_driver.bless("request full screen", () => { return document.documentElement.requestFullscreen(); }); @@ -98,7 +108,5 @@ promise_test(async t => { assert_equals(screen.orientation.angle, orientation.angle); assert_not_equals(screen.orientation.type, orientationType); assert_not_equals(screen.orientation.angle, orientationAngle); - screen.orientation.unlock(); - return document.exitFullscreen(); }, "Test that screen.orientation values change if the orientation changes"); </script> diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html index 1ef9dbba519..1595d8bff9e 100644 --- a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html @@ -3,7 +3,8 @@ <script> function isInView(element) { let rect = element.getBoundingClientRect(); - return rect.top >= 0 && rect.top <= window.innerHeight; + return rect.top >= 0 && rect.top <= window.innerHeight + && rect.left >= 0 && rect.left <= window.innerWidth; } function checkScroll() { @@ -22,6 +23,12 @@ function checkScroll() { position = 'cross-node-context'; else if (isInView(document.getElementById('text-directive-parameters'))) position = 'text-directive-parameters'; + else if (isInView(document.getElementById('shadow-parent'))) + position = 'shadow-parent'; + else if (isInView(document.getElementById('hidden'))) + position = 'hidden'; + else if (isInView(document.getElementById('horizontal-scroll')) && window.scrollX > 0) + position = 'horizontal-scroll'; bc.postMessage({ scrollPosition: position, href: window.location.href }); bc.close(); @@ -29,40 +36,38 @@ function checkScroll() { } </script> <style> - body { - height: 6200px; + .scroll-section { + /* 1000px margin on top and bottom so only one section can be in view. */ + margin: 1000px 0px; } - #element { - position: absolute; - top: 2000px; + #hidden { + visibility: hidden; } - #text { - position: absolute; - top: 3000px; + #horizontal-scroll { + margin-left: 2000px; } - #more-text { - position: absolute; - top: 4000px; - } - #cross-node-context { - position: absolute; - top: 5000px; - } - #text-directive-parameters { - position: absolute; - top: 6000px; + #display-none { + display: none; } </style> <body onload="window.requestAnimationFrame(checkScroll)"> - <div id="element">Element</div> - <p id="text">This is a test page !$'()*+./:;=?@_~ &,- ♥</p> - <p id="more-text">More test page text</p> - <div id="cross-node-context"> + <div id="element" class="scroll-section">Element</div> + <p id="text" class="scroll-section">This is a test page !$'()*+./:;=?@_~ &,- ネコ</p> + <p id="more-text" class="scroll-section">More test page text</p> + <div id="cross-node-context" class="scroll-section"> <div> <p>prefix</p> <p>test page</p> </div> <div><p>suffix</p></div> </div> - <p id="text-directive-parameters">this,is,test,page</p> + <p id="text-directive-parameters" class="scroll-section">this,is,test,page</p> + <div id="shadow-parent" class="scroll-section"></div> + <script> + let shadow = document.getElementById("shadow-parent").attachShadow({mode: 'open'}); + shadow.innerHTML = '<p>shadow text</p>'; + </script> + <p id="hidden" class="scroll-section">hidden text</p> + <p id="horizontal-scroll" class="scroll-section">horizontally scrolled text</p> + <p id="display-none" class="scroll-section">display none</p> </body> diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html index b3a35f489ac..c0018eda03f 100644 --- a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html @@ -13,162 +13,207 @@ let test_cases = [ { fragment: '#', expect_position: 'top', - description: 'Empty hash' + description: 'Empty hash should scroll to top' }, { fragment: '#:~:text=this,is,test,page', expect_position: 'top', - description: 'Text directive with invalid syntax, context terms without "-"' + description: 'Text directive with invalid syntax (context terms without "-") should not parse as a text directive' }, { fragment: '#element:~:directive', expect_position: 'element', - description: 'Generic fragment directive with existing element fragment' + description: 'Generic fragment directive with existing element fragment should scroll to element' + }, + { + fragment: '#:~:TEXT=test', + expect_position: 'top', + description: 'Uppercase TEXT directive should not parse as a text directive' }, // Test exact text matching, with all combinations of context terms { fragment: '#:~:text=test', expect_position: 'text', - description: 'Exact text with no context' + description: 'Exact text with no context should match text' }, { fragment: '#:~:text=this is a-,test', expect_position: 'text', - description: 'Exact text with prefix' + description: 'Exact text with prefix should match text' }, { fragment: '#:~:text=test,-page', expect_position: 'text', - description: 'Exact text with suffix' + description: 'Exact text with suffix should match text' }, { fragment: '#:~:text=this is a-,test,-page', expect_position: 'text', - description: 'Exact text with prefix and suffix' + description: 'Exact text with prefix and suffix should match text' }, // Test text range matching, with all combinations of context terms { fragment: '#:~:text=this,page', expect_position: 'text', - description: 'Text range with no context' + description: 'Text range with no context should match text' }, { fragment: '#:~:text=this-,is,test', expect_position: 'text', - description: 'Text range with prefix' + description: 'Text range with prefix should match text' }, { fragment: '#:~:text=this,test,-page', expect_position: 'text', - description: 'Text range with suffix' + description: 'Text range with suffix should match text' }, { fragment: '#:~:text=this-,is,test,-page', expect_position: 'text', - description: 'Text range with prefix and suffix' + description: 'Text range with prefix and suffix should match text' }, // Test partially non-matching text ranges { fragment: '#:~:text=this,none', expect_position: 'top', - description: 'Text range with non-matching endText' + description: 'Text range with non-matching endText should not match' }, { fragment: '#:~:text=none,page', expect_position: 'top', - description: 'Text range with non-matching startText' + description: 'Text range with non-matching startText should not match' }, // Test non-matching context terms { fragment: '#:~:text=this-,is,page,-none', expect_position: 'top', - description: 'Text range with prefix and nonmatching suffix' + description: 'Text range with prefix and nonmatching suffix should not match' }, { fragment: '#:~:text=none-,this,test,-page', expect_position: 'top', - description: 'Text range with nonmatching prefix and matching suffix' + description: 'Text range with nonmatching prefix and matching suffix should not match' }, // Test percent encoded characters { fragment: '#:~:text=this%20is%20a%20test%20page', expect_position: 'text', - description: 'Exact text with percent encoded spaces' + description: 'Exact text with percent encoded spaces should match text' }, { fragment: '#:~:text=test%20pag', expect_position: 'top', - description: 'Non-whole-word exact text with spaces' + description: 'Non-whole-word exact text with spaces should not match' }, { fragment: '#:~:text=%26%2C%2D', expect_position: 'text', - description: 'Fragment directive with percent encoded syntactical characters "&,-"' + description: 'Fragment directive with percent encoded syntactical characters "&,-" should match text' }, { - fragment: '#:~:text=%2665', + fragment: '#:~:text=%E3%83%8D%E3%82%B3', expect_position: 'text', - description: 'Fragment directive with percent encoded non-ASCII unicode character' + description: 'Fragment directive with percent encoded non-ASCII unicode character should match text' }, { fragment: '#:~:text=!$\'()*+./:;=?@_~', expect_position: 'text', - description: 'Fragment directive with all TextMatchChars' + description: 'Fragment directive with all TextMatchChars should match text' }, // Test multiple text directives { fragment: '#:~:text=this&text=test,page', expect_position: 'text', - description: 'Multiple matching exact texts' + description: 'Multiple matching exact texts should match text' }, { fragment: '#:~:text=tes&text=age', expect_position: 'top', - description: 'Multiple non-whole-word exact texts' + description: 'Multiple non-whole-word exact texts should not match' + }, + { + fragment: '#:~:text=none&text=test%20page', + expect_position: 'text', + description: 'A non-matching text directive followed by a matching text directive should match and scroll into view the second text directive' + }, + { + fragment: '#:~:text=test%20page&directive', + expect_position: 'text', + description: 'Text directive followed by non-text directive should match text' + }, + { + fragment: '#:~:text=test&directive&text=page', + expect_position: 'text', + description: 'Multiple text directives and a non-text directive should match text' }, // Test text directive behavior when there's an element fragment identifier { fragment: '#element:~:text=test', expect_position: 'text', - description: 'Text directive with existing element fragment' + description: 'Text directive with existing element fragment should match and scroll into view text' }, { fragment: '#pagestate:~:text=test', expect_position: 'text', - description: 'Text directive with nonexistent element fragment' + description: 'Text directive with nonexistent element fragment should match and scroll into view text' }, { fragment: '#element:~:text=nomatch', expect_position: 'element', - description: 'Non-matching text directive with existing element fragment' + description: 'Non-matching text directive with existing element fragment should scroll to element' }, { fragment: '#pagestate:~:text=nomatch', expect_position: 'top', - description: 'Non-matching text directive with nonexistent element fragment' + description: 'Non-matching text directive with nonexistent element fragment should not match and not scroll' }, // Test ambiguous text matches disambiguated by context terms { fragment: '#:~:text=more-,test%20page', expect_position: 'more-text', - description: 'Multiple match text directive disambiguated by prefix' + description: 'Multiple match text directive disambiguated by prefix should match the prefixed text' }, { fragment: '#:~:text=test%20page,-text', expect_position: 'more-text', - description: 'Multiple match text directive disambiguated by suffix' + description: 'Multiple match text directive disambiguated by suffix should match the suffixed text' }, { fragment: '#:~:text=more-,test%20page,-text', expect_position: 'more-text', - description: 'Multiple match text directive disambiguated by prefix and suffix' + description: 'Multiple match text directive disambiguated by prefix and suffix should match the text with the given context' }, // Test context terms separated by node boundaries { fragment: '#:~:text=prefix-,test%20page,-suffix', expect_position: 'cross-node-context', - description: 'Text directive with context terms separated by node boundaries' + description: 'Text directive should match when context terms are separated by node boundaries' + }, + // Test text directive within shadow DOM + { + fragment: '#:~:text=shadow%20text', + expect_position: 'shadow-parent', + description: 'Text directive should match text within shadow DOM' + }, + // Test text directive within hidden and display none elements. These cases should not scroll into + // view, but still "match" in that they should be highlighted or otherwise visibly indicated + // if they were to become visible. + { + fragment: '#:~:text=hidden%20text', + expect_position: 'top', + description: 'Text directive should not scroll to hidden text' }, + { + fragment: '#:~:text=display%20none', + expect_position: 'top', + description: 'Text directive should not scroll to display none text' + }, + // Test horizontal scroll into view + { + fragment: '#:~:text=horizontally%20scrolled%20text', + expect_position: 'horizontal-scroll', + description: 'Text directive should horizontally scroll into view' + } ]; for (const test_case of test_cases) { @@ -185,7 +230,7 @@ for (const test_case of test_cases) { assert_equals(data.href.indexOf(':~:'), -1, 'Expected fragment directive to be stripped from the URL.'); assert_equals(data.scrollPosition, test_case.expect_position, `Expected ${test_case.fragment} (${test_case.description}) to scroll to ${test_case.expect_position}.`); - }), `Test navigation with fragment: ${test_case.description}`); + }), `Test navigation with fragment: ${test_case.description}.`); } promise_test(t => new Promise(resolve => { diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html index a58525f4222..70be6ef9b0a 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html @@ -8,10 +8,12 @@ var lastCallbackId = 0; var callbacks = {}; function postMessageAndWaitResult(frame) { - return new Promise(function(resolve) { + return new Promise(function(resolve, reject) { var id = ++lastCallbackId; callbacks[id] = resolve; frame.contentWindow.postMessage({id:id}, '*'); + const timeout = 1000; + step_timeout(() => reject("no msg back after " + timeout + "ms"), timeout); }); } @@ -105,10 +107,13 @@ promise_test(function(t) { // It's not clear whether navigation subsequently creates a new // Document, but I'm assuming it wouldn't. // https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-sandbox - assert_equals( - result, - 'navigator.serviceWorker failed: SecurityError'); - }); + assert_true( + false, + 'should NOT get message back from a sandboxed frame where scripts are not allowed to execute'); + }) + .catch(msg => { + assert_true(msg.startsWith('no msg back'), 'expecting error message "no msg back"'); + }); }, 'Switching iframe sandbox attribute while loading the iframe'); </script> diff --git a/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html b/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html index 123d9c14c55..8f2913450d4 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html +++ b/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html @@ -77,7 +77,7 @@ test(() => { test(() => { class CapitalShadowDisabledElement extends HTMLElement { - static get disabledFeatures() { return ['shadow']; } + static get disabledFeatures() { return ['SHADOW']; } } customElements.define('capital-shadow-disabled-element', CapitalShadowDisabledElement); diff --git a/tests/wpt/web-platform-tests/tools/lint/rules.py b/tests/wpt/web-platform-tests/tools/lint/rules.py index c6f416e90ed..587028d6c5f 100644 --- a/tests/wpt/web-platform-tests/tools/lint/rules.py +++ b/tests/wpt/web-platform-tests/tools/lint/rules.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import abc +import inspect import os import re @@ -13,6 +14,11 @@ if MYPY: Error = Tuple[Text, Text, Text, Optional[int]] +def collapse(text): + # type: (Text) -> Text + return inspect.cleandoc(str(text)).replace("\n", " ") + + class Rule(six.with_metaclass(abc.ABCMeta)): @abc.abstractproperty def name(self): @@ -55,6 +61,7 @@ class MissingLink(Rule): class PathLength(Rule): name = "PATH LENGTH" description = "/%s longer than maximum path length (%d > 150)" + to_fix = "use shorter filename to rename the test file" class FileType(Rule): @@ -64,8 +71,9 @@ class FileType(Rule): class WorkerCollision(Rule): name = "WORKER COLLISION" - description = ("path ends with %s which collides with generated tests " - "from %s files") + description = collapse(""" + path ends with %s which collides with generated tests from %s files + """) class GitIgnoreFile(Rule): @@ -86,8 +94,10 @@ class AhemSystemFont(Rule): # TODO: Add tests for this rule class IgnoredPath(Rule): name = "IGNORED PATH" - description = ("%s matches an ignore filter in .gitignore - " - "please add a .gitignore exception") + description = collapse(""" + %s matches an ignore filter in .gitignore - please add a .gitignore + exception + """) class CSSCollidingTestName(Rule): @@ -113,6 +123,9 @@ class SupportWrongDir(Rule): class ParseFailed(Rule): name = "PARSE-FAILED" description = "Unable to parse file" + to_fix = """ + examine the file to find the causes of any parse errors, and fix them. + """ class ContentManual(Rule): @@ -127,8 +140,10 @@ class ContentVisual(Rule): class AbsoluteUrlRef(Rule): name = "ABSOLUTE-URL-REF" - description = ("Reference test with a reference file specified via an " - "absolute URL: '%s'") + description = collapse(""" + Reference test with a reference file specified via an absolute URL: + '%s' + """) class SameFileRef(Rule): @@ -138,33 +153,50 @@ class SameFileRef(Rule): class NonexistentRef(Rule): name = "NON-EXISTENT-REF" - description = ("Reference test with a non-existent '%s' relationship " - "reference: '%s'") + description = collapse(""" + Reference test with a non-existent '%s' relationship reference: '%s' + """) class MultipleTimeout(Rule): name = "MULTIPLE-TIMEOUT" description = "More than one meta name='timeout'" + to_fix = """ + ensure each test file has only one instance of a `<meta + name="timeout"...>` element + """ class InvalidTimeout(Rule): name = "INVALID-TIMEOUT" - description = "Invalid timeout value %s" + description = collapse(""" + Test file with `<meta name='timeout'...>` element that has a `content` + attribute whose value is not `long`: %s + """) + to_fix = "replace the value of the `content` attribute with `long`" class MultipleTestharness(Rule): name = "MULTIPLE-TESTHARNESS" - description = "More than one <script src='/resources/testharness.js'>" + description = "More than one `<script src='/resources/testharness.js'>`" + to_fix = """ + ensure each test has only one `<script + src='/resources/testharnessreport.js'>` instance + """ class MissingTestharnessReport(Rule): name = "MISSING-TESTHARNESSREPORT" - description = "Missing <script src='/resources/testharnessreport.js'>" + description = "Missing `<script src='/resources/testharnessreport.js'>`" + to_fix = """ + ensure each test file contains `<script + src='/resources/testharnessreport.js'>` + """ class MultipleTestharnessReport(Rule): name = "MULTIPLE-TESTHARNESSREPORT" - description = "More than one <script src='/resources/testharnessreport.js'>" + description = "More than one `<script src='/resources/testharnessreport.js'>`" class PresentTestharnessCSS(Rule): @@ -174,38 +206,60 @@ class PresentTestharnessCSS(Rule): class VariantMissing(Rule): name = "VARIANT-MISSING" - description = "<meta name=variant> missing 'content' attribute" + description = collapse(""" + Test file with a `<meta name='variant'...>` element that's missing a + `content` attribute + """) + to_fix = """ + add a `content` attribute with an appropriate value to the `<meta + name='variant'...>` element + """ class MalformedVariant(Rule): name = "MALFORMED-VARIANT" - description = ("%s <meta name=variant> 'content' attribute must be the " - "empty string or start with '?' or '#'") + description = collapse(""" + %s `<meta name=variant>` 'content' attribute must be the empty string + or start with '?' or '#' + """) class LateTimeout(Rule): name = "LATE-TIMEOUT" - description = "<meta name=timeout> seen after testharness.js script" + description = "`<meta name=timeout>` seen after testharness.js script" + description = collapse(""" + Test file with `<meta name='timeout'...>` element after `<script + src='/resources/testharnessreport.js'>` element + """) + to_fix = """ + move the `<meta name="timeout"...>` element to precede the `script` + element. + """ class EarlyTestharnessReport(Rule): name = "EARLY-TESTHARNESSREPORT" - description = "testharnessreport.js script seen before testharness.js script" + description = collapse(""" + Test file has an instance of + `<script src='/resources/testharnessreport.js'>` prior to + `<script src='/resources/testharness.js'>` + """) + to_fix = "flip the order" class MultipleTestdriver(Rule): name = "MULTIPLE-TESTDRIVER" - description = "More than one <script src='/resources/testdriver.js'>" + description = "More than one `<script src='/resources/testdriver.js'>`" class MissingTestdriverVendor(Rule): name = "MISSING-TESTDRIVER-VENDOR" - description = "Missing <script src='/resources/testdriver-vendor.js'>" + description = "Missing `<script src='/resources/testdriver-vendor.js'>`" class MultipleTestdriverVendor(Rule): name = "MULTIPLE-TESTDRIVER-VENDOR" - description = "More than one <script src='/resources/testdriver-vendor.js'>" + description = "More than one `<script src='/resources/testdriver-vendor.js'>`" class TestharnessPath(Rule): @@ -303,23 +357,35 @@ class Regexp(six.with_metaclass(abc.ABCMeta)): class TabsRegexp(Regexp): pattern = b"^\t" name = "INDENT TABS" - description = "Tabs used for indentation" + description = "Test-file line starts with one or more tab characters" + to_fix = "use spaces to replace any tab characters at beginning of lines" class CRRegexp(Regexp): pattern = b"\r$" name = "CR AT EOL" - description = "CR character in line separator" + description = "Test-file line ends with CR (U+000D) character" + to_fix = """ + reformat file so each line just has LF (U+000A) line ending (standard, + cross-platform "Unix" line endings instead of, e.g., DOS line endings). + """ class SetTimeoutRegexp(Regexp): pattern = br"setTimeout\s*\(" name = "SET TIMEOUT" file_extensions = [".html", ".htm", ".js", ".xht", ".xhtml", ".svg"] - description = "setTimeout used; step_timeout should typically be used instead" + description = "setTimeout used" + to_fix = """ + replace all `setTimeout(...)` calls with `step_timeout(...)` calls + """ class W3CTestOrgRegexp(Regexp): pattern = br"w3c\-test\.org" name = "W3C-TEST.ORG" - description = "External w3c-test.org domain used" + description = "Test-file line has the string `w3c-test.org`" + to_fix = """ + either replace the `w3c-test.org` string with the expression + `{{host}}:{{ports[http][0]}}` or a generic hostname like `example.org` + """ class WebPlatformTestRegexp(Regexp): pattern = br"web\-platform\.test" @@ -335,19 +401,30 @@ class ConsoleRegexp(Regexp): pattern = br"console\.[a-zA-Z]+\s*\(" name = "CONSOLE" file_extensions = [".html", ".htm", ".js", ".xht", ".xhtml", ".svg"] - description = "Console logging API used" + description = "Test-file line has a `console.*(...)` call" + to_fix = """ + remove the `console.*(...)` call (and in some cases, consider adding an + `assert_*` of some kind in place of it) + """ class GenerateTestsRegexp(Regexp): pattern = br"generate_tests\s*\(" name = "GENERATE_TESTS" file_extensions = [".html", ".htm", ".js", ".xht", ".xhtml", ".svg"] - description = "generate_tests used" + description = "Test file line has a generate_tests call" + to_fix = "remove the call and call `test()` a number of times instead" class PrintRegexp(Regexp): pattern = br"print(?:\s|\s*\()" name = "PRINT STATEMENT" file_extensions = [".py"] - description = "Print function used" + description = collapse(""" + A server-side python support file contains a `print` statement + """) + to_fix = """ + remove the `print` statement or replace it with something else that + achieves the intended effect (e.g., a logging call) + """ class LayoutTestsRegexp(Regexp): pattern = br"(eventSender|testRunner|internals)\." diff --git a/tests/wpt/web-platform-tests/tools/lint/tests/test_file_lints.py b/tests/wpt/web-platform-tests/tools/lint/tests/test_file_lints.py index edb819cbccb..8094d6d40a5 100644 --- a/tests/wpt/web-platform-tests/tools/lint/tests/test_file_lints.py +++ b/tests/wpt/web-platform-tests/tools/lint/tests/test_file_lints.py @@ -54,7 +54,7 @@ def test_indent_tabs(): for (filename, (errors, kind)) in error_map.items(): check_errors(errors) - expected = [("INDENT TABS", "Tabs used for indentation", filename, 2)] + expected = [("INDENT TABS", "Test-file line starts with one or more tab characters", filename, 2)] if kind == "web-strict": expected.append(("PARSE-FAILED", "Unable to parse file", filename, None)) assert errors == expected @@ -66,7 +66,7 @@ def test_cr_not_at_eol(): for (filename, (errors, kind)) in error_map.items(): check_errors(errors) - expected = [("CR AT EOL", "CR character in line separator", filename, 1)] + expected = [("CR AT EOL", "Test-file line ends with CR (U+000D) character", filename, 1)] if kind == "web-strict": expected.append(("PARSE-FAILED", "Unable to parse file", filename, None)) assert errors == expected @@ -79,8 +79,8 @@ def test_cr_at_eol(): check_errors(errors) expected = [ - ("CR AT EOL", "CR character in line separator", filename, 1), - ("CR AT EOL", "CR character in line separator", filename, 2), + ("CR AT EOL", "Test-file line ends with CR (U+000D) character", filename, 1), + ("CR AT EOL", "Test-file line ends with CR (U+000D) character", filename, 2), ] if kind == "web-strict": expected.append(("PARSE-FAILED", "Unable to parse file", filename, None)) @@ -93,7 +93,7 @@ def test_w3c_test_org(): for (filename, (errors, kind)) in error_map.items(): check_errors(errors) - expected = [("W3C-TEST.ORG", "External w3c-test.org domain used", filename, 1)] + expected = [("W3C-TEST.ORG", "Test-file line has the string `w3c-test.org`", filename, 1)] if kind == "python": expected.append(("PARSE-FAILED", "Unable to parse file", filename, 1)) elif kind == "web-strict": @@ -136,8 +136,8 @@ def test_console(): if kind in ["web-lax", "web-strict", "js"]: assert errors == [ - ("CONSOLE", "Console logging API used", filename, 2), - ("CONSOLE", "Console logging API used", filename, 3), + ("CONSOLE", "Test-file line has a `console.*(...)` call", filename, 2), + ("CONSOLE", "Test-file line has a `console.*(...)` call", filename, 3), ] else: assert errors == [("PARSE-FAILED", "Unable to parse file", filename, 1)] @@ -153,7 +153,7 @@ def test_setTimeout(): assert errors == [("PARSE-FAILED", "Unable to parse file", filename, 1)] else: assert errors == [('SET TIMEOUT', - 'setTimeout used; step_timeout should typically be used instead', + 'setTimeout used', filename, 1)] @@ -249,8 +249,14 @@ def test_meta_timeout(): if kind in ["web-lax", "web-strict"]: assert errors == [ ("MULTIPLE-TIMEOUT", "More than one meta name='timeout'", filename, None), - ("INVALID-TIMEOUT", "Invalid timeout value ", filename, None), - ("INVALID-TIMEOUT", "Invalid timeout value short", filename, None), + ("INVALID-TIMEOUT", + "Test file with `<meta name='timeout'...>` element that has a `content` attribute whose value is not `long`: ", + filename, + None), + ("INVALID-TIMEOUT", + "Test file with `<meta name='timeout'...>` element that has a `content` attribute whose value is not `long`: short", + filename, + None), ] elif kind == "python": assert errors == [ @@ -272,7 +278,12 @@ def test_early_testharnessreport(): if kind in ["web-lax", "web-strict"]: assert errors == [ - ("EARLY-TESTHARNESSREPORT", "testharnessreport.js script seen before testharness.js script", filename, None), + ("EARLY-TESTHARNESSREPORT", + "Test file has an instance of " + "`<script src='/resources/testharnessreport.js'>` " + "prior to `<script src='/resources/testharness.js'>`", + filename, + None), ] elif kind == "python": assert errors == [ @@ -294,8 +305,8 @@ def test_multiple_testharness(): if kind in ["web-lax", "web-strict"]: assert errors == [ - ("MULTIPLE-TESTHARNESS", "More than one <script src='/resources/testharness.js'>", filename, None), - ("MISSING-TESTHARNESSREPORT", "Missing <script src='/resources/testharnessreport.js'>", filename, None), + ("MULTIPLE-TESTHARNESS", "More than one `<script src='/resources/testharness.js'>`", filename, None), + ("MISSING-TESTHARNESSREPORT", "Missing `<script src='/resources/testharnessreport.js'>`", filename, None), ] elif kind == "python": assert errors == [ @@ -318,7 +329,7 @@ def test_multiple_testharnessreport(): if kind in ["web-lax", "web-strict"]: assert errors == [ - ("MULTIPLE-TESTHARNESSREPORT", "More than one <script src='/resources/testharnessreport.js'>", filename, None), + ("MULTIPLE-TESTHARNESSREPORT", "More than one `<script src='/resources/testharnessreport.js'>`", filename, None), ] elif kind == "python": assert errors == [ @@ -343,7 +354,7 @@ def test_multiple_testdriver(): if kind in ["web-lax", "web-strict"]: assert errors == [ - ("MULTIPLE-TESTDRIVER", "More than one <script src='/resources/testdriver.js'>", filename, None), + ("MULTIPLE-TESTDRIVER", "More than one `<script src='/resources/testdriver.js'>`", filename, None), ] elif kind == "python": assert errors == [ @@ -368,7 +379,7 @@ def test_multiple_testdriver_vendor(): if kind in ["web-lax", "web-strict"]: assert errors == [ - ("MULTIPLE-TESTDRIVER-VENDOR", "More than one <script src='/resources/testdriver-vendor.js'>", filename, None), + ("MULTIPLE-TESTDRIVER-VENDOR", "More than one `<script src='/resources/testdriver-vendor.js'>`", filename, None), ] elif kind == "python": assert errors == [ @@ -391,7 +402,7 @@ def test_missing_testdriver_vendor(): if kind in ["web-lax", "web-strict"]: assert errors == [ - ("MISSING-TESTDRIVER-VENDOR", "Missing <script src='/resources/testdriver-vendor.js'>", filename, None), + ("MISSING-TESTDRIVER-VENDOR", "Missing `<script src='/resources/testdriver-vendor.js'>`", filename, None), ] elif kind == "python": assert errors == [ @@ -436,7 +447,7 @@ def test_testharness_path(): for (filename, (errors, kind)) in error_map.items(): check_errors(errors) - expected = [("W3C-TEST.ORG", "External w3c-test.org domain used", filename, 5)] + expected = [("W3C-TEST.ORG", "Test-file line has the string `w3c-test.org`", filename, 5)] if kind == "python": expected.append(("PARSE-FAILED", "Unable to parse file", filename, 1)) elif kind in ["web-lax", "web-strict"]: @@ -463,7 +474,7 @@ def test_testharnessreport_path(): for (filename, (errors, kind)) in error_map.items(): check_errors(errors) - expected = [("W3C-TEST.ORG", "External w3c-test.org domain used", filename, 5)] + expected = [("W3C-TEST.ORG", "Test-file line has the string `w3c-test.org`", filename, 5)] if kind == "python": expected.append(("PARSE-FAILED", "Unable to parse file", filename, 1)) elif kind in ["web-lax", "web-strict"]: @@ -530,7 +541,7 @@ def test_testdriver_vendor_path(): expected = set([("PARSE-FAILED", "Unable to parse file", filename, 1)]) elif kind in ["web-lax", "web-strict"]: expected = set([ - ("MISSING-TESTDRIVER-VENDOR", "Missing <script src='/resources/testdriver-vendor.js'>", filename, None), + ("MISSING-TESTDRIVER-VENDOR", "Missing `<script src='/resources/testdriver-vendor.js'>`", filename, None), ("TESTDRIVER-VENDOR-PATH", "testdriver-vendor.js script seen with incorrect path", filename, None), ("TESTDRIVER-VENDOR-PATH", "testdriver-vendor.js script seen with incorrect path", filename, None), ("TESTDRIVER-VENDOR-PATH", "testdriver-vendor.js script seen with incorrect path", filename, None), @@ -585,7 +596,10 @@ def test_variant_missing(): ] elif kind == "web-lax": assert errors == [ - ("VARIANT-MISSING", "<meta name=variant> missing 'content' attribute", filename, None) + ("VARIANT-MISSING", + "Test file with a `<meta name='variant'...>` element that's missing a `content` attribute", + filename, + None) ] @@ -635,7 +649,10 @@ def test_late_timeout(): ] elif kind == "web-lax": assert errors == [ - ("LATE-TIMEOUT", "<meta name=timeout> seen after testharness.js script", filename, None) + ("LATE-TIMEOUT", + "Test file with `<meta name='timeout'...>` element after `<script src='/resources/testharnessreport.js'>` element", + filename, + None) ] @@ -648,8 +665,8 @@ def test_print_statement(): if kind == "python": assert errors == [ - ("PRINT STATEMENT", "Print function used", filename, 2), - ("PRINT STATEMENT", "Print function used", filename, 3), + ("PRINT STATEMENT", "A server-side python support file contains a `print` statement", filename, 2), + ("PRINT STATEMENT", "A server-side python support file contains a `print` statement", filename, 3), ] elif kind == "web-strict": assert errors == [ @@ -667,7 +684,7 @@ def test_print_function(): if kind == "python": assert errors == [ - ("PRINT STATEMENT", "Print function used", filename, 2), + ("PRINT STATEMENT", "A server-side python support file contains a `print` statement", filename, 2), ] elif kind == "web-strict": assert errors == [ diff --git a/tests/wpt/web-platform-tests/tools/manifest/commands.json b/tests/wpt/web-platform-tests/tools/manifest/commands.json index 074d248bf27..769675e0ee4 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/commands.json +++ b/tests/wpt/web-platform-tests/tools/manifest/commands.json @@ -1,5 +1,23 @@ -{"manifest": - {"path": "update.py", "script": "run", "parser": "create_parser", "help": "Update the MANIFEST.json file", - "virtualenv": false}, - "manifest-download": - {"path": "download.py", "script": "run", "parser": "create_parser", "help": "Download recent pregenerated MANIFEST.json file", "virtualenv": false}} +{ + "manifest": { + "path": "update.py", + "script": "run", + "parser": "create_parser", + "help": "Update the MANIFEST.json file", + "virtualenv": false + }, + "manifest-download": { + "path": "download.py", + "script": "run", + "parser": "create_parser", + "help": "Download recent pregenerated MANIFEST.json file", + "virtualenv": false + }, + "test-paths": { + "path": "testpaths.py", + "script": "run", + "parser": "create_parser", + "help": "Print test paths given a set of test ids", + "virtualenv": false + } +} diff --git a/tests/wpt/web-platform-tests/tools/manifest/item.py b/tests/wpt/web-platform-tests/tools/manifest/item.py index a38709193a9..217f6cac262 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/item.py +++ b/tests/wpt/web-platform-tests/tools/manifest/item.py @@ -51,7 +51,7 @@ class ManifestItem(with_metaclass(ManifestItemMeta)): @abstractproperty def id(self): - # type: () -> Hashable + # type: () -> Text """The test's id (usually its url)""" pass diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py index 8aace771cba..6fb591b9c31 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py +++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py @@ -251,18 +251,18 @@ class Manifest(object): self.url_base = url_base # type: Text def __iter__(self): - # type: () -> Iterable[Tuple[str, Text, Set[ManifestItem]]] + # type: () -> Iterator[Tuple[str, Text, Set[ManifestItem]]] return self.itertypes() def itertypes(self, *types): - # type: (*str) -> Iterable[Tuple[str, Text, Set[ManifestItem]]] + # type: (*str) -> Iterator[Tuple[str, Text, Set[ManifestItem]]] for item_type in (types or sorted(self._data.keys())): for path in sorted(self._data[item_type]): tests = self._data[item_type][path] yield item_type, path, tests def iterpath(self, path): - # type: (Text) -> Iterable[ManifestItem] + # type: (Text) -> Iterator[ManifestItem] for type_tests in self._data.values(): i = type_tests.get(path, set()) assert i is not None @@ -270,7 +270,7 @@ class Manifest(object): yield test def iterdir(self, dir_name): - # type: (Text) -> Iterable[ManifestItem] + # type: (Text) -> Iterator[ManifestItem] if not dir_name.endswith(os.path.sep): dir_name = dir_name + os.path.sep for type_tests in self._data.values(): diff --git a/tests/wpt/web-platform-tests/tools/manifest/testpaths.py b/tests/wpt/web-platform-tests/tools/manifest/testpaths.py new file mode 100644 index 00000000000..3c1f09d4373 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/manifest/testpaths.py @@ -0,0 +1,92 @@ +import argparse +import json +import os +from collections import defaultdict + +from six import iteritems + +from .manifest import load_and_update, Manifest +from .log import get_logger + +MYPY = False +if MYPY: + # MYPY is set to True when run under Mypy. + from typing import Any + from typing import Dict + from typing import Iterable + from typing import List + from typing import Text + +wpt_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) + +logger = get_logger() + + +def abs_path(path): + # type: (str) -> str + return os.path.abspath(os.path.expanduser(path)) + + +def create_parser(): + # type: () -> argparse.ArgumentParser + parser = argparse.ArgumentParser() + parser.add_argument( + "-p", "--path", type=abs_path, help="Path to manifest file.") + parser.add_argument( + "--tests-root", type=abs_path, default=wpt_root, help="Path to root of tests.") + parser.add_argument( + "--no-update", dest="update", action="store_false", default=True, + help="Don't update manifest before continuing") + parser.add_argument( + "-r", "--rebuild", action="store_true", default=False, + help="Force a full rebuild of the manifest.") + parser.add_argument( + "--url-base", action="store", default="/", + help="Base url to use as the mount point for tests in this manifest.") + parser.add_argument( + "--cache-root", action="store", default=os.path.join(wpt_root, ".wptcache"), + help="Path in which to store any caches (default <tests_root>/.wptcache/)") + parser.add_argument( + "--json", action="store_true", default=False, + help="Output as JSON") + parser.add_argument( + "test_ids", action="store", nargs="+", + help="Test ids for which to get paths") + return parser + + +def get_path_id_map(manifest_file, test_ids): + # type: (Manifest, Iterable[Text]) -> Dict[Text, List[Text]] + test_ids = set(test_ids) + path_id_map = defaultdict(list) # type: Dict[Text, List[Text]] + + for item_type, path, tests in manifest_file: + for test in tests: + if test.id in test_ids: + path_id_map[path].append(test.id) + return path_id_map + + +def run(**kwargs): + # type: (**Any) -> None + tests_root = kwargs["tests_root"] + assert tests_root is not None + path = kwargs["path"] + if path is None: + path = os.path.join(kwargs["tests_root"], "MANIFEST.json") + + manifest_file = load_and_update(tests_root, + path, + kwargs["url_base"], + update=kwargs["update"], + rebuild=kwargs["rebuild"], + cache_root=kwargs["cache_root"]) + + path_id_map = get_path_id_map(manifest_file, kwargs["test_ids"]) + if kwargs["json"]: + print(json.dumps(path_id_map)) + else: + for path, test_ids in sorted(iteritems(path_id_map)): + print(path) + for test_id in sorted(test_ids): + print(" " + test_id) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini index f82dbc6b8a8..ad3502e02a9 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini +++ b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini @@ -2,7 +2,7 @@ xfail_strict=true [tox] -envlist = py27-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo},py36-base +envlist = py27-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},py36-base skip_missing_interpreters = true [testenv] @@ -20,6 +20,9 @@ deps = safari: -r{toxinidir}/requirements_safari.txt sauce: -r{toxinidir}/requirements_sauce.txt servo: -r{toxinidir}/requirements_servo.txt + webkit: -r{toxinidir}/requirements_webkit.txt + webkitgtk_minibrowser: -r{toxinidir}/requirements_webkit.txt + epiphany: -r{toxinidir}/requirements_epiphany.txt commands = pytest {posargs} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py index 8607f776b98..65534458197 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py @@ -50,6 +50,14 @@ def maybe_add_args(required_args, current_args): return current_args +def certificate_domain_list(list_of_domains, certificate_file): + """Build a list of domains where certificate_file should be used""" + cert_list = [] + for domain in list_of_domains: + cert_list.append({"host": domain, "certificateFile": certificate_file}) + return cert_list + + def get_free_port(): """Get a random unbound port""" while True: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py index 37e2f21421a..8a0e5f578b2 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py @@ -1,4 +1,4 @@ -from .base import get_timeout_multiplier, maybe_add_args # noqa: F401 +from .base import get_timeout_multiplier, maybe_add_args, certificate_domain_list # noqa: F401 from .webkit import WebKitBrowser from ..executors import executor_kwargs as base_executor_kwargs from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401 @@ -44,9 +44,7 @@ def capabilities(server_config, **kwargs): "webkitgtk:browserOptions": { "binary": kwargs["binary"], "args": args, - "certificates": [ - {"host": server_config["browser_host"], - "certificateFile": kwargs["host_cert_path"]}]}} + "certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}} def executor_kwargs(test_type, server_config, cache_manager, run_info_data, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py index 9cb373e14c9..aa286213945 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py @@ -1,5 +1,5 @@ from .base import Browser, ExecutorBrowser, require_arg -from .base import get_timeout_multiplier # noqa: F401 +from .base import get_timeout_multiplier, certificate_domain_list # noqa: F401 from ..executors import executor_kwargs as base_executor_kwargs from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401 WebDriverRefTestExecutor) # noqa: F401 @@ -47,9 +47,7 @@ def capabilities_for_port(server_config, **kwargs): browser_options_key: { "binary": kwargs["binary"], "args": kwargs.get("binary_args", []), - "certificates": [ - {"host": server_config["browser_host"], - "certificateFile": kwargs["host_cert_path"]}]}} + "certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}} return {} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py index 3c4947335bf..d735f3c0792 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py @@ -1,4 +1,4 @@ -from .base import get_timeout_multiplier, maybe_add_args # noqa: F401 +from .base import get_timeout_multiplier, maybe_add_args, certificate_domain_list # noqa: F401 from .webkit import WebKitBrowser from ..executors import executor_kwargs as base_executor_kwargs from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401 @@ -48,9 +48,7 @@ def capabilities(server_config, **kwargs): "webkitgtk:browserOptions": { "binary": kwargs["binary"], "args": args, - "certificates": [ - {"host": server_config["browser_host"], - "certificateFile": kwargs["host_cert_path"]}]}} + "certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}} def executor_kwargs(test_type, server_config, cache_manager, run_info_data, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py index 707a8519a55..569239018a2 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py @@ -31,18 +31,26 @@ class ChromiumFormatter(base.BaseFormatter): # List of tests that have failing subtests. self.tests_with_subtest_fails = set() - def _append_test_message(self, test, subtest, status, message): + def _append_test_message(self, test, subtest, status, expected, message): """ Appends the message data for a test. :param str test: the name of the test :param str subtest: the name of the subtest with the message :param str status: the subtest status + :param str expected: the expected subtest status :param str message: the string to append to the message for this test + + Here's an example of a message: + [TIMEOUT expected FAIL] Test Name foo: assert_equals: expected 1 but got 2 """ if not message: return # Add the prefix, with the test status and subtest name (if available) - prefix = "[%s] " % status + prefix = "[%s" % status + if expected and expected != status: + prefix += " expected %s] " % expected + else: + prefix += "] " if subtest: prefix += "%s: " % subtest self.messages[test] += prefix + message + "\n" @@ -112,11 +120,23 @@ class ChromiumFormatter(base.BaseFormatter): def test_status(self, data): test_name = data["test"] - if data["status"] != "PASS" and test_name not in self.tests_with_subtest_fails: + is_unexpected = None + actual_status = self._map_status_name(data["status"]) + # mozlog will delete "expected" from |data| if it is the same as "status". + # So the presence of "expected" implies that "status" is unexpected. + # Conversely, the absence of "expected" implies the "status" is expected. + # So here we use the "expected" status if it's there or fall back to the + # actual status if it's not. + expected_status = (self._map_status_name(data["expected"]) + if "expected" in data else actual_status) + + is_unexpected = actual_status != expected_status + if is_unexpected and test_name not in self.tests_with_subtest_fails: self.tests_with_subtest_fails.add(test_name) if "message" in data: self._append_test_message(test_name, data["subtest"], - data["status"], data["message"]) + actual_status, expected_status, + data["message"]) def test_end(self, data): expected_status = (self._map_status_name(data["expected"]) @@ -132,7 +152,7 @@ class ChromiumFormatter(base.BaseFormatter): if "message" in data: self._append_test_message(test_name, None, actual_status, - data["message"]) + expected_status, data["message"]) self._store_test_result(test_name, actual_status, expected_status, self.messages[test_name]) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py index 87691cf5a98..9bb72d957f4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py @@ -157,11 +157,11 @@ def test_subtest_messages(capfd): output_json = json.load(output) t1_log = output_json["tests"]["t1"]["artifacts"]["log"] - assert t1_log == "[FAIL] t1_a: t1_a_message\n" \ + assert t1_log == "[FAIL expected PASS] t1_a: t1_a_message\n" \ "[PASS] t1_b: t1_b_message\n" t2_log = output_json["tests"]["t2"]["artifacts"]["log"] - assert t2_log == "[TIMEOUT] t2_message\n" + assert t2_log == "[TIMEOUT expected PASS] t2_message\n" def test_subtest_failure(capfd): @@ -203,11 +203,102 @@ def test_subtest_failure(capfd): test_obj = output_json["tests"]["t1"] t1_log = test_obj["artifacts"]["log"] - assert t1_log == "[FAIL] t1_a: t1_a_message\n" \ + assert t1_log == "[FAIL expected PASS] t1_a: t1_a_message\n" \ "[PASS] t1_b: t1_b_message\n" \ - "[TIMEOUT] t1_c: t1_c_message\n" + "[TIMEOUT expected PASS] t1_c: t1_c_message\n" # The status of the test in the output is a failure because subtests failed, # despite the harness reporting that the test passed. assert test_obj["actual"] == "FAIL" # Also ensure that the formatter cleaned up its internal state assert "t1" not in formatter.tests_with_subtest_fails + + +def test_expected_subtest_failure(capfd): + # Tests that a expected subtest failure does not cause the test to fail + + # Set up the handler. + output = StringIO() + logger = structuredlog.StructuredLogger("test_a") + formatter = ChromiumFormatter() + logger.add_handler(handlers.StreamHandler(output, formatter)) + + # Run a test with some expected subtest failures. + logger.suite_start(["t1"], run_info={}, time=123) + logger.test_start("t1") + logger.test_status("t1", status="FAIL", expected="FAIL", subtest="t1_a", + message="t1_a_message") + logger.test_status("t1", status="PASS", subtest="t1_b", + message="t1_b_message") + logger.test_status("t1", status="TIMEOUT", expected="TIMEOUT", subtest="t1_c", + message="t1_c_message") + + # The subtest failures are all expected so this test should not be added to + # the set of tests with subtest failures. + assert "t1" not in formatter.tests_with_subtest_fails + + # The test status is reported as a pass here because the harness was able to + # run the test to completion. + logger.test_end("t1", status="PASS", expected="PASS") + logger.suite_end() + + # check nothing got output to stdout/stderr + # (note that mozlog outputs exceptions during handling to stderr!) + captured = capfd.readouterr() + assert captured.out == "" + assert captured.err == "" + + # check the actual output of the formatter + output.seek(0) + output_json = json.load(output) + + test_obj = output_json["tests"]["t1"] + t1_log = test_obj["artifacts"]["log"] + assert t1_log == "[FAIL] t1_a: t1_a_message\n" \ + "[PASS] t1_b: t1_b_message\n" \ + "[TIMEOUT] t1_c: t1_c_message\n" + # The status of the test in the output is a pass because the subtest + # failures were all expected. + assert test_obj["actual"] == "PASS" + + +def test_unexpected_subtest_pass(capfd): + # A test that unexpectedly passes is considered a failure condition. + + # Set up the handler. + output = StringIO() + logger = structuredlog.StructuredLogger("test_a") + formatter = ChromiumFormatter() + logger.add_handler(handlers.StreamHandler(output, formatter)) + + # Run a test with a subtest that is expected to fail but passes. + logger.suite_start(["t1"], run_info={}, time=123) + logger.test_start("t1") + logger.test_status("t1", status="PASS", expected="FAIL", subtest="t1_a", + message="t1_a_message") + + # Since the subtest behaviour is unexpected, it's considered a failure, so + # the test should be added to the set of tests with subtest failures. + assert "t1" in formatter.tests_with_subtest_fails + + # The test status is reported as a pass here because the harness was able to + # run the test to completion. + logger.test_end("t1", status="PASS", expected="PASS") + logger.suite_end() + + # check nothing got output to stdout/stderr + # (note that mozlog outputs exceptions during handling to stderr!) + captured = capfd.readouterr() + assert captured.out == "" + assert captured.err == "" + + # check the actual output of the formatter + output.seek(0) + output_json = json.load(output) + + test_obj = output_json["tests"]["t1"] + t1_log = test_obj["artifacts"]["log"] + assert t1_log == "[PASS expected FAIL] t1_a: t1_a_message\n" + # Since the subtest status is unexpected, we fail the test. + assert test_obj["actual"] == "FAIL" + # Also ensure that the formatter cleaned up its internal state + assert "t1" not in formatter.tests_with_subtest_fails diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index 56fbf081119..1b02fc622be 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -572,10 +572,16 @@ class TestRunnerManager(threading.Thread): # Write the result of each subtest file_result, test_results = results subtest_unexpected = False + expect_any_subtest_status = test.expect_any_subtest_status() + if expect_any_subtest_status: + self.logger.debug("Ignoring subtest statuses for test %s" % test.id) for result in test_results: if test.disabled(result.name): continue - expected = test.expected(result.name) + if expect_any_subtest_status: + expected = result.status + else: + expected = test.expected(result.name) known_intermittent = test.known_intermittent(result.name) is_unexpected = expected != result.status and result.status not in known_intermittent diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_webkitgtk.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_webkitgtk.py new file mode 100644 index 00000000000..be00dc4a6b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_webkitgtk.py @@ -0,0 +1,57 @@ +from os.path import join, dirname + +import pytest + +from wptserve.config import ConfigBuilder +from ..base import active_products +from wptrunner import environment, products + +test_paths = {"/": {"tests_path": join(dirname(__file__), "..", "..", "..", "..", "..")}} # repo root +environment.do_delayed_imports(None, test_paths) + + +@active_products("product") +def test_webkitgtk_certificate_domain_list(product): + + def domain_is_inside_certificate_list_cert(domain_to_find, webkitgtk_certificate_list, cert_file): + for domain in webkitgtk_certificate_list: + if domain["host"] == domain_to_find and domain["certificateFile"] == cert_file: + return True + return False + + if product not in ["epiphany", "webkit", "webkitgtk_minibrowser"]: + pytest.skip("%s doesn't support certificate_domain_list" % product) + + (check_args, + target_browser_cls, get_browser_kwargs, + executor_classes, get_executor_kwargs, + env_options, get_env_extras, run_info_extras) = products.load_product({}, product) + + cert_file = "/home/user/wpt/tools/certs/cacert.pem" + valid_domains_test = ["a.example.org", "b.example.org", "example.org", + "a.example.net", "b.example.net", "example.net"] + invalid_domains_test = ["x.example.org", "y.example.org", "example.it", + "x.example.net", "y.example.net", "z.example.net"] + kwargs = {} + kwargs["timeout_multiplier"] = 1 + kwargs["debug_info"] = None + kwargs["host_cert_path"] = cert_file + kwargs["webkit_port"] = "gtk" + kwargs["binary"] = None + kwargs["webdriver_binary"] = None + with ConfigBuilder(browser_host="example.net", + alternate_hosts={"alt": "example.org"}, + subdomains={"a", "b"}, + not_subdomains={"x", "y"}) as env_config: + + executor_args = get_executor_kwargs(None, env_config, None, None, **kwargs) + assert('capabilities' in executor_args) + assert('webkitgtk:browserOptions' in executor_args['capabilities']) + assert('certificates' in executor_args['capabilities']['webkitgtk:browserOptions']) + cert_list = executor_args['capabilities']['webkitgtk:browserOptions']['certificates'] + for valid_domain in valid_domains_test: + assert(domain_is_inside_certificate_list_cert(valid_domain, cert_list, cert_file)) + assert(not domain_is_inside_certificate_list_cert(valid_domain, cert_list, cert_file + ".backup_non_existent")) + for invalid_domain in invalid_domains_test: + assert(not domain_is_inside_certificate_list_cert(invalid_domain, cert_list, cert_file)) + assert(not domain_is_inside_certificate_list_cert(invalid_domain, cert_list, cert_file + ".backup_non_existent")) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py index fcaeb2deec3..69f22ebcb68 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py @@ -68,6 +68,11 @@ test_6 = """\ expected: [OK, FAIL] """ +test_7 = """\ +[7.html] + blink_expect_any_subtest_status: yep +""" + test_fuzzy = """\ [fuzzy.html] fuzzy: fuzzy-ref.html:1;200 @@ -205,6 +210,14 @@ def test_known_intermittent(): @pytest.mark.xfail(sys.version[0] == "3", reason="bytes/text confusion in py3") +def test_expect_any_subtest_status(): + test_obj = make_test_object(test_7, "a/7.html", 7, ("test", "a", 8), None, False) + assert test_obj.expected() == "OK" + assert test_obj.expect_any_subtest_status() is True + + +@pytest.mark.xfail(sys.version[0] == "3", + reason="bytes/text confusion in py3") def test_metadata_fuzzy(): manifest_data = { "items": {"reftest": {"a/fuzzy.html": [["a/fuzzy.html", diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 7dfd86e99c9..cac172a5940 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -342,6 +342,7 @@ def start(**kwargs): handler = handlers.LogLevelFilter(logged_critical, "CRITICAL") logger.add_handler(handler) + rv = False try: if kwargs["list_test_groups"]: list_test_groups(**kwargs) @@ -350,11 +351,12 @@ def start(**kwargs): elif kwargs["list_tests"]: list_tests(**kwargs) elif kwargs["verify"] or kwargs["stability"]: - return check_stability(**kwargs) or logged_critical.has_log + rv = check_stability(**kwargs) or logged_critical.has_log else: - return not run_tests(**kwargs) or logged_critical.has_log + rv = not run_tests(**kwargs) or logged_critical.has_log finally: logger.remove_handler(handler) + return rv def main(): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py index e5c28bc4731..19e839d21bc 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -347,6 +347,17 @@ class Test(object): except KeyError: return [] + def expect_any_subtest_status(self): + metadata = self._get_metadata() + if metadata is None: + return False + try: + # This key is used by the Blink CI to ignore subtest statuses + metadata.get("blink_expect_any_subtest_status") + return True + except KeyError: + return False + def __repr__(self): return "<%s.%s %s>" % (self.__module__, self.__class__.__name__, self.id) diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-name.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-getPolicyNames.tentative.html index 4b7c30c8559..d1ae9e45c06 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-name.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-getPolicyNames.tentative.html @@ -6,26 +6,19 @@ <meta http-equiv="Content-Security-Policy" content="trusted-types *"> <body> <script> - // Policy name test test(t => { - let policy = trustedTypes.createPolicy('hidden', { createHTML: s => s }, false ); + let policy = trustedTypes.createPolicy('thisisaname', {}); assert_true(policy instanceof TrustedTypePolicy); - assert_equals(policy.name, 'hidden'); + assert_equals(policy.name, 'thisisaname'); }, "policy.name = name"); - // Duplicate names test - test(t => { - assert_throws(new TypeError(), _ => { - trustedTypes.createPolicy('hidden', { createURL: s => s } ); - }); - }, "duplicate policy name attempt throws"); // Retrieve policy names tests test(t => { - let policy = trustedTypes.createPolicy('exposed', { createURL: s => s }, true ); + let policy = trustedTypes.createPolicy('anothername', {}); let names = trustedTypes.getPolicyNames(); assert_equals(names.length, 2); - assert_true(names.includes('hidden')); - assert_true(names.includes('exposed')); + assert_true(names.includes('thisisaname')); + assert_true(names.includes('anothername')); }, "getPolicyNames returns all policy names"); </script> diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html index e0aa53756d6..0b1872abe50 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html @@ -2,27 +2,47 @@ <script src="/resources/testharness.js" ></script> <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> +<meta http-equiv="Content-Security-Policy" + content="trusted-types SomeName SomeOtherName"> <body> <script> - //Policy name test + // Policy name test test(t => { - let policy = window.trustedTypes.createPolicy('SomeName', { createHTML: s => s } ); + let policy = trustedTypes.createPolicy('SomeName', {} ); assert_true(policy instanceof TrustedTypePolicy); assert_equals(policy.name, 'SomeName'); }, "policy.name = name"); - //Duplicate names test + // Duplicate names test test(t => { assert_throws(new TypeError(), _ => { - window.trustedTypes.createPolicy('SomeName', { createURL: s => s } ); + trustedTypes.createPolicy('SomeName', {} ); }); }, "duplicate policy name attempt throws"); - //Retrieve policy names tests + // Retrieve policy names tests test(t => { - let policy = window.trustedTypes.createPolicy('SomeOtherName', { createURL: s => s } ); - let names = window.trustedTypes.getPolicyNames(); + let policy = trustedTypes.createPolicy('SomeOtherName', {} ); + let names = trustedTypes.getPolicyNames(); assert_true(names.includes('SomeName')); assert_true(names.includes('SomeOtherName')); }, "Retrieving policy names"); + + // Check error messages. + test(t => { + try { + trustedTypes.createPolicy("unknown name", {}); + } catch (e) { + assert_true(e.toString().includes("disallowed")); + assert_false(e.toString().includes("already exists")); + } + + try { + trustedTypes.createPolicy("SomeName", {}); + } catch (e) { + assert_false(e.toString().includes("disallowed")); + assert_true(e.toString().includes("already exists")); + } + }, "Error messages for duplicates and unlisted policies should be different"); + </script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-eval.tentative.html b/tests/wpt/web-platform-tests/trusted-types/csp-block-eval.tentative.html index f7d7132505f..93a97f15f8a 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-eval.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/csp-block-eval.tentative.html @@ -10,18 +10,21 @@ </head> <body> <script nonce="abc"> - let p = createScript_policy(window, 1); + const p = createScript_policy(window, 1); + test(t => { let a = 0; assert_throws(new EvalError(), _ => { - eval('a="hello there"') + eval('a="hello there"'); }); assert_equals(a, 0); }, "eval with plain string throws (both block)."); test(t => { let a = 0; - eval(p.createScript('a="Hello transformed string"')); + assert_throws(new EvalError(), _ => { + eval(p.createScript('a="Hello transformed string"')); + }); assert_equals(a, 0); }, "eval with TrustedScript throws (script-src blocks)."); </script> diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.html new file mode 100644 index 00000000000..e8ed57708ef --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> + <script nonce="abc" src="/resources/testharness.js"></script> + <script nonce="abc" src="/resources/testharnessreport.js"></script> + <script nonce="abc" src="support/helper.sub.js"></script> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-eval' 'nonce-abc'"> +</head> +<body> +<script nonce="abc"> + const p = trustedTypes.createPolicy("p", {createScript: s => s}); + + test(t => { + assert_equals(eval(p.createScript("1+1")), 2); + }, "eval of TrustedScript works."); + + test(t => { + assert_equals(eval('1+1'), 2); + }, "eval of string works."); + + test(t => { + assert_equals(eval(42), 42); + assert_object_equals(eval({}), {}); + assert_equals(eval(null), null); + assert_equals(eval(undefined), undefined); + }, "eval of !TrustedScript and !string works."); +</script> + diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html new file mode 100644 index 00000000000..8f1926d9cf2 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> +<head> + <script nonce="abc" src="/resources/testharness.js"></script> + <script nonce="abc" src="/resources/testharnessreport.js"></script> + <script nonce="abc" src="support/helper.sub.js"></script> + <meta http-equiv="Content-Security-Policy" content="trusted-types *"> +</head> +<body> +<script> + trustedTypes.createPolicy("default", {createScript: s => s + 4}); + const p = trustedTypes.createPolicy("p", {createScript: s => s}); + + test(t => { + assert_equals(eval(p.createScript('1+1')), 2); + }, "eval of TrustedScript works."); + + test(t => { + assert_equals(eval('1+1'), 15); + }, "eval of string works."); + + test(t => { + assert_equals(eval(42), 42); + assert_object_equals(eval({}), {}); + assert_equals(eval(null), null); + assert_equals(eval(undefined), undefined); + }, "eval of !TrustedScript and !string works."); +</script> + diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html new file mode 100644 index 00000000000..dc976d64abd --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> + <script nonce="abc" src="/resources/testharness.js"></script> + <script nonce="abc" src="/resources/testharnessreport.js"></script> + <script nonce="abc" src="support/helper.sub.js"></script> + <meta http-equiv="Content-Security-Policy" content="trusted-types *"> +</head> +<body> +<script> + const p = trustedTypes.createPolicy("p", {createScript: s => s}); + + test(t => { + assert_equals(eval(p.createScript('1+1')), 2); + }, "eval of TrustedScript works."); + + test(t => { + assert_throws(new EvalError(), _ => eval('1+1')); + }, "eval of string fails."); + + test(t => { + assert_equals(eval(42), 42); + assert_object_equals(eval({}), {}); + assert_equals(eval(null), null); + assert_equals(eval(undefined), undefined); + }, "eval of !TrustedScript and !string works."); +</script> + diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.html new file mode 100644 index 00000000000..84c224eac28 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> +<head> + <script nonce="abc" src="/resources/testharness.js"></script> + <script nonce="abc" src="/resources/testharnessreport.js"></script> + <script nonce="abc" src="support/helper.sub.js"></script> + <!-- No CSP header. --> +</head> +<body> +<script> + trustedTypes.createPolicy("default", {createScript: s => s + 4}); + const p = trustedTypes.createPolicy("p", {createScript: s => s}); + + test(t => { + assert_equals(eval(p.createScript('1+1')), 2); + }, "eval of TrustedScript works."); + + test(t => { + assert_equals(eval('1+1'), 2); + }, "eval of string works and does not call a default policy."); + + test(t => { + assert_equals(eval(42), 42); + assert_object_equals(eval({}), {}); + assert_equals(eval(null), null); + assert_equals(eval(undefined), undefined); + }, "eval of !TrustedScript and !string works."); +</script> + diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.html new file mode 100644 index 00000000000..45086a1d6ab --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> + <script nonce="abc" src="/resources/testharness.js"></script> + <script nonce="abc" src="/resources/testharnessreport.js"></script> + <script nonce="abc" src="support/helper.sub.js"></script> + <!-- No CSP header. --> +</head> +<body> +<script nonce="abc"> + const p = trustedTypes.createPolicy("p", {createScript: s => s}); + + test(t => { + assert_equals(eval(p.createScript('1+1')), 2); + }, "eval of TrustedScript works."); + + test(t => { + assert_equals(eval('1+1'), 2); + }, "eval of string works."); + + test(t => { + assert_equals(eval(42), 42); + assert_object_equals(eval({}), {}); + assert_equals(eval(null), null); + assert_equals(eval(undefined), undefined); + }, "eval of !TrustedScript and !string works."); +</script> + diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html new file mode 100644 index 00000000000..46ca2edb6fb --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<body> +<script> +// We assume the following header has been set: +// Content-Security-Policy-Report-Only: trusted-types a b c +// (CSP-Report-Only headers can't be set in <meta> tags.) + +test(t => { + trustedTypes.createPolicy("a", {}); + trustedTypes.createPolicy("a", {}); + trustedTypes.createPolicy("b", {}); + trustedTypes.createPolicy("d", {}); +}, "TrustedTypePolicyFactory and policy list in CSP."); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers new file mode 100644 index 00000000000..b6608515aa8 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers @@ -0,0 +1 @@ +Content-Security-Policy-Report-Only: trusted-types a b c diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.html new file mode 100644 index 00000000000..839f2ef7a3a --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <meta http-equiv="Content-Security-Policy" content="trusted-types a b c*"> +</head> +<body> +<script> +test(t => { + trustedTypes.createPolicy("a", {}), + assert_throws(new TypeError(), + _ => trustedTypes.createPolicy("a", {}), + "Duplicate name"); + + trustedTypes.createPolicy("b", {}), + + assert_throws(new TypeError(), + _ => trustedTypes.createPolicy("d", {}), + "Invalid name."); +}, "TrustedTypePolicyFactory and policy list in CSP."); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.html new file mode 100644 index 00000000000..e780a3d26ad --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <meta http-equiv="Content-Security-Policy" content="trusted-types *"> +</head> +<body> +<script> +test(t => { + // We expect neither of these to throw. + trustedTypes.createPolicy("duplicatename", {}); + trustedTypes.createPolicy("duplicatename", {}); +}, "policy - duplicate names"); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html index e15ecfaa86c..7902df1c303 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html @@ -88,8 +88,7 @@ let p = Promise.resolve() .then(promise_violation("script-src")) .then(promise_flush()); - expect_throws(_ => eval('script_run_beacon="should not run"')); - eval(scriptyPolicy.createScript('script_run_beacon="i ran"')); + expect_throws(_ => eval(scriptyPolicy.createScript('script_run_beacon="i ran"'))); flush(); assert_not_equals(script_run_beacon, 'i ran'); // Code did not run. return p; diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html index 70afb9745a8..10a951fa12c 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html @@ -180,6 +180,18 @@ }, "Trusted Type violation report: sample for script innerText assignment"); promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("trusted-types one")) + .then(expect_blocked_uri("trusted-types-sink")) + .then(expect_sample("eval")) + .then(expect_sample("2+2")) + .then(promise_flush()); + expect_throws(_ => eval("2+2")); + flush(); + return p; + }, "Trusted Type violation report: sample for eval"); + + promise_test(t => { // We expect the sample string to always contain the name, and at least the // start of the value, but it should not be excessively long. let p = Promise.resolve() diff --git a/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html new file mode 100644 index 00000000000..e721b0e0d36 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <meta http-equiv="Content-Security-Policy" content="trusted-types *"> +</head> +<body> +<script> + trustedTypes.createPolicy("default", {createScript: _ => null}); + + test(t => { + let a = 0; + assert_throws(new EvalError(), _ => { + eval('a="hello there"'); + }); + assert_equals(a, 0); + }, "eval blocks if the default policy rejects a value."); +</script> diff --git a/tests/wpt/web-platform-tests/uievents/click/click_events_on_input.html b/tests/wpt/web-platform-tests/uievents/click/click_events_on_input.html new file mode 100644 index 00000000000..731d13934f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/uievents/click/click_events_on_input.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>Clicking with primary vs non-primary buttons</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/testdriver.js"></script> + <script src="/resources/testdriver-actions.js"></script> + <script src="/resources/testdriver-vendor.js"></script> + </head> + <body> + <h1>Clicking on input type=text element when placeholder changes</h1> + <input id="target" onfocus="this.placeholder = ++focusCount;" placeholder="initial"> + <input id="other"> + <script> + var focusCount = 0; + var target = document.querySelector('#target'); + document.addEventListener('contextmenu', event => { event.preventDefault(); }); + + var test_click = async_test("Test click and auxclick on input element"); + + // The test is on purpose rather vague, since auxclick handling on + // touchscreens isn't well defined. + // But at least there should be 'click' + var didGetClick = false; + async function testClick(type, mouseButton) { + return new Promise((resolve) => { + target.addEventListener(type, event => { + event.preventDefault(); + didGetClick = didGetClick || event.type == "click"; + test_click.step(() => { + assert_equals(event.type, type, 'Should have got an event.'); + }); + }, {once: true}); + + // Inject mouse click events. + var actions = new test_driver.Actions(); + document.getElementById("other").focus(); + var bounds = target.getBoundingClientRect(); + actions.pointerMove(Math.floor(bounds.width / 5), + Math.floor(bounds.height / 2), + {origin: target}) + .pointerDown({button: mouseButton}) + .pointerUp({button: mouseButton}) + .send() + .then(resolve); + }); + } + + async function testClicks() { + var buttonType = test_driver.Actions.prototype.ButtonType; + await testClick("click", buttonType.LEFT); + await testClick("auxclick", buttonType.MIDDLE); + await testClick("auxclick", buttonType.RIGHT); + test_click.step(() => { + assert_true(didGetClick, 'Should have got at least "click".'); + }); + test_click.done(); + } + + testClicks(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/assertions.js b/tests/wpt/web-platform-tests/wasm/jsapi/assertions.js index 27545c08a49..f00303f6aa5 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/assertions.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/assertions.js @@ -34,6 +34,7 @@ function assert_Instance(instance, expected_exports) { assert_equals(Object.getPrototypeOf(exports), null, "exports prototype"); assert_false(Object.isExtensible(exports), "extensible exports"); + assert_array_equals(Object.keys(exports), Object.keys(expected_exports), "matching export keys"); for (const [key, expected] of Object.entries(expected_exports)) { const property = Object.getOwnPropertyDescriptor(exports, key); assert_equals(typeof property, "object", `${key} should be present`); diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/constructor/multi-value.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/constructor/multi-value.any.js new file mode 100644 index 00000000000..7fbac5b24f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/wasm/jsapi/constructor/multi-value.any.js @@ -0,0 +1,149 @@ +// META: global=jsshell +// META: script=/wasm/jsapi/wasm-module-builder.js +// META: script=/wasm/jsapi/assertions.js + +const type_if_fi = makeSig([kWasmF64, kWasmI32], [kWasmI32, kWasmF64]); + +promise_test(async () => { + const builder = new WasmModuleBuilder(); + + builder + .addFunction("swap", type_if_fi) + .addBody([ + kExprGetLocal, 1, + kExprGetLocal, 0, + kExprReturn, + ]) + .exportFunc(); + + const buffer = builder.toBuffer(); + + const result = await WebAssembly.instantiate(buffer); + const swapped = result.instance.exports.swap(4.2, 7); + assert_true(Array.isArray(swapped)); + assert_equals(Object.getPrototypeOf(swapped), Array.prototype); + assert_array_equals(swapped, [7, 4.2]); +}, "multiple return values from wasm to js"); + +promise_test(async () => { + const builder = new WasmModuleBuilder(); + + const swap = builder + .addFunction("swap", type_if_fi) + .addBody([ + kExprGetLocal, 1, + kExprGetLocal, 0, + kExprReturn, + ]); + builder + .addFunction("callswap", kSig_i_v) + .addBody([ + ...wasmF64Const(4.2), + ...wasmI32Const(7), + kExprCallFunction, swap.index, + kExprDrop, + kExprReturn, + ]) + .exportFunc(); + + const buffer = builder.toBuffer(); + + const result = await WebAssembly.instantiate(buffer); + const swapped = result.instance.exports.callswap(); + assert_equals(swapped, 7); +}, "multiple return values inside wasm"); + +promise_test(async () => { + const builder = new WasmModuleBuilder(); + + const fnIndex = builder.addImport("module", "fn", type_if_fi); + builder + .addFunction("callfn", kSig_i_v) + .addBody([ + ...wasmF64Const(4.2), + ...wasmI32Const(7), + kExprCallFunction, fnIndex, + kExprDrop, + kExprReturn, + ]) + .exportFunc(); + + const buffer = builder.toBuffer(); + + const actual = []; + const imports = { + "module": { + fn(f32, i32) { + assert_equals(f32, 4.2); + assert_equals(i32, 7); + const result = [2, 7.3]; + let i = 0; + return { + get [Symbol.iterator]() { + actual.push("@@iterator getter"); + return function iterator() { + actual.push("@@iterator call"); + return { + get next() { + actual.push("next getter"); + return function next(...args) { + assert_array_equals(args, []); + let j = ++i; + actual.push(`next call ${j}`); + if (j > result.length) { + return { + get done() { + actual.push(`done call ${j}`); + return true; + } + }; + } + return { + get done() { + actual.push(`done call ${j}`); + return false; + }, + get value() { + actual.push(`value call ${j}`); + return { + get valueOf() { + actual.push(`valueOf get ${j}`); + return function() { + actual.push(`valueOf call ${j}`); + return result[j - 1]; + }; + } + }; + } + }; + }; + } + }; + } + }, + }; + }, + } + }; + + const { instance } = await WebAssembly.instantiate(buffer, imports); + const result = instance.exports.callfn(); + assert_equals(result, 2); + assert_array_equals(actual, [ + "@@iterator getter", + "@@iterator call", + "next getter", + "next call 1", + "done call 1", + "value call 1", + "next call 2", + "done call 2", + "value call 2", + "next call 3", + "done call 3", + "valueOf get 1", + "valueOf call 1", + "valueOf get 2", + "valueOf call 2", + ]); +}, "multiple return values from js to wasm"); diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor-caching.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor-caching.any.js new file mode 100644 index 00000000000..695b078a0f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor-caching.any.js @@ -0,0 +1,54 @@ +// META: global=jsshell +// META: script=/wasm/jsapi/wasm-module-builder.js + +function getExports() { + const builder = new WasmModuleBuilder(); + builder + .addFunction("fn", kSig_v_d) + .addBody([]) + .exportFunc(); + + builder.setTableBounds(1); + builder.addExportOfKind("table", kExternalTable, 0); + builder.addGlobal(kWasmI32, false).exportAs("global"); + builder.addMemory(4, 8, true); + + const buffer = builder.toBuffer(); + const module = new WebAssembly.Module(buffer); + const instance = new WebAssembly.Instance(module); + return instance.exports; +} + +test(() => { + const exports = getExports(); + + const builder = new WasmModuleBuilder(); + const functionIndex = builder.addImport("module", "imported", kSig_v_d); + builder.addExport("exportedFunction", functionIndex); + + const globalIndex = builder.addImportedGlobal("module", "global", kWasmI32); + builder.addExportOfKind("exportedGlobal", kExternalGlobal, globalIndex); + + builder.addImportedMemory("module", "memory", 4); + builder.exportMemoryAs("exportedMemory"); + + const tableIndex = builder.addImportedTable("module", "table", 1); + builder.addExportOfKind("exportedTable", kExternalTable, tableIndex); + + const buffer = builder.toBuffer(); + + const module = new WebAssembly.Module(buffer); + const instance = new WebAssembly.Instance(module, { + "module": { + "imported": exports.fn, + "global": exports.global, + "memory": exports.memory, + "table": exports.table, + } + }); + + assert_equals(instance.exports.exportedFunction, exports.fn); + assert_equals(instance.exports.exportedGlobal, exports.global); + assert_equals(instance.exports.exportedMemory, exports.memory); + assert_equals(instance.exports.exportedTable, exports.table); +}); diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js b/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js index a937eed4c62..09ff891f52e 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js @@ -553,9 +553,9 @@ class WasmModuleBuilder { return this.num_imported_funcs++; } - addImportedGlobal(module, name, type) { + addImportedGlobal(module, name, type, mutable = false) { let o = {module: module, name: name, kind: kExternalGlobal, type: type, - mutable: false} + mutable: mutable}; this.imports.push(o); return this.num_imported_globals++; } diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js index 11bbf1ac661..2f91ebc372c 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js @@ -410,15 +410,6 @@ const gCSSProperties = { { type: 'discrete', options: [ [ 'auto', '1px' ] ] } ] }, - 'content': { - // https://drafts.csswg.org/css-content-3/#propdef-content - types: [ - { type: 'discrete', options: [ [ '"a"', '"b"' ] ] } - ], - setup: t => { - return getPseudoElement(t, 'before'); - } - }, 'counter-increment': { // https://drafts.csswg.org/css-lists-3/#propdef-counter-increment types: [ @@ -1432,13 +1423,11 @@ const gCSSProperties = { }; function testAnimationSamples(animation, idlName, testSamples) { - const type = animation.effect.target.type; - const target = animation.effect.target.constructor.name === 'CSSPseudoElement' - ? animation.effect.target.element - : animation.effect.target; + const pseudoType = animation.effect.pseudoElement; + const target = animation.effect.target; for (const testSample of testSamples) { animation.currentTime = testSample.time; - assert_equals(getComputedStyle(target, type)[idlName], + assert_equals(getComputedStyle(target, pseudoType)[idlName], testSample.expected, `The value should be ${testSample.expected}` + ` at ${testSample.time}ms`); @@ -1453,10 +1442,8 @@ function toOrderedArray(string) { // don't specify an order for serializing computed values. // This test is for such the property. function testAnimationSamplesWithAnyOrder(animation, idlName, testSamples) { - const type = animation.effect.target.type; - const target = animation.effect.target.constructor.name === 'CSSPseudoElement' - ? animation.effect.target.element - : animation.effect.target; + const type = animation.effect.pseudoElement; + const target = animation.effect.target; for (const testSample of testSamples) { animation.currentTime = testSample.time; diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html index fcf753baef3..2d09cdf4545 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html @@ -10,6 +10,11 @@ <script src="../../resources/keyframe-tests.js"></script> <script src="../../resources/timing-utils.js"></script> <script src="../../resources/timing-tests.js"></script> +<style> +.pseudo::before {content: '';} +.pseudo::after {content: '';} +.pseudo::marker {content: '';} +</style> <body> <div id="log"></div> <iframe width="10" height="10" id="iframe"></iframe> @@ -235,34 +240,59 @@ promise_test(async t => { assert_false(gotTransition, 'A transition should NOT have been triggered'); }, 'Element.animate() does NOT trigger a style change event'); -// Tests on CSSPseudoElement +// Tests on pseudo-elements test(t => { - const pseudoTarget = getPseudoElement(t, 'before'); - const anim = pseudoTarget.animate(null); + const div = createDiv(t); + div.classList.add('pseudo'); + const anim = div.animate(null, {pseudoElement: '::before'}); assert_class_string(anim, 'Animation', 'The returned object is an Animation'); -}, 'CSSPseudoElement.animate() creates an Animation object'); +}, 'animate() with pseudoElement parameter creates an Animation object'); test(t => { - const pseudoTarget = getPseudoElement(t, 'marker'); - const anim = pseudoTarget.animate(null); + const div = createDiv(t); + div.classList.add('pseudo'); + div.style.display = 'list-item'; + const anim = div.animate(null, {pseudoElement: '::marker'}); assert_class_string(anim, 'Animation', 'The returned object is an Animation for ::marker'); -}, 'CSSPseudoElement.animate() creates an Animation object for ::marker'); +}, 'animate() with pseudoElement parameter creates an Animation object for ::marker'); + +test(t => { + const div = createDiv(t); + div.classList.add('pseudo'); + div.textContent = 'foo'; + const anim = div.animate(null, {pseudoElement: '::first-line'}); + assert_class_string(anim, 'Animation', 'The returned object is an Animation for ::first-line'); +}, 'animate() with pseudoElement parameter creates an Animation object for ::first-line'); test(t => { - const pseudoTarget = getPseudoElement(t, 'before'); - const anim = pseudoTarget.animate(null); - assert_equals(anim.effect.target, pseudoTarget, - 'The returned Animation targets to the correct object'); -}, 'CSSPseudoElement.animate() creates an Animation object targeting ' + - 'to the correct CSSPseudoElement object'); + const div = createDiv(t); + div.classList.add('pseudo'); + const anim = div.animate(null, {pseudoElement: '::before'}); + assert_equals(anim.effect.pseudoElement, '::before', + 'The returned Animation targets to the correct selector'); +}, 'animate() with pseudoElement an Animation object targeting ' + + 'to the correct pseudo-element'); test(t => { - const pseudoTarget = getPseudoElement(t, 'marker'); - const anim = pseudoTarget.animate(null); - assert_equals(anim.effect.target, pseudoTarget, - 'The returned Animation targets to the correct object for ::marker'); -}, 'CSSPseudoElement.animate() creates an Animation object targeting ' + - 'to the correct CSSPseudoElement object for ::marker'); + const div = createDiv(t); + div.classList.add('pseudo'); + div.style.display = 'list-item'; + const anim = div.animate(null, {pseudoElement: '::marker'}); + assert_equals(anim.effect.pseudoElement, '::marker', + 'The returned Animation targets to the correct selector'); +}, 'animate() with pseudoElement an Animation object targeting ' + + 'to the correct pseudo-element for ::marker'); + +test(t => { + const div = createDiv(t); + div.classList.add('pseudo'); + div.textContent = 'foo'; + const anim = div.animate(null, {pseudoElement: '::first-line'}); + assert_equals(anim.effect.pseudoElement, '::first-line', + 'The returned Animation targets to the correct selector'); +}, 'animate() with pseudoElement an Animation object targeting ' + + 'to the correct pseudo-element for ::first-line'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/commitStyles.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/commitStyles.html index 9005db9e9f2..d3a95e053e3 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/commitStyles.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/commitStyles.html @@ -5,6 +5,11 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="../../testcommon.js"></script> +<style> +.pseudo::before {content: '';} +.pseudo::after {content: '';} +.pseudo::marker {content: '';} +</style> <body> <div id="log"></div> <script> @@ -263,10 +268,12 @@ promise_test(async t => { }, 'Does NOT trigger mutation observers when the change to style is redundant'); test(t => { - const pseudo = getPseudoElement(t, 'before'); - const animation = pseudo.animate( + + const div = createDiv(t); + div.classList.add('pseudo'); + const animation = div.animate( { opacity: 0 }, - { duration: 1, fill: 'forwards' } + { duration: 1, fill: 'forwards', pseudoElement: '::before' } ); assert_throws('NoModificationAllowedError', () => { @@ -372,13 +379,14 @@ test(t => { }, 'Throws if the target effect is disconnected'); test(t => { - const pseudo = getPseudoElement(t, 'before'); - const animation = pseudo.animate( + const div = createDiv(t); + div.classList.add('pseudo'); + const animation = div.animate( { opacity: 0 }, - { duration: 1, fill: 'forwards' } + { duration: 1, fill: 'forwards', pseudoElement: '::before' } ); - pseudo.element.remove(); + div.remove(); assert_throws('NoModificationAllowedError', () => { animation.commitStyles(); diff --git a/tests/wpt/web-platform-tests/web-animations/testcommon.js b/tests/wpt/web-platform-tests/web-animations/testcommon.js index 82b70532321..f89cbbaf936 100644 --- a/tests/wpt/web-platform-tests/web-animations/testcommon.js +++ b/tests/wpt/web-platform-tests/web-animations/testcommon.js @@ -87,23 +87,6 @@ function createStyle(test, rules, doc) { }); } -// Create a pseudo element -function getPseudoElement(test, type) { - createStyle(test, { '@keyframes anim': '', - [`.pseudo::${type}`]: 'animation: anim 10s; ' + - 'content: \'\';' }); - const div = createDiv(test); - if (type == 'marker') { - div.style.display = 'list-item'; - } - div.classList.add('pseudo'); - const anims = document.getAnimations(); - assert_true(anims.length >= 1); - const anim = anims[anims.length - 1]; - anim.cancel(); - return anim.effect.target; -} - // Cubic bezier with control points (0, 0), (x1, y1), (x2, y2), and (1, 1). function cubicBezier(x1, y1, x2, y2) { const xForT = t => { diff --git a/tests/wpt/web-platform-tests/web-locks/signal.tentative.https.any.js b/tests/wpt/web-platform-tests/web-locks/signal.tentative.https.any.js index e0b6e4eabd6..af1d86711ae 100644 --- a/tests/wpt/web-platform-tests/web-locks/signal.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/web-locks/signal.tentative.https.any.js @@ -38,8 +38,8 @@ promise_test(async t => { promise_test(async t => { const res = uniqueName(t); - // Grab a lock and hold it forever. - const never_settled = new Promise(resolve => { /* never */ }); + // Grab a lock and hold it until this subtest completes. + const never_settled = new Promise(resolve => t.add_cleanup(resolve)); navigator.locks.request(res, lock => never_settled); const controller = new AbortController(); @@ -67,8 +67,8 @@ promise_test(async t => { promise_test(async t => { const res = uniqueName(t); - // Grab a lock and hold it forever. - const never_settled = new Promise(resolve => { /* never */ }); + // Grab a lock and hold it until this subtest completes. + const never_settled = new Promise(resolve => t.add_cleanup(resolve)); navigator.locks.request(res, lock => never_settled); const controller = new AbortController(); diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html index 57c619f73f8..6ac940f64b0 100644 --- a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html +++ b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html @@ -133,8 +133,7 @@ nfc_test(async (t, mockNFC) => { //Make sure push is pending mockNFC.setPendingPushCompleted(false); - const p = writer.push(test_text_data, - { signal: controller.signal, timeout: 100 }); + const p = writer.push(test_text_data, { signal: controller.signal }); const rejected = promise_rejects(t, 'AbortError', p); let callback_called = false; await new Promise(resolve => { @@ -173,8 +172,7 @@ nfc_test(async (t, mockNFC) => { const writer2 = new NDEFWriter(); const controller = new AbortController(); mockNFC.setPendingPushCompleted(false); - const p1 = writer1.push(test_text_data, - { signal: controller.signal, timeout: 100 }); + const p1 = writer1.push(test_text_data, { signal: controller.signal }); // Even though push request is grantable, // this abort should be processed synchronously. @@ -200,28 +198,6 @@ nfc_test(async (t, mockNFC) => { promise_test(async t => { const writer = new NDEFWriter(); await promise_rejects( - t, new TypeError(), writer.push(test_text_data, { timeout: "invalid"})); -}, "NDEFWriter.push should fail with TypeError when invalid timeout is \ -provided."); - -promise_test(async t => { - const writer = new NDEFWriter(); - await promise_rejects( - t, new TypeError(), writer.push(test_text_data, { timeout: -1 })); -}, "NDEFWriter.push should fail with TypeError when invalid negative timeout \ -value is provided."); - -nfc_test(async (t, mockNFC) => { - const writer = new NDEFWriter(); - mockNFC.setPendingPushCompleted(false); - const p = writer.push(test_text_data, { timeout: 1 }); - mockNFC.setPushShouldTimeout(true); - await promise_rejects(t, 'TimeoutError', p); -}, "NDEFWriter.push should fail with TimeoutError when timer expires."); - -promise_test(async t => { - const writer = new NDEFWriter(); - await promise_rejects( t, 'NotSupportedError', writer.push(new ArrayBuffer(32 * 1024 + 1))); }, "Reject promise with NotSupportedError if NFC message size exceeds 32KB."); @@ -279,7 +255,7 @@ promise_test(async () => { nfc_test(async () => { const writer = new NDEFWriter(); - await writer.push(test_text_data, { timeout: 1 }); + await writer.push(test_text_data); }, 'NDEFWriter.push should succeed when NFC HW is enabled'); nfc_test(async (t, mockNFC) => { @@ -324,13 +300,13 @@ nfc_test(async () => { nfc_test(async (t, mockNFC) => { const writer = new NDEFWriter(); await writer.push(test_text_data); - assertNDEFPushOptionsEqual(createNDEFPushOptions('any', Infinity, true), + assertNDEFPushOptionsEqual(createNDEFPushOptions('any', true), mockNFC.pushOptions()); }, "Check that default NDEFPushOptions values are correctly set."); nfc_test(async (t, mockNFC) => { const writer = new NDEFWriter(); - let ndefPushOptions = createNDEFPushOptions('tag', 1, false); + let ndefPushOptions = createNDEFPushOptions('tag', false); await writer.push(test_text_data, ndefPushOptions); assertNDEFPushOptionsEqual(ndefPushOptions, mockNFC.pushOptions()); }, "Check that provided NDEFPushOptions values are correctly converted."); @@ -371,8 +347,8 @@ nfc_test(async (t, mockNFC) => { const writer1 = new NDEFWriter(); const writer2 = new NDEFWriter(); - const ndefPushOptions1 = createNDEFPushOptions('tag', 1000, false); - const ndefPushOptions2 = createNDEFPushOptions('tag', Infinity, true); + const ndefPushOptions1 = createNDEFPushOptions('tag', false); + const ndefPushOptions2 = createNDEFPushOptions('tag', true); const p1 = writer1.push(test_text_data, ndefPushOptions1); const p2 = writer2.push(test_url_data, ndefPushOptions2); diff --git a/tests/wpt/web-platform-tests/web-nfc/README.md b/tests/wpt/web-platform-tests/web-nfc/README.md index 0787f1f6712..a283c0611f8 100644 --- a/tests/wpt/web-platform-tests/web-nfc/README.md +++ b/tests/wpt/web-platform-tests/web-nfc/README.md @@ -14,7 +14,6 @@ The `WebNFCTest` interface is defined as: setHWStatus(number status); // Sets the hardware status. setReadingMessage(NDEFMessageInit message); // Sets message that is used to deliver NFC reading updates. setPendingPushCompleted(boolean result); // Sets if the pending push is completed. - setPushShouldTimeout(boolean result); // Sets flag to trigger the pending push to timeout. pushedMessage(); // Gets the pushed `NDEFMessageSource`. pushOptions(); // Gets the pushed `NDEFPushOptions`. setIsNDEFTech(boolean isNDEF); // Sets if the NFC device exposes NDEF technology. diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js index f90a050c4ca..e7be49e4337 100644 --- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js +++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js @@ -124,8 +124,8 @@ function createUrlRecord(url, isAbsUrl) { return createRecord('url', url); } -function createNDEFPushOptions(target, timeout, ignoreRead) { - return {target, timeout, ignoreRead}; +function createNDEFPushOptions(target, ignoreRead) { + return {target, ignoreRead}; } // Compares NDEFMessageSource that was provided to the API diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/validity.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/validity.py index 656406718e7..9e4b85737b0 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/validity.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/validity.py @@ -12,7 +12,7 @@ def perform_actions(session, actions): @pytest.mark.parametrize("action_type", ["none", "key", "pointer"]) def test_pause_positive_integer(session, action_type): - for valid_duration in [0, 1]: + for valid_duration in [0.0, 1]: actions = [{ "type": action_type, "id": "foobar", @@ -38,7 +38,7 @@ def test_pause_positive_integer(session, action_type): @pytest.mark.parametrize("action_type", ["none", "key", "pointer"]) def test_pause_invalid_types(session, action_type): - for invalid_type in [0.0, None, "foo", True, [], {}]: + for invalid_type in [0.1, None, "foo", True, [], {}]: actions = [{ "type": action_type, "id": "foobar", diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html new file mode 100644 index 00000000000..d89f353a89f --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html @@ -0,0 +1,95 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + +'use strict'; + +// In this test, the promises should resolve in the execution order +// (setLocalDescription, setLocalDescription, addIceCandidate) as is ensured by +// the Operations Chain; if an operation is pending, executing another operation +// will queue it. This test will fail if an Operations Chain is not implemented, +// but it gives the implementation some slack: it only ensures that +// addIceCandidate() is not resolved first, allowing timing issues in resolving +// promises where the test still passes even if addIceCandidate() is resolved +// *before* the second setLocalDescription(). +// +// This test covers Chrome issue (https://crbug.com/1019222), but does not +// require setLocalDescription-promises to resolve immediately which is another +// Chrome bug (https://crbug.com/1019232). The true order is covered by the next +// test. +// TODO(https://crbug.com/1019232): Delete this test when the next test passes +// in Chrome. +promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + caller.addTransceiver('audio'); + + const candidatePromise = new Promise(resolve => { + caller.onicecandidate = e => resolve(e.candidate); + }); + await caller.setLocalDescription(await caller.createOffer()); + await callee.setRemoteDescription(caller.localDescription); + const candidate = await candidatePromise; + + // Chain setLocalDescription(), setLocalDescription() and addIceCandidate() + // without performing await between the calls. + const pendingPromises = []; + const resolveOrder = []; + pendingPromises.push(callee.setLocalDescription().then(() => { + resolveOrder.push('setLocalDescription 1'); + })); + pendingPromises.push(callee.setLocalDescription().then(() => { + resolveOrder.push('setLocalDescription 2'); + })); + pendingPromises.push(callee.addIceCandidate(candidate).then(() => { + resolveOrder.push('addIceCandidate'); + })); + await Promise.all(pendingPromises); + + assert_equals(resolveOrder[0], 'setLocalDescription 1'); +}, 'addIceCandidate is not resolved first if 2x setLocalDescription ' + + 'operations are pending'); + +promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + caller.addTransceiver('audio'); + + const candidatePromise = new Promise(resolve => { + caller.onicecandidate = e => resolve(e.candidate); + }); + await caller.setLocalDescription(await caller.createOffer()); + await callee.setRemoteDescription(caller.localDescription); + const candidate = await candidatePromise; + + // Chain setLocalDescription(), setLocalDescription() and addIceCandidate() + // without performing await between the calls. + const pendingPromises = []; + const resolveOrder = []; + pendingPromises.push(callee.setLocalDescription().then(() => { + resolveOrder.push('setLocalDescription 1'); + })); + pendingPromises.push(callee.setLocalDescription().then(() => { + resolveOrder.push('setLocalDescription 2'); + })); + pendingPromises.push(callee.addIceCandidate(candidate).then(() => { + resolveOrder.push('addIceCandidate'); + })); + await Promise.all(pendingPromises); + + // This test verifies that both issues described in https://crbug.com/1019222 + // and https://crbug.com/1019232 are fixed. If this test passes in Chrome, the + // ICE candidate exchange issues described in + // https://github.com/web-platform-tests/wpt/issues/19866 should be resolved. + assert_array_equals( + resolveOrder, + ['setLocalDescription 1', 'setLocalDescription 2', 'addIceCandidate']); +}, 'addIceCandidate and setLocalDescription are resolved in the correct ' + + 'order, as defined by the operations chain specification'); + +</script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html index 32f2eb9b460..a2b2827b849 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html @@ -393,8 +393,8 @@ promise_test(async t => { pc2.oniceconnectionstatechange = t.unreached_func(); pc2.close(); - await Promise.resolve(); assert_true(pc2.iceConnectionState === 'closed'); + await new Promise(r => t.step_timeout(r, 100)); }, 'Closing a PeerConnection should not fire iceconnectionstatechange event'); </script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html index 255419258a3..73a0fe1e5a1 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html @@ -72,7 +72,7 @@ assert_not_equals(pc.pendingRemoteDescription, null); assert_equals(pc.currentRemoteDescription, null); - return pc.setRemoteDescription({ type: 'rollback' }); + return pc.setRemoteDescription({type: 'rollback'}); }) .then(() => { assert_equals(pc.signalingState, 'stable'); @@ -100,7 +100,7 @@ const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); return promise_rejects(t, 'InvalidStateError', - pc.setRemoteDescription({ type: 'rollback' })); + pc.setRemoteDescription({type: 'rollback'})); }, `setRemoteDescription(rollback) from stable state should reject with InvalidStateError`); promise_test(t => { @@ -138,7 +138,7 @@ t.add_cleanup(() => pc1.close()); t.add_cleanup(() => pc2.close()); - const stream = await getNoiseStream({ video: true }); + const stream = await getNoiseStream({video: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); pc1.addTrack(stream.getTracks()[0], stream); @@ -159,4 +159,355 @@ await pc1.setLocalDescription(offer1); }, "local offer created before setRemoteDescription(remote offer) with different transceiver level assignments then rollback should still be usable"); + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc2.setRemoteDescription(await pc1.createOffer()); + assert_equals(pc2.getTransceivers().length, 1); + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 0); + }, "rollback of a remote offer should remove a transceiver"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc2.setRemoteDescription(await pc1.createOffer()); + assert_equals(pc2.getTransceivers().length, 1); + + const stream2 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + const track = stream2.getVideoTracks()[0]; + await pc2.getTransceivers()[0].sender.replaceTrack(track); + + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 0); + }, "rollback of a remote offer should remove touched transceiver"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc2.setRemoteDescription(await pc1.createOffer()); + assert_equals(pc2.getTransceivers().length, 1); + + const stream2 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTrack(stream2.getTracks()[0], stream2); + + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 1); + assert_equals(pc2.getTransceivers()[0].mid, null) + }, "rollback of a remote offer should keep a transceiver"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc2.setRemoteDescription(await pc1.createOffer()); + assert_equals(pc2.getTransceivers().length, 1); + + const stream2 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTrack(stream2.getTracks()[0], stream2); + await pc2.getTransceivers()[0].sender.replaceTrack(null); + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 1); + }, "rollback of a remote offer should keep a transceiver without tracks"); + + promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + + const stream = await getNoiseStream({video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc.addTrack(stream.getTracks()[0], stream); + + const states = []; + const signalingstatechangeResolver = new Resolver(); + pc.onsignalingstatechange = () => { + states.push(pc.signalingState); + signalingstatechangeResolver.resolve(); + }; + + const offer = await pc.createOffer(); + await pc.setLocalDescription(offer); + await pc.setRemoteDescription({type: "rollback"}); + assert_equals(pc.getTransceivers().length, 1); + assert_equals(pc.getTransceivers()[0].mid, null) + await pc.setLocalDescription(offer); + assert_equals(pc.getTransceivers().length, 1); + await signalingstatechangeResolver.promise; + assert_array_equals(states, ['have-local-offer', 'stable', 'have-local-offer']); + }, "rollback local offer explicitly"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const states = []; + const signalingstatechangeResolver = new Resolver(); + pc1.onsignalingstatechange = () => { + states.push(pc1.signalingState); + signalingstatechangeResolver.resolve(); + }; + const stream1 = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream1.getTracks()[0], stream1); + + const stream2 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTrack(stream2.getTracks()[0], stream2); + + await pc1.setLocalDescription(await pc1.createOffer()); + var onnegotiationneededCount = 0; + const negotiationneededResolver = new Resolver(); + pc1.onnegotiationneeded = () => { + onnegotiationneededCount += 1; + negotiationneededResolver.resolve(); + }; + await pc1.setRemoteDescription(await pc2.createOffer()); + await pc1.setLocalDescription(await pc1.createAnswer()); + await negotiationneededResolver.promise; + assert_equals(onnegotiationneededCount, 1); + await signalingstatechangeResolver.promise; + assert_array_equals(states, ['have-local-offer', 'stable', 'have-remote-offer', 'stable']); + }, "implicit rollback of a local offer should visit stable state and fire negotiationneeded"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc1.setLocalDescription(await pc1.createOffer()); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + + await pc2.setLocalDescription(await pc2.createAnswer()); + await pc1.setRemoteDescription(pc2.localDescription); + + // In stable state add video on both end and make sure video transceiver is not killed. + + const stream1 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream1.getTracks()[0], stream1); + await pc1.setLocalDescription(await pc1.createOffer()); + + const stream2 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTrack(stream2.getTracks()[0], stream2); + const offer2 = await pc2.createOffer(); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 2); + await pc2.setLocalDescription(offer2); + }, "rollback of a remote offer to negotiated stable state should enable " + + "applying of a local offer"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc1.setLocalDescription(await pc1.createOffer()); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + + await pc2.setLocalDescription(await pc2.createAnswer()); + await pc1.setRemoteDescription(pc2.localDescription); + + // Both ends want to add video at the same time. pc2 rolls back. + + const stream2 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTrack(stream2.getTracks()[0], stream2); + await pc2.setLocalDescription(await pc2.createOffer()); + assert_equals(pc2.getTransceivers().length, 2); + assert_not_equals(pc2.getTransceivers()[1].sender.transport, null); + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 2); + // Rollback didn't touch audio transceiver and transport is intact. + assert_not_equals(pc2.getTransceivers()[0].sender.transport, null); + // Video transport got killed. + assert_equals(pc2.getTransceivers()[1].sender.transport, null); + const stream1 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream1.getTracks()[0], stream1); + await pc1.setLocalDescription(await pc1.createOffer()); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + }, "rollback of a local offer to negotiated stable state should enable " + + "applying of a remote offer"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + + const stream = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream.getTracks()[0], stream); + + await pc1.setLocalDescription(await pc1.createOffer()); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + + await pc2.setLocalDescription(await pc2.createAnswer()); + await pc1.setRemoteDescription(pc2.localDescription); + + // pc1 adds video and pc2 adds audio. pc2 rolls back. + assert_equals(pc2.getTransceivers()[0].direction, "recvonly"); + const stream2 = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTrack(stream2.getTracks()[0], stream2); + assert_equals(pc2.getTransceivers()[0].direction, "sendrecv"); + await pc2.setLocalDescription(await pc2.createOffer()); + assert_equals(pc2.getTransceivers()[0].direction, "sendrecv"); + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(pc2.getTransceivers().length, 1); + // setLocalDescription didn't change direction. So direction remains "sendrecv" + assert_equals(pc2.getTransceivers()[0].direction, "sendrecv"); + // Rollback didn't touch audio transceiver and transport is intact. Still can receive audio. + assert_not_equals(pc2.getTransceivers()[0].receiver.transport, null); + const stream1 = await getNoiseStream({video: true}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream1.getTracks()[0], stream1); + await pc1.setLocalDescription(await pc1.createOffer()); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + }, "rollback a local offer with audio direction change to negotiated " + + "stable state and then add video receiver"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + + pc1.addTransceiver('video', {direction: 'sendonly'}); + pc2.addTransceiver('video', {direction: 'sendonly'}); + await pc1.setLocalDescription(await pc1.createOffer()); + const pc1FirstMid = pc1.getTransceivers()[0].mid; + await pc2.setLocalDescription(await pc2.createOffer()); + const pc2FirstMid = pc2.getTransceivers()[0].mid; + // I don't think it is mandated that this has to be true, but any implementation I know of would + // have predictable mids (e.g. 0, 1, 2...) so pc1 and pc2 should offer with the same mids. + assert_equals(pc1FirstMid, pc2FirstMid); + await pc1.setRemoteDescription(pc2.pendingLocalDescription); + // We've implicitly rolled back and the SRD caused a second transceiver to be created. + // As such, the first transceiver's mid will now be null, and the second transceiver's mid will + // match the remote offer. + assert_equals(pc1.getTransceivers().length, 2); + assert_equals(pc1.getTransceivers()[0].mid, null); + assert_equals(pc1.getTransceivers()[1].mid, pc2FirstMid); + // If we now do an offer the first transceiver will get a different mid than in the first + // pc1.createOffer()! + pc1.setLocalDescription(await pc1.createAnswer()); + await pc1.setLocalDescription(await pc1.createOffer()); + assert_not_equals(pc1.getTransceivers()[0].mid, pc1FirstMid); + }, "two transceivers with same mids"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + const stream = await getNoiseStream({audio: true, video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + const audio = stream.getAudioTracks()[0]; + pc1.addTrack(audio, stream); + const video = stream.getVideoTracks()[0]; + pc1.addTrack(video, stream); + + let remoteStream = null; + pc2.ontrack = e => { remoteStream = e.streams[0]; } + await pc2.setRemoteDescription(await pc1.createOffer()); + assert_true(remoteStream != null); + let remoteTracks = remoteStream.getTracks(); + const removedTracks = []; + remoteStream.onremovetrack = e => { removedTracks.push(e.track.id); } + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(removedTracks.length, 2, + "Rollback should have removed two tracks"); + assert_true(removedTracks.includes(remoteTracks[0].id), + "First track should be removed"); + assert_true(removedTracks.includes(remoteTracks[1].id), + "Second track should be removed"); + + }, "onremovetrack fires during remote rollback"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const stream1 = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + pc1.addTrack(stream1.getTracks()[0], stream1); + + const offer1 = await pc1.createOffer(); + + const remoteStreams = []; + pc2.ontrack = e => { remoteStreams.push(e.streams[0]); } + + await pc1.setLocalDescription(offer1); + await pc2.setRemoteDescription(pc1.pendingLocalDescription); + + await pc2.setLocalDescription(await pc2.createAnswer()); + await pc1.setRemoteDescription(pc2.localDescription); + + assert_equals(remoteStreams.length, 1, "Number of remote streams"); + assert_equals(remoteStreams[0].getTracks().length, 1, "Number of remote tracks"); + const track = remoteStreams[0].getTracks()[0]; + + const stream2 = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc1.getTransceivers()[0].sender.setStreams(stream2); + + const offer2 = await pc1.createOffer(); + await pc2.setRemoteDescription(offer2); + + assert_equals(remoteStreams.length, 2); + assert_equals(remoteStreams[0].getTracks().length, 0); + assert_equals(remoteStreams[1].getTracks()[0].id, track.id); + await pc2.setRemoteDescription({type: "rollback"}); + assert_equals(remoteStreams[0].getTracks().length, 1); + assert_equals(remoteStreams[0].getTracks()[0].id, track.id); + + }, "rollback of a remote offer with stream changes"); + </script> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/background.png b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/background.png Binary files differnew file mode 100644 index 00000000000..6d16cc84c4d --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/background.png diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority-ref.html new file mode 100644 index 00000000000..b479029f70c --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Reference for Embedded Style: Cascade Priority</title> +<style> +::cue { + color: green; +} +::cue { + background: green; +} +::cue { + opacity: 0.5; +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority.html new file mode 100644 index 00000000000..db6822e397b --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_cascade_priority.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Embedded Style: Cascade Priority</title> +<link rel="match" href="embedded_style_cascade_priority-ref.html"> +<link rel="help" href="https://w3c.github.io/webvtt/#obtaining-css-boxes"> +<script src="/common/reftest-wait.js"></script> +<style> +/* Embedded style should take precedence over author style, so the cue color should be green. */ +::cue { + color: red; +} +</style> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_cascade_priority.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked-ref.html new file mode 100644 index 00000000000..1cb9d24c98e --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Reference for Embedded Style: Imports Blocked</title> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked.html new file mode 100644 index 00000000000..1ffdf078d13 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_imports_blocked.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Embedded Style: Imports Blocked</title> +<link rel="match" href="embedded_style_imports_blocked-ref.html"> +<link rel="help" href="https://w3c.github.io/webvtt/#obtaining-css-boxes"> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_imports_blocked.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format-ref.html new file mode 100644 index 00000000000..698ac7bc19f --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format-ref.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Reference for Embedded Style: Invalid Format</title> +<style> +::cue { + color: green; +} +::cue(v[voice=Voice1]) +{ + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==) +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format.html new file mode 100644 index 00000000000..746816f272b --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_invalid_format.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Embedded Style: Invalid Format</title> +<link rel="match" href="embedded_style_invalid_format-ref.html"> +<link rel="help" href="https://w3c.github.io/webvtt/#obtaining-css-boxes"> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_invalid_format.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries-ref.html new file mode 100644 index 00000000000..f99172ef2c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries-ref.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<title>Embedded Style: Media Queries</title> +<style>iframe {width:100%; height:500px}</style> +<iframe src="support/embedded_style_media_queries-iframe-ref.html"></iframe> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries.html new file mode 100644 index 00000000000..010314dd15d --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries.html @@ -0,0 +1,19 @@ +<!doctype html> +<html class="reftest-wait"> +<title>Embedded Style: Media Queries</title> +<link rel="match" href="embedded_style_media_queries-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style>iframe {width:100%; height:500px}</style> +<script> + onload = function() { + let iframeWindow = document.querySelector('iframe').contentWindow; + iframeWindow.requestAnimationFrame(() => { + iframeWindow.requestAnimationFrame(() => { + setTimeout(function() { + takeScreenshot(); + }, 100); + }); + }); + }; +</script> +<iframe src="support/embedded_style_media_queries-iframe.html"></iframe> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized-ref.html new file mode 100644 index 00000000000..5f1e0b96807 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized-ref.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<title>Embedded Style: Media Queries Resize Frame</title> +<style>iframe {width:100%; height:300px}</style> +<iframe src="support/embedded_style_media_queries_resized-iframe-ref.html"></iframe> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized.html new file mode 100644 index 00000000000..703d7367aef --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_media_queries_resized.html @@ -0,0 +1,20 @@ +<!doctype html> +<html class="reftest-wait"> +<title>Embedded Style: Media Queries Resize Frame</title> +<link rel="match" href="embedded_style_media_queries_resized-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style>iframe {width:100%; height:500px}</style> +<script> + onload = function() { + document.getElementById("form-iframe").style.height = "300px"; + let iframeWindow = document.querySelector('iframe').contentWindow; + iframeWindow.requestAnimationFrame(() => { + iframeWindow.requestAnimationFrame(() => { + setTimeout(function() { + takeScreenshot(); + }, 100); + }); + }); + }; +</script> +<iframe id="form-iframe" src="support/embedded_style_media_queries_resized-iframe.html"></iframe> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks-ref.html new file mode 100644 index 00000000000..4b956da4482 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks-ref.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Reference for Embedded Style: Multiple Tracks, style only applies to the track it was sourced for</title> +<style> +::cue(v[voice=Voice1]) { + color: green; +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_without_style.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + document.getElementsByTagName('track')[1].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks.html new file mode 100644 index 00000000000..3c8202761fd --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_multiple_tracks.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Embedded Style: Multiple Tracks, style only applies to the track it was sourced for</title> +<link rel="match" href="embedded_style_multiple_tracks-ref.html"> +<link rel="help" href="https://w3c.github.io/webvtt/#obtaining-css-boxes"> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_multiple_tracks1.vtt"> + <track src="support/embedded_style_multiple_tracks2.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + document.getElementsByTagName('track')[1].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors-ref.html new file mode 100644 index 00000000000..754eed88b7a --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors-ref.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Reference for Embedded Style: Selectors</title> +<style> +::cue { + font-size: 11px; + background: lime; +} +::cue(b) { + background: green; + color: green; +} +::cue(i) { + background: green; + color: green; +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors.html new file mode 100644 index 00000000000..55db5c7302a --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_selectors.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Embedded Style: Selectors</title> +<link rel="match" href="embedded_style_selectors-ref.html"> +<link rel="help" href="https://w3c.github.io/webvtt/#obtaining-css-boxes"> +<script src="/common/reftest-wait.js"></script> + +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_selectors.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls-ref.html new file mode 100644 index 00000000000..6eca04506e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls-ref.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Reference for Embedded Style: URLs, only allow data URLs</title> +<style> +::cue(v[voice=Voice1]) +{ + background: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7) +} +::cue(b) +{ + background: url("support/invalid.png") +} +::cue(i) +{ + background: url("support/invalid.png") +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls.html new file mode 100644 index 00000000000..2faff059d2d --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/embedded_style_urls.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Embedded Style: URLs, only allow data URLs</title> +<link rel="match" href="embedded_style_urls-ref.html"> +<link rel="help" href="https://w3c.github.io/webvtt/#obtaining-css-boxes"> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="support/embedded_style_urls.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_cascade_priority.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_cascade_priority.vtt new file mode 100644 index 00000000000..9471b32be15 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_cascade_priority.vtt @@ -0,0 +1,25 @@ +WEBVTT + +NOTE +opacity: 0.5; should apply. +color: green; should apply. +background: green; should apply because multiple STYLE blocks are supported. + +STYLE +::cue { + opacity: 0.5; +} +::cue { + color: green; +} + +STYLE +::cue { + background: green; +} + +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle + +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_imports_blocked.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_imports_blocked.vtt new file mode 100644 index 00000000000..11a84af0297 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_imports_blocked.vtt @@ -0,0 +1,14 @@ +WEBVTT + +NOTE +@import rules are prohibited in WebVTT files. + +STYLE +@import "imported_style.css" +@import url("imported_style.css") + +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle + +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_invalid_format.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_invalid_format.vtt new file mode 100644 index 00000000000..51c231a0f89 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_invalid_format.vtt @@ -0,0 +1,79 @@ +WEBVTT + +NOTE +Only color: green; and the green background-image should apply. All other style blocks are invalid. + +::cue { + background: red; +} + +STYLE + +::cue { + background: red; +} + +STYLE +::cue(v[voice=Voice1]) +{ + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg== + +STYLE +::cue { + back + +STYLE +ground: red; +} + +STYLE +::cue { + color: green; +} + +S T Y L E +::cue { + background: red; +} + + STYLE +::cue { + background: red; +} + +STYLE { +::cue { + background: red; +} +} + +::cue { + background: red; +} + +STYLE Invalid +::cue { + background: red; +} + +style +::cue { + background: red; +} + +STYLE +<!--::cue {--> + background: red; +} + +STYLE +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle + +STYLE +::cue { + background: red; +} + +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe-ref.html new file mode 100644 index 00000000000..f08a607e696 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe-ref.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<title>Reference for Embedded Style: Media Queries</title> +<style> +video { + outline: solid; + width: 320px; + height: 240px; +} +::cue { + color: green; +} +</style> +<video autoplay onplaying="this.onplaying = null; this.pause();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe.html new file mode 100644 index 00000000000..e27ca604742 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries-iframe.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>Embedded Style: Media Queries</title> +<style> +video { + outline: solid; + width: 320px; + height: 240px; +} +</style> +<video autoplay onplaying="this.onplaying = null; this.pause();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="embedded_style_media_queries.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries.vtt new file mode 100644 index 00000000000..1b875cdd533 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries.vtt @@ -0,0 +1,34 @@ +WEBVTT +NOTE +color: red; should not apply because it is overriden by color: green. +color: green; should apply because the screen width is less than 1000px. +background: green; should only apply in the resized test case where the screen is resized to 300px. +background: red; should not apply because the screen width is greater than 100px. +STYLE +::cue +{ + color: red; +} +@media only screen and (max-height: 1000px) { + ::cue + { + color: green; + } +} +@media only screen and (max-height: 400px) { + ::cue + { + background: green; + } +} +} +@media only screen and (max-height: 100px) { + ::cue + { + background: red; + } +} +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe-ref.html new file mode 100644 index 00000000000..ab7553e2fce --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe-ref.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>Reference for Embedded Style: Media Queries Resize Frame</title> +<style> +video { + outline: solid; + width: 320px; + height: 240px; +} +::cue { + color: green; + background: green; +} +</style> +<video autoplay onplaying="this.onplaying = null; this.pause();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="embedded_style_without_style.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe.html new file mode 100644 index 00000000000..f4bfeeaca37 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_media_queries_resized-iframe.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>Embedded Style: Media Queries Resize Frame</title> +<style> +video { + outline: solid; + width: 320px; + height: 240px; +} +</style> +<video autoplay onplaying="this.onplaying = null; this.pause();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <track src="embedded_style_media_queries.vtt" default> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks1.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks1.vtt new file mode 100644 index 00000000000..a756c3c06d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks1.vtt @@ -0,0 +1,12 @@ +WEBVTT + +NOTE +The style in this file should not apply to cues from other text tracks. + +STYLE +::cue { + color: green; +} + +00:00:00.000 --> 00:00:05.000 +This <i>is</i> a <b>test</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks2.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks2.vtt new file mode 100644 index 00000000000..c13757d570a --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_multiple_tracks2.vtt @@ -0,0 +1,4 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 +Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_selectors.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_selectors.vtt new file mode 100644 index 00000000000..51377255aa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_selectors.vtt @@ -0,0 +1,54 @@ +WEBVTT +NOTE +The first six selectors should apply. The rest should not apply because they do +not apply to a hypothetical document with a single empty element with no explicit +name, no namespace, no attribute, no classes, no IDs, and unknown primary language +that acts as the originating element for the cue pseudo-elements. +STYLE +@namespace html url(http://www.w3.org/1999/xhtml); +:not(video)::cue { + background: lime; +} +*|*::cue(b) { + background: green; +} +|*::cue(i) { + color: green; +} +::cue(i) { + background: green; +} +*::cue(b) { + color: green; +} +::cue { + font-size: 11px; +} +video::cue { + background: red; +} +:not(|*)::cue { + background: red; +} +i { + color: red; +} +* { + color: red; +} +* ::cue(i) { + color: red; +} +* > *::cue(i) { + color: red; +} +* + *::cue(i) { + color: red; +} +html|*::cue(i) { + color: red; +} +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_urls.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_urls.vtt new file mode 100644 index 00000000000..db526deb869 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_urls.vtt @@ -0,0 +1,21 @@ +WEBVTT +NOTE +Background for Voice1 should apply. +The other two backgrounds should not render because non-data URLs are not supported. +STYLE +::cue(v[voice=Voice1]) +{ + background: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7) +} +::cue(b) +{ + background: url("support/background.png") +} +::cue(i) { + background: url("support/background.png"); + background: -webkit-image-set(url("support/background.png") 1x, url("support/background.png") 2x); +} +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_without_style.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_without_style.vtt new file mode 100644 index 00000000000..321a094fda7 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/embedded_style_without_style.vtt @@ -0,0 +1,7 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 +<v Voice1>This <i>is</i> a <b>test</b> subtitle + +00:00:00.000 --> 00:00:05.000 +<v Voice2>Here <i>is</i> a <b>second</b> subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/imported_style.css b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/imported_style.css new file mode 100644 index 00000000000..391dd7407f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/imported_style.css @@ -0,0 +1,3 @@ +::cue { + color: red; +} diff --git a/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/1.headers b/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/1.headers new file mode 100644 index 00000000000..e7ec0d6699d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/1.headers @@ -0,0 +1 @@ +Content-Type: text/javascript diff --git a/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/null.headers b/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/null.headers new file mode 100644 index 00000000000..e7ec0d6699d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/null.headers @@ -0,0 +1 @@ +Content-Type: text/javascript diff --git a/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/undefined.headers b/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/undefined.headers new file mode 100644 index 00000000000..e7ec0d6699d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/constructors/SharedWorker/undefined.headers @@ -0,0 +1 @@ +Content-Type: text/javascript diff --git a/tests/wpt/web-platform-tests/workers/constructors/Worker/1.headers b/tests/wpt/web-platform-tests/workers/constructors/Worker/1.headers new file mode 100644 index 00000000000..e7ec0d6699d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/constructors/Worker/1.headers @@ -0,0 +1 @@ +Content-Type: text/javascript diff --git a/tests/wpt/web-platform-tests/workers/constructors/Worker/null.headers b/tests/wpt/web-platform-tests/workers/constructors/Worker/null.headers new file mode 100644 index 00000000000..e7ec0d6699d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/constructors/Worker/null.headers @@ -0,0 +1 @@ +Content-Type: text/javascript diff --git a/tests/wpt/web-platform-tests/workers/constructors/Worker/undefined.headers b/tests/wpt/web-platform-tests/workers/constructors/Worker/undefined.headers new file mode 100644 index 00000000000..e7ec0d6699d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/constructors/Worker/undefined.headers @@ -0,0 +1 @@ +Content-Type: text/javascript |